% Copyright (C) 1999, 2000 Aladdin Enterprises. All rights reserved. % % This program is free software; you can redistribute it and/or modify it % under the terms of the GNU General Public License as published by the % Free Software Foundation; either version 2 of the License, or (at your % option) any later version. % % This program is distributed in the hope that it will be useful, but % WITHOUT ANY WARRANTY; without even the implied warranty of % MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General % Public License for more details. % % You should have received a copy of the GNU General Public License along % with this program; if not, write to the Free Software Foundation, Inc., % 59 Temple Place, Suite 330, Boston, MA, 02111-1307. % $Id: gs_trap.ps,v 1.3.6.2.2.1 2003/04/12 14:02:38 giles Exp $ % PostScript LanguageLevel 3 in-RIP trapping support. ll3dict begin % We need LanguageLevel 2 or higher in order to have setuserparams and % defineresource. languagelevel dup 2 .max .setlanguagelevel % ------ Trapping ------ % % The PostScript-level trapping parameters are maintained in userdict, % and explicitly reinstalled upon restore. /Trapping mark /settrapparams dup { % settrapparams - /.trapparams .uservar dup length dict .copydict dup 2 index { % Stack: paramdict olddict olddict key value 2 index 2 index known { put dup } { pop pop } ifelse } forall pop dup .settrapparams % Let the operator check parameter validity. .userdict /.trapparams 3 -1 roll put pop } bind .makeoperator /.copyparams { % .copyparams dup type /dicttype eq { dup length dict .copydict dup { .copyparams 3 copy put pop pop } forall } { dup type /arraytype eq { [ exch { .copyparams } forall ] } if } ifelse } odef /currenttrapparams dup { % - currenttrapparams /.trapparams .uservar .copyparams } bind .makeoperator /settrapzone dup { % - settrapzone - % ****** DUMMY ****** newpath } bind .makeoperator % Define initial (dummy) trapping parameters. % These values are mostly complete guesses. userdict /.trapparams mark /BlackColorLimit 1.0 /BlackDensityLimit 1.0 /BlackWidth 1.0 /ColorantZoneDetails 0 dict /Enabled true /HalftoneName null /ImageInternalTrapping false /ImagemaskTrapping true /ImageResolution 1 /ImageToObjectTrapping true /ImageTrapPlacement /Center /SlidingTrapLimit 1.0 /StepLimit 1.0 /TrapColorScaling 0.0 /TrapSetName null /TrapWidth 1.0 .dicttomark readonly put .dicttomark /ProcSet defineresource pop % Define the InkParams and TrapParams resource categories. { /InkParams /TrapParams } { /Generic /Category findresource dup maxlength 3 add dict .copydict begin /InstanceType /dicttype def currentdict end /Category defineresource pop } forall % Define the TrappingType resource category. /Generic /Category findresource dup maxlength 3 add dict .copydict begin /InstanceType /integertype def /TrappingType currentdict end /Category defineresource pop {1001} { dup /TrappingType defineresource pop } forall .setlanguagelevel end % ll3dict