Hi Justin,

I have cleaned up my code to prepare for the integration with the SDK, and 
removed two classes in the process :-) 

Following your request, I describe below the differences between core classes 
and the ones I have used in MobileGrid, and make suggestions on how it could be 
integrated to the core classes:

1) Spark.utils.MultiDPIBitmapSourceExt vs. Spark.utils.MultiDPIBitmapSource

a) differences 
getSource(desiredDPI: Number)

(This is a copy/paste from a previous thread, 09/18/2013 21:47 CET)

MultiBitmapSource getSource(dpi) method is called 3 times in the SDK with 
exactly the same code:

     var app:Object = FlexGlobals.topLevelApplication;
                var dpi:Number;
                if ("runtimeDPI" in app)
                    dpi = app["runtimeDPI"];
                else
                    dpi = DensityUtil.getRuntimeDPI();
                var multiSource:Object = 
MultiDPIBitmapSource(source).getSource(dpi);

So basically, MDPIBSExt does the above.

b) Proposed integration

* Move the implementation of MultiBitmapSourceExt.getSource(dpi) into the root 
class MultiBitmapSource.getSource(dpi)
* Make the desiredDPI argument optional (desiredDPI:Number = NaN) , so that 
when called with no argument, it has the default behavior.

-------------------------

2) spark.UIComponentUtils

=> I managed to remove all methods in this class by using equivalent SDK 
methods, or inline code. 
So I deleted the class 

3) spark.components.supportClasses.ItemRendererBase vs. 
spark.components.LabelItemRenderer

ItemRendererBase was the base class for MobileGridRowRenderer

=> I managed to make it inherit from LabelItemRenderer instead, 
so I deleted the class

__________________________


4) spark.utils.DensityUtil2 vs spark.utils.DensityUtil

a) differences:

private static function dpiScale(value:Number, sourceDPI:Number = 
DPIClassification.DPI_160):Number
And  private static function getSetApplicationDPI():Number

Actually, this is very specific to MobileGrid and I don't know if it can be 
extended to SDK.
Let me try to explain.

I wanted MobileGridColumn width to be set to either as fixed or percentage 
value.
Then I needed to convert this value to actual pixels.
- when width is set as percentage value (using percentProxy), then all 
computations are relative, so there is no density issue.
- when width is set as a fixed value, then there are two possibilities:
  - if Application.applicationDPI has been set (eg. to 320 DPI) => width must 
be interpreted in that authoring DPI, so basically, there is nothing to do as 
scaling is already done in the transform matrix.

  - if Application.applicationDPI has not been set => the width needs be 
interpreted according to the second arg (sourceDPI) set arbitrarily by default 
to 160 DPI.
=> basic conversion is done  (return value * runDPI / sourceDPI)

Note: the SDK is not clear on whether one should use applicationDPI or the 
@media css,
 and the different blogs on the subject didn't help me much, so I needed to 
handle both situations

You guys are more experienced on this, so maybe you know how this should be done
Any help is welcome.

b) Proposed integration:
- If other classes may need the same kind of dual behavior, move these methods 
to DensityUtil
- Otherwise, keep it private, and give it another name (MobileGridUtils or 
something)

Maurice 

-----Message d'origine-----
De : Justin Mclean [mailto:jus...@classsoftware.com] 
Envoyé : mercredi 2 octobre 2013 04:14
À : dev@flex.apache.org
Objet : Re: New mobile grid classes

Hi,

> 1) The MDG classes package names are spark.components.*,  like in other 
> experimental compoents
OK - not 100% sure that's the way to go, but reasonable enough if other 
components do that.

> 2)  yes, that's the idea:  these classes would eventually be merged with the 
> root sdk classes.
OK I think we work on that next then merge this branch into the dev branch so 
this can be in the next release.

Thanks,
Justin

Reply via email to