Exemplo n.º 1
0
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);
}
Exemplo n.º 2
0
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();
}
Exemplo n.º 3
0
// 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();
}
Exemplo n.º 4
0
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();
}
Exemplo n.º 5
0
//! 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);
}
Exemplo n.º 6
0
void myParserEDM::Qt_handleString(char *prop, char *tag, char *value)
{
    writeOpenProperty(prop);
    writeTaggedString(tag, value);
    writeCloseProperty();
}