⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 levels-test.ps

📁 openmeetings组件之GS openmeetings组件之GS openmeetings组件之GS
💻 PS
字号:
%!PS-Adobe-3.0%%Title: (CMYK Intensity Level Representation Test for the pcl3 Driver)%%Copyright: Copyright (C) 2000 by Martin Lottermoser. All rights reserved.%%Creator: Martin Lottermoser, Greifswaldstrasse 28, 38124 Braunschweig, Germany; e-mail: Martin.Lottermoser@t-online.de%%CreationDate: $Date: 2000/12/11 18:01:54 $%%LanguageLevel: 2%%Pages: 1%%Orientation: Portrait%%DocumentNeededResources: font Helvetica Helvetica-Bold%%EndComments%******************************************************************************% @(#)$Id: levels-test.ps,v 1.14 2000/12/11 18:01:54 Martin Rel $%% This PostScript program generates a test page for visually inspecting the% representation of equally-spaced CMYK intensity levels.% It is intended for the use with ghostscript's pcl3 driver.%% You can print this document on media of ISO A4 or US Letter size.%%******************************************************************************%%BeginProlog/runter {	% <Distanz> runter -  currentpoint  3 -1 roll sub  exch pop links exch  moveto} bind def% Schriftgroesse 10 bp vorausgesetzt./nz { 12 runter } def/hz {  6 runter } def/ein {  currentpoint exch pop 150 exch moveto} bind def/zeigeZentriert {	% <Zeichenkette> zeigeZentriert -  dup stringwidth exch -2 div exch rmoveto show} bind def%------------------------------------------------------------------------------/hole_falls_bekannt {	% <dict> <Name> hole_falls_bekannt [<Wert>] <gefunden>  2 copy known  {get true} {pop pop false} ifelse} bind def/zeigeParameter {	% <Name> zeigeParameter -  ein  currentpagedevice exch hole_falls_bekannt  {temp cvs}{(unknown)} ifelse  show} bind def/zeigeParameterFallsBekannt {	% <Name> zeigeParameterFallsBekannt -  dup currentpagedevice exch hole_falls_bekannt  {    exch temp cvs show (:) show ein    dup type /nulltype eq    {(--null--)}	% zur Unterscheidung von (null).    {temp cvs}    ifelse    show nz  }  {    pop  }  ifelse} bind def%------------------------------------------------------------------------------/zeigeFrequenz {	% <dict> <Schluessel> zeigeFrequenz -  get temp cvs show ( cells/inch) show} bind def/zeigeTF {	% <HTD> zeigeTF -  /TransferFunction known  {(, transfer) show}  if} bind def% Komponenten-Verzeichnisse in einem Typ-5-Verzeichnis/HTDict2 <<  % Aufrufe: <HTD> <Routine> -, kein Zeilenumbruch  1 {      (, ) show /Frequency zeigeFrequenz  }  3 {    (, ) show    dup /Width get temp cvs show (x) show /Height get temp cvs show    ( pixels) show  }  dup 6 exch	% 6 kann hier wie 3 behandelt werden.>> def/zeigeTransfer {	% <HTD> zeigeTransfer -  /TransferFunction known  {(With transfer function.) show nz} if} bind def% Oberste Ebene/HTDict1 <<  % Aufrufe: <HTD> <Routine> -  1 {    (Frequency: ) show    dup /Frequency zeigeFrequenz nz    zeigeTransfer  }  2 {    % Die Ausrichtung klappt nicht ganz, weil Helvetica eine    % Proportionalschrift ist.    dup (Red:    ) show /RedFrequency   zeigeFrequenz nz    dup (Green: )  show /GreenFrequency zeigeFrequenz nz    dup (Blue:   ) show /BlueFrequency  zeigeFrequenz nz        (Gray:   ) show /GrayFrequency  zeigeFrequenz nz  }  3 {    (Cell size: ) show    dup /Width  get temp cvs show (x) show    dup /Height get temp cvs show ( pixels) show nz    zeigeTransfer  }  dup 6 exch	% 6 kann hier wie 3 behandelt werden.  5 {    [/Default  /Gray  /Red /Green /Blue  /Cyan /Magenta /Yellow /Black]    {      % <HTD_1> <Name>      1 index 1 index known      {	% <HTD_1> <Name>	dup temp cvs show (: ) show	1 index exch get	% <HTD_1> <HTD_2>	dup	(type ) show dup /HalftoneType get dup temp cvs show	% <HTD_1> <HTD_2> <HTD_2> <Typ>	HTDict2 zeigeHTTeile	zeigeTF	nz      }      {pop}      ifelse      % <HTD_1>    } forall    pop  }>> def/zeigeHTTeile {	% <HTD> <Typ> <Routinen-Verzeichnis> zeigeHTTeile -  dup 2 index known  { exch get exec }	% <HTD> Routine -  { pop pop pop }  ifelse} bind def%------------------------------------------------------------------------------/Rechteckpfad {		% - Rechteckpfad -  currentpoint  newpath    moveto    Breite 0 rlineto    0 Hoehe  rlineto    Breite neg 0 rlineto    closepath} bind def/Rechteck {		% <C> <M> <Y> <K> Rechteck -  gsave    setcmykcolor    Rechteckpfad    currentpoint fill moveto    mitRand    {      0 setgray      0 setlinewidth      Rechteckpfad      stroke    } if  grestore} bind def/macheTest {		% <Array mit Farbe> <Levels> macheTest -  /maxLevel exch 1 sub def  gsave    0 1 maxLevel    {      maxLevel div      1 index aload pop		% <Faktor> <C> <M> <Y> <K>      1 1 4 {pop 4 index mul 4 1 roll} for      Rechteck      pop      Breite 0 rmoveto    } for  grestore  pop  mitRand not  {    gsave      0 setlinewidth  0 setgray      currentpoint newpath moveto        maxLevel 1 add Breite mul	dup 0 rlineto	0 Hoehe rlineto	neg 0 rlineto	closepath      stroke    grestore  } if  Hoehe 1.2 mul runter} bind def/vollerTest {	% <mit Nummern> vollerTest -  % Parameteruebergabe durch dict stack: schwarzeStufen, CMYStufen, Basisbreite,  % Maximalbreite, Hoehe.  % Maximale Anzahl Stufen  /maxStufen  schwarzeStufen CMYStufen gt {schwarzeStufen} {CMYStufen} ifelse  def  % Tatsaechliche Breite der 4 Testkaesten  /Kastenbreite  maxStufen Basisbreite mul dup Maximalbreite gt {pop Maximalbreite} if  def  % Ueberschrift  gross setfont  (Test with ) show  CMYStufen temp cvs show  CMYStufen schwarzeStufen ne  { ( CMY and ) show schwarzeStufen temp cvs show ( black) show } if  ( levels) show  nz  normal setfont  /Breite Kastenbreite CMYStufen div def  % Nummerierung, falls gewuenscht und sinnvoll  CMYStufen schwarzeStufen eq and  {    gsave      sehrklein setfont      Breite 2 div 0 rmoveto      0 1 schwarzeStufen 1 sub      {	temp cvs	gsave zeigeZentriert grestore	Breite 0 rmoveto      } for    grestore    3 runter  } if  % Die vier Streifen  Hoehe runter  [1 0 0 0] CMYStufen      macheTest  [0 1 0 0] CMYStufen      macheTest  [0 0 1 0] CMYStufen      macheTest  /Breite Kastenbreite schwarzeStufen div def  [0 0 0 1] schwarzeStufen macheTest} bind def%%EndProlog%******************************************************************************%%BeginSetup%%IncludeResource: font Helvetica-Bold/gross /Helvetica-Bold findfont 10 scalefont def/sehrgross /Helvetica-Bold findfont 12 scalefont def%%IncludeResource: font Helvetica/normal /Helvetica findfont 10 scalefont def/klein /Helvetica findfont 7 scalefont def/sehrklein /Helvetica findfont 5 scalefont def/temp 100 string def/links 50 def/Basisbreite 20 def/Breite Basisbreite def/Hoehe Basisbreite def/Maximalbreite 515 def/mitRand true def%%EndSetup%******************************************************************************%%Page: 1 1% Damit alles sowohl auf A4 als auch auf US Letter passt, darf man nicht ueber% eine Breite von 595 und eine Hoehe von 792 bp hinausgehen.% Ueberschriftsehrgross setfont300 760 moveto(CMYK Intensity Level Representation Test) zeigeZentriert%==============================================================================% Erlaeuterunglinks 740 movetonormal setfont(This test page \(designed for ghostscript's pcl3 driver\) is intended \for visually inspecting the representation of) show nz(equally-spaced intensity levels.) show nznz%==============================================================================% Konfigurationgross setfont(Configuration for this test run) show nznormal setfonthz/HoeheKonfiguration currentpoint exch pop def	% Merken der Hoehe.(Product:) show ein  product show ( \(revision ) show revision temp cvs show (\)) show nz(Interpreter version:) show ein version show nz/OutputDevice zeigeParameterFallsBekannt % Optional seit Level 3./Subdevice zeigeParameterFallsBekannt	% pcl3/Model     zeigeParameterFallsBekannt	% hpdjcurrentpagedevice /ColourModel known{ (ColourModel: ) show /ColourModel zeigeParameter nz }	% pcl3{  currentpagedevice /ColourMode known	% hpdj  { (ColourMode: ) show /ColourMode zeigeParameter nz }  { /ProcessColorModel zeigeParameterFallsBekannt}  ifelse}ifelse/schwarzeStufen 2 defcurrentpagedevice /BlackLevels known{  (BlackLevels: ) show ein  currentpagedevice /BlackLevels get  dup /schwarzeStufen exch def  temp cvs  show nz} ifschwarzeStufen 0 le { /schwarzeStufen 2 def } if/CMYStufen 2 defcurrentpagedevice /CMYLevels known{  currentpagedevice dup /ColourModel known  { /ColourModel get (RGB) eq }  { pop false }		% hpdj  ifelse  {    (RGBLevels: ) show ein    currentpagedevice /RGBLevels get  }  {    (CMYLevels: ) show ein    currentpagedevice /CMYLevels get  }  ifelse  dup /CMYStufen exch def  temp cvs  show nz} ifCMYStufen 0 le { /CMYStufen 2 def } if/IntensityRendering zeigeParameterFallsBekannt	% pcl3(Resolution: ) show eincurrentpagedevice /HWResolution getaload pop exch temp cvs show ( x ) show temp cvs show( pixels per inch) show nz/PrintQuality zeigeParameterFallsBekanntcurrentpagedevice /Medium known{ /Medium zeigeParameterFallsBekannt }		% pcl3{  % MediaType ist ein Standard-Parameter, aber wir wollen ihn nur fuer hpdj  % sehen.  currentpagedevice dup /OutputDevice known  {    /OutputDevice get    (hpdj) eq { (MediaType: ) show /MediaType zeigeParameter nz } if  }  { pop }  ifelse}ifelsehz% Transferfunktionencurrentcolortransfer true0 1 3 { pop exch length 0 eq and } for{(This test run uses trivial transfer functions \(no gamma correction\).) show}{(This test run uses non-trivial transfer functions \(gamma correction\).) show}ifelsenz/HoeheEndeKonfiguration currentpoint exch pop def% Halbtonzustand/links links 300 add deflinks HoeheKonfiguration movetocurrenthalftone dup /HalftoneType get dup(Halftone type: ) show temp cvs show nz	% <HTD> <Typ>HTDict1 zeigeHTTeile/links 50 deflinks HoeheEndeKonfiguration movetonz%==============================================================================% Test mit BlackLevels und CMYLevelsfalse vollerTestnz%==============================================================================% Sei h >= 2 die Anzahl von der Hardware darstellbarer Stufen und p >= 1 die% Anzahl Pixel im Halbtonschirm. Dann kann man insgesamt%%	n = h + (h - 1)*(p - 1) = (h - 1)*p + 1%% verschiedene Intensitaeten darstellen. Gleichmaessig ueber das Intervall% [0, 1] verteilt, findet man sie an den Stellen:%%	Intensitaet(j) = j/(n - 1),	0 <= j <= n-1%% Waehlt man nun eine andere (natuerlich groessere) Stufenzahl N fuer den% Aufruf von 'vollerTest', so bekommt man diese Intensitaeten genau dann mit,% wenn N-1 ein Vielfaches von n-1 ist. Einsetzen der Hardware-Stufen fuehrt zu% der Aussage, dass N-1 ein Vielfaches von (h - 1)*p sein muss, notwendigerweise% also ein Vielfaches von h-1.% Der folgende Test soll mindestens in den Faellen h = 2, 3, 4 und 8 die% exakt darstellbaren Intensitaeten treffen. Dies erfordet, dass N-1 ein% Vielfaches von kgV(1, 2, 3, 7) = 42 sein muss. (Diese Nummer kenn' ich doch% irgendwoher...)/schwarzeStufen 43 def/CMYStufen schwarzeStufen deftrue vollerTestnz% Ein Test mit effektiv kontinuierlicher Aenderung der Intensitaet.% Die 401 kommen als kgV(16, 25) + 1 zustande, wobei ich an 4x4 und 5x5 Pixel% grosse Halbtonzellen denke.% Bei dieser Anzahl und 300 ppi hat jedes Feld etwas mehr als 5 Pixel zur% Verfuegung (Maximalbreite/72*300/401)./mitRand false def/schwarzeStufen 401 def/CMYStufen schwarzeStufen deffalse vollerTest%==============================================================================30 runterklein setfont(Author: Martin Lottermoser) show10 runter($Id: levels-test.ps,v 1.14 2000/12/11 18:01:54 Martin Rel $) showshowpage%******************************************************************************%%Trailer%%EOF

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -