patch -- gr_UnixGraphics::drawChars changes

From: Joaquín Cuenca Abela (cuenca@pacaterie.u-psud.fr)
Date: Fri Aug 23 2002 - 13:55:40 EDT

  • Next message: j.m.maurer: "Commit (HEAD): Re: patch -- gr_UnixGraphics::drawChars changes"

    This patch uses the pCharWidths to position individual characters. I.e.
    like the last one that I sent to the list, but it it prints 'a' when the
    user types 'a' (glyph indexes, char indexes... bah, all that indexes
    look the same one).

    Please commit it.

    Cheers,

    -- 
    Joaquín Cuenca Abela
    cuenca@pacaterie.u-psud.fr
    

    --- abi/src/af/gr/unix/gr_UnixGraphics.cpp Sun Aug 4 10:07:13 2002
    +++ abi4/src/af/gr/unix/gr_UnixGraphics.cpp Thu Aug 22 20:16:33 2002
    @@ -317,8 +317,38 @@
                                                                     int * pCharWidths)
     {
     #ifdef USE_XFT
    - XftDrawString32(m_pXftDraw, &m_XftColor, m_pXftFont, xoff, yoff + m_pXftFont->ascent,
    - const_cast<XftChar32*> (pChars + iCharOffset), iLength);
    + if (iLength == 0)
    + return;
    +
    + yoff += m_pXftFont->ascent;
    +
    + if (!pCharWidths)
    + XftDrawString32(m_pXftDraw, &m_XftColor, m_pXftFont, xoff, yoff,
    + const_cast<XftChar32*> (pChars + iCharOffset), iLength);
    + else
    + {
    + XftCharSpec aCharSpec[256];
    + XftCharSpec* pCharSpec = aCharSpec;
    +
    + if (iLength > 256)
    + pCharSpec = new XftCharSpec[iLength];
    +
    + pCharSpec[0].ucs4 = (FT_UInt) pChars[iCharOffset];
    + pCharSpec[0].x = xoff;
    + pCharSpec[0].y = yoff;
    +
    + for (int i = 1; i < iLength; ++i)
    + {
    + pCharSpec[i].ucs4 = (FT_UInt) pChars[i + iCharOffset];
    + pCharSpec[i].x = (short) (pCharSpec[i - 1].x + pCharWidths[i - 1]);
    + pCharSpec[i].y = yoff;
    + }
    +
    + XftDrawCharSpec (m_pXftDraw, &m_XftColor, m_pXftFont, pCharSpec, iLength);
    +
    + if (pCharSpec != aCharSpec)
    + delete[] pCharSpec;
    + }
     #else
             if (!m_pFontManager)
                     return;



    This archive was generated by hypermail 2.1.4 : Fri Aug 23 2002 - 13:58:28 EDT