void QPAGenerator::writeHeader() { QFontEngineQPA::Header header; header.magic[0] = 'Q'; header.magic[1] = 'P'; header.magic[2] = 'F'; header.magic[3] = '2'; header.lock = 1; header.majorVersion = QFontEngineQPA::CurrentMajorVersion; header.minorVersion = QFontEngineQPA::CurrentMinorVersion; header.dataSize = 0; dev->write((const char *)&header, sizeof(header)); writeTaggedString(QFontEngineQPA::Tag_FontName, fe->fontDef.family.toUtf8()); QFontEngine::FaceId face = fe->faceId(); writeTaggedString(QFontEngineQPA::Tag_FileName, face.filename); writeTaggedUInt32(QFontEngineQPA::Tag_FileIndex, face.index); { uchar data[4]; uint len = 4; bool ok = fe->getSfntTableData(MAKE_TAG('h', 'e', 'a', 'd'), data, &len); if (ok) { const quint32 revision = qFromBigEndian<quint32>(data); writeTaggedUInt32(QFontEngineQPA::Tag_FontRevision, revision); } } writeTaggedQFixed(QFontEngineQPA::Tag_Ascent, fe->ascent()); writeTaggedQFixed(QFontEngineQPA::Tag_Descent, fe->descent()); writeTaggedQFixed(QFontEngineQPA::Tag_Leading, fe->leading()); writeTaggedQFixed(QFontEngineQPA::Tag_XHeight, fe->xHeight()); writeTaggedQFixed(QFontEngineQPA::Tag_AverageCharWidth, fe->averageCharWidth()); writeTaggedQFixed(QFontEngineQPA::Tag_MaxCharWidth, QFixed::fromReal(fe->maxCharWidth())); writeTaggedQFixed(QFontEngineQPA::Tag_LineThickness, fe->lineThickness()); writeTaggedQFixed(QFontEngineQPA::Tag_MinLeftBearing, QFixed::fromReal(fe->minLeftBearing())); writeTaggedQFixed(QFontEngineQPA::Tag_MinRightBearing, QFixed::fromReal(fe->minRightBearing())); writeTaggedQFixed(QFontEngineQPA::Tag_UnderlinePosition, fe->underlinePosition()); writeTaggedUInt8(QFontEngineQPA::Tag_PixelSize, fe->fontDef.pixelSize); writeTaggedUInt8(QFontEngineQPA::Tag_Weight, fe->fontDef.weight); writeTaggedUInt8(QFontEngineQPA::Tag_Style, fe->fontDef.style); writeTaggedUInt8(QFontEngineQPA::Tag_GlyphFormat, QFontEngineQPA::AlphamapGlyphs); writeTaggedString(QFontEngineQPA::Tag_EndOfHeader, QByteArray()); align4(); const quint64 size = dev->pos(); header.dataSize = qToBigEndian<quint16>(size - sizeof(header)); dev->seek(0); dev->write((const char *)&header, sizeof(header)); dev->seek(size); }
void myParserEDM::Qt_setColor(char *property, int r, int g, int b, int alpha) { char asc[80]; writeOpenProperty(property); sprintf(asc,"color alpha=\"%d\"", alpha); writeOpenTag(asc, "", ""); sprintf(asc,"%d", r); writeTaggedString("red", asc); sprintf(asc,"%d", g); writeTaggedString("green", asc); sprintf(asc,"%d", b); writeTaggedString("blue", asc); writeCloseTag("color"); writeCloseProperty(); }
// Zai added void myParserEDM::writeFontProperties(int size, bool bold) { char asc[MAX_ASCII]; writeOpenProperty("font"); writeOpenTag("font", "", ""); sprintf(asc, "%d", (int)(((double)size*0.7)+0.5)); writeTaggedString("pointsize", asc); if (bold && size > 14){ // std::string trueString; // trueString.append("true"); sprintf(asc, "%s", "true"); writeTaggedString("bold", asc); } writeCloseTag("font"); writeCloseProperty(); }
void myParserEDM::writeRectangleDimensions(int x, int y, int w, int h) { char asc[MAX_ASCII]; writeOpenProperty("geometry"); writeOpenTag("rect", "", ""); sprintf(asc, "%d", x); writeTaggedString("x", asc); sprintf(asc, "%d", y); writeTaggedString("y", asc); sprintf(asc, "%d", w); writeTaggedString("width", asc); sprintf(asc, "%d", h); writeTaggedString("height", asc); writeCloseTag("rect"); writeCloseProperty(); }
//! Convenience method. void MvdXmlWriter::writeTaggedString(const QString &name, const QString &string, const MvdAttribute &a1, const MvdAttribute &a2, const MvdAttribute &a3) { MvdAttributeMap a; if (!a1.first.isEmpty()) a.insert(a1.first, a1.second); if (!a2.first.isEmpty()) a.insert(a2.first, a2.second); if (!a3.first.isEmpty()) a.insert(a3.first, a3.second); writeTaggedString(name, string, a); }
void myParserEDM::Qt_handleString(char *prop, char *tag, char *value) { writeOpenProperty(prop); writeTaggedString(tag, value); writeCloseProperty(); }