Looks like % values are handled in org.openlaszlo.compiler.NodeModel.java

                if (value.trim().endsWith("%")) {
                    String numstr = value.trim();
                    numstr = numstr.substring(0, numstr.length() - 1);
                    try {
                        double scale = new Float(numstr).floatValue() / 100.0;
                        warnOnDeprecatedConstraints = false;
                        String referenceAttribute = name;
                        if ("x".equals(name)) {
                            referenceAttribute = "width";
                        } else if ("y".equals(name)) {
                            referenceAttribute = "height";
                        }

On Thu, Jul 7, 2011 at 2:26 PM, P T Withington <[email protected]> wrote:
> Ah.  Not so easy.
>
> I'm pretty sure that literal % constraints on width/height are handled in the 
> compiler.  This is mostly for legacy reasons -- we used to try to do as much 
> as possible at compile time to make things faster (at a loss of dynamicity).
>
> Nowadays we have a lot more power at runtime so we should dispense with the 
> compiler "optimization" and just let these things be handled at runtime.  
> (With the added benefit that you could change the percentage dynamically at 
> run time.)
>
> The short/kludge answer is:
>
> a) Find the place in the compiler that handles %'s and make it store a copy 
> of the original % in something like _source_width, or
>
> b) Just know that it is a percent and back-calculate it.
>
> The long/right answer is:
>
> 2) Use CSS and write a presentation type that parses both absolute and 
> percent dimensions and can unparse those same dimensions.  (See the color 
> presentation type for instance, for a p-t that has multiple representations.  
> The unparser has an optional argument that lets you specify the desired 
> representation format.)
>
>
> On 2011-07-07, at 08:15, [email protected] wrote:
>
>> I'm looking for something different. If the user enters '79%' for the width, 
>> I want to obtain the string '79%', not the size which represents 79% of the 
>> canvas width.
>>
>> Thanks!
>>
>> Phil
>>
>>
>>
>> On Wed, Jul 6, 2011 at 7:43 PM, P T Withington wrote:
>>
>>> Well a constraint is really just a handler for the dependent variables that 
>>> updates the actual value, so in this case if you ask for the elements width 
>>> or height, you will get the current real value.  The best way to forward 
>>> those values (and track them) is to make another constraint.  Constraints 
>>> are easy to write in OL, but hard to write in JS.  You can get an inkling 
>>> of a hand-written constraint by looking at the implementation of the align 
>>> and valign attributes that let you say things like 'center', 'top', etc.  
>>> Those get interpreted into constraints on the parent bound.
>>>
>>> Hope that helps.
>>>
>>> On 2011-07-06, at 19:30, [email protected] wrote:
>>>
>>>> Hi Tucker,
>>>>
>>>> Is it possible to retrieve the raw constraint values of an attribute? For 
>>>> example,
>>>>
>>>> <html width="100%" height="100%" .../>
>>>>
>>>> I'd like to obtain the 100% values for width and height so I can forward 
>>>> them to the iframemanager.
>>>>
>>>> Thanks!
>>>>
>>>> Phil
>
>
>

Reply via email to