fp_TextRun::s_pCharAdvance

From: Tomas Frydrych (tomas@frydrych.uklinux.net)
Date: Sun Jan 26 2003 - 05:23:48 EST

  • Next message: Joaquin Cuenca Abela: "RE : commit: Layout horizontally with screen units."

    > Dom and I were looking at this code earlier, and we were a bit
    > confused. The fp_TextRun class has a static member containing char
    > widths; we couldn't quite figure out what it was caching char widths
    > for. And it looked like most code paths were not specifying char
    > widths for gr_Graphics::drawChars().
    >
    > Can you explain what the static s_pCharAdvance member does? I
    > couldn't find any other args passed to ::drawChars besides this array.

    The text run is not caching character widths; the s_pCharAdvance is
    a buffer which is filled with character advances by ::_draw(); the
    advances are not necessarily same as the character widths, in the
    case of the combining characters the advance depends on the base
    character and can be greater or lesser.

    When I was writing this code, I was debating whether to make the
    buffer non-static and refresh it inside ::refreshDrawBuffer(),
    improving spead but adding (sizeof(sint) * run length) memory
    requirenment, or whether make it static and recalculate it inside
    ::_draw(). I decided for the latter, and it does not seem to have
    serious impact on the performance.

    Tomas



    This archive was generated by hypermail 2.1.4 : Sun Jan 26 2003 - 05:29:05 EST