[ 
https://issues.apache.org/jira/browse/FLEX-34653?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14234356#comment-14234356
 ] 

Jason Moore commented on FLEX-34653:
------------------------------------

I'm getting 120 DPI on a Old Mac 24" screen, PC 21" screen , Laptop 15" screen 
and windows Surface 13" ? all various resolutons ... I'm sure they can't all be 
120 DPI.

If you don't set the applicationDPI then autoscaling is disabled. You then have 
to manually define scaling behaviour which includes using the 
MultiDPIBitmapsource to manually provide different bitmap assets for different 
DPIs.

If you define the applicationDPI then flex should do the scalling for you... so 
a 12 point text font defined for a 160 DPI application will be scaled to 18 
points on a 240 DPI device automatically so they physically appear the same 
size if you put the devices side by side. 

I've done some more testing and found that the automatic scaling for desktop 
just does not work ( mobiles seem fine ). 

Forget overriding the runtimeDPIProvider ( I may need to edit the title of this 
issue )... if you simply set the applicationDPI for a desktop application to 
anything other than 120 DPI the content is incorrectly scaled. See screenshot.

Am I really the only one who is experiancing this error ?



> Overriding RuntimeDPIProvider causes incorrect application scalling
> -------------------------------------------------------------------
>
>                 Key: FLEX-34653
>                 URL: https://issues.apache.org/jira/browse/FLEX-34653
>             Project: Apache Flex
>          Issue Type: Bug
>          Components: Layout - General, Skinning
>    Affects Versions: Apache Flex 4.13.0
>         Environment: Windows ( Possible Mac - Not checked ).
>            Reporter: Jason Moore
>              Labels: DPI, Scaling, automatic
>         Attachments: screenshot.png
>
>
> The issue occurs when using automatic scaling and setting the application DPI 
> and overriding the runtimeDPIProvider to set the runtimeDPI where it is 
> incorrectly returned from the OS ( On desktop devices for instance ).
> If the two values match ie 1:1 scaling, there is no issue. But if they differ 
> then the application content is scalled correctly , but the stage size is 
> also scaled, incorrect. This leads to the application being clipped when 
> scaling up and excess space when scaling down.. See code excepts to 
> recreate...
> {code:title=ScaleIssue.mxml|borderStyle=solid}
> <?xml version="1.0" encoding="utf-8"?>
> <s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"; 
>                                          
> xmlns:s="library://ns.adobe.com/flex/spark" 
>                                          
> xmlns:mx="library://ns.adobe.com/flex/mx"
>                                          applicationDPI="160"
>                                          
> runtimeDPIProvider="myRuntimeDPIProvider">
>       
>               <s:Label id="LeftMarker" left="0" verticalCenter="0" 
> text="&lt;--- LEFT" fontSize="24"/>
>               <s:Label id="MiddleMarker" horizontalCenter="0" 
> verticalCenter="0" text="&gt; &gt; &gt; MIDDLE &lt; &lt; &lt;" fontSize="24"/>
>               <s:Label id="RightMarker" right="0" verticalCenter="0" 
> text="RIGHT ---&gt;" fontSize="24"/>
>                                                        
> </s:WindowedApplication>
> {code}
> {code:title=myRuntimeDPIProvider.as|borderStyle=solid}
> package 
> {
>       
>       import mx.core.DPIClassification;
>       import mx.core.RuntimeDPIProvider;
>       
>       public class myRuntimeDPIProvider extends RuntimeDPIProvider
>       {
>                               
>               /**
>                * Overrride getter function so we can set the dpi manually 
> when running on desktop device
>                * This would normally be a bit more sophisticated... 
>                * 
>                * @return 
>                * 
>                */             
>               override public function get runtimeDPI():Number
>               {                       
>                       return DPIClassification.DPI_240;
>               }
>               
>       }
> }
> {code}
> You should see the text labels pointing to the left and right screen edges.. 
> but instead the right hand label is off screen.
> Hope that makes sense.
> J :)



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to