Skip to content

Commit

Permalink
Merge pull request #1 from DrMoriarty/master
Browse files Browse the repository at this point in the history
Sparrow exporter & mac fix
  • Loading branch information
andryblack committed Nov 7, 2011
2 parents db3a88e + 4ea77bd commit 958a5ff
Show file tree
Hide file tree
Showing 4 changed files with 98 additions and 2 deletions.
9 changes: 7 additions & 2 deletions FontBuilder.pro
Expand Up @@ -65,7 +65,8 @@ SOURCES += src/main.cpp \
src/exporters/nglexporter.cpp \
src/exporters/luaexporter.cpp \
src/fontdrawwidget.cpp \
src/fontloader.cpp
src/fontloader.cpp \
src/exporters/sparrowexporter.cpp
HEADERS += src/fontbuilder.h \
src/colorbutton.h \
src/fontselectframe.h \
Expand Down Expand Up @@ -100,7 +101,8 @@ HEADERS += src/fontbuilder.h \
src/exporters/nglexporter.h \
src/exporters/luaexporter.h \
src/fontdrawwidget.h \
src/fontloader.h
src/fontloader.h \
src/exporters/sparrowexporter.h
FORMS += src/fontbuilder.ui \
src/fontselectframe.ui \
src/fontoptionsframe.ui \
Expand All @@ -124,6 +126,9 @@ mac {
INCLUDEPATH += ../include
INCLUDEPATH += ../include/freetype2
LIBS += -L../lib -lfreetype -lz
# macports support
INCLUDEPATH += /opt/local/include /opt/local/include/freetype2
LIBS += -L/opt/local/lib
}
win32 {
INCLUDEPATH += ../include
Expand Down
2 changes: 2 additions & 0 deletions src/exporterfactory.cpp
Expand Up @@ -36,6 +36,7 @@ extern AbstractExporter* ZFIExporterFactoryFunc (QObject* parent);
extern AbstractExporter* DivoExporterFactoryFunc (QObject*);
extern AbstractExporter* NGLExporterFactoryFunc (QObject*);
extern AbstractExporter* LuaExporterFactoryFunc (QObject*);
extern AbstractExporter* SparrowExporterFactoryFunc (QObject*);

ExporterFactory::ExporterFactory(QObject *parent) :
QObject(parent)
Expand All @@ -45,6 +46,7 @@ ExporterFactory::ExporterFactory(QObject *parent) :
m_factorys["Divo compatible - xml"] = &DivoExporterFactoryFunc;
m_factorys["NGL"] = &NGLExporterFactoryFunc;
m_factorys["Lua table"] = &LuaExporterFactoryFunc;
m_factorys["Sparrow"] = &SparrowExporterFactoryFunc;
}


Expand Down
67 changes: 67 additions & 0 deletions src/exporters/sparrowexporter.cpp
@@ -0,0 +1,67 @@
#include "sparrowexporter.h"
#include "../fontconfig.h"
#include <QtXml>

SparrowExporter::SparrowExporter(QObject *parent) :
AbstractExporter(parent)
{
setExtension("fnt");
}

bool SparrowExporter::Export(QByteArray& out) {
QDomDocument doc;
QDomElement root = doc.createElement("font");
doc.appendChild(root);
QDomElement info = doc.createElement("info");
root.appendChild(info);
info.setAttribute("face", fontConfig()->family());
info.setAttribute("size", fontConfig()->size());
QDomElement common = doc.createElement("common");
root.appendChild(common);
int height = metrics().height;
common.setAttribute("lineHeight", height);
QDomElement pages = doc.createElement("pages");
root.appendChild(pages);
QDomElement page = doc.createElement("page");
pages.appendChild(page);
page.setAttribute("id", "0");
page.setAttribute("file", texFilename());
QDomElement chars = doc.createElement("chars");
root.appendChild(chars);
chars.setAttribute("count", symbols().size());
QDomElement kernings = doc.createElement("kernings");
int kernNumber = 0;
foreach(const Symbol& c , symbols()) {
QDomElement ch = doc.createElement("char");
ch.setAttribute("id", QString::number(c.id));
ch.setAttribute("x", QString::number(c.placeX));
ch.setAttribute("y", QString::number(c.placeY));
ch.setAttribute("width", QString::number(c.placeW));
ch.setAttribute("height", QString::number(c.placeH));
ch.setAttribute("xoffset", QString::number(c.offsetX));
ch.setAttribute("yoffset", QString::number(height - c.offsetY));
ch.setAttribute("xadvance", QString::number(c.advance));
ch.setAttribute("page", "0");
ch.setAttribute("chnl", "0");
ch.setAttribute("letter", c.id==32 ? "space" : QString().append(c.id));
chars.appendChild(ch);
typedef QMap<ushort,int>::ConstIterator Kerning;
for ( Kerning k = c.kerning.begin();k!=c.kerning.end();k++) {
QDomElement ker = doc.createElement("kerning");
ker.setAttribute("first", QString::number(c.id));
ker.setAttribute("second", QString::number(k.key()));
ker.setAttribute("amount", k.value());
kernings.appendChild(ker);
kernNumber ++;
}
}
kernings.setAttribute("count", QString::number(kernNumber));
root.appendChild(kernings);

out = doc.toByteArray(1);
return true;
}

AbstractExporter* SparrowExporterFactoryFunc (QObject* parent) {
return new SparrowExporter(parent);
}
22 changes: 22 additions & 0 deletions src/exporters/sparrowexporter.h
@@ -0,0 +1,22 @@
// Exporter for Sparrow Framework
// http://www.sparrow-framework.org/

#ifndef SPARROWEXPORTER_H
#define SPARROWEXPORTER_H

#include "../abstractexporter.h"

class SparrowExporter : public AbstractExporter
{
Q_OBJECT
public:
explicit SparrowExporter(QObject *parent = 0);

virtual bool Export(QByteArray& out);
signals:

public slots:

};

#endif // SPARROWEXPORTER_H

0 comments on commit 958a5ff

Please sign in to comment.