Definiera ritbart område med funktionen clip

Det är mycket enkelt att definiera inom vilket område efterföljande kommandon i PS får rita. Det gör man genom att först definiera en aktuell bana, och i stället för att rita ut banan anger man kommandot clip. Allt man sedan försöker skriva utanför detta område ignoreras. För att fungera på rätt sätt måste clip i normala fall efterföljas med kommandot newpath. Ett enkelt exempel redovisas nedan i exempel 3.1.
 
%!PS-Adobe
%Exclip1.ps
/mm { 2.83 mul } def

%definiera rektangulärt ritområde
50 mm 50 mm moveto
50 mm 200 mm lineto
200 mm 200 mm lineto
200 mm 50 mm lineto
closepath 
clip 
newpath

%Rita cirkelskiva i ritområdet
100 mm 80 mm 90 mm 0 360 arc fill

showpage
quit

Clip-exempel 1. Clip-funktionen definierar ritbart område. 282 byte.

Clip-exempel 1 börjar med den vanliga frasen som talar om för skrivaren att det kommer en PS-fil, vartefter en kommentar med filnamnet följer. Sedan definieras som vanligt "mm" att motsvara 2.83 punkter, vilket är ett ganska bra närmevärde.

Nu följer definitionen av aktuell bana, i det här fallet en rektangel som sluts med hjälp av kommandot closepath. Kommandot clip som följer, definierar att den aktuella banan skall utgöra gräns för der ritbara området framöver. Slutligen avslutas ritandet av den aktuella banan för gott med commandot newpath.

En cirkelskiva skall nu ritas med kommandot arc på koordinaterna x=100 mm, y=80 mm och radien r=90 mm. "0 360" definierar att cirkeln skall börja ritas vid 0 grader och avslutas vid 360 grader, dvs ett helt varv. Raden avslutas med fill, vilket fyller cirkeln till en cirkelskiva. (om man hade velat rita en cirkel i stället, skulle fill ha ersatts med stroke).

Som vanligt avslutas filen med showpage och quit.

Definiera ritbart område som text

Exemplet ovan kanske inte uppfattas som så väldigt upphetsande. Det blir mycket skojigare när man låter en textsträng definiera den aktuella banan som ligger till grund för det ritbara området. Exempel 3.2 visar vad man kan åstadkomma med denna teknik.
 
%!PS-Adobe
%Exclip2.ps
/mm { 2.83 mul } def

/Helvetica-Bold findfont
     30 mm scalefont 
     setfont

25 mm 25 mm moveto
(CLIPTEST) false charpath clip newpath

%rita linjer
1 mm setlinewidth
20 mm 2 mm 60 mm {dup 15 mm exch moveto 
     180 mm 0 rlineto stroke newpath
     for

showpage
quit

Clip-exempel 2. Text som skrivbart område. 302 byte.

Först i Clip-exempel 2 kommer de vanliga raderna, till vilket jag även räknar definitionen av fonten "Helvetica-Bold", och dess storlek 30 mm.

Sedan definieras en aktuell bana på koordinaterna x = 25 mm och y = 25 mm med texten "CLIPTEST". Kommandot charpath anger att det är bokstävernas ytterkonturer (outline) som skall användas som aktuell bana. Ordet false före charpath vill (kan) jag inte förklara här, men det skall stå där, anledningen till att det inte markerats med fet stil är att det inte är ett kommando utan en boolsk parameter. clip anger att aktuell bana skall användas för att definiera ett ritbart område, och newpath avslutar definitivt ritandet av den aktuella banan.

Efter raden "%rita linjer" kommer fyra rader som ritar ett antal 1 mm breda och 180 mm långa horisontella linjer med avståndet 2 mm emellan, från y = 20 mm till y = 60 mm. Startpunkten för varje linje ligger på x = 15 mm.

Till sist den normala avslutningsfrasen showpage quit.

Prova vad som händer i Exempel 3.1 och 3.2 när clip byts ut mot stroke.

Olika ritbara områden på samma sida

Om man vill byta till ett nytt ritbart område på sidan, eller om man helt enkelt vill börja rita utanför det definierade ritområdet igen, då kan man enkelt göra så att det definierade ritområdet upphör att gälla. Detta görs med kommandot initclip.

Hem