Hi Harbs,

can you elaborate more on defaultLenghtUnit. not sure I understand what is
the purpose or how to use it.
thanks

El mar., 14 ene. 2020 a las 20:53, Harbs (<harbs.li...@gmail.com>) escribió:

> What prompted this change was the fact that I found that flex-shrink was
> not working because it’s a number. (flex-grow and many other CSS props
> would have the same issue)
>
> This seems more PAYG than the original implementation (I was able to
> remove code from SimpleCSSValuesImpl), and I think it truly takes care of
> all cases.
>
> FWIW, I also added “defaultLengthUnit” to the “all css” impl to allow the
> user to specify a unit other than px when converting. IIRC, Carlos ran into
> that problem.
>
> Cheers,
> Harbs
>
> > On Jan 14, 2020, at 9:46 PM, ha...@apache.org wrote:
> >
> > This is an automated email from the ASF dual-hosted git repository.
> >
> > harbs pushed a commit to branch develop
> > in repository https://gitbox.apache.org/repos/asf/royale-asjs.git
> >
> >
> > The following commit(s) were added to refs/heads/develop by this push:
> >     new 925c5ed  Reversed logic on number lookup in AllCSSValuesImpl
> > 925c5ed is described below
> >
> > commit 925c5ed94461f3bac6342d38b5c94b6e31c40ceb
> > Author: Harbs <ha...@in-tools.com>
> > AuthorDate: Tue Jan 14 21:46:01 2020 +0200
> >
> >    Reversed logic on number lookup in AllCSSValuesImpl
> >
> >    There are many more css properties which can accept numbers than
> >    <length> properies. This should enable correct parsing of *all* valid
> >    css numbers
> > ---
> > .../org/apache/royale/core/AllCSSValuesImpl.as     | 53
> +++++++++++++++++++++-
> > .../org/apache/royale/core/SimpleCSSValuesImpl.as  | 20 ++++----
> > 2 files changed, 62 insertions(+), 11 deletions(-)
> >
> > diff --git
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as
> > index 6a2961e..b83de8f 100644
> > ---
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as
> > +++
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/AllCSSValuesImpl.as
> > @@ -19,6 +19,8 @@
> > package org.apache.royale.core
> > {
> >
> > +    import org.apache.royale.utils.CSSUtils;
> > +
> >     /**
> >      *  The AllCSSValuesImpl class will eventually implement a full set
> of
> >      *  CSS lookup rules.
> > @@ -73,6 +75,55 @@ package org.apache.royale.core
> >         {
> >             return AllCSSValuesImpl._numericStyles;
> >         }
> > -
> > +        private var _defaultLengthUnit:String = "px";
> > +        /**
> > +         * The default value used when converting numbers in CSS to
> length units. Can be px, em, etc.
> > +         * Defaults to px
> > +         *  @langversion 3.0
> > +         *  @playerversion Flash 10.2
> > +         *  @playerversion AIR 2.6
> > +         *  @productversion Royale 0.9.7
> > +         */
> > +        public function get defaultLengthUnit():String
> > +        {
> > +             return _defaultLengthUnit;
> > +        }
> > +
> > +        public function set defaultLengthUnit(value:String):void
> > +        {
> > +             _defaultLengthUnit = value;
> > +        }
> > +        protected var lengthProps:Array = [
> > +            "width",
> > +            "height",
> > +            "margin",
> > +            "padding",
> > +            "borderWidth",
> > +            "fontSize",
> > +            "textShadow"
> > +        ];
> > +        protected function isLengthProp(prop:String):Boolean{
> > +            if(lengthProps.indexOf(prop) != -1){
> > +                return true;
> > +            }
> > +            // margin and padding can have variants
> > +            if(prop.indexOf("margin")== 0){
> > +                return true;
> > +            }
> > +            if(prop.indexOf("padding")== 0){
> > +                return true;
> > +            }
> > +            return false;
> > +        }
> > +        COMPILE::JS
> > +        override protected function
> processNumberStyle(prop:String,value:*):*{
> > +            if (colorStyles[prop])
> > +                value = CSSUtils.attributeFromColor(value);
> > +            else if (isLengthProp(prop))
> > +                return value + defaultLengthUnit;
> > +            return value;
> > +        }
> > +
> > +
> >     }
> > }
> > diff --git
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as
> > index c2221c1..5c5273b 100644
> > ---
> a/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as
> > +++
> b/frameworks/projects/Core/src/main/royale/org/apache/royale/core/SimpleCSSValuesImpl.as
> > @@ -748,10 +748,7 @@ package org.apache.royale.core
> >                                   if (typeof(value) == 'function')
> continue;
> >                                       cssString += p + ": ";
> >                                       if (typeof(value) == 'number') {
> > -                     if (colorStyles[p])
> > -                             value = CSSUtils.attributeFromColor(value
> as uint);
> > -                     else
> > -                             value = value.toString() + 'px';
> > +                        value = processNumberStyle(p,value);
> >                       }
> >                       else if (p == 'backgroundImage') {
> >                       if (p.indexOf('url') != 0)
> > @@ -764,6 +761,14 @@ package org.apache.royale.core
> >                               ss.insertRule(cssString,
> ss.cssRules.length);
> >                       }
> >         }
> > +        COMPILE::JS
> > +        protected function processNumberStyle(prop:String,value:*):*{
> > +            if (colorStyles[prop])
> > +                value = CSSUtils.attributeFromColor(value);
> > +            else if (numericStyles[prop])
> > +                return value;
> > +            return value + 'px';
> > +        }
> >
> >               COMPILE::JS
> >               private var ss:CSSStyleSheet;
> > @@ -871,12 +876,7 @@ package org.apache.royale.core
> >                 if (value === undefined)
> >                     continue;
> >                 if (typeof(value) == 'number') {
> > -                    if (colorStyles[p])
> > -                        value = CSSUtils.attributeFromColor(value);
> > -                    else if (numericStyles[p])
> > -                        value = value.toString();
> > -                    else
> > -                        value = value.toString() + 'px';
> > +                    value = processNumberStyle(p,value);
> >                 }
> >                 else if (p == 'backgroundImage' && value.indexOf('url')
> != 0) {
> >                         value = 'url(' + value + ')';
> >
>
>

-- 
Carlos Rovira
http://about.me/carlosrovira

Reply via email to