static void optimizeNode(fz_node *node) { if (!node) { return; } switch (node->kind) { case FZ_NIMAGE: optimizeImage((fz_imagenode*)node); break; case FZ_NMETA: optimizeMeta((fz_metanode*)node); break; case FZ_NOVER: optimizeOver((fz_overnode*)node); break; case FZ_NMASK: optimizeMask((fz_masknode*)node); break; case FZ_NBLEND: optimizeBlend((fz_blendnode*)node); break; case FZ_NTRANSFORM: optimizeTransform((fz_transformnode*)node); break; case FZ_NCOLOR: optimizeSolid((fz_solidnode*)node); break; case FZ_NPATH: optimizePath((fz_pathnode*)node); break; case FZ_NTEXT: optimizeText((fz_textnode*)node); break; case FZ_NSHADE: optimizeShade((fz_shadenode*)node); break; case FZ_NLINK: optimizeLink((fz_linknode*)node); break; } }
PGE_Size FontManager::textSize(QString &text, int fontID, int max_line_lenght, bool cut, int ttfFontPixelSize) { if(!isInit) return PGE_Size(text.length() * 20, text.split(QChar(QChar::LineFeed)).size() * 20); if(text.isEmpty()) return PGE_Size(0, 0); if(max_line_lenght <= 0) max_line_lenght = 1000; if(cut) { for(int i = 0; i < text.size(); i++) { if(text[i] == QChar(QChar::LineFeed)) { text.remove(i, text.size() - i); break; } } } //Use Raster font if((fontID >= 0) && (fontID < rasterFonts.size())) { if(rasterFonts[fontID].isLoaded()) return rasterFonts[fontID].textSize(text, max_line_lenght); } //Use TTF font QFont fnt = font(); if(ttfFontPixelSize > 0) fnt.setPixelSize(ttfFontPixelSize); QFontMetrics meter(fnt); optimizeText(text, max_line_lenght); QSize meterSize = meter.boundingRect(text).size(); return PGE_Size(meterSize.width(), meterSize.height()); }