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); }
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 }