Passing Constants or Variables as Command Params
Sannyasin Brahmanathaswami
brahma at hindu.org
Thu Oct 13 22:56:28 EDT 2016
I'm in the early stages of using more external libs/behaviors for things I used to always pile up in stack/card/object scripts and custom properties. My old practice was less than stellar in terms of re-usability, fixing the same thing in multiple places etc.. So I'm looking to make more libs that can be re-used as behaviors. But now I face message path mysteries I'm sure all of you have understood for decades. In particular:
passing values, via constants or local vars, as params.
I'm working on a gradient library to use as a behavior with graphics objects, the idea is to be able to pass a one or more curated color values to a gradient ramp where the gradient type, location, span etc are already set.
If nothing is passed the function set defaults and returns a black and white radial gradient. or you can just pass a single RGB value to the end stop… I have not included that function here, because it works if I pass an explicit three integer RGB value…
But I am unable to pass either a constant or a local variable as a parameter
What am I doing wrong here:
on mouseUp
assignColors
setRamp "","","",sSoftRed,"",""
# function generates a fillGradient["ramp'] using defaults
# for the empty params, with a single color applied to the end stop.
# I can't get the value of sSoftRed to go thru….
# it works if I pass and explicit RGB string: "255,20,20"
end mouseup
# We want to set up some curated colors in advance:
# Defaults:
constant kPureWhite= "255,255,255"
constant kPureBlack= "0,0,0"
constant kDefaultStart= "0.00000" # left stop
constant kDefaultEnd= "1.00000" # right stop
constant kDefaultOpacity= "255" # 100% opaque
# Curated Colors
constant kSoftGreen = "88,246,27"
constant kSoftRed = "255,6,23"
# more to come later…
setRamp "","","","255,6,23","","" # this works
setRamp "","","",kSoftRed,"","" # this fails
# since a constant did not work, I tried locals:
command assignColors # trying locals here…
local sSoftGreen, sSoftRed
put "88,246,27" into sSoftGreen
put "255,6,23" into sSoftRed
end assignColors
if I set the break point on the mouseup I can see in the variable watcher that the values we expect are there:
kSoftRed 255,6,23
sSoftRed 255,6,23
But when passed as a param the gradient ramp gets (where start defaults to kPureWhite)
setRamp "","","",sSoftRed,"","" # this also fails
# we see this:
0.00000,255,255,255,255
1.00000,sSoftRed,255
# or
0.00000,255,255,255,255
1.00000,kSoftRed,255
# if I try to pass the param as a constant
and errors out with "bad gradient ramp" because the literal string value of the name of the variable or constant is passed and not the value it contains.
I would rather avoid "do" if at all possible.
??
Missing something really simple here.
Brahmanathaswami
More information about the use-livecode
mailing list