%% syntaxe : solid i string solidputfcolor
/solidputfcolor {
3 dict begin
/str exch def
/i exch def
/solid exch def
/FC solid solidgetfcolors def
i FC length lt {
FC i str put
} if
end
} def
%% syntaxe : solid solidgetincolors --> array
/solidgetincolors {
3 dict begin
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans solidgetincolors) ==
quit
} if
solid solidwithinfaces {
/fcol solid solidgetfcolors def
/IO solid solidgetinouttable def
/n1 IO 2 get def
/n2 IO 3 get def
/n n2 n1 sub 1 add def
fcol n1 n getinterval
} {
[]
} ifelse
end
} def
%% syntaxe : solid solidgetoutcolors --> array
/solidgetoutcolors {
3 dict begin
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans solidgetoutcolors) ==
quit
} if
/fcol solid solidgetfcolors def
/IO solid solidgetinouttable def
/n1 IO 0 get def
/n2 IO 1 get def
/n n2 n1 sub 1 add def
fcol n1 n getinterval
end
} def
%% syntaxe : solid array solidputincolors --> -
/solidputincolors {
4 dict begin
/newcolorstable exch def
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans solidputincolors) ==
quit
} if
/n newcolorstable length def
n solid solidnombreinfaces ne {
(Error : mauvaise longueur de tableau dans solidputincolors) ==
quit
} if
n 0 ne {
/FC solid solidgetfcolors def
/IO solid solidgetinouttable def
/n1 IO 2 get def
FC n1 newcolorstable putinterval
} if
end
} def
%% syntaxe : solid array solidputoutcolors --> -
/solidputoutcolors {
4 dict begin
/newcolorstable exch def
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans solidputoutcolors) ==
quit
} if
/n newcolorstable length def
n solid solidnombreoutfaces ne {
(Error : mauvaise longueur de tableau dans solidputoutcolors) ==
quit
} if
n 0 ne {
/FC solid solidgetfcolors def
/IO solid solidgetinouttable def
/n1 IO 0 get def
FC n1 newcolorstable putinterval
} if
end
} def
%% syntaxe : solid str outputcolors
/outputcolors {
5 dict begin
/color exch def
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans inoutputcolors) ==
quit
} if
/n solid solidnombreoutfaces def
solid [ n {color} repeat ] solidputoutcolors
end
} def
%% syntaxe : solid str inputcolors
/inputcolors {
5 dict begin
/color exch def
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans inoutputcolors) ==
quit
} if
/n solid solidnombreinfaces def
solid [ n {color} repeat ] solidputincolors
end
} def
%% syntaxe : solid str1 str2 inoutputcolors
/inoutputcolors {
5 dict begin
/colout exch def
/colin exch def
/solid exch def
solid colin inputcolors
solid colout outputcolors
end
} def
%% syntaxe : solid array solidputoutcolors --> -
/solidputoutcolors {
4 dict begin
/newcolorstable exch def
/solid exch def
solid issolid not {
(Error : mauvais type d argument dans solidputoutcolors) ==
quit
} if
/n newcolorstable length def
n solid solidnombreoutfaces ne {
(Error : mauvaise longueur de tableau dans solidputoutcolors) ==
quit
} if
n 0 ne {
/FC solid solidgetfcolors def
/IO solid solidgetinouttable def
/n1 IO 0 get def
FC length n n1 add lt {
solid newcolorstable solidputfcolors
} {
FC n1 newcolorstable putinterval
} ifelse
} if
end
} def
/solidputcolors {
3 dict begin
2 copy pop
isstring {
inoutputcolors
} {
outputcolors
} ifelse
end
} def
|