> On Jun 14, 2015, at 5:28 AM, Phil Rosenberg <p.d.rosenb...@gmail.com> wrote:
> 
> On 11 June 2015 at 17:57, Jim Dishaw <j...@dishaw.org 
> <mailto:j...@dishaw.org>> wrote:
>> 
>>> On Jun 11, 2015, at 4:06 AM, Phil Rosenberg <p.d.rosenb...@gmail.com> wrote:
>>> 
>>> Hi Jim
>>> The documentation states that the provided text height will be in mm.
>>> The user can set dpi with plspage so you should use the PLStream->xdpi
>>> and PLStream->ydpi to size your text in pixels. In case the user
>>> hasn't set this you should use a sensible default. Of course the
>>> actual value will depend on the monitor, but rather than try to grab
>>> this it seems that there are two standards and for consistency you
>>> should use one of these. One is to use 72 pixels per inch so that 1
>>> pixel = 1 pt. The other is 90 pixels per inch which seems to be the
>>> default for most svg renderers. For wxWidgets I chose 90 pixels per
>>> inch. I also noticed tect seems a little smaller than the example
>>> online (from the cairo driver?) but it does as described in the
>>> documentation so I am happy with that.
>> 
> 
> 
>> 
>> The recommendation in the Windows API is to use GetDeviceCaps () with the 
>> >LOGPIXELSX/LOGPIXELSY values to get the dpi setting.  Right now I’m 
>> >ignoring the DPI setting provided by the user.  On native text rendering 
>> devices >the xdpi/ydpi settings are essentially being used to scale the size 
>> of fonts, >which (IMHO) abuses the meaning of “DPI”.
>> 
> Yes as you say the windows API provides this mechanism - in fact there
> is something about if you wish to have your app in the windows store
> you must do this so your app can work on phones/tablets/pcs or
> something. Not sure of the details.
> For The windows interactive device it is perhaps not a big deal - for
> wxWidgets the user can pass in a paint dc or a memory dc so in the
> latter case it is down to the user to specify a DPI. Because all DCs
> are treated equal it is up to the user in all instances. Re DPI
> basically being a text scaling parameter - well you are correct - but
> does any other function receive arguments in mm/inches or is text the
> only one?
> 

At least when it comes to DPI, text is the only that uses that field.  I think 
all the drawing commands are in the plot coordinate system, thus physical 
dimensions are subsumed into the coordinate system.  There is plsvpa() that 
allows the user to specify the viewport in terms of physical measurements.

My rationale for keeping the dpi tied to the device is to ensure that physical 
measurements are invariant (the principle of least surprise).  If the API says 
“mm” or “inches” the driver should render something that measures correctly.

>> Which size are you referring to?  When the window is resized, the driver 
>> gets >the new dimensions of the client area (via GetClientRect() for 
>> displays and >GetDeviceCaps() for printers).  It uses the new size to 
>> calculate the new >scaling between device virtual coordinates 
>> (PIXELS_X/PIXELS_Y in PLplot) >and the new output device coordinates, The 
>> dpi remains consistent with what >Windows reports.
>> 
> So for wxWidgets if I resize the window to double the size, the text
> stays the same size. I.e. I maintain the same dpi and text height in
> mm when the window is resized.
> 

Same with wingdi.  When resized the text stays the same.  

------------------------------------------------------------------------------
_______________________________________________
Plplot-devel mailing list
Plplot-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/plplot-devel

Reply via email to