示例#1
0
static void addGlyphsToPath(ATSUStyle style, glyph_t *glyphs, QFixedPoint *positions, int numGlyphs, QPainterPath *path)
{
    if (!numGlyphs)
        return;

    OSStatus e;

    QMacFontPath fontpath(0, 0, path);
    ATSCubicMoveToUPP moveTo = NewATSCubicMoveToUPP(QMacFontPath::moveTo);
    ATSCubicLineToUPP lineTo = NewATSCubicLineToUPP(QMacFontPath::lineTo);
    ATSCubicCurveToUPP cubicTo = NewATSCubicCurveToUPP(QMacFontPath::cubicTo);
    ATSCubicClosePathUPP closePath = NewATSCubicClosePathUPP(QMacFontPath::closePath);

    for (int i = 0; i < numGlyphs; ++i) {
        GlyphID glyph = glyphs[i];

        fontpath.setPosition(positions[i].x.toReal(), positions[i].y.toReal());
        ATSUGlyphGetCubicPaths(style, glyph, moveTo, lineTo,
                               cubicTo, closePath, &fontpath, &e);
    }

    DisposeATSCubicMoveToUPP(moveTo);
    DisposeATSCubicLineToUPP(lineTo);
    DisposeATSCubicCurveToUPP(cubicTo);
    DisposeATSCubicClosePathUPP(closePath);
}
示例#2
0
MacOpSVGFont::~MacOpSVGFont()
{
	if(mMoveToUPP)
		DisposeATSCubicMoveToUPP(mMoveToUPP);
	if(mLineToUPP)
		DisposeATSCubicLineToUPP(mLineToUPP);
	if(mCurveToUPP)
		DisposeATSCubicCurveToUPP(mCurveToUPP);
	if(mClosePathUPP)
		DisposeATSCubicClosePathUPP(mClosePathUPP);
	if(mQuadNewPathUPP)
		DisposeATSQuadraticNewPathUPP(mQuadNewPathUPP);
	if(mQuadLineUPP)
		DisposeATSQuadraticLineUPP(mQuadLineUPP);
	if(mQuadCurveUPP)
		DisposeATSQuadraticCurveUPP(mQuadCurveUPP);
	if(mQuadClosePathUPP)
		DisposeATSQuadraticClosePathUPP(mQuadClosePathUPP);
#ifndef USE_CG_SHOW_GLYPHS
	if(mGlyphInfoArray)
		free(mGlyphInfoArray);
#endif
}