GIF89a=( õ' 7IAXKgNgYvYx\%wh…hŽth%ˆs%—x¨}9®Œ©€&©‰%¶†(¹–.¹5·œD¹&Çš)ÇŸ5ǘ;Í£*È¡&Õ²)ׯ7×µ<Ñ»4ï°3ø‘HÖ§KͯT÷¨Yÿšqÿ»qÿÔFØ !ù ' !ÿ NETSCAPE2.0 , =( þÀ“pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§gª«ªE¯°¨¬ª±²Œ¹º¹E¾­”´ÂB¶¯ §Åȸ»ÑD¾¿Á•ÄÅ®° ÝH¾ÒLÀÆDÙ«D¶BÝïðÀ¾DÑÑÔTÌÍíH òGö¨A RÎڐ |¥ ٭&ºìE8œ¹kGÔAÞpx­a¶­ã R2XB®åE8I€Õ6Xî:vT)äžþÀq¦è³¥ì仕F~%xñ  4#ZÔ‰O|-4Bs‘X:= QÉ œš lºÒyXJŠGȦ|s hÏíK–3l7·B|¥$'7Jީܪ‰‡àá”Dæn=Pƒ ¤Òëí‰`䌨ljóá¯Éüv>á–Á¼5 ½.69ûϸd«­ºÀûnlv©‹ªîf{¬ÜãPbŸ  l5‘ޝpß ´ ˜3aÅùäI«O’ý·‘áÞ‡˜¾Æ‚ÙÏiÇÿ‹Àƒ #öó)pâš Þ½ ‘Ý{ó)vmÞü%D~ 6f s}ŃƒDØW Eþ`‡þ À…L8xá†ç˜{)x`X/> Ì}mø‚–RØ‘*|`D=‚Ø_ ^ð5 !_…'aä“OÚ—7âcð`D”Cx`ÝÂ¥ä‹éY¹—F¼¤¥Š?¡Õ™ n@`} lď’ÄÉ@4>ñd œ à‘vÒxNÃ×™@žd=ˆgsžG±æ ´²æud &p8Qñ)ˆ«lXD©øÜéAžHìySun jª×k*D¤LH] †¦§C™Jä–´Xb~ʪwStŽ6K,°£qÁœ:9ت:¨þªl¨@¡`‚ûÚ ».Û¬¯t‹ÆSÉ[:°=Š‹„‘Nåû”Ìî{¿ÂA ‡Rà›ÀÙ6úë°Ÿð0Ä_ ½;ÃϱîÉì^ÇÛÇ#Ëë¼ôº!±Ä˜íUîÅÇ;0L1óÁµö«p% AÀºU̬ݵ¼á%霼€‡¯Á~`ÏG¯»À× ­²± =4ªnpð3¾¤³¯­ü¾¦îuÙuµÙ®|%2ÊIÿür¦#0·ÔJ``8È@S@5ê¢ ö×Þ^`8EÜ]ý.뜃Âç 7 ú ȉÞj œ½Dç zý¸iþœÑÙûÄë!ˆÞÀl§Ïw‹*DçI€nEX¯¬¼ &A¬Go¼QföõFç°¯;é¦÷îŽêJ°îúôF5¡ÌQ|îúöXªæ»TÁÏyñêï]ê² o óÎC=öõ›ÒÓPB@ D×½œä(>èCÂxŽ`±«Ÿ–JЀ»Û á¤±p+eE0`ëŽ`A Ú/NE€Ø†À9‚@¤à H½7”à‡%B‰`Àl*ƒó‘–‡8 2ñ%¸ —€:Ù1Á‰E¸àux%nP1ð!‘ðC)¾P81lÑɸF#ˆ€{´âé°ÈB„0>±û °b¡Š´±O‚3È–Ù()yRpbµ¨E.Z‘D8ÊH@% òŒx+%Ù˜Æcü »¸˜fõ¬b·d`Fê™8èXH"ÉÈ-±|1Ô6iI, 2““¬$+](A*jÐ QTÂo‰.ÛU슬Œã„Ž`¯SN¡–¶Äåyše¯ª’­¬‚´b¦Éož œ)åyâ@Ì®3 ÎtT̉°&Ø+žLÀf"Ø-|žçÔ>‡Ðv¦Ðžì\‚ Q1)Ž@Žh#aP72”ˆ™¨$‚ !ù " , =( …7IAXG]KgNgYvYxR"k\%w]'}hŽth%ˆg+ˆs%—r.—m3šx3˜x¨}9®€&©€+¨‡7§‰%¶†(¹–.¹œD¹&ǘ;Í•&ײ)×»4ïÌ6ò§KÍ þ@‘pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g «¬ E ±± ¨­¶°ººE Á´”·®C¬²§Ç¶Œ»ÓDÃÕƷ¯Ê±H½ºM×ÁGÚ¬D¶BËÁ½î½DÓôTÏÛßîG»ôõC×CÌ l&âž:'òtU³6ɹ#·Ø)€'Ü.6±&ëÍÈ» K(8p0N?!æ2"ÛˆNIJX>R¼ÐO‚M '¡¨2¸*Ÿþ>#n↠å@‚<[:¡Iïf’ ¤TÚ˘CdbÜÙ“[«ŽEú5MBo¤×@€`@„€Êt W-3 ¶Ÿ¡BíêäjIÝ…Eò9[T…$íêﯧ„…•s»Óȳ¹€ÅÚdc®UUρ#±Ùïldj?´í¼²`\ŽÁðÞu|3'ÖŒ]ë6 ¶S#²‡˜FKLÈ *N E´‘áäŠ$˜›eÄYD„ºq«.è촁ƒs \-ÔjA 9²õ÷å- üúM[Âx(ís÷ì®x€|í¡Ù’p¦‚ ŽkÛTÇDpE@WÜ ²Ç]kŠ1¨ þ€·Yb ÓÁ‰l°*n0 ç™—žzBdОu¾7ĉBl€â‰-ºx~|UåU‰  h*Hœ|e"#"?vpÄiŠe6^ˆ„+qâŠm8 #VÇá ‘å–ÄV„œ|Аè•m"сœn|@›U¶ÆÎž—Špb¥G¨ED”€±Úê2FÌIç? >Éxå Œ± ¡¤„%‘žjŸ‘ꄯ<Ìaà9ijÐ2˜D¦È&›†Z`‚å]wþ¼Â:ç6àB¤7eFJ|õÒ§Õ,¨äàFÇ®cS·Ê¶+B°,‘Þ˜ºNûãØ>PADÌHD¹æž«ÄÀnÌ¥}­#Ë’ë QÀÉSÌÂÇ2ÌXÀ{æk²lQÁ2«ÊðÀ¯w|2Í h‹ÄÂG€,m¾¶ë3ÐÙ6-´ÅE¬L°ÆIij*K½ÀÇqï`DwVÍQXœÚÔpeœ±¬Ñ q˜§Tœ½µƒ°Œìu Â<¶aØ*At¯lmEØ ü ôÛN[P1ÔÛ¦­±$ÜÆ@`ùåDpy¶yXvCAyåB`ŽD¶ 0QwG#¯ æš[^Äþ $ÀÓÝǦ{„L™[±úKÄgÌ;ï£S~¹ìGX.ôgoT.»åˆ°ùŸûù¡?1zö¦Ÿž:ÅgÁ|ìL¹ „®£œŠ‚à0œ]PÁ^p F<"•ç?!,ñ‡N4—…PÄ Á„ö¨Û:Tè@hÀ‹%táÿ:ø-žI<`þ‹p I….)^ 40D#p@ƒj4–؀:²‰1Øâr˜¼F2oW¼#Z†;$Q q” ‘ ÂK¦ñNl#29 !’F@¥Bh·ᏀL!—XFóLH‘Kh¤.«hE&JòG¨¥<™WN!€ÑÙÚˆY„@†>Œž19J" 2,/ &.GXB%ÌRÈ9B6¹W]’î×ÔW¥’IÎ$ ñ‹ÓŒE8YÆ ¼³™ñA5“à®Q.aŸB€&Ø©³ JÁ—! ¦t)K%tœ-¦JF bòNMxLôþ)ÐR¸Ð™‘ èÝ6‘O!THÌ„HÛ ‰ !ù ) , =( …AXKgNgYvYxR"k\%wh…hŽh%ˆg+ˆs%—r.—x3˜x¨}9®€&©€+¨Œ,©‡7§‰%¶†(¹–.¹5·&Çš)ǘ;Í•&×£*Ȳ)ׯ7×»4ï°3øÌ6ò‘HÖ§KÍ»Hó¯T÷¨Yÿ»qÿÇhÿ þÀ”pH,È¤rÉl:ŸÐ¨tJ­Z¯Ø¬vËíz¿à°xL.›Ïè´zÍn»ßð¸|N¯Ûïø¼~Ïïûÿ€‚ƒ„…†‡ˆ‰Š‹ŒŽ‘’“”•–—˜™š›œžŸ ¡¢£¤¥¦§g ª« E$±²¨ª­ · °²½$E$ÂÕ««D· Í ¿¦Ç¶¸ÌŒ¾³CÃÅÆ E ééH½MÛÂGâªD­ çBêêϾD²ÒaÀà€Š1r­ðÓ¤ ÔožzU!L˜C'¾yW½UGtäÇïÙllê0×àÂuGþ)AÀs[þ·xì ÁxO%ƒûX2ó—  P£n›R/¡ÑšHše+êDm?# —‘Ç£6¡8íJ¡ŸâDiäªM¥Ö„ôj“¬¹£5oQ7°- <‡ *´lãÓŒ2r/a!l)dÈ A™ÈE¢ôÔ͆…ð ;Ö˜c ¡%ß‚’Ùˆâ¸b½—pe~C"BíëÚHïeF2§æŠ8qb t_`urŠeü wÅu3êæPv§h•"ß`íÍxçLĹÜÖ3á  ~Öº“®›¸ÏMDfJÙ °„ÛµáWõ%§œ‚à©–‚X ÓØ)@®Ñ›Eþ´wëuÅSxb8y\mÖzœ¥§ZbºE—ÂLªÌw!y(>¡™wú=Ç|ÅÝs¢d €CÁW)HÜcC$€L Ä7„r.á\{)@ð` @ äXÈ$PD” `šaG:§æˆOˆ72EÐamn]ù"ŒcÊxÑŒ° &dR8`g«iÙŸLR!¦P …d’ä¡“¦ðÎTƒ¦ià|À _ ¥ Qi#¦Šg›Æ ›noMµ ›V ã£)p ç£ÎW…š=Âeªk§†j„ ´®1ß²sÉxéW«jšl|0¯B0Û, \jÛ´›6±¬¶C ÛíWþï|ëÙ‹¸ñzĸV {ì;Ýñn¼òVˆm³I¼³.Ðã¤PN¥ ²µ¼„µCã+¹ÍByî£Ñ¾HŸ›ëê 7ìYÆFTk¨SaoaY$Dµœìï¿Ã29RÈkt Çïfñ ÇÒ:ÀÐSp¹3ÇI¨â¥DZÄ ü9Ïýögñ½­uÔ*3)O‘˜Ö[_hv ,àî×Et Ÿé¶BH€ Õ[ü±64M@ÔSÌM7dÐl5-ÄÙU܍´©zߌ3Ô€3ž„ „ ¶ÛPô½5×g› êÚ˜kN„Ý…0Îj4€Ìë°“#{þÕ3S2çKÜ'ợlø¼Ú2K{° {Û¶?žm𸧠ËI¼nEò='êüóºè^üæÃ_Û=°óž‚ì#Oý¿Í'¡½áo..ÏYìnüñCœO±Áa¿¢Kô½o,üÄËbö²çºíï{ËC Ú— "”Ï{ËK ÍÒw„õ±Oz dÕ¨à:$ ƒô—«v»] A#ð «€¿šéz)Rx׿ˆ¥‚d``èw-îyÏf×K!ð€þ­Ð|ìPľ„=Ì`ý(f” 'Pa ¥ÐBJa%Ðâf§„%Š¡}FàáÝ×6>ÉäŠG"éŽè=ø!oа^FP¼Ø©Q„ÀCÙÁ`(Ž\ÄÝ® ©Â$<n@dÄ E#ììUÒI! ‚#lù‹`k¦ÐÇ'Rró’ZýNBÈMF Í[¤+‹ðɈ-áwj¨¥þ8¾rá ,VÂh„"|½œ=×G_¦Ñ™EØ 0i*%̲˜Æda0mV‚k¾)›;„&6 p>ÓjK “¦Ç# âDÂ:ûc?:R Ó¬fÞéI-Ì“•Ã<ä=™Ï7˜3œ¨˜c2ŒW ,ˆ”8(T™P‰F¡Jhç"‚ ; 403WebShell
403Webshell
Server IP : 172.67.177.218  /  Your IP : 216.73.216.195
Web Server : LiteSpeed
System : Linux premium229.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64
User : akhalid ( 749)
PHP Version : 8.3.22
Disable Function : NONE
MySQL : OFF  |  cURL : ON  |  WGET : ON  |  Perl : ON  |  Python : ON  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /usr/share/ghostscript/lib/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /usr/share/ghostscript/lib/stcinfo.ps
% Copyright (C) 2001-2019 Artifex Software, Inc.
% All Rights Reserved.
%
% This software is provided AS-IS with no warranty, either express or
% implied.
%
% This software is distributed under license and may not be copied,
% modified or distributed except as expressly authorized under the terms
% of the license contained in the file LICENSE in this distribution.
%
% Refer to licensing information at http://www.artifex.com or contact
% Artifex Software, Inc.,  1305 Grant Avenue - Suite 200, Novato,
% CA 94945, U.S.A., +1(415)492-9861, for further information.
%

% stcinfo.ps
% Epson Stylus-Color Printer-Driver

% The purpose of this file is to print & show Parameters of the
% stcolor-driver. If not run on ghostscript/stcolor, it prints
% something like a color-chart.

% use either existing STCinfo-dictionary, retrieve new one or create dummy

statusdict begin product end
dup (Ghostscript) eq 1 index (Artifex Ghostscript) eq or
exch (AFPL Ghostscript) eq or{

  currentdevice getdeviceprops .dicttomark
  dup /Name get (stcolor) eq /STCi_onstc exch def
  /STCinfo where {/STCinfo get exch pop} if
  /STCinfo exch def

}{

  /STCinfo 10 dict def
  STCinfo begin /Name (unknown) def end
  /STCi_onstc false def

}ifelse

% Next Block are procedures to generate the color-triangles.
% you may wish to separate them, just look ahead for the name
% given in the next line to achieve that.
% Begin: colortri_procedures

% Plot the CIE-XY-triangle (or something like that)

% /colortri_mat   Conversion matrix RGB -> XYZ
% /colortri_bg    procedure, that takes X/Y-Values and delivers the
%                 "background color" as RGB-Values, default is:
%                 {pop pop 0.85 dup dup}

% The default matrix was taken from:
%             Color spaces FAQ - David Bourgin
%             Date: 15/6/94 (items 5.3 and 6 updated)
%             Last update: 29/6/94

   /colortri_mat [ % RGB -> CIE XYZitu601-1 (D65)
         0.4306 0.3415 0.1784
         0.2220 0.7067 0.0713
         0.0202 0.1295 0.9394
   ] def

   /colortri_bg {pop pop 0.85 dup dup} bind def

% +---------------------------------------------------------------------+
% | Besides from fixing bugs, nothing should be changed below this line |
% +---------------------------------------------------------------------+

%  Arbitrary operation on a pair of vectors, *CHANGES* 1st.
%  invoke: Vaccu Vop op vop
   /vop {
      bind 0 1 3 index length 1 sub {
       3 index 1 index get 3 index 2 index get 3 index exec 4 index 3 1 roll put
      } for pop pop
   } bind def

   /vsub { {sub} vop } bind def % subtract two vectors
   /vmul { {mul} vop } bind def % multiply two vectors

%  Compute sum of vectors elements
   /vsum {0.0 exch{add}forall} bind def

%  Sum up products of elements
   /veqn { [ 3 -1 roll {} forall ] exch vmul vsum } bind def

%  Find index of |maximum| in array
   /imax {
      dup 0 get abs 0 exch % array i v[i]
      1 1 4 index length 1 sub {
         3 index 1 index get abs dup 3 index gt {4 2 roll}if pop pop
      } for
      3 -1 roll pop
   } bind def

%  Procedure to *CHANGE*  RGB-Values into XYZ-Values
   /rgb2xyz {
      0 3 6 { colortri_mat exch 3 getinterval 1 index veqn exch } for astore
   } bind def

% Procedure to *CHANGE* transform rgb->xy
   /rgb2xy {
      rgb2xyz
      dup 0 get 1 index 1 get 2 index vsum % XYZ X Y sum
      dup 0 ne {
        exch 1 index div 3 1 roll div      % XYZ y x
        2 index exch 0 exch put            % xYZ y
        1 index exch 1 exch put            % xyZ
      }{
        pop pop pop dup 0 0 put dup 0 1 put
      } ifelse
      0 2 getinterval
   } bind def

% So here we go with our procedure

/colortri { %Usage: box #pixels
   save
   1 index type /arraytype eq {exch 8}{3 1 roll} ifelse % Default scale
   /colortri_scale exch def
   /colortri_box   exch def

%  Prepare some useful constants for xy -> RGB conversion

   /colsum [                              % Array with column-sums
     0 1 2{0 exch 3 1 index 6 add{colortri_mat exch get add}for}for
   ] def

   /Xrow colortri_mat 0 3 getinterval def % two rows from colortri_mat
   /Yrow colortri_mat 3 3 getinterval def

%  Avoid allocating new arrays
   /xcoeff 3 array def
   /ycoeff 3 array def

% Procedure to derive RGB-Values form X,Y
   /xy2rgb{ aload pop
      dup     dup dup ycoeff astore colsum vmul Yrow vsub imax
      3 index dup dup xcoeff astore colsum vmul Xrow vsub imax
      3 -1 roll 1 index 1 index gt{
         xcoeff ycoeff /xcoeff exch def /ycoeff exch def pop 3 -1 roll pop
      }{
        3 1 roll pop pop
      } ifelse
      1e-6 lt { % No Pivot ?
         pop colortri_bg xcoeff astore pop
      }{        % Have a Pivot
         dup ycoeff exch get neg
         0 1 2 { dup ycoeff exch get 2 index div ycoeff 3 1 roll put} for
         pop ycoeff 1 index 0 put

         xcoeff 1 index get
         0 1 2 {
            ycoeff 1 index get 2 index mul xcoeff 2 index get add
            xcoeff 3 1 roll put
         } for
         pop xcoeff 1 index 0 put
         xcoeff imax 1e-6 lt { % no Pivot ?
           pop pop colortri_bg xcoeff astore pop
         }{
           dup 2 index or 3 exch sub
           xcoeff 1 index get xcoeff 3 index get div neg
           xcoeff exch 3 index exch put
           xcoeff 1 index 1 put
           ycoeff exch get ycoeff 2 index get xcoeff 4 -1 roll get mul add
           xcoeff 3 1 roll put
           0 1 2 {
               xcoeff exch get dup -0.0015 lt exch 1.0015 gt or {
                 colortri_bg xcoeff astore dup exit
               } if
           } for
           pop pop xcoeff
         } ifelse
      } ifelse
   } bind def

% Compute the displayed range
   [ 1 1 1 ] rgb2xy
   dup 0 get /colortri_x0 exch def /colortri_dx colortri_x0 def
   1 get     /colortri_y0 exch def /colortri_dy colortri_y0 def
   [[0 0 1][0 1 0][0 1 1][1 0 0][1 0 1][1 1 0]] {
      rgb2xy
      dup 0 get
      dup colortri_x0 lt {/colortri_x0 1 index def}if
      dup colortri_dx gt {/colortri_dx 1 index def}if
      pop 1 get
      dup colortri_y0 lt {/colortri_y0 1 index def}if
      dup colortri_dy gt {/colortri_dy 1 index def}if
      pop
   } forall
   colortri_dx colortri_x0 sub /colortri_dx exch def
   colortri_dy colortri_y0 sub /colortri_dy exch def
%

% determine the scale
   colortri_box 2 get colortri_box 0 get sub colortri_dx div % fx
   colortri_box 3 get colortri_box 1 get sub colortri_dy div % fx fy
   gt { % fy limits
      colortri_box 3 get colortri_box 1 get sub
      dup colortri_dx mul colortri_dy div exch
   }{   % fx limits
      colortri_box 2 get colortri_box 0 get sub
      dup colortri_dy mul colortri_dx div
   } ifelse
   dtransform abs colortri_scale div cvi /colortri_ny exch def
              abs colortri_scale div cvi /colortri_nx exch def
   colortri_nx colortri_scale mul colortri_ny colortri_scale mul
   idtransform abs exch abs exch
   colortri_box 0 get colortri_box 2 get 1 index sub 3 index sub 2 div add
   colortri_box 1 get colortri_box 3 get 1 index sub 3 index sub 2 div add
   transform .5 add cvi exch .5 add cvi exch itransform
   translate scale

%  String & indices
   /colortri_tmp colortri_nx 3 mul string def
   /colortri_dx colortri_dx colortri_nx 1 sub div def
   /colortri_dy colortri_dy colortri_ny 1 sub div def
   /colortri_xy [ colortri_x0 colortri_y0 ] def
   /colortri_ie colortri_tmp length 3 sub def

   colortri_nx colortri_ny 8 [ colortri_nx 0 0 colortri_ny 0 0 ]
   {
     colortri_xy 0 colortri_x0 put
     0 3 colortri_ie {
         colortri_tmp exch   % buf ir
         colortri_xy xy2rgb  % buf ir rgb buf ib
         2 index 2 index 2 add 2 index 2 get 255 mul cvi put
         2 index 2 index 1 add 2 index 1 get 255 mul cvi put
         0     get 255 mul cvi put
         colortri_xy dup 0 exch 0 get colortri_dx add put
     }for
     colortri_xy dup 1 exch 1 get colortri_dy add put
     colortri_tmp
   } bind
   false 3 colorimage
   restore
} bind def

% [ newpath clippath pathbbox ]  colortri showpage % standalone usage

% End:   colortri_procedures

% The next section is a group of procedures, that I for myself
% do no more fully understand, but they do the Job.

% Begin: stcinfo_procedures_1

% fetch a parameter from the dictionary
/STCiget { STCinfo exch get } bind def

% action upon ProcessColorModel
/STCimode {
   /ProcessColorModel STCiget dup
   /DeviceCMYK eq{pop 2}{/DeviceRGB eq{1}{0}ifelse}ifelse get exec
} bind def

% print given number of blanks
/STCipspace {
   dup 0 gt{ 1 exch 1 exch { pop ( ) print}for }{ pop } ifelse
} bind def

% print right or left-justified text
/STCiprint {
   dup 0 gt { dup 2 index length sub STCipspace } if
   1 index print
   dup 0 lt { neg dup 2 index length sub STCipspace } if
   pop pop
} bind def

% floating-point to fixed-length-string conversion

/STCicvs { % number -> string

% Prepare the result
   8 string dup 0 (        ) putinterval
   exch

% Make it unsigned
   dup 0 lt {neg(-)}{( )}ifelse 0 get exch

   dup 1000 lt 1 index 0 eq 2 index 0.001 ge or and { % floating point
     (e+) 0
   }{                                                 % engineering
      0 {
        1 index 1000.0 ge
          {3 add exch 1000 div exch}
          {1 index 1 lt {3 sub exch 1000 mul exch}{exit}ifelse}
        ifelse
      }loop
      dup 0 lt {neg(e-)}{(e+)}ifelse exch
  }ifelse

% string sign num esig e

% always up to three Integer Digits plus sign
   2 index cvi 3 { % string sign num esig e int ind
      1 index 10 div cvi dup 10 mul 3 index exch sub cvi
      (0123456789) exch get 8 index exch 3 index exch put
      3 -2 roll 1 sub exch pop dup 0 eq 2 index 0 eq or {exit} if
   } loop exch pop % string sign num esig e ind
   5 index exch 6 -1 roll put % string num esig e

% print either fraction or exponent
   dup 0 eq { pop pop dup cvi sub % String fraction

      dup 0.0 ne { % Fraction present
         0.0005 add 1 index 4 (.) putinterval
         5 1 7 { % string frac ind
           exch 10 mul dup cvi exch 1 index sub % string ind ic nfrac
           exch (0123456789) exch get 3 -1 roll % string nfrac chr ind
           exch 3 index 3 1 roll put
         } for
      } if
      pop

   }{ 3 -1 roll pop % string esig e

      exch 2 index exch 4 exch putinterval
      7 -1 6 { % string n i
         1 index 10 div cvi dup 10 mul 3 index exch sub cvi % string n i n/10
         (0123456789) exch get 4 index exch 3 index exch put
         exch pop exch pop
      } for
      pop
   } ifelse

} bind def

% compute colorvalue-steps from transfer & coding
/STCisteps { % xfer, coding => X-values, Y-Values
% 2^nbits
   2 /BitsPerComponent STCiget dup 11 gt { pop 11 } if exp cvi

% X & Y - Arrays (stack: xv:4  yv:3 xfer:2  coding:1 2^ni:0)
   dup 1 add array 1 index array 5 2 roll

% compute GS-Color-Value according to the coding-array

   1 index null eq { % no coding present

      0 1 2 index 1 sub {
         dup 6 index exch dup 4 index div put
         4 index exch dup 3 index 1 sub div put
      } for

   }{                % coding-array given

      1.0 1 index 1 sub div % y step
      0                     % current index
      0 1 4 index 1 sub { % over indices
         dup 3 index mul
         {
            dup 3 index 1 add dup 8 index length ge {pop pop exit} if % i y
            7 index exch get le {exit} if
            2 index 1 add 3 1 roll 4 -1 roll pop
         } loop
         5 index 3 index get sub
         5 index 3 index 1 add get 6 index 4 index get sub div
         2 index add 5 index length 1 sub div
         2 copy exch dup 0 eq {
            10 index exch 0.0 put pop
         }{
            dup 10 index exch 1 sub get 3 -1 roll add 2 div
            10 index 3 1 roll put
         }ifelse
         7 index 3 1 roll put
     } for               % over indices
     pop pop
   } ifelse
   4 index 1 index 1.0 put

% Replace the raw y-values by those computed from the transfer-array

   0 1 2 index 1 sub { % over indices, 2nd
      dup 5 index exch get
      dup 5 index length 1 sub mul cvi % -> iy
      5 index 1 index get
      1 index 1 add 7 index length lt {
        dup 7 index 3 index 1 add get exch sub
        3 index 3 index 9 index length 1 sub div sub mul
        7 index length 1 sub mul add
      } if
      exch pop exch pop 5 index 3 1 roll put
   } for               % over indices, 2nd

   pop pop pop
} bind def

/STCibar { % Window X-Values proc => Window
   0 1 3 index length 2 sub {
     dup 3 index exch get exch
     1 add 3 index exch get
     dup 2 index add 2 div 3 index exec % Color to average
     4 index 2 get 5 index 0 get sub exch 1 index mul 5 index 0 get add 3 1 roll
     mul 4 index 0 get add 4 index 3 get 5 index 1 get
     newpath
     2 index 1 index moveto
     3 index 1 index lineto
     3 index 2 index lineto
     2 index 2 index lineto
     closepath fill
     pop pop pop pop
   } for
   pop pop
   0 setgray
   newpath
   dup 0 get 1 index 1 get moveto
   dup 2 get 1 index 1 get lineto
   dup 2 get 1 index 3 get lineto
   dup 0 get 1 index 3 get lineto
   closepath stroke
   pop
} bind def

% End:   stcinfo_procedures_1

% Begin: stcinfo_preparation

% Compute used area from clippath

/STCi_clip [
  newpath clippath pathbbox
  2 sub 4 1 roll 2 sub 4 1 roll 2 add 4 1 roll 2 add 4 1 roll
] def

%
% Perpare the texual messages, assume no stcolor if this fails
%
{
   /STCi_stopped % A Special Mark

% Textual Parameters (an array of pairs of strings)
   /STCi_l1 0 def
   /STCi_l2 0 def
   /STCi_text [
% Driver-Name & Version
      (Parameters of)
         /Name STCiget length /Version STCiget length add 1 add string
         dup 0 /Name STCiget putinterval dup /Name STCiget length (-)putinterval
         dup /Name STCiget length 1 add /Version STCiget putinterval
% Dithering-Algorithm
      (Dithering)
         /Dithering STCiget
         [{( \(Monochrome\))}{( \(RGB\))}{( \(CMYK\))}] STCimode
         dup length 2 index length add string exch 1 index exch
         3 index length exch putinterval dup 3 1 roll exch 0 exch putinterval
% Flags for the algorithm
      (Flag4-0) 5 string
         dup 0 /Flag4 STCiget {(T)}{(f)} ifelse putinterval
         dup 1 /Flag3 STCiget {(T)}{(f)} ifelse putinterval
         dup 2 /Flag2 STCiget {(T)}{(f)} ifelse putinterval
         dup 3 /Flag1 STCiget {(T)}{(f)} ifelse putinterval
         dup 4 /Flag0 STCiget {(T)}{(f)} ifelse putinterval

% Bits Per Pixel & Bits Per Component
      (BitsPerPixel) 10 string % (nn -> nxnn)
         /BitsPerPixel STCiget 1 index cvs length % string used
         dup 2 index exch ( -> ) putinterval 4 add dup 2 add exch 2 index exch
         [{(1x)}{(3x)}{(4x)}] STCimode putinterval % String used
         /BitsPerComponent STCiget 2 index 2 index 2 getinterval cvs length add
         0 exch getinterval

      () ()
% ColorAdjustMatrix
      (ColorAdjustMatrix)
         /ColorAdjustMatrix STCiget dup null eq {
            pop (default)
         }{
            { STCicvs } forall
            [{ % Monochrome
               26 string
               dup  0 6 -1 roll putinterval dup  8 ( ) putinterval
               dup  9 5 -1 roll putinterval dup 17 ( ) putinterval
               dup 18 4 -1 roll putinterval
             }{ % RGB
               26 string
               dup  0 12 -1 roll putinterval dup  8 ( ) putinterval
               dup  9 11 -1 roll putinterval dup 17 ( ) putinterval
               dup 18 10 -1 roll putinterval

               () 26 string
               dup  0 11 -1 roll putinterval dup  8 ( ) putinterval
               dup  9 10 -1 roll putinterval dup 17 ( ) putinterval
               dup 18  9 -1 roll putinterval

               () 26 string
               dup  0 10 -1 roll putinterval dup  8 ( ) putinterval
               dup  9  9 -1 roll putinterval dup 17 ( ) putinterval
               dup 18  8 -1 roll putinterval
             }{
               35 string
               dup  0 19 -1 roll  putinterval dup  8 ( ) putinterval
               dup  9 18 -1 roll putinterval dup 17 ( ) putinterval
               dup 18 17 -1 roll putinterval dup 26 ( ) putinterval
               dup 27 16 -1 roll putinterval

               () 35 string
               dup  0 17 -1 roll putinterval dup  8 ( ) putinterval
               dup  9 16 -1 roll putinterval dup 17 ( ) putinterval
               dup 18 15 -1 roll putinterval dup 26 ( ) putinterval
               dup 27 14 -1 roll putinterval

               () 35 string
               dup  0 15 -1 roll putinterval dup  8 ( ) putinterval
               dup  9 14 -1 roll putinterval dup 17 ( ) putinterval
               dup 18 13 -1 roll putinterval dup 26 ( ) putinterval
               dup 27 12 -1 roll putinterval

               () 35 string
               dup  0 13 -1 roll putinterval dup  8 ( ) putinterval
               dup  9 12 -1 roll putinterval dup 17 ( ) putinterval
               dup 18 11 -1 roll putinterval dup 26 ( ) putinterval
               dup 27 10 -1 roll putinterval

             }
            ] STCimode
         } ifelse
      () ()

% Printer Model
      (Printer-Model)  /Model STCiget

% Resolution
      (Resolution) 15 string % (nnnnnxnnnnn DpI)
         /HWResolution STCiget 0 get cvi 1 index cvs length
         dup 2 index exch (x) putinterval 1 add dup 2 index exch 5 getinterval
         /HWResolution STCiget 1 get cvi exch cvs length add dup 2 index
         exch ( DpI) putinterval 4 add 0 exch getinterval

% HWsize holds entire Page in Pixels,
% .HWMargins is [left,bottom,right,top] in Points
      (Printed Area)   18 string % (nnnnnxnnnnn Pixel)
         /HWSize STCiget 0 get /.HWMargins STCiget dup 0 get exch 2 get add
         /HWResolution STCiget 0 get mul 72.0 div sub cvi 1 index cvs length
         dup 2 index exch (x) putinterval 1 add dup 2 index exch 5 getinterval
         /HWSize STCiget 1 get /.HWMargins STCiget dup 1 get exch 3 get add
         /HWResolution STCiget 1 get mul 72.0 div sub cvi exch cvs length add
         dup 2 index exch ( Pixel) putinterval 6 add 0 exch getinterval

      () ()
% WeaveMode
      (Weave-Mode)
         /noWeave STCiget {
           (noWeave)
         }{
           /Microweave STCiget {(Microweave)}{(Softweave)}ifelse
         }ifelse
% Unidirectional
      (Unidirectional) /Unidirectional STCiget {(ON)}{(off)} ifelse
% Output coding
      (OutputCode)     /OutputCode STCiget
% number of heads
      (escp_Band)   /escp_Band   STCiget 3 string cvs
      (escp_Width)  /escp_Width  STCiget 5 string cvs
      (escp_Height) /escp_Height STCiget 5 string cvs
      (escp_Top)    /escp_Top    STCiget 5 string cvs
      (escp_Bottom) /escp_Bottom STCiget 5 string cvs
   ] def

%
% compute the Proper X & Y-Arrays
%
   [{  % Monochrome
     /Ktransfer STCiget /Kcoding STCiget STCisteps
     /STCi_yv   [ 3 -1 roll ] def
     /STCi_xv   [ 3 -1 roll ] def
     /STCi_col  [[0 0 0]] def
     /STCi_set  [{1.0 exch sub setgray}] def
    }{ % RGB
     /Rtransfer STCiget /Rcoding STCiget STCisteps
     /Gtransfer STCiget /Gcoding STCiget STCisteps
     /Btransfer STCiget /Bcoding STCiget STCisteps
     exch 4 -1 roll 6 -1 roll exch 3 -1 roll
     /STCi_xv [ 5 2 roll ] def
     /STCi_yv [ 5 2 roll ] def
     /STCi_col  [[1 0 0] [0 1 0] [0 0 1]] def
     /STCi_set [
      {1.0 exch sub 1 exch dup setrgbcolor}
      {1.0 exch sub dup 1 exch setrgbcolor}
      {1.0 exch sub dup 1      setrgbcolor}
      ] def
    }{ % CMYK
     /Ctransfer STCiget /Ccoding STCiget STCisteps
     /Mtransfer STCiget /Mcoding STCiget STCisteps exch 3 1 roll
     /Ytransfer STCiget /Ycoding STCiget STCisteps exch 4 1 roll
     /Ktransfer STCiget /Kcoding STCiget STCisteps exch 5 1 roll
     /STCi_yv  [ 6 2 roll ] def
     /STCi_xv  [ 6 2 roll ] def
     /STCi_col [[0 1 1] [1 0 1] [1.0 0.5 0.0] [0 0 0]] def
     /STCi_set [
       { 0 0 0 setcmykcolor }
       { 0 exch 0 0 setcmykcolor }
       { 0 exch 0 exch 0 setcmykcolor }
       { 0 exch 0 exch 0 exch setcmykcolor }
     ] def
    }
   ]STCimode

} stopped

{ {/STCi_stopped eq {exit}if}loop true}
{ {/STCi_stopped eq {exit}if}loop false} ifelse

% End:   stcinfo_preparation

% The Next section does the real job

% Begin: stcinfo_execution
{
   (%%[ stcinfo.ps: currentdevice is not supported -> colortri ]%%\n) print
   STCi_clip  colortri % The default action

}{
%
% Print the text
%
   0 2 STCi_text length 2 sub { dup 1 add exch
     STCi_text exch get length dup STCi_l1 gt{/STCi_l1 exch def}{pop}ifelse
     STCi_text exch get length dup STCi_l2 gt{/STCi_l2 exch def}{pop}ifelse
   } for
   /STCi_l2 STCi_l2 neg def
   0 2 STCi_text length 2 sub {
     dup 1 add STCi_text exch get exch STCi_text exch get
     1 index length 0 gt {
       dup STCi_l1 STCiprint length 0 gt {(: )}{(  )}ifelse print print
     }{
       pop pop
     } ifelse
     (\n) print
   } for
%
% Deactivate a present ColorAdjust Matrix, if any
%
   /ColorAdjustMatrix STCiget null ne STCi_onstc and {
       mark
       /ColorAdjustMatrix null
       currentdevice putdeviceprops pop
   } if
%
% "Show" the text
%
   /Times-Roman findfont 10 scalefont setfont
   /STCi_l1 0 def
   0 2 STCi_text length 2 sub {
       STCi_text exch get stringwidth pop dup STCi_l1 gt {
          /STCi_l1 exch def
       }{
          pop
       } ifelse
   } for
   STCi_l1 STCi_clip 0 get add /STCi_l1 exch def

   STCi_clip 3 get 12 sub
   0 2 STCi_text length 2 sub {
       STCi_text exch get dup length 0 gt {
         dup stringwidth pop STCi_l1 exch sub 2 index moveto show
       }{
          pop
       } ifelse
       12 sub
   } for
   pop

   /Courier findfont 10 scalefont setfont
   /STCi_l2 0 def
   1 2 STCi_text length 1 sub {
       STCi_text exch get stringwidth pop dup STCi_l2 gt {
          /STCi_l2 exch def
       }{
          pop
       } ifelse
   } for

   STCi_clip 3 get 12 sub
   1 2 STCi_text length 1 sub {
       STCi_text exch get dup length 0 gt {
          STCi_l1 12 add 2 index moveto show
       }{
         pop
       } ifelse
       12 sub
   } for
   pop

%
%  compute the space for the graph-window
%
   STCi_l1 12 add STCi_l2 add 12 add dup STCi_clip 2 get exch sub % Extend
   [ 3 -1 roll dup 3 index add STCi_clip 3 get dup 5 index sub 3 1 roll ]
   /STCi_win exch def /STCi_l1 exch def

% The "Axis"
   newpath
   STCi_win 0 get STCi_win 1 get 14 add moveto
   STCi_win 2 get STCi_win 1 get 14 add lineto stroke

   STCi_win 0 get 14 add STCi_win 1 get moveto
   STCi_win 0 get 14 add STCi_win 3 get lineto stroke

% The Labels
   /Times-Roman findfont 10 scalefont setfont
   (Postscript-color) dup stringwidth pop
   STCi_win 2 get STCi_win 0 get sub 14 sub 1 index sub 2 div exch pop
   STCi_win 0 get add 14 add STCi_win 1 get 4 add moveto show

   gsave
     STCi_win 0 get 10 add STCi_win 1 get 14 add translate 90 rotate
     (Device-color) dup stringwidth pop
     STCi_win 3 get STCi_win 1 get sub 14 sub 1 index sub 2 div exch pop
     0 moveto show
   grestore

% The Graphs
  gsave
     STCi_win 0 get 14 add STCi_win 1 get 14 add
     STCi_win 2 get 2 index sub STCi_win 3 get 2 index sub
     4 2 roll translate
     STCi_col 0 1 2 index length 1 sub {
       1 index 1 index get aload pop setrgbcolor
       STCi_xv 1 index get STCi_yv 3 -1 roll get
       newpath
       1 index 0 get 5 index mul 1 index 0 get 5 index mul moveto
       1 index 1 get 5 index mul 1 index 0 get 5 index mul lineto
       1 1 2 index length 1 sub {
         2 index 1 index       get 6 index mul
         2 index 2 index       get 6 index mul lineto
         2 index 1 index 1 add get 6 index mul
         2 index 2 index       get 6 index mul lineto
         pop
       } for
       stroke pop pop
     } for
     pop pop pop
  grestore

%
% Find lowest Y from Text or graph
%
   STCi_win 1 get  STCi_clip 3 get STCi_text length 2 div 12 mul sub
   dup 2 index gt { pop } { exch pop } ifelse 12 sub

%
%  compute the upper bar-window
%
   /STCi_win [
      STCi_clip 0 get 4 -1 roll 36 sub STCi_clip 2 get 1 index 36 add
   ] def

%
% Draw the required number of graphs
%
   [{  % Monochrome
      STCi_win STCi_xv 0 get {setgray} STCibar
    }{ % RGB
      STCi_win STCi_xv 0 get {0 0 setrgbcolor} STCibar
      STCi_win dup 1 exch 1 get 47 sub put
      STCi_win dup 3 exch 3 get 47 sub put
      STCi_win STCi_xv 1 get {0 0 3 1 roll setrgbcolor} STCibar
      STCi_win dup 1 exch 1 get 47 sub put
      STCi_win dup 3 exch 3 get 47 sub put
      STCi_win STCi_xv 2 get {0 0 3 2 roll setrgbcolor} STCibar
    }{ % CMYK
      STCi_win STCi_xv 0 get {0 0 0          setcmykcolor} STCibar
      STCi_win dup 1 exch 1 get 47 sub put
      STCi_win dup 3 exch 3 get 47 sub put
      STCi_win STCi_xv 1 get {0 0 0 4 1 roll setcmykcolor} STCibar
      STCi_win dup 1 exch 1 get 47 sub put
      STCi_win dup 3 exch 3 get 47 sub put
      STCi_win STCi_xv 2 get {0 0 0 4 2 roll setcmykcolor} STCibar
      STCi_win dup 1 exch 1 get 47 sub put
      STCi_win dup 3 exch 3 get 47 sub put
      STCi_win STCi_xv 3 get {0 0 0 4 3 roll setcmykcolor} STCibar
    }
   ] STCimode

   STCi_win 1 STCi_clip 1 get put
   STCi_win dup 3 exch 3 get 47 sub put

%
% Plot either one or two Color-Triangles
%
   /ColorAdjustMatrix STCiget null ne STCi_onstc and {
     STCi_win 0 get STCi_win 2 get add 2 div
     [STCi_win 0 get STCi_win 1 get 3 index STCi_win 3 get ] colortri
     mark /ColorAdjustMatrix dup STCiget currentdevice putdeviceprops pop
     [1 index STCi_win 1 get STCi_win 2 get STCi_win 3 get ] colortri
     pop
   }{
     STCi_win colortri
   } ifelse
   newpath clippath stroke
} ifelse
showpage

Youez - 2016 - github.com/yon3zu
LinuXploit