Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Keeping values of a temporary dictionary

27 views
Skip to first unread message

Cecil Westerhof

unread,
Dec 26, 2012, 8:52:59 AM12/26/12
to
I am trying to set colours to use depending on an input varable. I
have the following code:
currentdict
/setColours 5 dict def
%setColours begin
/previousDict exch def
/LG_BL_YE {
/gradient1 { colorLimeGreen } def
/gradient2 { colorBlue } def
/textColor { colorYellow } def
} def
/FG_MFG_YE {
/gradient1 { colorForestGreen } def
/gradient2 { colorMediumForestGreen } def
/textColor { colorYellow } def
} def
/FG_MFG_WH {
/gradient1 { colorForestGreen } def
/gradient2 { colorMediumForestGreen } def
/textColor { colorWhite } def
} def
/FG_MFG_DG {
/gradient1 { colorForestGreen } def
/gradient2 { colorMediumForestGreen } def
/textColor { colorDarkGreen } def
} def
COLOUR_SCHEME where {
COLOUR_SCHEME get exec
}{
% ### message no COLOUR_SCHEME
/gradient1 { colorNavy } def
/gradient2 { colorNavy } def
/textColor { colorYellow } def
} ifelse
%previousDict /gradient1 { gradient1 } put
%end

I would like to use the temporary dictionary setColours to set the
gradient and text colours. But when I remove the comments, the script
hangs. What is the correct way to do it?

--
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof

Cecil Westerhof

unread,
Dec 26, 2012, 12:21:58 PM12/26/12
to
Op woensdag 26 dec 2012 14:52 CET schreef Cecil Westerhof:
Found it:
/setColourScheme 25 dict def
setColourScheme begin
/FG_MFG_DG {
/gradient1 { colorForestGreen } def
/gradient2 { colorMediumForestGreen } def
/textColor { colorDarkGreen } def
} def
/FG_MFG_WH {
/gradient1 { colorForestGreen } def
/gradient2 { colorMediumForestGreen } def
/textColor { colorWhite } def
} def
/FG_MFG_YE {
/gradient1 { colorForestGreen } def
/gradient2 { colorMediumForestGreen } def
/textColor { colorYellow } def
} def
/LG_BL_YE {
/gradient1 { colorLimeGreen } def
/gradient2 { colorBlue } def
/textColor { colorYellow } def
} def
/MBL_MBL_OL {
/gradient1 { colorMediumBlue } def
/gradient2 { colorMediumBlue } def
/textColor { colorOlive } def
} def
/NA_NA_YE {
/gradient1 { colorNavy } def
/gradient2 { colorNavy } def
/textColor { colorYellow } def
} def
/NA_NAB_YE {
/gradient1 { colorNavy } def
/gradient2 { colorNavyBlue } def
/textColor { colorYellow } def
} def
/OR_ORR_YE {
/gradient1 { colorOrange } def
/gradient2 { colorOrangeRed } def
/textColor { colorYellow } def
} def
/PU_IND_YE {
/gradient1 { colorPurple } def
/gradient2 { colorIndigo } def
/textColor { colorYellow } def
} def
/RE_RE_YE {
/gradient1 { colorRed } def
/gradient2 { colorRed } def
/textColor { colorYellow } def
} def
/SCA_SCA_YE {
/gradient1 { colorScarlet } def
/gradient2 { colorScarlet } def
/textColor { colorYellow } def
} def
/SIE_SIE_VDB {
/gradient1 { colorSienna } def
/gradient2 { colorSienna } def
/textColor { colorVeryDarkBrown } def
} def
/SKB_SKB_NA {
/gradient1 { colorSkyBlue } def
/gradient2 { colorSkyBlue } def
/textColor { colorNavy } def
} def
/YEG_YEG_NA {
/gradient1 { colorYellowGreen } def
/gradient2 { colorYellowGreen } def
/textColor { colorNavy } def
} def
COLOUR_SCHEME where {
COLOUR_SCHEME get exec
}{
% ### message no COLOUR_SCHEME
/gradient1 { colorNavy } def
/gradient2 { colorNavy } def
/textColor { colorYellow } def
} ifelse
end
/gradient1 setColourScheme /gradient1 get def
/gradient2 setColourScheme /gradient2 get def
/textColor setColourScheme /textColor get def

Maybe I should write a function to retrieve the values.
Not very important, but is it possible to delete setColourScheme? It
has no use after this.

Cecil Westerhof

unread,
Dec 26, 2012, 1:02:43 PM12/26/12
to
Op woensdag 26 dec 2012 18:21 CET schreef Cecil Westerhof:

> /gradient1 setColourScheme /gradient1 get def
> /gradient2 setColourScheme /gradient2 get def
> /textColor setColourScheme /textColor get def
>
> Maybe I should write a function to retrieve the values.

Done:
/getDictValues { % dictionary nameArray
{
dup
3 -1 roll
dup
4 1 roll
exch
get def
} forall
pop
} def

setColourScheme [/gradient1 /gradient2 /textColor] getDictValues

luser- -droog

unread,
Dec 26, 2012, 6:34:20 PM12/26/12
to
On Wednesday, December 26, 2012 11:21:58 AM UTC-6, Cecil Westerhof wrote:

> end
>
> /gradient1 setColourScheme /gradient1 get def
>
> /gradient2 setColourScheme /gradient2 get def
>
> /textColor setColourScheme /textColor get def
>
>
>
> Maybe I should write a function to retrieve the values.
>
> Not very important, but is it possible to delete setColourScheme? It
>
> has no use after this.
>

Just move the 'end' to the end. Until then, everything's available through normal lookup.

Cecil Westerhof

unread,
Dec 27, 2012, 11:52:18 AM12/27/12
to
Op woensdag 26 dec 2012 19:02 CET schreef Cecil Westerhof:

> Op woensdag 26 dec 2012 18:21 CET schreef Cecil Westerhof:
>
>> /gradient1 setColourScheme /gradient1 get def
>> /gradient2 setColourScheme /gradient2 get def
>> /textColor setColourScheme /textColor get def
>>
>> Maybe I should write a function to retrieve the values.
>
> Done:
> /getDictValues { % dictionary nameArray
> {
> dup
> 3 -1 roll
> dup
> 4 1 roll
> exch
> get def
> } forall
> pop
> } def
>
> setColourScheme [/gradient1 /gradient2 /textColor] getDictValues

Because I do not need the dict setColourScheme anymore I changed it
to:
currentdict setsetColourScheme [/gradient1 /gradient2 /textColor] getDictValues
(after getDictValues) ==
pstack
currentdict setColourScheme undef
(after undef) ==
pstack
setColourScheme /gradient1 get
(after fetch) ==
pstack

The == and pstack are to check. I get:
(after getDictValues)
(after undef)
(after fetch)
{colorForestGreen}

So setColourScheme is not deleted. Why not?

sjprou...@gmail.com

unread,
Dec 28, 2012, 3:31:30 PM12/28/12
to
"currentdict setColourScheme undef" is incorrect syntax. It should be "currentdict /setColourScheme undef".

Cecil Westerhof

unread,
Dec 28, 2012, 4:54:46 PM12/28/12
to
Op vrijdag 28 dec 2012 21:31 CET schreef sjprouty:

> "currentdict setColourScheme undef" is incorrect syntax. It should
> be "currentdict /setColourScheme undef".

That solved it. Thanks.
0 new messages