[R-SIG-Mac] Odd quartz behavior on 24" iMac at 10.7.5

Ray Spence rspence at stat.berkeley.edu
Wed Oct 17 21:01:28 CEST 2012


Hi Simon,

I'll write in line below -

On 10/17/12 11:34 AM, Simon Urbanek wrote:
> Ray,
>
> On Oct 17, 2012, at 2:17 PM, Ray Spence wrote:
>
>> Hi Simon,
>>
>> Thank you very much for your response. I've installed the inline library
>> and run the function as you wrote. The results are interesting. Following
>> this procedure on a 24" iMac running OS X 10.7.4 I get this:
>>
>>> f()
>> 518.809mm x 320.842mm
>> [1] 1.617021
>> which is pretty close to what you predicted. However, doing the same on another
>> 24" iMac running OS X 10.7.5 I get this:
>>
>>> f()
>> 0mm x 0mm
>> [1] NaN
>> which clearly shows a problem. I know that we can set the quartz dpi variable
>> by hand per session or in users' .Rprofile file which will compensate for this
>> problem. But I'd like to find a better solution that doesn't require editing any
>> user file. I suppose this a bug but am not sure if it would belong to R or
>> to Apple?
>>
> Apple - their CGDisplayScreenSize() is returning bogus result. Just to make sure, please try this in a standalone program w/o R:
>
> disp.c:
>
> #include <stdio.h>
> #include <ApplicationServices/ApplicationServices.h>
>
> int main() {
>      CGSize ds = CGDisplayScreenSize(CGMainDisplayID());
>      printf("%gmm x %gmm\n", ds.width, ds.height);
>      return 0;
> }
>
>
> compile and run via
>
> gcc -o disp disp.c -framework AppKit && ./disp
>
I've done this. Here is the output

host:~# ./disp
262.194mm x 324.255mm
host:~#

Which doesn't look correct (?).
>
> That said, we can work around that bug in R by not using the screen size when it's bogus but falling back to something around 90-100 dpi. In fact, I'm surprised that it doesn't bomb entirely ...

Ok - now a formal question - are you saying that you/R Team can provide 
a patch
of sorts?

Thanks again Simon,
Ray

>
> Thanks,
> Simon
>
>
>> Thanks again
>> Ray
>>
>> On 10/15/12 6:32 PM, Simon Urbanek wrote:
>>> Ray,
>>>
>>> On Oct 15, 2012, at 8:57 PM, Ray Spence wrote:
>>>
>>>> All,
>>>>
>>>> There seems to be something wrong between OS X 10.7.5 and how
>>>> quartz reads Apple graphics resolution on 24" iMac (early 2008,
>>>> iMac8,1) on R 2.15.1 GUI1.52. On this hardware/OS/R version the
>>>> default R plot is a rectangle.
>>> Can you attach a screenshot? R is simply reading the geometry reported by the OS to adjust the aspect ratio accordingly.
>>>
>>> Can you run this in R:
>>>
>>> install.packages("inline") # if you don't have inline installed yet
>>> library(inline)
>>> f=cfunction(,'CGDirectDisplayID md = CGMainDisplayID(); CGSize ds = CGDisplayScreenSize(md); Rprintf("%gmm x %gmm\\n", ds.width, ds.height); return ScalarReal(ds.width / ds.height);','#include <ApplicationServices/ApplicationServices.h>')
>>> f()
>>>
>>> You should see this on a 24" iMac8,1:
>>>
>>>> f()
>>> 520mm x 320mm
>>> [1] 1.625
>>>
>>> Those are the proper dimensions of the built-in screen.
>>>
>>> If that's not what you get, you should be able work around this by setting dpi manually to 94 (it will be slightly off since the native dpi is asymmetric 93.785 x 95.25 but 94 should be close enough to not notice) - either in quartz.options() or quartz().
>>>
>>> Cheers,
>>> Simon
>>>
>>>
>>>
>>>> On same hardware/R version running
>>>> OS X 10.7.4 the default R plot is square as expected. (I don't see
>>>> this behavior on 20" iMac once upgraded to 10.7.5.)
>>>>
>>>> On this problematic iMac, if I run quartz.options() without changing
>>>> anything I see:
>>>>
>>>>> quartz.options()
>>>> $title
>>>>
>>>> [1] "Quartz %d"
>>>>
>>>> $width
>>>>
>>>> [1] 7
>>>>
>>>> $height
>>>>
>>>> [1] 7
>>>>
>>>> $pointsize
>>>>
>>>> [1] 12
>>>>
>>>> $family
>>>>
>>>> [1] "Helvetica"
>>>>
>>>> $fontsmooth
>>>>
>>>> [1] TRUE
>>>>
>>>> $antialias
>>>>
>>>> [1] TRUE
>>>>
>>>> $type
>>>>
>>>> [1] "native"
>>>>
>>>> $bg
>>>>
>>>> [1] "transparent"
>>>>
>>>> $canvas
>>>>
>>>> [1] "white"
>>>>
>>>> $dpi
>>>>
>>>> [1] NA
>>>>
>>>> But any plot, eg.
>>>>> plot (rnorm(10),rnorm(10))
>>>> returns an image that is most definitely not a square.
>>>>
>>>> Can anyone help me investigate this? For instance where/how
>>>> does R create the plot graphic? Are there specific OS X file(s) that R
>>>> reads to generate the plots?
>>>>
>>>> My assumption is that this is an Apple Inc. generated problem
>>>> but figured that the R community might be a bit more responsive..
>>>>
>>>> Thanks,
>>>> Ray
>>>>
>>>> -- 
>>>> *******************
>>>> Raymond Spence
>>>> U.C. Berkeley
>>>> Dept. of Statistics
>>>> SCF Sysadmin
>>>> 497 Evans Hall
>>>> U.C. Berkeley
>>>> 510.642.5497
>>>>
>>>> _______________________________________________
>>>> R-SIG-Mac mailing list
>>>> R-SIG-Mac at r-project.org
>>>> https://stat.ethz.ch/mailman/listinfo/r-sig-mac
>>>>
>>>>
>>
>> -- 
>> *******************
>> Raymond Spence
>> U.C. Berkeley
>> Dept. of Statistics
>> SCF Sysadmin
>> 497 Evans Hall
>> U.C. Berkeley
>> 510.642.5497
>> *******************
>>
>>


-- 
*******************
Raymond Spence
U.C. Berkeley
Dept. of Statistics
SCF Sysadmin
497 Evans Hall
U.C. Berkeley
510.642.5497



More information about the R-SIG-Mac mailing list