%!PS-Adobe-3.0 EPSF-3.0 AGI10-8N
%%BoundingBox: 70 85 243 206

%START PDFDE011.EPS
/pdfmark08 where {pop} {userdict /pdfmark08 /cleartomark load put} ifelse
/languagelevel where {pop languagelevel} {1} ifelse
2 lt { userdict (<<) cvn ([) cvn load put
       userdict (>>) cvn (]) cvn load put} if
[/Title (PostScript pictures: farbe.li.tu-berlin.de/AGI1/AGI1.HTM)
 /Author (compare K. Richter "Computergrafik ...": ISBN 3-8007-1775-1)
 /Subject (goto: http://farbe.li.tu-berlin.de http://130.149.60.45/~farbmetrik)
 /Keywords (image reproduction, colour devices)
 /Creator (klaus.richter@mac.com)
 /CreationDate (D:2020090112000)
 /ModDate (D:2020090112000)
/DOCINFO pdfmark08
[ /View [ /Fit ]
/DOCVIEW pdfmark08
%END  PDFDE011

%SETCMYK_OLV.PS
/setcmyk_olvcolor %transfer cmyk to olv
{/ncolor exch def /ycolor exch def
 /mcolor exch def /ccolor exch def
 ncolor 0 eq {1 ccolor sub
              1 mcolor sub
              1 ycolor sub setrgbcolor
             }
             {ccolor 0 eq 
              mcolor 0 eq and
              ycolor 0 eq and {%only black n
                               1 ncolor sub 
                               dup
                               dup
                               setrgbcolor
                              }
                              {%cmy and black n
                               1 ccolor sub 1 ncolor sub mul
                               1 mcolor sub 1 ncolor sub mul
                               1 ycolor sub 1 ncolor sub mul
                               setrgbcolor
                              } ifelse
             } ifelse
} bind def

/FS {findfont exch scalefont setfont} bind def
/MM {72 25.4 div mul} def /str {8 string } bind def

/languagelevel where {pop languagelevel} {1} ifelse
                     /PSL12 exch def
/dictende {counttomark 2 idiv dup dict begin {def}
           repeat pop currentdict end} bind def

/Times-Roman findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end

/Times-ISOL1 exch definefont pop

/Times-Italic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end

/TimesI-ISOL1 exch definefont pop

/Times-Bold findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end

/TimesB-ISOL1 exch definefont pop

/Times-BoldItalic findfont dup length dict  begin
{1 index /FID ne {def} {pop pop} ifelse }forall
/Encoding ISOLatin1Encoding def
currentdict end

/TimesBI-ISOL1 exch definefont pop

/TX {120 /Times-ISOL1 FS} bind def
/TV {160 /Times-ISOL1 FS} bind def
/TS {200 /Times-ISOL1 FS} bind def
/TK {250 /Times-ISOL1 FS} bind def
/TM {300 /Times-ISOL1 FS} bind def
/TG {350 /Times-ISOL1 FS} bind def

/TIX {120 /TimesI-ISOL1 FS} bind def
/TIV {160 /TimesI-ISOL1 FS} bind def
/TIS {200 /TimesI-ISOL1 FS} bind def
/TIK {250 /TimesI-ISOL1 FS} bind def
/TIM {300 /TimesI-ISOL1 FS} bind def
/TIG {350 /TimesI-ISOL1 FS} bind def

/TBX {120 /TimesB-ISOL1 FS} bind def
/TBV {160 /TimesB-ISOL1 FS} bind def 
/TBS {200 /TimesB-ISOL1 FS} bind def
/TBK {250 /TimesB-ISOL1 FS} bind def
/TBM {300 /TimesB-ISOL1 FS} bind def
/TBG {350 /TimesB-ISOL1 FS} bind def

/TBIX {120 /TimesBI-ISOL1 FS} bind def
/TBIV {160 /TimesBI-ISOL1 FS} bind def
/TBIS {200 /TimesBI-ISOL1 FS} bind def
/TBIK {250 /TimesBI-ISOL1 FS} bind def
/TBIM {300 /TimesBI-ISOL1 FS} bind def
/TBIG {350 /TimesBI-ISOL1 FS} bind def

/XD65  95.05 def
/YD65 100.00 def
/ZD65 108.90 def
/xanD65 XD65 XD65 YD65 add ZD65 add div def
/yanD65 YD65 XD65 YD65 add ZD65 add div def

%*******************************************************
%created for 10 colours of hue circle and different lightness
/LCh*10 55 array def
/XYZ*10 55 array def
/LCh*10n 55 array def
/XYZ*10n 55 array def
%**************************************************************
%created for 45 colours of equal chroma and different lightness
/rgb*45   500 array def %5x45, NOT 3x45
/LCh*45   500 array def %5x45
/XYZ*45   500 array def %5x45
/rgb*45n  500 array def %5x45, NOT 3x45
/XYZ*45n  500 array def %5x45
/XYZ*45na 500 array def
/LCh*45n  500 array def %5x45
/LCh*45na 500 array def %5x45

%************************************************************
%definition of A for xchartl=0 to 5
/XYZ*5A 5 array def
/LCh*5A 5 array def
/XYZ*5N 5 array def
/LCh*5N 5 array def
/XYZ*5W 5 array def
/LCh*5W 5 array def

/XYZ*5An 5 array def
/LCh*5An 5 array def
/XYZ*5Nn 5 array def
/LCh*5Nn 5 array def
/XYZ*5Wn 5 array def
/LCh*5Wn 5 array def

/rgb*3A  3 array def
/tex*3A  3 array def
/rgb*3N  3 array def
/tex*3N  3 array def
/rgb*3W  3 array def
/tex*3W  3 array def

/LCh*5Na 5 array def %a=actual
/LCh*5Wa 5 array def
/LCh*5Aa 5 array def
%*************************************************************

%*******************************************************************
/proz_XYZ_LCh* {%BEG proz_XYZ_LCh*
%input XYZaref, output LChab*ref, same name in any case
%output LabC*h (xchart8=0) or LABC*h (xchart8=1)
/XQ Xaref XD65 div def
/YQ Yaref YD65 div def
/ZQ Zaref ZD65 div def
XQ 0 lt {/XQ 0.00000001 def} if
YQ 0 lt {/YQ 0.00000001 def} if
ZQ 0 lt {/ZQ 0.00000001 def} if
/L*ref YQ 0.008856 lt {903.3 YQ mul}
                      {YQ 0.33333333 exp 116 mul 16 sub} ifelse def

xchart8 0 eq {%xchart8=0 LabCh*-CIELAB
/a*ref XQ 0.008856 lt {7.787 XQ mul 16 116 div add}
                      {XQ 0.33333333 exp} ifelse
       YQ 0.008856 lt {7.787 YQ mul 16 116 div add}
                      {YQ 0.33333333 exp} ifelse sub 500 mul def
/b*ref YQ 0.008856 lt {7.787 YQ mul 16 116 div add}
                      {YQ 0.33333333 exp} ifelse
       ZQ 0.008856 lt {7.787 ZQ mul 16 116 div add}
                      {ZQ 0.33333333 exp} ifelse sub 200 mul def
             } if %xchart8=0 LabCh*-CIELAB

xchart8 1 eq {%xchart8=1 LabCh*=LABCh*
              /a*ref XQ YQ sub 250 mul def
              /b*ref YQ ZQ sub 100 mul def
             } if %xchart8=1 LabCh*=LABCh*

/C*ref a*ref dup mul
       b*ref dup mul add sqrt def
/h*ref b*ref a*ref 0.00001 add atan def
C*ref 0.05 le {/h*ref 0 def} if
} bind def %END proz_XYZ_LCh*

%*******************************************************************
/proz_LCh*_XYZ {%BEG proz_LCh*_XYZ
%input  LCh*ref of LabC*h (xchart8=0) or L*ABCh (xchart8=1)
%output XYZref, xyanref

xchart8 0 eq {%xchart8=0
/DecodeXYZ* {dup 6 29 div ge {dup dup mul mul}
            {4 29 div sub 108 841 div mul} ifelse} bind def
/a*ref C*ref h*ref cos mul def
/b*ref C*ref h*ref sin mul def
/X* {L*ref 16 add 116 div
     a*ref 500 div add} bind def
/Y* {L*ref 16 add 116 div} bind def
/Z* {L*ref 16 add 116 div
     b*ref 200 div sub} bind def
/Xref X* DecodeXYZ* XD65 mul def
/Yref Y* DecodeXYZ* YD65 mul def
/Zref Z* DecodeXYZ* ZD65 mul def
} if %xchart8=0

xchart8 1 eq {%xchart8=1
/DecodeXYZ* {dup 6 29 div ge {dup dup mul mul}
            {4 29 div sub 108 841 div mul} ifelse} bind def
/Y* {L*ref 16 add 116 div} bind def
/Yref Y* DecodeXYZ* YD65 mul def

/a*ref C*ref h*ref cos mul def
/b*ref C*ref h*ref sin mul def

/Xref a*ref 250 div XD65 mul Yref XD65 mul YD65 div add def
/Zref Yref ZD65 mul YD65 div b*ref 100 div ZD65 mul sub def
} if %xchart8=1

Xref 0.01 lt {/Xref 0.01 def} if
Yref 0.01 lt {/Yref 0.01 def} if
Zref 0.01 lt {/Zref 0.01 def} if

/SUM Xref Yref add Zref add 0.0001 add def
/xanref Xref SUM div def
/yanref Yref SUM div def

} bind def %END proz_LCh*_XYZ

%*************************************************************************
/proz_XYZnw_D65_xchart7_definition {%BEG proz_XYZnw_D65_xchart7_definition

% achromatic colours
/XLWD65100  95.04 def
/YLWD65100 100.00 def
/ZLWD65100 108.88 def

/XLN001 XLWD65100 100 div def
/YLN001 YLWD65100 100 div def
/ZLN001 ZLWD65100 100 div def

/YrN 2.52 def

/Xnref YrN XLN001 mul def
/Ynref YrN def
/Znref YrN ZLN001 mul def

/Xtref XYZnref_ISO9241-306 xchart7 3 mul 0 add get def 
/Ytref XYZnref_ISO9241-306 xchart7 3 mul 1 add get def
/Ztref XYZnref_ISO9241-306 xchart7 3 mul 2 add get def

/YNil Ytref def
/YNil001 YNil 100 div def

YNil001 6 29 div 3 exp ge
{/FYYn YNil001 0.3333 exp def}
{/FYYn 841 108 div YNil001 mul 4 29 div add def} ifelse
/L*Nil 116 FYYn mul 16 sub def

} bind def %END proz_XYZnw_D65_xchart7_definition

%***********************************************************************

%**************************************************************
/proz_XYZ*10_XYZ*10n {%BEG proz_XYZ*10_XYZ*10n
%for 10 colours
%input  XYZ*10,  rgb*10
%output LCh*10n, rgb*10n
%only for xchart5=1 and for 10 colours in 7 hue planes and achromatic
%change XYZ*10 to XYZ*10n by display reflection according to xchart7
 
%normalization to Ynor=18
xchart9 1 eq {%xchart9=1
        /Xnor XD65 0.18 mul def
        /Ynor YD65 0.18 mul def
        /Znor ZD65 0.18 mul def

        /Xfac1 Xnor Xnor Xtref add div def
        /Yfac1 Ynor Ynor Ytref add div def
        /Zfac1 Znor Znor Ztref add div def

        XYZ*10n i100 XYZ*10 i100 get Xnor sub Xfac1 mul Xnor add put
        XYZ*10n i101 XYZ*10 i101 get Ynor sub Yfac1 mul Ynor add put
        XYZ*10n i102 XYZ*10 i102 get Znor sub Zfac1 mul Znor add put
} if %xchart9=1

%normalization to Ynor=88.6
xchart9 0 eq {%xchart9=0
        /Xnor XD65 0.886 mul def
        /Ynor YD65 0.886 mul def
        /Znor ZD65 0.886 mul def

        /Xfac2 Xnor Xtref sub Xnor div def
        /Yfac2 Ynor Ytref sub Ynor div def
        /Zfac2 Znor Ztref sub Znor div def

        XYZ*10n i100 XYZ*10 i100 get Xfac2 mul Xtref add put
        XYZ*10n i101 XYZ*10 i101 get Yfac2 mul Ytref add put
        XYZ*10n i102 XYZ*10 i102 get Zfac2 mul Ztref add put
} if %xchart9=0

%STOPX5
} bind def %END proz_XYZ*10_XYZ*10n

%****************************************************************
/proz_XYZ*45_XYZ*45n {%BEG proz_XYZ*45_XYZ*45n
%for 45 colours
%input  XYZ*45,  rgb*45
%output XYZ*45n, rgb*45n
%only for xchart5=1 and for 45 colours in hue plane
%change XYZ*45 to XYZ*45n by display reflection according t0 xchart7

%normalization to Ynor=18
xchart9 1 eq {%xchart9=1
        /Xnor XD65 0.18 mul def
        /Ynor YD65 0.18 mul def
        /Znor ZD65 0.18 mul def

        /Xfac1 Xnor Xnor Xtref add div def
        /Yfac1 Ynor Ynor Ytref add div def
        /Zfac1 Znor Znor Ztref add div def

        XYZ*45n i450 XYZ*45 i450 get Xnor sub Xfac1 mul Xnor add put
        XYZ*45n i451 XYZ*45 i451 get Ynor sub Yfac1 mul Ynor add put
        XYZ*45n i452 XYZ*45 i452 get Znor sub Zfac1 mul Znor add put
} if %xchart9=1

%normalization to Ynor=88.6
xchart9 0 eq {%xchart9=0
        /Xnor XD65 0.886 mul def
        /Ynor YD65 0.886 mul def
        /Znor ZD65 0.886 mul def

        /Xfac2 Xnor Xtref sub Xnor div def
        /Yfac2 Ynor Ytref sub Ynor div def
        /Zfac2 Znor Ztref sub Znor div def

        XYZ*45n i450 XYZ*45 i450 get Xfac2 mul Xtref add put
        XYZ*45n i451 XYZ*45 i451 get Yfac2 mul Ytref add put
        XYZ*45n i452 XYZ*45 i452 get Zfac2 mul Ztref add put
} if %xchart9=0

} bind def %END proz_XYZ*45_XYZ*45n

%***********************************************************
/proz_sRGB_rgb*30X_definitions {%BEG proz_sRGB_rgb*30X_definitions

/XYZ*WCGa_d_0000_0886 30 array def %d, Yw=88,6, Yn=2,50
/XYZ*WCGa_d_0000_0886
[056.43 023.27 000.00 %0 Rd %ANH9_Y10-7N,201003, fehl? Zmin=2.72
 069.24 083.34 002.48 %1 Yd
 012.81 060.07 002.48 %2 Gd
 027.77 066.32 096.48 %3 Cd
 014.96 005.25 094.00 %4 Bd
 071.39 028.52 094.00 %5 Md
 056.43 023.27 000.00 %6 Rd %for hue circle
 000.01 000.01 000.01 %7 N1
 084.21 088.60 096.48 %8 W0
 095.05 100.00 108.90 %9 W1
] def

/XYZ*sRGB_d_0000_0886 30 array def %d, Yw=88,60, Yn=0,00
/XYZ*sRGB_d_0000_0886
[036.54 018.84 001.71 %0 Rd %ANH9_Y10-3N,201012
 076.99 092.78 013.85 %1 Yd
 035.76 071.52 011.91 %2 Gd
 053.81 078.74 106.98 %3 Cd
 018.05 007.22 095.06 %4 Bd
 059.28 028.48 096.99 %5 Md
 036.54 018.84 001.71 %6 Rd %for hue circle
 000.01 000.01 000.01 %7 N1
 084.21 088.60 096.48 %8 W0
 095.05 100.00 108.90 %9 W1
] def

/XYZ*Ostw_d_0000_1000 30 array def %m, Yw=100,00, Yn=0,00
/XYZ*Ostw_d_0000_1000
[062.40 041.75 000.76 %0 Rm 561_405  589 %ANI6_Y10-7N,201012
 076.68 082.00 001.27 %1 Ym 520_520c 569
 023.83 065.32 015.00 %2 Gm 475_473  528c
 032.63 058.24 108.12 %3 Cm 405_561  483
 018.36 017.99 107.61 %4 Bm 519c-519 471
 071.20 034.67 093.88 %5 Mm 573_475  528c
 062.40 041.75 000.76 %6 Rm 561_405  589 %for hue circle
 000.01 000.01 000.01 %7 N1
 095.05 100.00 108.90 %9 W0
 107.29 112.88 122.24 %9 W1
] def

/XYZ*Offs_d_0000_0886 30 array def %d, Yw=88,60, Yn=0,00
/XYZ*Offs_d_0000_0886
[029.01 016.24 004.26 %0 Rd %ANJ7_Y11-1N,201012
 063.74 072.69 008.27 %1 Yd
 008.53 020.05 009.58 %2 Gd
 018.74 026.27 069.02 %3 Cd
 006.22 004.51 022.65 %4 Bd
 032.46 016.95 023.04 %5 Md
 029.01 016.24 004.26 %6 Rd %for hue circle
 000.01 000.01 000.01 %7 N1
 084.21 088.60 096.48 %8 W0
 095.05 100.00 108.90 %9 W1
] def

/rgb*30X 30 array def
/rgb*30X
[1 0 0 %0
 1 1 0 %1
 0 1 0 %2
 0 1 1 %3
 0 0 1 %4
 1 0 1 %5
 1 0 0 %6
 0 0 0 %7
 1 1 1 %8
 1 1 1 %9 >1
] def

/tex*30X 30 array def
/tex*30X
[(Rot)     (red)     (R) %0
 (Gelb)    (yellow)  (Y) %1
 (Gr\374n) (green)   (G) %2
 (Cyan)    (cyan)    (C) %3
 (Blau)    (blue)    (B) %4
 (Magenta) (magenta) (M) %5
 (Rot)     (red)     (R) %6
 (Schwarz) (black)   (N) %7
 (Wei\337) (white)   (W) %8
 (Wei\337) (white)   (H) %9
] def

0 1 09 {/sISO exch def
        /i30 sISO 3 mul def
        /i31 i30 1 add def
        /i32 i30 2 add def
        /i50 sISO 5 mul def
        /i51 i50 1 add def
        /i52 i50 2 add def
        /i53 i50 3 add def
        /i54 i50 4 add def
        xchart4 0 eq {%xchart4=0
        XYZ*10 i50 XYZ*sRGB_d_0000_0886 i30 get put
        XYZ*10 i51 XYZ*sRGB_d_0000_0886 i31 get put
        XYZ*10 i52 XYZ*sRGB_d_0000_0886 i32 get put
                     } if %xchart4=0
        xchart4 1 eq {%xchart4=1
        XYZ*10 i50 XYZ*WCGa_d_0000_0886 i30 get put
        XYZ*10 i51 XYZ*WCGa_d_0000_0886 i31 get put
        XYZ*10 i52 XYZ*WCGa_d_0000_0886 i32 get put
                     } if %xchart4=1
        xchart4 2 eq {%xchart4=2
        XYZ*10 i50 XYZ*Offs_d_0000_0886 i30 get put
        XYZ*10 i51 XYZ*Offs_d_0000_0886 i31 get put
        XYZ*10 i52 XYZ*Offs_d_0000_0886 i32 get put
                     } if %xchart4=2
        xchart4 3 eq {%xchart4=3
        XYZ*10 i50 XYZ*Ostw_d_0000_1000 i30 get 0.8860 mul put
        XYZ*10 i51 XYZ*Ostw_d_0000_1000 i31 get 0.8860 mul put
        XYZ*10 i52 XYZ*Ostw_d_0000_1000 i32 get 0.8860 mul put
                     } if %xchart4=3

        /SUM XYZ*10 i50 get XYZ*10 i51 get add
                           XYZ*10 i52 get add def
        XYZ*10 i53 XYZ*10 i50 get SUM div put
        XYZ*10 i54 XYZ*10 i51 get SUM div put
      
        %will be replaced, if xchart5=1
        XYZ*10n i50 XYZ*10 i50 get put
        XYZ*10n i51 XYZ*10 i51 get put
        XYZ*10n i52 XYZ*10 i52 get put
        XYZ*10n i53 XYZ*10 i53 get put
        XYZ*10n i54 XYZ*10 i54 get put

       } for %i=0,10

/XYZnref_ISO9241-306 24 array def
/XYZnref_ISO9241-306 [ %XYZnref wit contrast step according to ISO 9241-306:2018
00.01 00.01 00.01 %0 0288:1
00.60 00.63 00.69 %1 0144:1
01.20 01.26 01.37 %2 0072:1
02.40 02.52 02.74 %3 0036:1 %standard
04.79 05.04 05.49 %4 0018:1
08.58 10.08 10.98 %5 0009:1
19.16 20.16 21.95 %6 04,5:1
38.32 40.32 43.90 %7 2,25:1
] def

/Ynref_ISO9241-306 8 array def
0 1 7 {/i exch def %i=0,7
       /i31 i 3 mul 1 add def
       Ynref_ISO9241-306 i XYZnref_ISO9241-306 i31 get put
      } for %i=0,7

} bind def %END proz_sRGB_rgb*30X_definitions

%***************************************************************
/proz_out_text_ANW_definition {%BEG proz_out_text_ANW_definition
%loop for maximal 5 colours +N +W
0 1 2 {/j exch def %j=0,2 %three components
       /i3j xchartl 3 mul j add def
       rgb*3A j rgb*30X i3j get put
       tex*3A j tex*30X i3j get put
      } for %j=0,2

0 1 4 {/j exch def %j=0,4 %three components
       /i5j xchartl 5 mul j add def
       XYZ*5A  j XYZ*10  i5j get put
       LCh*5A  j LCh*10  i5j get put
       XYZ*5An j XYZ*10n i5j get put
       LCh*5An j LCh*10n i5j get put
      } for %j=0,4

0 1 2 {/i exch def %i=0,2
       rgb*3N i rgb*30X   i 21 add get put %8x3
       tex*3N i tex*30X   i 21 add get put
       rgb*3W i rgb*30X   i 24 add get put %9x3
       tex*3W i tex*30X   i 24 add get put
      } for %i=0,2

0 1 4 {/i exch def %i=0,4
       XYZ*5N  i XYZ*10 i 35 add get put %8x5
       LCh*5N  i LCh*10 i 35 add get put
       XYZ*5W  i XYZ*10 i 40 add get put %9x5
       LCh*5W  i LCh*10 i 40 add get put
       XYZ*5Nn i XYZ*10n i 35 add get put %8x5
       LCh*5Nn i LCh*10n i 35 add get put
       XYZ*5Wn i XYZ*10n i 40 add get put %9x5
       LCh*5Wn i LCh*10n i 40 add get put
      } for %i=0,4

/L*Xd LCh*5A 0 get def
/C*Xd LCh*5A 1 get def
/L*Nd LCh*5N 0 get def
/L*Wd LCh*5W 0 get def

/L*Xdn LCh*5An 0 get def
/C*Xdn LCh*5An 1 get def
/L*Ndn LCh*5Nn 0 get def
/L*Wdn LCh*5Wn 0 get def

/xfact 2000 100 div def
/yfact 2000 100 div def

%Titeltext
/xd 1550 def
/yd 5000 def
/xp 1550 def
/yp 5000 def

/xpN xp def
/ypN yp 2000 sub def
/xpW xp def
/ypW yp def
/xpX xp 2000 add def
/ypX yp 1000 sub def

/xNd xp def %Nd
/yNd ypN L*Nd yfact mul add def %Nd

/xWd xp def %Wd
/yWd ypN L*Wd yfact mul add def %Wd

/xRd xp  C*Xd xfact mul add def %Xd
/yRd ypN L*Xd yfact mul add def

/tex_LC*hab {xchart8 0 eq {(LC*hab) show}
                          {(L*ChAB) show} ifelse
            } bind def
/tex_LabC*h {xchart8 0 eq {(LabC*h) show}
                          {(L*ABCh) show} ifelse
            } bind def

/indd   {0 -50 rmoveto (d)  show 0 50 rmoveto} bind def
/inddk  {0 -50 rmoveto (d,) show 0 50 rmoveto} bind def

/inde   {0 -50 rmoveto (d)  show 0 50 rmoveto} bind def
/indek  {0 -50 rmoveto (d,) show 0 50 rmoveto} bind def

/indab  {0 -50 rmoveto 
         xchart8 0 eq {(ab)} {(AB)} ifelse show 0 50 rmoveto} bind def
/indabk {0 -50 rmoveto
         xchart8 0 eq {(ab,)} {(AB,)} ifelse show 0 50 rmoveto} bind def
/indabd {0 -50 rmoveto
         xchart8 0 eq {(ab,d)} {(AB,d)} ifelse show 0 50 rmoveto} bind def
/indabe {0 -50 rmoveto
         xchart8 0 eq {(ab,e)} {(AB,e)} ifelse show 0 50 rmoveto} bind def
/indabN {0 -50 rmoveto
         xchart8 0 eq {(ab,N)} {(AB,N)} ifelse show 0 50 rmoveto} bind def
/indabW {0 -50 rmoveto
         xchart8 0 eq {(ab,W)} {(AB,W)} ifelse show 0 50 rmoveto} bind def
} bind def %END proz_out_text_ANW_definition

%**************************************************************

/nshow {TS  show} bind def
/kshow {TIS show} bind def
/bshow {TBS show} bind def
/jshow {TBIS show} bind def
/ibshown {TBV -50 -50 rmoveto show 0 50 rmoveto TBS} bind def
/ibshow0 {TBV -00 -50 rmoveto show 0 50 rmoveto TBS} bind def
/ishown  {TV  -50 -50 rmoveto show 0 50 rmoveto TS } bind def
/ishow0  {TV  -00 -50 rmoveto show 0 50 rmoveto TS } bind def

%40% kleiner
/ns4 {250 /Times-ISOL1 FS  show TK} bind def
/ks4 {250 /TimesI-ISOL1 FS  show TK} bind def
/bs4 {250 /TimesB-ISOL1 FS  show TK} bind def
/js4 {250 /TimesBI-ISOL1 FS  show TK} bind def
/ss4 {250 /Symbol FS  show TK} bind def
/is4 {200 /Times-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/es4 {200 /Times-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ib4 {200 /TimesB-ISOL1 FS 0 -60 rmoveto show 0 60 rmoveto TK} bind def
/eb4 {200 /TimesB-ISOL1 FS 0 130 rmoveto show 0 -130 rmoveto TK} bind def
/ip4 {200 /Times-ISOL1 FS 30 30 rmoveto (\267) show 30 -30 rmoveto TK} bind def

%60% kleiner
/ns6 {200 /Times-ISOL1 FS  show TS} bind def
/ks6 {200 /TimesI-ISOL1 FS  show TS} bind def
/bs6 {200 /TimesB-ISOL1 FS  show TS} bind def
/js6 {200 /TimesBI-ISOL1 FS  show TS} bind def
/ss6 {200 /Symbol FS  show TS} bind def
/is6 {160 /Times-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TS} bind def
/es6 {160 /Times-ISOL1 FS 0 100 rmoveto show 0 -100 rmoveto TS} bind def
/ib6 {160 /TimesB-ISOL1 FS 0 -50 rmoveto show 0 50 rmoveto TS} bind def
/eb6 {160 /TimesB-ISOL1 FS 0 100 rmoveto show 0 -100 rmoveto TS} bind def
/ip6 {160 /Times-ISOL1 FS 24 24 rmoveto (\267) show 24 -24 rmoveto TS} bind 

/cvishow {cvi 6 string cvs show} def
/cvsshow1 {10 mul cvi 0.1 mul 9 string cvs show} def
/cvsshow2 {100 mul cvi 0.01 mul 9 string cvs show} def
/cvsshow3 {1000 mul cvi 0.001 mul 9 string cvs show} def
/cvsshow4 {10000 mul cvi 0.0001 mul 9 string cvs show} def

/cvsshow1g {/nxx exch def                              %example nxx=99.1/99.0
             nxx 0 lt {(-) show /nxx nxx abs def} if
             nxx 10 mul cvi /nxi exch def              %nxi=991/990
             nxi 10 idiv /nxa exch def                 %nxa=99
             nxi nxa 10 mul sub /nxb exch def          %nxb=1/0
             nxa cvishow (,) show                      %nxa=99
             nxb cvishow                               %nxb=1/0
           } def
/cvsshow2g {/nxx exch def                              %example nxx=99.12/99,02/99,00
             nxx 0 lt {(-) show /nxx nxx abs def} if
             nxx 100 mul cvi /nxi exch def             %nxi=9912/9902/00
             nxi 100 idiv /nxa exch def                %nxa=99
             nxi nxa 100 mul sub /nxb exch def         %nxb=12/02/00
             nxa cvishow (,) show                      %nxb=99,
             nxb 10 ge {nxb cvishow} if                %nxb=12
             nxb  1 ge
             nxb  9 le and {(0) show nxb cvishow} if   %nxb=02
             nxb  0 eq {(00) show} if                  %nxb=00
           } def
/cvsshow3g {/nxx exch def                              %example nxx=99.123/99.012/99.001/99.000
             nxx 0 lt {(-) show /nxx nxx abs def} if
             nxx 1000 mul cvi /nxi exch def            %nxi=99123/99012/99001/99000
             nxi 1000 idiv /nxa exch def               %nxa=99
             nxi nxa 1000 mul sub /nxb exch def        %nxb=123/012/001/000
             nxa cvishow (,) show                      %nxb=99,
             nxb 100 ge {nxb cvishow} if               %nxb=123/012/001/000
             nxb  10 ge
             nxb  99 le and {(0) show nxb cvishow} if  %nxb=012
             nxb   1 ge
             nxb   9 le and {(00) show nxb cvishow} if %nxb=001
             nxb   0 eq {(000) show} if                %nxb=000
           } def

%%EndProlog
gsave

/lanind 0 def
/showde {0 lanind eq {show} {pop} ifelse} bind def
/showen {1 lanind le {show} {pop} ifelse} bind def
/showes {2 lanind eq {show} {pop} ifelse} bind def
/showfr {3 lanind le {show} {pop} ifelse} bind def
/showit {4 lanind eq {show} {pop} ifelse} bind def
/showjp {5 lanind le {show} {pop} ifelse} bind def

/lanindg where {pop /lanind1 lanindg def /lanind2 lanindg def}
               {/lanind1 0 def /lanind2 0 def} ifelse
/colormg where {pop /colorm1 colormg def /colorm2 colormg def}
               {/colorm1 0 def /colorm2 0 def} ifelse
/xcolorg where {pop /xcolor1 xcolorg def /xcolor2 xcolorg def}
               {/xcolor1 0 def /xcolor2 0 def} ifelse
/xchartg where {pop /xchart1 xchartg def /xchart2 xchartg def}
               {/xchart1 0 def /xchart2 0 def} ifelse
/lanind lanind1 def %lanind1 1 lanind2 {/lanind exch def %output showpage
/colorm colorm1 def %colorm1 1 colorm2 {/colorm exch def %output showpage
/xcolor xcolor1 def %xcolor1 1 xcolor2 {/xcolor exch def %output showpage
/xchart xchart1 def %xchart1 1 xchart2 {/xchart exch def %output showpage

/GSS$ where {pop /LSS$ GSS$ def}
            {/LSS$ (1) def} ifelse
/GSC$ where {pop /LSC$ GSC$ def}
            {/LSC$ (N) def} ifelse
/GSX$ where {pop /LSX$ GSX$ def}
            {/LSX$ (0) def} ifelse
/GSY$ where {pop /LSY$ GSY$ def}
            {/LSY$ (0) def} ifelse
/GEX$ where {pop /LEX$ GEX$ def}
            {/LEX$ (P.PS./PDF) def} ifelse
/GEY$ where {pop /LEY$ GEY$ def}
            {/LEY$ (P.DAT) def} ifelse
/IMES where {pop %/IMES IMES def
            }
            {/IMES 0 def} ifelse

/xchartl 5 def %0 for xchart6=0 or 1; 0 to 5 for 6 hue planes
/xchart3 0 def %0: LCH, %1: ICE/ice
/xchart4 1 def %0: sRGB, 1: WCGa, 3: Offs, 4:Ostw
/xchart5 0 def %0: YN=0, 1: YN=0,0 ..2,5 ..40,3
/xchart6 2 def %0: Y10-1N, %1 Y10-2N, %2: Y10-3N to 8N
/xchart7 0 def %0 to 7: 8 contrast steps no. 1 to 8 according to ISO 9241-406
/xchart8 1 def %0: LabC*h, 1: L*ABCh
/xchart9 0 def %0 for Normalizaton; 0: Y=88,6, 1: Y=18,0

4 /Times-ISOL1 FS
72 86 moveto
    (AGI10-8N) show
     
72 90 translate

0.01 MM 0.01 MM scale

15 setlinewidth
1 setgray
/xwide 6000 def
/ywide 4000 def
0 0 moveto xwide     0 rlineto 0 ywide rlineto
           xwide neg 0 rlineto closepath fill
0 setgray
0 0 moveto xwide     0 rlineto 0 ywide rlineto
           xwide neg 0 rlineto closepath stroke

%produces XYZ*10 and XYZ*10n
proz_sRGB_rgb*30X_definitions
%uses XYZ*10
proz_XYZnw_D65_xchart7_definition

0 1 09 {/i exch def %i=0,09
        /i100 i 5 mul def
        /i101 i100 1 add def
        /i102 i100 2 add def
        /i103 i100 3 add def
        /i104 i100 4 add def

        /Xaref XYZ*10 i100 get def
        /Yaref XYZ*10 i101 get def
        /Zaref XYZ*10 i102 get def

        %input XYZaref, output LChab*ref, same name in any case
        %output LabC*h (xchart8=0) or LABC*h (xchart8=1)
        proz_XYZ_LCh*

        LCh*10 i100 L*ref put
        LCh*10 i101 C*ref put
        LCh*10 i102 h*ref put
        LCh*10 i103 a*ref put
        LCh*10 i104 b*ref put

        LCh*10n i100 L*ref put %may be replaced
        LCh*10n i101 C*ref put
        LCh*10n i102 h*ref put
        LCh*10n i103 a*ref put
        LCh*10n i104 b*ref put

xchart5 1 eq {%BEG xchart5=1
              %XYZaref see above
              %input  XYZ*10
              %output XYZ*10n, LCh*10n
              
              proz_XYZ*10_XYZ*10n
              %calculates intermediate XYZ*10n

              /Xaref XYZ*10n i100 get def
              /Yaref XYZ*10n i101 get def
              /Zaref XYZ*10n i102 get def

              %input XYZaref, output LChab*ref, same name in any case
              %output LabC*h (xchart8=0) or LABC*h (xchart8=1)
              proz_XYZ_LCh*

              LCh*10n i100 L*ref put
              LCh*10n i101 C*ref put
              LCh*10n i102 h*ref put
              LCh*10n i103 a*ref put
              LCh*10n i104 b*ref put

             } if %xchart5=1

             } for %i=0,09

%produces for hue circle and achromatic colours
%XYZ*(ANW)_(ANW)n, LCh*(ANW)_(ANW)n with 5 components
%rgb*(ANW)_(ANW)n, tex*(ANW)_(ANW)n with 3 components
proz_out_text_ANW_definition

%STOPC

0 setgray
%Titeltext
/xd 1550 def
/yd 5000 def
/xp 1550 def
/yp 5000 def

/xdN xd def
/ydN yd 2000 sub def
/xdW xd def
/ydW yd def
/xdR xd 2000 add def
/ydR yd 1000 sub def

/xm 2000 4 div def
/xip xd xm 2 mul add def
/yip ydN xm 2 mul add def
 
/xi1 xd xm 1 mul sub def
/yi1 ydW xm 0.5 mul sub def

/xi2 xd xm 2 mul add def
/yi2 ydN 400 sub def

 50 3750 moveto
TBIS
xchart4 0 eq {(sRGB) show} if
xchart4 1 eq {(WCGa) show} if
xchart4 2 eq {(Offs) show} if
xchart4 3 eq {(Ostw) show} if
TBS
(\255Farben (9stufig) mit ) showde
( colours (9 steps) with ) showen
TBIS (L*(Ch)) show
TBV
indab
TBS
xchart8 0 eq {%xchart8=0
              ( im CIELAB\255Farbraum) showde
              ( in the CIELAB\255colour space) showen}
             {%xchart8=1
              ( im L*ABJND\255Farbraum) showde
              ( in L*ABJND\255colour space) showen} ifelse

0 3650 moveto 6000 0 rlineto stroke

/xt3  0400 def
/yt3 -2600 def
xt3 yt3 translate

/xfact 2000 100 div def
/yfact 2000 100 div def

/xpN xp def
/ypN yp 2000 sub def
/xpW xp def
/ypW yp def
/xpX xp 2000 add def
/ypX yp 1000 sub def

xpN 70 sub ypN moveto 3000 0 rlineto stroke %horizontal axis
xpN 3000 add 100 sub ypN 050 sub moveto 100 050 rlineto
                                       -100 050 rlineto stroke
xpN ypN 70 sub moveto 0 2400 rlineto stroke %vertical axis
xpN 050 sub ypN 2250 add moveto 050  100 rlineto
                                050 -100 rlineto stroke

xpN 050 sub ypN 300 sub moveto
TBS
(0) show

xpN 250 sub ypN 50 sub moveto
TBS
(0) show

xpN 1250 add ypN 250 sub moveto
TBS
xchart8 0 eq {(CIELAB chroma) showen
              (CIELAB\255Buntheit) showde}
             {(L*ABJND\255chromatic value) showen
              (L*ABJND\255Buntwert) showde} ifelse
TBIS xchart8 0 eq {( C*) show}{( C) show} ifelse -50 0 rmoveto
TBV indab

xpN 900 sub ypN 2450 add moveto
TBS
(CIELAB ligthness) showen
(CIELAB Helligkeit) showde
TBIS ( L*) show

TBS
xpW ypW moveto 150 0 rlineto -50 50 rmoveto (100) show %Scale lightness
xpX ypN 50 sub moveto 0 100 rlineto stroke
xpX 150 sub ypN 100 add moveto (100) show %scale chroma

/iout1 0 def
iout1 1 eq {%iout1=1
xchart5 0 eq {%xchart5=0
newpath
0 setgray
TX
xpN 1900 sub ypN 2750 add  moveto
i cvishow (, L*NWXd,C*Xd,:) show
L*Nd cvsshow2 (, ) show
L*Wd cvsshow2 (, ) show
L*Xd cvsshow2 (, ) show
C*Xd cvsshow2 (, ) show

xpN 1900 sub ypN 2600 add  moveto
i cvishow (, L*NWXd,C*Xd,:) show
LCh*5N 0 get cvsshow2 (, ) show
LCh*5W 0 get cvsshow2 (, ) show
LCh*5A 0 get cvsshow2 (, ) show
LCh*5A 1 get cvsshow2 (, ) show
} if %xchart5=0
} if %iout1=1

0 setgray
/xNd xp def %Nd
/yNd ypN L*Nd yfact mul add def %Nd
newpath
xNd yNd 100 0 360 arc fill

%STOPAA

/xWd xp def %Wd
/yWd ypN L*Wd yfact mul add def %Wd
newpath
xWd yWd 100 0 360 arc fill

/xRd xp  C*Xd xfact mul add def %Xd
/yRd ypN L*Xd yfact mul add def
newpath
xRd yRd 100 0 360 arc fill
newpath

0 setgray
20 setlinewidth
newpath
xNd yNd moveto xRd yRd lineto xWd yWd lineto stroke

newpath
0 setgray
/xm 2000 8 div def
/ym 2000 8 div def

/iout2 0 def
iout2 1 eq {%iout2=1
newpath
0 setgray
TX
xpN 900 sub 2000 add ypN 2450 add 11 150 mul sub moveto
(0: XYZ*5A: ) show
i cvishow (, ) show
XYZ*5A 0 get cvsshow2 (, ) show
XYZ*5A 1 get cvsshow2 (, ) show
XYZ*5A 2 get cvsshow2 (, ) show
XYZ*5A 3 get cvsshow2 (, ) show
XYZ*5A 4 get cvsshow2 (,   ) show

rgb*3A 0 get cvsshow2 (, ) show
rgb*3A 1 get cvsshow2 (, ) show
rgb*3A 2 get cvsshow2 (, ) show

xpN 900 sub 2000 add ypN 2450 add 12 150 mul sub moveto
(0: LCh*5A: ) show
i cvishow (, ) show
LCh*5A 0 get cvsshow2 (, ) show
LCh*5A 1 get cvsshow2 (, ) show
LCh*5A 2 get cvsshow2 (, ) show
LCh*5A 3 get cvsshow2 (, ) show
LCh*5A 4 get cvsshow2 (,   ) show

rgb*3A 0 get cvsshow2 (, ) show
rgb*3A 1 get cvsshow2 (, ) show
rgb*3A 2 get cvsshow2 (, ) show
newpath

xpN 900 sub 2000 add ypN 2450 add 13 150 mul sub moveto
(0: XYZ*5An: ) show
i cvishow (, ) show
XYZ*5An 0 get cvsshow2 (, ) show
XYZ*5An 1 get cvsshow2 (, ) show
XYZ*5An 2 get cvsshow2 (, ) show
XYZ*5An 3 get cvsshow2 (, ) show
XYZ*5An 4 get cvsshow2 (,   ) show

rgb*3A 0 get cvsshow2 (, ) show
rgb*3A 1 get cvsshow2 (, ) show
rgb*3A 2 get cvsshow2 (, ) show

xpN 900 sub 2000 add ypN 2450 add 14 150 mul sub moveto
(0: LCh*5An: ) show
i cvishow (, ) show
LCh*5An 0 get cvsshow2 (, ) show
LCh*5An 1 get cvsshow2 (, ) show
LCh*5An 2 get cvsshow2 (, ) show
LCh*5An 3 get cvsshow2 (, ) show
LCh*5An 4 get cvsshow2 (,   ) show

rgb*3A 0 get cvsshow2 (, ) show
rgb*3A 1 get cvsshow2 (, ) show
rgb*3A 2 get cvsshow2 (, ) show
newpath
} if %iout2=1

/i450 -5 def
0 1 8 {/i exch def
       /xm 0 def
       /ym yWd yNd sub 8 div def
       /xi xNd xm i mul add def  %NW
       /yi yNd ym i mul add def
       /w i 8 div def
       xchart7 0 eq {w w w setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 0 put
       LCh*45 i452 0 put
       LCh*45 i453 0 put
       LCh*45 i454 0 put
       rgb*45 i450 w put
       rgb*45 i451 w put
       rgb*45 i452 w put

       xchartl 0 eq {/r*m w def /g*m 0 def /b*m 0 def} if %N_R w 0 0
       xchartl 1 eq {/r*m w def /g*m w def /b*m 0 def} if %N_Y w w 0
       xchartl 2 eq {/r*m 0 def /g*m w def /b*m 0 def} if %N_G 0 w 0
       xchartl 3 eq {/r*m 0 def /g*m w def /b*m w def} if %N_C 0 w w
       xchartl 4 eq {/r*m 0 def /g*m 0 def /b*m w def} if %N_B 0 0 w
       xchartl 5 eq {/r*m w def /g*m 0 def /b*m w def} if %N_M w 0 w
       xchartl 6 eq {/r*m w def /g*m 0 def /b*m 0 def} if %N_R w 0 0

       i 4 eq {%i=4 %NW
               newpath
               0 setgray
               xi 70 sub yi moveto 140 0 rlineto stroke
               xi yi 70 sub moveto 0 140 rlineto stroke
               %allways for NW                         
               xi 900 sub yi 100 add moveto
               TS (9 steps) showen
               (9 Stufen) showde
               newpath
              } if %i=4

       /xm xRd xNd sub 8 div def
       /ym yRd yNd sub 8 div def
       /xi xNd xm i mul add def  %NX
       /yi yNd ym i mul add def

       i 2 eq {%i=2
               0 setgray
               xi 100 add yi 150 sub moveto
               TS (9 steps) showen
               (9 Stufen) showde
               newpath 
              } if %i=2

       /xm xRd xWd sub 8 div def
       /ym yWd yRd sub 8 div def
       /xi xRd xm i mul sub def  %XW
       /yi yRd ym i mul add def

       i 6 eq {%i=6
               0 setgray
               xi 100 add yi 050 add moveto
               TS (9 steps) showen
               (9 Stufen) showde
               newpath
              } if %i=6

      } for

0 1 7 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  1 mul add def  %NX
       /yi yNd ymr 1 mul add ymw i mul add def
       /r r*m 8 div 1 mul i 8 div add def
       /g g*m 8 div 1 mul i 8 div add def
       /b b*m 8 div 1 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 1 8 div mul add
                          L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 1 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put

/iout3 0 def
iout3 1 eq {%iout3=1
xchart5 0 eq {%xchart5=0
newpath
0 setgray
TX
xpN 900 sub 2000 add ypN 2850 add i 150 mul sub moveto
(5=0 LCh*45 ) show i cvishow (, ) show
LCh*45 i450 get cvsshow2 (, ) show
LCh*45 i451 get cvsshow2 (, ) show
LCh*45 i452 get cvsshow2 (, ) show
LCh*45 i453 get cvsshow2 (, ) show
LCh*45 i454 get cvsshow2 (,   ) show
rgb*45 i450 get cvsshow2 (, ) show
rgb*45 i451 get cvsshow2 (, ) show
rgb*45 i452 get cvsshow2 (, ) show
newpath
} if %xchart5=0
} if %iout3=1

      } for

0 1 6 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  2 mul add def  %NX
       /yi yNd ymr 2 mul add ymw i mul add def
       /r r*m 8 div 2 mul i 8 div add def
       /g g*m 8 div 2 mul i 8 div add def
       /b b*m 8 div 2 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 2 8 div mul add
                          L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 2 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put
      } for


0 1 5 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  3 mul add def  %NX
       /yi yNd ymr 3 mul add ymw i mul add def
       /r r*m 8 div 3 mul i 8 div add def
       /g g*m 8 div 3 mul i 8 div add def
       /b b*m 8 div 3 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 3 8 div mul add
                          L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 3 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put
      } for

0 1 4 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  4 mul add def  %NX
       /yi yNd ymr 4 mul add ymw i mul add def
       /r r*m 8 div 4 mul i 8 div add def
       /g g*m 8 div 4 mul i 8 div add def
       /b b*m 8 div 4 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 4 8 div mul add
                          L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 4 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put

       i 0 eq {%i=4 %NC
               newpath
               0 setgray
               xi 70 sub yi moveto 140 0 rlineto stroke
               xi yi 70 sub moveto 0 140 rlineto stroke
               newpath
              } if %i=0
       i 4 eq {%i=4 %WC
               newpath
               0 setgray
               xi 70 sub yi moveto 140 0 rlineto stroke
               xi yi 70 sub moveto 0 140 rlineto stroke
               newpath
              } if %i=4
      } for



0 1 3 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  5 mul add def  %NX
       /yi yNd ymr 5 mul add ymw i mul add def
       /r r*m 8 div 5 mul i 8 div add def
       /g g*m 8 div 5 mul i 8 div add def
       /b b*m 8 div 5 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 5 8 div mul add
                          L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 5 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put
      } for

0 1 2 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  6 mul add def  %NX
       /yi yNd ymr 6 mul add ymw i mul add def
       /r r*m 8 div 6 mul i 8 div add def
       /g g*m 8 div 6 mul i 8 div add def
       /b b*m 8 div 6 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 6 8 div mul add
                          L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 6 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put
      } for

0 1 1 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  7 mul add def  %NX
       /yi yNd ymr 7 mul add ymw i mul add def
       /r r*m 8 div 7 mul i 8 div add def
       /g g*m 8 div 7 mul i 8 div add def
       /b b*m 8 div 7 mul i 8 div add def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
       LCh*45 i450 L*Nd L*Xd L*Nd sub 7 8 div mul add
                         L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 7 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put

/iout4 0 def
iout4 1 eq {%iout4=1
xchart5 0 eq {%xchart5=0
newpath
0 setgray
TX
xpN 900 sub 2000 add ypN 1500 add i 150 mul sub moveto
(5=0 LCh*45 ) show i cvishow (, ) show
LCh*45 i450 get cvsshow2 (, ) show
LCh*45 i451 get cvsshow2 (, ) show
LCh*45 i452 get cvsshow2 (, ) show
LCh*45 i453 get cvsshow2 (, ) show
LCh*45 i454 get cvsshow2 (,   ) show
rgb*45 i450 get cvsshow2 (, ) show
rgb*45 i451 get cvsshow2 (, ) show
rgb*45 i452 get cvsshow2 (, ) show
newpath
} if %xchart5=0
} if %iout4=1

      } for

0 1 0 {/i exch def
       /xm xRd xNd sub 8 div def
       /ymr yRd yNd sub 8 div def
       /ymw yWd yNd sub 8 div def
       /xi xNd xm  8 mul add def  %NX
       /yi yNd ymr 8 mul add ymw i mul add def
       /r r*m def
       /g g*m def
       /b b*m def
       xchart7 0 eq {r g b setrgbcolor
                     xi yi 050 0 360 arc fill}
                    {0 setgray
                     xi yi 050 0 360 arc stroke} ifelse
       /i450 i450 5 add def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def

       LCh*45 i450 L*Nd L*Xd L*Nd sub 8 8 div mul add
                        L*Wd L*Nd sub i 8 div mul add put
       LCh*45 i451 LCh*5A 1 get 8 div 8 mul put
       LCh*45 i452 LCh*5A 2 get put
       LCh*45 i453 LCh*45 i451 get LCh*45 i452 get cos mul put
       LCh*45 i454 LCh*45 i451 get LCh*45 i452 get sin mul put
       rgb*45 i450 r put
       rgb*45 i451 g put
       rgb*45 i452 b put

/iout5 0 def
iout5 1 eq {%iout5=1
newpath
0 setgray
TX
xpN 900 sub 2000 add ypN 2450 add 16 150 mul sub moveto
(5=0 1 LCh*45: ) show
i cvishow (, ) show
LCh*45 i450 get cvsshow2 (, ) show
LCh*45 i451 get cvsshow2 (, ) show
LCh*45 i452 get cvsshow2 (, ) show
LCh*45 i453 get cvsshow2 (, ) show
LCh*45 i454 get cvsshow2 (,   ) show

rgb*45 i450 get cvsshow2 (, ) show
rgb*45 i451 get cvsshow2 (, ) show
rgb*45 i452 get cvsshow2 (, ) show
newpath
} if %iout5=1

      } for

0 1 44 {/i exch def %i=0,44
       /i450 i 5 mul def
       /i451 i450 1 add def
       /i452 i450 2 add def
       /i453 i450 3 add def
       /i454 i450 4 add def
      
       LCh*45n i450 LCh*45 i450 get put
       LCh*45n i451 LCh*45 i451 get put
       LCh*45n i452 LCh*45 i452 get put
       LCh*45n i453 LCh*45 i453 get put
       LCh*45n i454 LCh*45 i454 get put

       %allways: xchart8=0 and 1
       /L*ref LCh*45 i450 get def
       /C*ref LCh*45 i451 get def
       /h*ref LCh*45 i452 get def
       /a*ref LCh*45 i453 get def
       /b*ref LCh*45 i454 get def

       %input  LCh*ref of LabC*h (xchart8=0) or L*ABCh (xchart8=1)
       %output XYZref, xyanref
       proz_LCh*_XYZ

       XYZ*45 i450 Xref put
       XYZ*45 i451 Yref put
       XYZ*45 i452 Zref put
       XYZ*45 i453 xanref put
       XYZ*45 i454 yanref put

       /iout6 0 def
       iout6 1 eq {%iout6=1
       50 12000 i 150 mul sub moveto
       (5=0 LCh*ref, XYZref:) show i cvishow (, ) show
       L*ref cvsshow2g (, ) show
       C*ref cvsshow2g (, ) show
       h*ref cvsshow2g
       Xref cvsshow2g (, ) show
       Yref cvsshow2g (, ) show
       Zref cvsshow2g (, ) show
       } if %iout6=1

       XYZ*45n i450 Xref put %will be replaced for xchart5=1
       XYZ*45n i451 Yref put
       XYZ*45n i452 Zref put
       XYZ*45n i453 xanref put
       XYZ*45n i454 yanref put

xchart5 1 eq {%BEG xchart5=1

              %input  XYZ*45, %output XYZ*45n
              proz_XYZ*45_XYZ*45n

              /Xaref XYZ*45n i450 get def
              /Yaref XYZ*45n i451 get def
              /Zaref XYZ*45n i452 get def

              %input XYZaref, output LChab*ref, same name in any case
              %output LabC*h (xchart8=0) or LABC*h (xchart8=1)
              proz_XYZ_LCh*

              LCh*45n i450 L*ref put
              LCh*45n i451 C*ref put
              LCh*45n i452 h*ref put
              LCh*45n i453 a*ref put
              LCh*45n i454 b*ref put

/iout7 0 def
iout7 1 eq {%iout7=1
i 4 eq {%i=4
TX
-300 5650 moveto
(5=1 A:) show
Xnor cvsshow2g (, ) show
Ynor cvsshow2g (, ) show
Znor cvsshow2g (, ) show

Xtref cvsshow2g (, ) show
Ytref cvsshow2g (, ) show
Ztref cvsshow2g (, ) show

0 1 4 {/m exch def %m=0,4
/m450 i450 m 5 mul sub def
/m451 m450 1 add def
/m452 m450 2 add def
/m453 m450 3 add def
/m454 m450 4 add def

1800 5650 m 150 mul sub moveto
(5=1 B:) show
i450 cvishow (,   ) show
XYZ*45 m450 get cvsshow2g (, ) show
XYZ*45 m451 get cvsshow2g (, ) show
XYZ*45 m452 get cvsshow2g (,   ) show

LCh*45 m450 get cvsshow2g (, ) show
LCh*45 m451 get cvsshow2g (, ) show
LCh*45 m452 get cvsshow2g (,  ) show
LCh*45 m453 get cvsshow2g (, ) show
LCh*45 m454 get cvsshow2g %(,   ) show

XYZ*45n m450 get cvsshow2g (, ) show
XYZ*45n m451 get cvsshow2g (, ) show
XYZ*45n m452 get cvsshow2g (,   ) show

%LCh*45n m450 get cvsshow2g (, ) show
%LCh*45n m451 get cvsshow2g (, ) show
%LCh*45n m452 get cvsshow2g (,  ) show
%LCh*45n m453 get cvsshow2g (, ) show
%LCh*45n m454 get cvsshow2g %(,   ) show

} for %m=0,4
} if %i=4
} if %iout7=1

/iout8 0 def
iout8 1 eq {%iout8=1
i 44 eq {%i=44
1800 5650 5.1 150 mul sub moveto
(5=1 C:) show i cvishow (, ) show
i450 cvishow (,   ) show
XYZ*45 i450 get cvsshow2g (, ) show
XYZ*45 i451 get cvsshow2g (, ) show
XYZ*45 i452 get cvsshow2g (,   ) show

LCh*45 i450 get cvsshow2g (, ) show
LCh*45 i451 get cvsshow2g (, ) show
LCh*45 i452 get cvsshow2g (, ) show
LCh*45 i453 get cvsshow2g (, ) show
LCh*45 i454 get cvsshow2g (,  ) show

1800 5650 6.1 150 mul sub moveto
(5=1 D:) show i cvishow (, ) show
i450 cvishow (,   ) show
XYZ*45n i450 get cvsshow2g (, ) show
XYZ*45n i451 get cvsshow2g (, ) show
XYZ*45n i452 get cvsshow2g (,   ) show

LCh*45n i450 get cvsshow2g (, ) show
LCh*45n i451 get cvsshow2g (, ) show
LCh*45n i452 get cvsshow2g (, ) show
LCh*45n i453 get cvsshow2g (, ) show
LCh*45n i454 get cvsshow2g (, ) show
        } if %i=44
} if %iout8=1

             } if %xchart5=1

} for %i=0,44

%************************************

%STOPX

%Plot of 45 colours
%new LCh*45n and rgb*45n necessary

newpath
0 1 44 {/i exch def %i=0,44
        /xi xNd LCh*45n i 5 mul 1 add get xfact mul add def
        /yi yNd LCh*45n i 5 mul 0 add get yfact mul add def
        /r rgb*45 i 5 mul 0 add get def %5x45, NOT 3x45
        /g rgb*45 i 5 mul 1 add get def
        /b rgb*45 i 5 mul 2 add get def
        r g b setrgbcolor
        xi yi 050 0 360 arc fill              
       } for %i=0,44

%STOPE
%*****************************************************************
%complete text output

0 setgray
%allways
-350 6050 moveto
TS
(Normfarbwerte von Schwarz und Wei\337: ) showde
(Tristimulus values of black and white: ) showen
TIS
(Y) show
TV 0 -40 rmoveto (N) show 0 40 rmoveto
TS
(=) show XYZ*45 1 get cvsshow1g
TIS
(, Y) show
TV 0 -40 rmoveto (W) show 0 40 rmoveto
TS
(=) show XYZ*45 41 get cvsshow1g

xchart5 1 eq {%xchart5=1
-350 5800 moveto
TS
(Normfarbwerte von Schwarz und Wei\337: ) showde
(Tristimulus values of black and white: ) showen
TIS
(Y) show
TV 0 -40 rmoveto (Nn) show 0 40 rmoveto
TS
(=) show XYZ*45n 1 get cvsshow1g
TIS
(, Y) show
TV 0 -40 rmoveto (Wn) show 0 40 rmoveto
TS
(=) show XYZ*45n 41 get cvsshow1g
(, Y) show
TV 0 -40 rmoveto
xchart9 0 eq {(Wa) show}{(Za) show} ifelse 0 40 rmoveto
TS
xchart9 0 eq {(=88,6.) show}{(=18.) show} ifelse
} if %xchart5=1


%definition of actual LCh*(N,W,A)
xchart5 0 eq {%xchart5=0
              0 1 4 {/i exch def %i=0,4
                     LCh*5Na i LCh*45  0 5 mul i add get put
                     LCh*5Wa i LCh*45  8 5 mul i add get put
                     LCh*5Aa i LCh*45 44 5 mul i add get put
                    } for %i=0,4              
             }
             {%xchart5=1
             0 1 4 {/i exch def %i=0,4
                     LCh*5Na i LCh*45n  0 5 mul i add get put
                     LCh*5Wa i LCh*45n  8 5 mul i add get put
                     LCh*5Aa i LCh*45n 44 5 mul i add get put
                    } for %i=0,4
             } ifelse

%N
0 setgray
xpN 1250 sub ypN 500 add moveto
TBS
tex*3N 0 get showde
tex*3N 1 get showen
TBS
( ) show tex*3N 2 get show
TBV
xchart5 1 eq {0 -40 rmoveto (n) show 0  40 rmoveto} if

xpN 1900 sub ypN 250 add moveto
              TBIS (L*(Ch)) show TBV indabN
              xchart5 1 eq {(n) ib6} if
              TS (=) show
              LCh*5Na 0 get cvishow (, ) show
              LCh*5Na 1 get cvishow (, ) show
              (0) show

xpN 1900 sub ypN 000 sub moveto
              TBIS (rgb*) show (N) ib6
              xchart5 1 eq {(n) ib6} if
              TS (=) show
              rgb*3N 0 get cvishow (, ) show
              rgb*3N 1 get cvishow (, ) show
              rgb*3N 2 get cvishow
%W
0 setgray
xpN 1250 sub ypW 250 add moveto
TBS
tex*3W 0 get showde
tex*3W 1 get showen
TBS
( ) show tex*3W 2 get show
TBV
xchart5 1 eq {0 -40 rmoveto (n) show 0  40 rmoveto} if

xpN 1900 sub ypW 000 add moveto
              TBIS (L*(Ch)) show TBV indabW
              xchart5 1 eq {(n) ib6} if 
              TS (=) show
              LCh*5Wa 0 get cvishow (, ) show
              LCh*5Wa 1 get cvishow (, ) show
              (0) show

xpN 1900 sub ypW 250 sub moveto
              TBIS (rgb*) show (W) is6
              xchart5 1 eq {(n) ib6} if
              TS (=) show
              rgb*3W 0 get cvishow (, ) show
              rgb*3W 1 get cvishow (, ) show
              rgb*3W 2 get cvishow

%(L*Ch)_yshift
%xchartl       %0:R %1:Y %2:G %3:C %4:B %5:M 

/L*Ch_yshif0 [ 700  -900 -1200 -1200 700  700] def
/L*Ch_yshift [ 450  -650 -0950 -0950 450  450] def
/rgb*_yshift [ 200  -400 -0700 -0700 200  200] def
/tex*_yshift [ -50  -150 -0450 -0450 -50  -50] def

xchart5 1 eq {%xchart6=1
6000 2650 sub yRd L*Ch_yshif0 xchartl get add moveto %max (L*(Ch)
              TBIS (L*(Ch)) show TBV indabk tex*3A 2 get ib6
              %xchart5 1 eq {(n) ib6} if
              TS (=) show
              LCh*5A 0 get cvishow (, ) show
              LCh*5A 1 get cvishow (, ) show
              TBS
              LCh*5A 2 get cvishow
} if %xchart5=1

6000 2650 sub yRd L*Ch_yshift xchartl get add moveto %max (L*(Ch)
              TBIS (L*(Ch)) show TBV indabk tex*3A 2 get ib6 
              xchart5 1 eq {(n) ib6} if
              TS (=) show
              LCh*5Aa 0 get cvishow (, ) show
              LCh*5Aa 1 get cvishow (, ) show
              TBS
              LCh*5Aa 2 get cvishow

6000 1700 sub yRd rgb*_yshift xchartl get add moveto %max (rgb*)
              TBIS (rgb*) show tex*3A 2 get ib6
              xchart5 1 eq {(n) ib6} if
              TS (=) show
              rgb*3A 0 get cvishow (, ) show
              rgb*3A 1 get cvishow (, ) show
              rgb*3A 2 get cvishow

6000 1500 sub yRd tex*_yshift xchartl get add moveto %tex*3A (red...)
TBS
tex*3A 0 get showde
tex*3A 1 get showen
TBS
( ) show tex*3A 2 get show
TBV
xchart5 1 eq {0 -40 rmoveto (n) show 0  40 rmoveto} if

xt3 neg yt3 neg translate

showpage
%grestore

%%Trailer