%!PS-Adobe-3.0 EPSF-3.0 www.ps.bam.de/DG02/10X/X10GS1(A/P).(TXT/PS/PDF) 20011020 %%BoundingBox: 08 14 828 584 % Test chart for Standard DIN 33870:2001-01 % Cross of boxes with colours ranging from 14 to 91 L* values. % last modified 20011020 /FS {findfont exch scalefont setfont} bind def /MM {72 25.4 div mul} def %/jprod 1 def %for Production with frame, first step %/jprod 2 def %for Production with frame, second step %/jprod 3 def %for Production without frame, third step /jprod 1 def % 0 1 2 3 4 6 7 /EX$ [(A.PS/.TXT) (B.PS/.BMP) (G.PS/.GIF) (H.PS/.HTM) (I.PS/.HTM) (J.PS/.JPE) (P.PS/.PDF) (T.PS/.TIF) ] def /GEX$ EX$ 0 get def %BEG MX10MS0P.DAT theoretical measurement data of file X10MS0P.PDF /CFilenameS1 (www.ps.bam.de/DG02/10X/X10MS0) def %File name measured in step S0 /CDeviceS1 (Device: (X); ) def %Device name and file measured /CMeasS1 (Meas.: relativ) def %File name measured in step S0 /CDateS1 (Date: M010301) def %Date of calculation/measurement /inputarrayS1 [0 17 34 51 68 85 102 119 136 153 170 187 204 221 238 255] bind def /outputarrayS1 [%ouptut series F...0 (Black to White) = 32 colours 0.00 6.67 13.33 20.00 26.67 33.33 40.00 46.67 53.33 60.00 66.67 73.33 80.00 86.67 93.33 100.0 0.00 6.67 13.33 20.00 26.67 33.33 40.00 46.67 53.33 60.00 66.67 73.33 80.00 86.67 93.33 100.0 ] bind def %ouptut series F...0 /L*NgS1 outputarrayS1 0 get outputarrayS1 16 get add 0.5 mul 0.01 add def /L*WgS1 outputarrayS1 15 get outputarrayS1 31 get add 0.5 mul 0.01 sub def %/L*NgS1 18.01 def /L*WgS1 95.41 def /L*NS1 L*NgS1 def /L*WS1 L*WgS1 def %END MX10MS0P.DAT % transferf converts a value between 0 and 255 to one between 18 and 95. /transferf {255 div L*WS1 L*NS1 sub mul L*NS1 add} bind def /showprod {jprod 3 eq {pop} {show} ifelse} bind def % The ioFunction uses the input and output arrays to determine % which value is needed inorder to achieve the desired 'color' at the output. /outputarrayS1m 16 array def /ioFunction {%beg ioFunction 0 1 15 {/i exch def %i=0,15 outputarrayS1m i outputarrayS1 i get outputarrayS1 i 16 add get add 0.5 mul put } for %i=0,15 % search the outputarrayS1 using a for loop 1 1 15 {/i exch def /previndex i 1 sub def color outputarrayS1m i get lt color outputarrayS1m previndex get ge and { /omaxval outputarrayS1m i get def /imaxval inputarrayS1 i get def /ominval outputarrayS1m previndex get def /iminval inputarrayS1 previndex get def exit } if } for % Use a linear interpolation /modcolor color ominval sub omaxval ominval sub div imaxval iminval sub mul iminval add def } bind def %end ioFunction %%EndProlog gsave %LANINDL1 START 20000105 /lanind 0 def /lantex [(G) (E) (S) (F) (I) (J)] def /showde {0 lanind eq {showprod} {pop} ifelse} bind def /showen {1 lanind eq {showprod} {pop} ifelse} bind def /showes {2 lanind eq {showprod} {pop} ifelse} bind def /showfr {3 lanind eq {showprod} {pop} ifelse} bind def /showit {4 lanind eq {showprod} {pop} ifelse} bind def /showjp {5 lanind eq {showprod} {pop} ifelse} bind def /popde {0 lanind ne {pop} if} bind def /popen {1 lanind ne {pop} if} bind def /popes {2 lanind ne {pop} if} bind def /popfr {3 lanind ne {pop} if} bind def /popit {4 lanind ne {pop} if} bind def /popjp {5 lanind ne {pop} if} bind def /popxde {/n exch def 0 lanind ne {n {pop} repeat} if} bind def /popxen {/n exch def 1 lanind ne {n {pop} repeat} if} bind def /popxes {/n exch def 2 lanind ne {n {pop} repeat} if} bind def /popxfr {/n exch def 3 lanind ne {n {pop} repeat} if} bind def /popxit {/n exch def 4 lanind ne {n {pop} repeat} if} bind def /popxjp {/n exch def 5 lanind ne {n {pop} repeat} if} bind def /lanindg where {pop /lanind1 lanindg def /lanind2 lanindg def} {/lanind1 0 def /lanind2 0 def} ifelse lanind1 1 lanind2 {/lanind exch def %output showpage %LANINDL1 END /scount1 0 def /scount2 0 def /pcount1 0 def /pcount2 0 def gsave scount1 1 scount2 {/scount exch def %s=serie, e. g. 1,1,10 pcount1 1 pcount2 {/pcount exch def %p=page, e. g. 1,1,500 gsave % all measurements are given in MM. 1 MM 1 MM scale 4 /Times-Roman FS 255 18 moveto scount cvi 6 string cvs show 265 18 moveto pcount cvi 6 string cvs show pcount pcount1 eq pcount pcount2 eq or {%pcount=pcount1 or pcount2 30 13 moveto (Pruefvorlage Nr. 1 nach DIN 33870: ) showde (Test von gebrauchten schwarzen Tonermodulen) showde (Test chart no. 1 according to DIN 33870: ) showen (Test of refilled black toner modules) showen (Test chart no. 1 according to DIN 33870: ) showes (Test of refilled black toner modules) showes (Test chart no. 1 according to DIN 33870: ) showfr (Test of refilled black toner modules) showfr (Test chart no. 1 according to DIN 33870: ) showit (Test of refilled black toner modules) showit (Test chart no. 1 according to DIN 33870: ) showjp (Test of refilled black toner modules) showjp 62 196 moveto (Bestellungen fuer Originalnorm ) showde (Order of original standard ) showen (Order of original standard ) showes (Order of original standard ) showfr (Order of original standard ) showit (Order of original standard ) showjp ( DIN 33870:2001-01: Beuth-Verlag, D-10787 Berlin) showprod 12 185 moveto -90 rotate (Technische Informationen: http://o2.ps.bam.de) showde (Technical information: http://o2.ps.bam.de) showen (Technical information: http://o2.ps.bam.de) showes (Technical information: http://o2.ps.bam.de) showfr (Technical information: http://o2.ps.bam.de) showit (Technical information: http://o2.ps.bam.de) showjp 90 rotate 12 103 moveto -90 rotate (Bilddatei-Version 1.6, X10GS1) showde (Image file version 1.6, X10ES1) showen (Image file version 1.6, X10ES1) showes (Image file version 1.6, X10ES1) showfr (Image file version 1.6, X10ES1) showit (Image file version 1.6, X10ES1) showjp GEX$ showprod 90 rotate 281 185 moveto -90 rotate (BAM-Registrierung: 20011020-33870D10) showde (BAM registration: 20011020-33870D10) showen (BAM registration: 20011020-33870D10) showes (BAM registration: 20011020-33870D10) showfr (BAM registration: 20011020-33870D10) showit (BAM registration: 20011020-33870D10) showjp 90 rotate 281 108 moveto -90 rotate (BAM-Referenz-Material: Code=rha4ra-33870D10) showde (BAM-Reference material: code=rha4ra-33870D10) showen (BAM-Reference material: code=rha4ra-33870D10) showes (BAM-Reference material: code=rha4ra-33870D10) showfr (BAM-Reference material: code=rha4ra-33870D10) showit (BAM-Reference material: code=rha4ra-33870D10) showjp 90 rotate } if %pcount=pcount1 or pcount2 25.5 22.5 translate 155 -9.5 moveto 4 setlinewidth 4 /Times-Roman FS (www.ps.bam.de/DG02/10X/X10GS1) showde (www.ps.bam.de/DE02/10X/X10ES1) showen (www.ps.bam.de/DS02/10X/X10SS1) showes (www.ps.bam.de/DF02/10X/X10FS1) showfr (www.ps.bam.de/DI02/10X/X10IS1) showit (www.ps.bam.de/DJ02/10X/X10JS1) showjp GEX$ showprod /xdimbox 13 def /ydimbox 11 def /ydimbox0 11 def % calculates the distance to move in the y direction before drawing % each box. Must fit 17 boxes is 147.6 mm. /ymove ydimbox 17 ydimbox mul 147.6 sub 16 div sub def jprod 3 lt {% Outer border .5 setlinewidth 0 0 moveto 247 0 rlineto 0 165 rlineto -247 0 rlineto closepath stroke % The inner border .5 setlinewidth 13 ymove moveto 221 0 rlineto 0 147.6 rlineto -221 0 rlineto closepath stroke} if % D=decimal ( an array of decimal numbers ) % B= byte-a string of integers between 0 and 255 , % H= hexadecimal ( a string of hexadecimal values) % 10 represents the original array, % 05 represents square root, % 20 represents the square /D38str 38 string def /D10 17 array def /B10 17 string def /H10 38 string def /S16 17 array def /D10 [0 17 34 51 68 85 102 119 127.5 136 153 170 187 204 221 238 255] def /S16 [(0) (1) (2) (3) (4) (5) (6) (7) (Z) (8) (9) (A) (B) (C) (D) (E) (F)] def %Calculate B10 from D10. 0 1 16 {/i exch def %i=0,1,18 B10 i D10 i get 0.49 add cvi put } for %i=0,1,18 % calculate H10 from D10. This requires converting a decimal value % to a hexadecimal one. The decimal number is assumed to be between % 0 and 255. 0 1 16 {/i exch def %i=0,1,16 start create H10 string from D10 D10 i get 16 div cvi /X1 exch def D10 i get 16 X1 mul sub /X2 exch def X1 10 ge {H10 i 2 mul 65 X1 10 sub add cvi put} {H10 i 2 mul 48 X1 add cvi put} ifelse X2 10 ge {H10 i 2 mul 1 add 65 X2 10 sub add cvi put} {H10 i 2 mul 1 add 48 X2 add cvi put} ifelse } for %i=0,1,18 end create H10 string from D10 /cvishow {cvi 6 string cvs showprod} def /cvsshow1 {10 mul cvi 0.1 mul 7 string cvs showprod} def /cvsshow2 {100 mul cvi 0.01 mul 7 string cvs showprod} def /cvsshow3 {1000 mul cvi 0.001 mul 7 string cvs showprod} def 3 /Times-Roman FS 5 -4 moveto (H10: ) showprod 0 1 16 {/i exch def H10 2 i mul 2 getinterval showprod ( ) showprod} for 130 -4 moveto (D10: ) showprod 0 1 16 {/i exch def D10 i get cvishow ( ) showprod} for /L*i 17 array def % Lightness /Yi 17 array def % luminance /L*D L*WS1 L*NS1 sub def % Range between white and black /L*R L*D 100 div def % Range divided by 100 % scales the values in the input array D10 to be between 13 and 90 % and stores in the lightness array L*i. 0 1 16 {/i exch def L*i i D10 i get 2.55 div L*R mul L*NS1 add put} for % Luminance for white and black /YN L*i 0 get dup 1 lt {pop 0} {16 add 116 div 3 exp 100 mul} ifelse def /YW L*i 16 get 16 add 116 div 3 exp 100 mul def % Range between white and black luminance /YD YW YN sub def % Determine the luminance values from the Lightness array 0 1 16 {/i exch def Yi i L*i i get dup 1 lt {pop 0} {16 add 116 div 3 exp 100 mul} ifelse put} for 3 /Times-Roman FS /ni 17 array def % ni= 1-(Yi-Yn)/YD 0 1 16 {/i exch def ni i 1 Yi i get YN sub YD div sub put} for 0 setgray 3 /Times-Roman FS 2 169 moveto (L* : ) showprod 0 1 16 {/i exch def L*i i get cvsshow1 ( ) showprod} for 2 166 moveto (Y : ) showprod 0 1 16 {/i exch def Yi i get cvsshow1 ( ) showprod} for % Percentage of total area of a box. /fa xdimbox ydimbox mul 210 298 mul div 100 mul def % Percentage coverage % fi= (1-(Yi-Yn)/YD)*fa /fi 19 array def 0 1 16 {/i exch def fi i 1 Yi i get YN sub YD div sub fa mul put} for % running sum of percentage coverage /fs 0 def 0 1 16 {/i exch def /fs fs fi i get add def} for 130 xdimbox sub 166 moveto (f : ) showprod 0 1 16 {/i exch def fi i get cvsshow2 ( ) showprod} for fs 2 mul fi 8 get sub dup /FA exch def 6 /Times-Roman FS cvsshow2 % making the cross and corect ysize to produce 5% area cover jprod 2 ge {(-> 5.00) showprod /ydimbox ydimbox 5.00 FA div mul def} if 3 /Times-Roman FS 130 xdimbox sub 169 moveto (L*NS1 : ) showprod L*NS1 cvsshow1 ( ) showprod (L*WS1 : ) showprod L*WS1 cvsshow1 ( ) showprod (xbox: ) showprod xdimbox cvsshow2 ( mm ) showprod (ybox: ) showprod ydimbox0 cvsshow2 ( mm ) showprod (yboxcor.: ) showprod ydimbox cvsshow2 ( mm ) showprod /drawbox { moveto xdimbox 0 rlineto 0 ydimbox rlineto xdimbox neg 0 rlineto closepath fill } bind def /strobox { moveto xdimbox 0 rlineto 0 ydimbox rlineto xdimbox neg 0 rlineto closepath stroke} bind def xdimbox ymove translate 0 1 7 {/j exch def /color B10 j get transferf def ioFunction modcolor 255 div setgray xdimbox j mul ymove j mul drawbox xdimbox 16 j sub mul ymove 16 j sub mul drawbox } for 16 -1 9 {/j exch def /color B10 j get transferf def ioFunction modcolor 255 div setgray 16 j sub xdimbox mul j ymove mul drawbox j xdimbox mul 16 j sub ymove mul drawbox } for %white frame 0.1 setlinewidth 0 setgray 0 16 ymove mul moveto xdimbox 0 rlineto 0 ydimbox rlineto xdimbox neg 0 rlineto closepath stroke 16 xdimbox mul 0 moveto xdimbox 0 rlineto 0 ydimbox rlineto xdimbox neg 0 rlineto closepath stroke 0 setgray 6 /Times-Roman FS 0 1 16 {/j exch def j xdimbox mul 5 add -6 moveto S16 16 j sub get showprod 16 j sub xdimbox mul 5 add 149 moveto S16 16 j sub get showprod } for %draw middle box /color B10 8 get transferf def ioFunction modcolor 255 div setgray 8 xdimbox mul 8 ymove mul drawbox xdimbox neg ymove neg translate -25.5 -22.5 translate 0 setgray 0.5 0.5 translate 0.15 setlinewidth /x 24 array def /y 24 array def /d 24 array def /x [000 296 296 000 002 294 294 002 004 292 292 004 006 290 290 006 008 288 288 008 010 286 286 010 ] def /y [000 000 210 210 002 002 208 208 004 004 206 206 006 006 204 204 008 008 202 202 010 010 200 200] def /xlu 017 def /ylu 017 def /xro 279 def /yro 193 def /xlo 017 def /ylo 193 def /xru 279 def /yru 017 def jprod 3 lt {%no lines for jprod=3 xlu 8 sub ylu moveto 16 0 rlineto stroke xlu ylu 8 sub moveto 0 58 rlineto stroke xro 8 add yro moveto -16 0 rlineto stroke xro yro 8 add moveto 0 -16 rlineto stroke xru 8 sub yru moveto 16 0 rlineto stroke xru yru 8 sub moveto 0 16 rlineto stroke xlo 8 add ylo moveto -16 0 rlineto stroke xlo ylo 8 add moveto 0 -16 rlineto stroke 1 2 7 {/i exch def %Zentrierkreise xlu ylu i 0 360 arc stroke xro yro i 0 360 arc stroke xru yru i 0 360 arc stroke xlo ylo i 0 360 arc stroke } for %i } if %no lines for jprod<3 pcount pcount1 eq pcount pcount2 eq or {%pcount=pcount1 or pcount2 12 4 20 {/i exch def /i0 i def %i=0,16 /i1 i0 1 add def /i2 i0 2 add def /i3 i0 3 add def i 16 eq {0.30 setlinewidth} {0.15 setlinewidth} ifelse x i0 get y i0 get moveto x i1 get y i1 get lineto x i2 get y i2 get lineto x i3 get y i3 get lineto x i0 get y i0 get lineto stroke } for %i=12,20 024 010.2 moveto 2 /Times-Roman FS (-10) show 024 008.2 moveto 2 /Times-Roman FS (-8) show 024 006.2 moveto 2 /Times-Roman FS (-6) show 270 010.2 moveto 2 /Times-Roman FS (-10) show 270 008.2 moveto 2 /Times-Roman FS (-8) show 270 006.2 moveto 2 /Times-Roman FS (-6) show 024 198.4 moveto 2 /Times-Roman FS (-10) show 024 200.4 moveto 2 /Times-Roman FS (-8) show 024 202.4 moveto 2 /Times-Roman FS (-6) show 270 198.4 moveto 2 /Times-Roman FS (-10) show 270 200.4 moveto 2 /Times-Roman FS (-8) show 270 202.4 moveto 2 /Times-Roman FS (-6) show jprod 3 eq {%text only for jprod=3 and pcount=pcount1 or pcount2 4 /Times-Roman FS 024 020 moveto CFilenameS1 show GEX$ show 024 015 moveto CDeviceS1 show CMeasS1 show GEX$ show (; ) show CDateS1 show } if %text only for jprod=3 and pcount=pcount1 or pcount2 } if %pcount=pcount1 or pcount2 showpage grestore } for %p=page } for %s=serie grestore } for %output with langind end %%Trailer