commit head: beginnings of proper graphics transforms

From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Mon Aug 12 2002 - 14:25:09 EDT

  • Next message: mike: "Re: gtk1/gtk2"

    As a part of the transfer to single unit system I have implemented a
    GR_Transform class and added some new functions to the
    GR_Graphics class:

        getTransform();
        setTransform(...);
        virtual _setTransfrom(...);

    The virtual gets called both from inside setTransform() and
    setZoomPercentage(), allowing for platform-specific post-
    processing.

    Ideally, we would just apply a given transform adjusted by our
    internal scaling factor and the zoom factor to the graphic device,
    and we would not need to worry about relationship between our
    internal units and the device units. In reality, we will be lucky if we
    can apply the transform properly to fonts. To my dismay I have
    discovered that the win32 SetWorldTransform() function, which
    appears to be the only way in win32 to properly apply transforms to
    fonts, is available only on win NT. The only other way to "tranform"
    fonts is to fiddle with window and viewport extents, which is
    equivalent to scaling the _output_ from the font rasterizer, which is
    wholy inadequate. The only solution to the problem I can see is to
    measure the fonts for the currently selected printer, and then scale
    the metrics to our screen resolution for drawing on screen. This will
    provide reasonable wysiwyg, but we will need to ensure that when
    the printer changes, we redo layout.

    modified files: gr_Graphics.h/cpp, gr_Win32Graphics.h/cpp,
    gr_Win32CharWidths.cpp

    Tomas



    This archive was generated by hypermail 2.1.4 : Mon Aug 12 2002 - 14:30:21 EDT