void createFontNode( QDomDocument& doc, QDomNode& parent, const QString& elementName, const QFont& font ) { QDomElement fontElement = doc.createElement( elementName ); parent.appendChild( fontElement ); createStringNode( doc, fontElement, "Family", font.family() ); createIntNode( doc, fontElement, "PointSize", font.pointSize() ); createIntNode( doc, fontElement, "PixelSize", font.pixelSize() ); createIntNode( doc, fontElement, "Weight", font.weight() ); createBoolNode( doc, fontElement, "Italic", font.italic() ); #if QT_VERSION < 300 // Qt 3 handles the charset internally. createIntNode( doc, fontElement, "CharSet", font.charSet() ); #endif }
void createPixmapNode( QDomDocument& doc, QDomNode& parent, const QString& elementName, const QPixmap& pixmap ) { QDomElement pixmapElement = doc.createElement( elementName ); parent.appendChild( pixmapElement ); // Convert the pixmap to an image, save that image to an in-memory // XPM representation and compress this representation. This // conforms to the file format Qt Designer uses. QByteArray ba; QBuffer buffer( ba ); buffer.open( IO_WriteOnly ); QImageIO imgio( &buffer, "XPM" ); QImage image = pixmap.convertToImage(); imgio.setImage( image ); imgio.write(); buffer.close(); ulong len = ba.size() * 2; QByteArray bazip( len ); ::compress( (uchar*) bazip.data(), &len, (uchar*) ba.data(), ba.size() ); QString dataString; static const char hexchars[] = "0123456789abcdef"; for ( int i = 0; i < (int)len; ++i ) { uchar c = (uchar) bazip[i]; dataString += hexchars[c >> 4]; dataString += hexchars[c & 0x0f]; } createStringNode( doc, pixmapElement, "Format", "XPM.GZ" ); createIntNode( doc, pixmapElement, "Length", ba.size() ); createStringNode( doc, pixmapElement, "Data", dataString ); }
void createPenNode( QDomDocument& doc, QDomNode& parent, const QString& elementName, const QPen& pen ) { QDomElement penElement = doc.createElement( elementName ); parent.appendChild( penElement ); createIntNode( doc, penElement, "Width", pen.width() ); createColorNode( doc, penElement, "Color", pen.color() ); createStringNode( doc, penElement, "Style", penStyleToString( pen.style() ) ); }
IntNodeList* createIntNodeList(int element) { IntNodeList* list = malloc(sizeof(IntNodeList)); if (list == NULL) { free(list); return NULL; } IntNode* item = createIntNode(element); item->element = element; item->prev = NULL; list->top = item; return list; }