Yeah, that seems like a good argument to me On 15 June 2015 at 03:30, Jim Dishaw <j...@dishaw.org> wrote: > > 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> 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