parent
eaf2558d0f
commit
d86e3c0171
@ -1,22 +1,610 @@ |
||||
#include <QRegExp> |
||||
#include <QSvgGenerator> |
||||
#include <QSvgRenderer> |
||||
|
||||
#include "UBCFFSubsetAdaptor.h" |
||||
|
||||
|
||||
#include "core/UBPersistenceManager.h" |
||||
#include "document/UBDocumentProxy.h" |
||||
#include "domain/UBItem.h" |
||||
#include "domain/UBGraphicsPolygonItem.h" |
||||
#include "domain/UBGraphicsStroke.h" |
||||
|
||||
#include "UBMetadataDcSubsetAdaptor.h" |
||||
#include "UBThumbnailAdaptor.h" |
||||
#include "UBSvgSubsetAdaptor.h" |
||||
|
||||
//enum of xmlparse status
|
||||
|
||||
//tag names definition
|
||||
//use them everiwhere!
|
||||
static char* tElement = "element"; |
||||
static char* tEllipse = "ellipse"; |
||||
static char* tIwb = "iwb"; |
||||
static char* tMeta = "meta"; |
||||
static char* tPage = "page"; |
||||
static char* tPageset = "pageset"; |
||||
static char* tPolygon = "polygon"; |
||||
static char* tRect = "rect"; |
||||
static char* tSvg = "svg"; |
||||
static char* tTextarea = "textarea"; |
||||
|
||||
//attribute names definition
|
||||
static char* aFill = "fill"; |
||||
static char* aFillopacity = "fill-opacity"; |
||||
static char* aX = "x"; |
||||
static char* aY = "y"; |
||||
static char* aWidth = "width"; |
||||
static char* aHeight = "height"; |
||||
static char* aStroke = "stroke"; |
||||
static char* aStrokewidth = "stroke-width"; |
||||
static char* aCx = "cx"; |
||||
static char* aCy = "cy"; |
||||
static char* aRx = "rx"; |
||||
static char* aRy = "ry"; |
||||
static char* aTransform = "transform"; |
||||
static char* aViewbox = "viewbox"; |
||||
|
||||
UBCFFSubsetAdaptor::UBCFFSubsetAdaptor() |
||||
{ |
||||
} |
||||
|
||||
void UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFolder, QString &destinationFolder) |
||||
bool UBCFFSubsetAdaptor::ConvertCFFFileToUbz(QString &cffSourceFile, UBDocumentProxy* pDocument) |
||||
{ |
||||
//TODO create document proxy for destination file
|
||||
// create document proxy with destination folder
|
||||
//TODO
|
||||
// fill document proxy metadata
|
||||
// create persistance manager to save data using proxy
|
||||
// create UBCFFSubsetReader and make it parse cffSourceFolder
|
||||
QFile file(cffSourceFile); |
||||
|
||||
if (!file.open(QIODevice::ReadOnly)) |
||||
{ |
||||
qWarning() << "Cannot open file " << cffSourceFile << " for reading ..."; |
||||
return false; |
||||
} |
||||
|
||||
QByteArray data = file.readAll(); |
||||
if (data.length() == 0) |
||||
{ |
||||
qWarning() << "Either content file " << cffSourceFile << " is empty or failed to read from file"; |
||||
file.close(); |
||||
return false; |
||||
} |
||||
|
||||
UBCFFSubsetReader cffReader(pDocument, data); |
||||
bool result = cffReader.parse(); |
||||
file.close(); |
||||
|
||||
return result; |
||||
} |
||||
|
||||
UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy): |
||||
mReader(), mProxy(proxy) |
||||
UBCFFSubsetAdaptor::UBCFFSubsetReader::UBCFFSubsetReader(UBDocumentProxy *proxy, QByteArray &content): |
||||
mReader(content), mProxy(proxy), currentState(NONE) |
||||
{ |
||||
//TODO parse
|
||||
} |
||||
|
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parse() |
||||
{ |
||||
UBMetadataDcSubsetAdaptor::persist(mProxy); |
||||
|
||||
mIndent = ""; |
||||
if (!getTempFileName()) |
||||
return false; |
||||
|
||||
bool result = parseDoc(); |
||||
if (result) |
||||
result = mProxy->pageCount() != 0; |
||||
|
||||
if (QFile::exists(mTempFilePath)) |
||||
QFile::remove(mTempFilePath); |
||||
|
||||
return result; |
||||
} |
||||
|
||||
int UBCFFSubsetAdaptor::UBCFFSubsetReader::PopState() |
||||
{ |
||||
if (stateStack.count() == 0) |
||||
currentState = NONE; |
||||
else |
||||
currentState = stateStack.pop(); |
||||
|
||||
return currentState; |
||||
} |
||||
|
||||
void UBCFFSubsetAdaptor::UBCFFSubsetReader::PushState(int state) |
||||
{ |
||||
if (currentState != NONE) |
||||
stateStack.push(currentState); |
||||
currentState = state; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseDoc() |
||||
{ |
||||
while (!mReader.atEnd()) |
||||
{ |
||||
mReader.readNext(); |
||||
if (mReader.isStartElement()) |
||||
{ |
||||
if (!parseCurrentElementStart()) |
||||
return false; |
||||
} |
||||
else |
||||
if (mReader.isCharacters()) |
||||
{ |
||||
if (!parseCurrentElementCharacters()) |
||||
return false; |
||||
} |
||||
else |
||||
if (mReader.isEndElement()) |
||||
{ |
||||
if (!parseCurrentElementEnd()) |
||||
return false; |
||||
} |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseCurrentElementStart() |
||||
{ |
||||
QStringRef elName = mReader.name(); |
||||
QString log = QString("%1<%2>").arg(mIndent).arg(elName.toString()); |
||||
qDebug() << log; |
||||
mIndent += " "; |
||||
if ( elName == tIwb) |
||||
{ |
||||
if (!parseIwb()) |
||||
return false; |
||||
|
||||
PushState(IWB); |
||||
} |
||||
else |
||||
if ( elName == tMeta) |
||||
{ |
||||
if (!parseIwbMeta()) |
||||
return false; |
||||
} |
||||
else |
||||
if ( elName == tSvg) |
||||
{ |
||||
if (!parseSvg()) |
||||
return false; |
||||
|
||||
PushState(SVG); |
||||
} |
||||
else |
||||
if ( elName == tRect) |
||||
{ |
||||
if (!parseRect()) |
||||
return false; |
||||
} |
||||
else |
||||
if ( elName == tEllipse) |
||||
{ |
||||
if (!parseEllipse()) |
||||
return false; |
||||
} |
||||
else |
||||
if ( elName == tTextarea) |
||||
{ |
||||
if (!parseTextArea()) |
||||
return false; |
||||
} |
||||
else |
||||
if ( elName == tPolygon) |
||||
{ |
||||
if (!parsePolygon()) |
||||
return false; |
||||
} |
||||
else |
||||
if ( elName == tPage) |
||||
{ |
||||
if (!parsePage()) |
||||
return false; |
||||
|
||||
PushState(PAGE); |
||||
} |
||||
else |
||||
if ( elName == tPageset) |
||||
{ |
||||
if (!parsePageSet()) |
||||
return false; |
||||
|
||||
PushState(PAGESET); |
||||
} |
||||
else |
||||
if ( elName == tElement) |
||||
{ |
||||
if (!parseIwbElementRef()) |
||||
return false; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseCurrentElementCharacters() |
||||
{ |
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseCurrentElementEnd() |
||||
{ |
||||
QStringRef elName = mReader.name(); |
||||
mIndent.remove(0,1); |
||||
QString log = QString("%1</%2>").arg(mIndent).arg(elName.toString()); |
||||
qDebug() << log; |
||||
|
||||
if ( elName == tIwb) |
||||
PopState(); |
||||
else |
||||
if ( elName == tMeta) |
||||
{ |
||||
} |
||||
else |
||||
if ( elName == tSvg) |
||||
{ |
||||
persistCurrentScene(); |
||||
PopState(); |
||||
} |
||||
else |
||||
if ( elName == tPage) |
||||
{ |
||||
persistCurrentScene(); |
||||
PopState(); |
||||
} |
||||
else |
||||
if ( elName == tPageset) |
||||
{ |
||||
PopState(); |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwb() |
||||
{ |
||||
if (!stateStack.empty() || currentState != NONE) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected iwb tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbMeta() |
||||
{ |
||||
if (currentState != IWB) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected meta tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseSvg() |
||||
{ |
||||
if (currentState != IWB) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected svg tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
getViewBoxDimenstions(mReader.attributes().value(aViewbox).toString()); |
||||
mSize = QSize(mReader.attributes().value(aWidth).toString().toInt(), |
||||
mReader.attributes().value(aHeight).toString().toInt()); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseRect() |
||||
{ |
||||
if (currentState != SVG && currentState != PAGE) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected rect tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
//create new scene if it's not created yet (for one page document case)
|
||||
if (currentState == SVG && mCurrentScene == NULL) |
||||
createNewScene(); |
||||
|
||||
//fill and stroke color
|
||||
QColor fillColor = colorFromString(mReader.attributes().value(aFill).toString()); |
||||
QColor strokeColor = colorFromString(mReader.attributes().value(aStroke).toString()); |
||||
int strokeWidth = mReader.attributes().value(aStrokewidth).toString().toInt(); |
||||
|
||||
//rect lef top corner coordinates
|
||||
qreal x1 = mReader.attributes().value(aX).toString().toDouble(); |
||||
qreal y1 = mReader.attributes().value(aY).toString().toDouble(); |
||||
//rect dimensions
|
||||
qreal width = mReader.attributes().value(aWidth).toString().toDouble(); |
||||
qreal height = mReader.attributes().value(aHeight).toString().toDouble(); |
||||
|
||||
//init svg generator with temp file
|
||||
QSvgGenerator *generator = createSvgGenerator(); |
||||
|
||||
//init painter to paint to svg
|
||||
QPainter painter; |
||||
painter.begin(generator); |
||||
|
||||
//check if rect is rotated
|
||||
if (mReader.attributes().hasAttribute(aTransform)) |
||||
{ |
||||
QTransform transform = transformFromString(mReader.attributes().value(aTransform).toString()); |
||||
painter.setTransform(transform); |
||||
//change left top coordinates to correspond to transformation
|
||||
x1 -= transform.dx(); |
||||
y1 -= transform.dy(); |
||||
} |
||||
|
||||
painter.setBrush(QBrush(fillColor)); |
||||
painter.fillRect(x1, y1, width, height, fillColor); |
||||
|
||||
QPen pen(strokeColor); |
||||
pen.setWidth(strokeWidth); |
||||
painter.setPen(pen); |
||||
painter.drawRect(x1, y1, width, height); |
||||
|
||||
painter.end(); |
||||
|
||||
//add resulting svg file to scene
|
||||
mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName())); |
||||
delete generator; |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseEllipse() |
||||
{ |
||||
if (currentState != SVG && currentState != PAGE) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected ellipse tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
//create new scene if it's not created yet (for one page document case)
|
||||
if (currentState == SVG && mCurrentScene == NULL) |
||||
createNewScene(); |
||||
|
||||
QSvgGenerator *generator = createSvgGenerator(); |
||||
|
||||
//fill and stroke color
|
||||
QColor fillColor = colorFromString(mReader.attributes().value(aFill).toString()); |
||||
QColor strokeColor = colorFromString(mReader.attributes().value(aStroke).toString()); |
||||
int strokeWidth = mReader.attributes().value(aStrokewidth).toString().toInt(); |
||||
|
||||
//ellipse center coordinates
|
||||
qreal cx = mReader.attributes().value(aCx).toString().toDouble(); |
||||
qreal cy = mReader.attributes().value(aCy).toString().toDouble(); |
||||
//ellipse horisontal and vertical radius
|
||||
qreal rx = mReader.attributes().value(aRx).toString().toDouble(); |
||||
qreal ry = mReader.attributes().value(aRy).toString().toDouble(); |
||||
|
||||
//we should change cx and cy by rx and ry because qpainter
|
||||
//draws ellipse by its rect coordinates
|
||||
cx -= rx; |
||||
cy -= ry; |
||||
|
||||
//init painter to paint to svg
|
||||
QPainter painter; |
||||
painter.begin(generator); |
||||
|
||||
//check if ellipse is rotated
|
||||
if (mReader.attributes().hasAttribute(aTransform)) |
||||
{ |
||||
QTransform transform = transformFromString(mReader.attributes().value(aTransform).toString()); |
||||
painter.setTransform(transform); |
||||
//change cx and cy to correspond to transformation
|
||||
cx -= transform.dx(); |
||||
cy -= transform.dy(); |
||||
} |
||||
|
||||
QPen pen(strokeColor); |
||||
pen.setWidth(strokeWidth); |
||||
painter.setPen(pen); |
||||
painter.setBrush(QBrush(fillColor)); |
||||
|
||||
painter.drawEllipse(cx, cy, rx * 2, ry * 2); |
||||
|
||||
painter.end(); |
||||
|
||||
//add resulting svg file to scene
|
||||
mCurrentScene->addSvg(QUrl::fromLocalFile(generator->fileName())); |
||||
delete generator; |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseTextArea() |
||||
{ |
||||
if (currentState != SVG && currentState != PAGE) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected textarea tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
//create new scene if it's not created yet (for one page document case)
|
||||
if (currentState == SVG && mCurrentScene == NULL) |
||||
createNewScene(); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parsePolygon() |
||||
{ |
||||
if (currentState != SVG && currentState != PAGE) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected polygon tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
//create new scene if it's not created yet (for one page document case)
|
||||
if (currentState == SVG && mCurrentScene == NULL) |
||||
createNewScene(); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parsePage() |
||||
{ |
||||
if (currentState != PAGESET && currentState != SVG) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected page tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
createNewScene(); |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parsePageSet() |
||||
{ |
||||
if (currentState != SVG) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected page tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::parseIwbElementRef() |
||||
{ |
||||
if (currentState != IWB) |
||||
{ |
||||
qWarning() << "iwb content parse error, unexpected element tag at line" << mReader.lineNumber(); |
||||
return false; |
||||
} |
||||
|
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::createNewScene() |
||||
{ |
||||
mCurrentScene = UBPersistenceManager::persistenceManager()->createDocumentSceneAt(mProxy, mProxy->pageCount()); |
||||
return true; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::persistCurrentScene() |
||||
{ |
||||
if (mCurrentScene != 0 && mCurrentScene->isModified()) |
||||
{ |
||||
UBThumbnailAdaptor::persistScene(mProxy->persistencePath(), mCurrentScene, mProxy->pageCount() - 1); |
||||
UBSvgSubsetAdaptor::persistScene(mProxy, mCurrentScene, mProxy->pageCount() - 1); |
||||
|
||||
mCurrentScene->setModified(false); |
||||
mCurrentScene = 0; |
||||
} |
||||
return true; |
||||
} |
||||
|
||||
QColor UBCFFSubsetAdaptor::UBCFFSubsetReader::colorFromString(const QString& clrString) |
||||
{ |
||||
//init regexp with pattern
|
||||
//pattern corresponds to strings like 'rgb(1,2,3) or rgb(10%,20%,30%)'
|
||||
QRegExp regexp("rgb\\(([0-9]+%{0,1}),([0-9]+%{0,1}),([0-9]+%{0,1})\\)"); |
||||
if (regexp.exactMatch(clrString)) |
||||
{ |
||||
if (regexp.capturedTexts().count() == 4 && regexp.capturedTexts().at(0).length() == clrString.length()) |
||||
{ |
||||
int r = regexp.capturedTexts().at(1).toInt(); |
||||
if (regexp.capturedTexts().at(1).indexOf("%") != -1) |
||||
r = r * 255 / 100; |
||||
int g = regexp.capturedTexts().at(2).toInt(); |
||||
if (regexp.capturedTexts().at(2).indexOf("%") != -1) |
||||
g = g * 255 / 100; |
||||
int b = regexp.capturedTexts().at(3).toInt(); |
||||
if (regexp.capturedTexts().at(3).indexOf("%") != -1) |
||||
b = b * 255 / 100; |
||||
return QColor(r, g, b); |
||||
} |
||||
else |
||||
return QColor(); |
||||
} |
||||
else |
||||
return QColor(clrString); |
||||
} |
||||
|
||||
QTransform UBCFFSubsetAdaptor::UBCFFSubsetReader::transformFromString(const QString trString) |
||||
{ |
||||
//check pattern for strings like 'rotate(10)'
|
||||
QRegExp regexp("rotate\\(([-+]{0,1}[0-9]*\\.{0,1}[0-9]*)\\)"); |
||||
if (regexp.exactMatch(trString)) |
||||
{ |
||||
if (regexp.capturedTexts().count() == 2 && regexp.capturedTexts().at(0).length() == trString.length()) |
||||
{ |
||||
qreal angle = regexp.capturedTexts().at(1).toDouble(); |
||||
return QTransform().rotate(angle); |
||||
} |
||||
} |
||||
|
||||
//check pattern for strings like 'rotate(10,20,20)' or 'rotate(10.1,10.2,34.2)'
|
||||
regexp.setPattern("rotate\\(([-+]{0,1}[0-9]*\\.{0,1}[0-9]*),([-+]{0,1}[0-9]*\\.{0,1}[0-9]*),([-+]{0,1}[0-9]*\\.{0,1}[0-9]*)\\)"); |
||||
if (regexp.exactMatch(trString)) |
||||
{ |
||||
if (regexp.capturedTexts().count() == 4 && regexp.capturedTexts().at(0).length() == trString.length()) |
||||
{ |
||||
qreal angle = regexp.capturedTexts().at(1).toDouble(); |
||||
qreal dx = regexp.capturedTexts().at(2).toDouble(); |
||||
qreal dy = regexp.capturedTexts().at(3).toDouble(); |
||||
return QTransform().translate(dx, dy).rotate(angle); |
||||
} |
||||
} |
||||
|
||||
return QTransform(); |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::getViewBoxDimenstions(const QString& viewBox) |
||||
{ |
||||
//check pattern for strings like 'rotate(10)'
|
||||
QRegExp regexp("([0-9]+) ([0-9]+) ([0-9]+) ([0-9]+)"); |
||||
if (regexp.exactMatch(viewBox)) |
||||
{ |
||||
int capturesCount = regexp.capturedTexts().count(); |
||||
if (capturesCount == 5 && regexp.capturedTexts().at(0).length() == viewBox.length()) |
||||
{ |
||||
mViewBox = QRectF(0, 0, regexp.capturedTexts().at(3).toDouble(), regexp.capturedTexts().at(4).toDouble()); |
||||
return true; |
||||
} |
||||
} |
||||
|
||||
mViewBox = QRectF(0, 0, 1000, 1000); |
||||
return false; |
||||
} |
||||
|
||||
QSvgGenerator* UBCFFSubsetAdaptor::UBCFFSubsetReader::createSvgGenerator() |
||||
{ |
||||
QSvgGenerator* generator = new QSvgGenerator(); |
||||
generator->setFileName(mTempFilePath); |
||||
generator->setSize(mSize); |
||||
generator->setViewBox(mViewBox); |
||||
|
||||
return generator; |
||||
} |
||||
|
||||
bool UBCFFSubsetAdaptor::UBCFFSubsetReader::getTempFileName() |
||||
{ |
||||
int tmpNumber = 0; |
||||
QDir rootDir; |
||||
while (true) |
||||
{ |
||||
mTempFilePath = QString("%1/sanksvg%2.%3") |
||||
.arg(rootDir.tempPath()) |
||||
.arg(QDateTime::currentDateTime().toString("dd_MM_yyyy_HH-mm")) |
||||
.arg(tmpNumber); |
||||
if (!QFile::exists(mTempFilePath)) |
||||
return true; |
||||
tmpNumber++; |
||||
if (tmpNumber == 100000) |
||||
{ |
||||
qWarning() << "Import failed. Failed to create temporary file for svg objects"; |
||||
return false; |
||||
} |
||||
} |
||||
|
||||
} |
||||
|
@ -1,55 +1,59 @@ |
||||
|
||||
HEADERS += src/adaptors/UBExportAdaptor.h\ |
||||
src/adaptors/UBExportPDF.h \ |
||||
src/adaptors/UBExportFullPDF.h \ |
||||
src/adaptors/UBExportDocument.h \ |
||||
src/adaptors/UBSvgSubsetAdaptor.h \ |
||||
src/adaptors/UBMetadataDcSubsetAdaptor.h \ |
||||
src/adaptors/UBImportAdaptor.h \ |
||||
src/adaptors/UBImportDocument.h \ |
||||
src/adaptors/UBThumbnailAdaptor.h \ |
||||
src/adaptors/UBImportPDF.h \ |
||||
src/adaptors/UBImportImage.h \ |
||||
src/adaptors/UBIniFileParser.h \ |
||||
src/adaptors/UBExportWeb.h \ |
||||
src/adaptors/UBWebPublisher.h |
||||
|
||||
HEADERS += src/adaptors/publishing/UBDocumentPublisher.h \ |
||||
src/adaptors/publishing/UBCapturePublisher.h \ |
||||
src/adaptors/publishing/UBAbstractPublisher.h \ |
||||
src/adaptors/publishing/UBSvgSubsetRasterizer.h |
||||
|
||||
HEADERS += src/adaptors/voting/UBAbstractVotingSystem.h |
||||
|
||||
|
||||
SOURCES += src/adaptors/UBExportAdaptor.cpp\ |
||||
src/adaptors/UBExportPDF.cpp \ |
||||
src/adaptors/UBExportFullPDF.cpp \ |
||||
src/adaptors/UBExportDocument.cpp \ |
||||
src/adaptors/UBSvgSubsetAdaptor.cpp \ |
||||
src/adaptors/UBMetadataDcSubsetAdaptor.cpp \ |
||||
src/adaptors/UBImportAdaptor.cpp \ |
||||
src/adaptors/UBImportDocument.cpp \ |
||||
src/adaptors/UBThumbnailAdaptor.cpp \ |
||||
src/adaptors/UBImportPDF.cpp \ |
||||
src/adaptors/UBImportImage.cpp \ |
||||
src/adaptors/UBIniFileParser.cpp \ |
||||
src/adaptors/UBExportWeb.cpp \ |
||||
src/adaptors/UBWebPublisher.cpp |
||||
|
||||
SOURCES += src/adaptors/publishing/UBDocumentPublisher.cpp \ |
||||
src/adaptors/publishing/UBCapturePublisher.cpp \ |
||||
src/adaptors/publishing/UBAbstractPublisher.cpp \ |
||||
src/adaptors/publishing/UBSvgSubsetRasterizer.cpp |
||||
|
||||
SOURCES += src/adaptors/voting/UBAbstractVotingSystem.cpp |
||||
|
||||
|
||||
win32 { |
||||
|
||||
SOURCES += src/adaptors/voting/UBReply2005VotingSystem.cpp \ |
||||
src/adaptors/voting/UBReplyWRS970VotingSystem.cpp |
||||
|
||||
HEADERS += src/adaptors/voting/UBReply2005VotingSystem.h \ |
||||
src/adaptors/voting/UBReplyWRS970VotingSystem.h |
||||
} |
||||
|
||||
HEADERS += src/adaptors/UBExportAdaptor.h\ |
||||
src/adaptors/UBExportPDF.h \ |
||||
src/adaptors/UBExportFullPDF.h \ |
||||
src/adaptors/UBExportDocument.h \ |
||||
src/adaptors/UBSvgSubsetAdaptor.h \ |
||||
src/adaptors/UBMetadataDcSubsetAdaptor.h \ |
||||
src/adaptors/UBImportAdaptor.h \ |
||||
src/adaptors/UBImportDocument.h \ |
||||
src/adaptors/UBThumbnailAdaptor.h \ |
||||
src/adaptors/UBImportPDF.h \ |
||||
src/adaptors/UBImportImage.h \ |
||||
src/adaptors/UBIniFileParser.h \ |
||||
src/adaptors/UBExportWeb.h \ |
||||
src/adaptors/UBWebPublisher.h \ |
||||
src/adaptors/UBImportCFF.h \ |
||||
src/adaptors/UBCFFSubsetAdaptor.h |
||||
|
||||
HEADERS += src/adaptors/publishing/UBDocumentPublisher.h \ |
||||
src/adaptors/publishing/UBCapturePublisher.h \ |
||||
src/adaptors/publishing/UBAbstractPublisher.h \ |
||||
src/adaptors/publishing/UBSvgSubsetRasterizer.h |
||||
|
||||
HEADERS += src/adaptors/voting/UBAbstractVotingSystem.h |
||||
|
||||
|
||||
SOURCES += src/adaptors/UBExportAdaptor.cpp\ |
||||
src/adaptors/UBExportPDF.cpp \ |
||||
src/adaptors/UBExportFullPDF.cpp \ |
||||
src/adaptors/UBExportDocument.cpp \ |
||||
src/adaptors/UBSvgSubsetAdaptor.cpp \ |
||||
src/adaptors/UBMetadataDcSubsetAdaptor.cpp \ |
||||
src/adaptors/UBImportAdaptor.cpp \ |
||||
src/adaptors/UBImportDocument.cpp \ |
||||
src/adaptors/UBThumbnailAdaptor.cpp \ |
||||
src/adaptors/UBImportPDF.cpp \ |
||||
src/adaptors/UBImportImage.cpp \ |
||||
src/adaptors/UBIniFileParser.cpp \ |
||||
src/adaptors/UBExportWeb.cpp \ |
||||
src/adaptors/UBWebPublisher.cpp \ |
||||
src/adaptors/UBImportCFF.cpp \ |
||||
src/adaptors/UBCFFSubsetAdaptor.cpp |
||||
|
||||
SOURCES += src/adaptors/publishing/UBDocumentPublisher.cpp \ |
||||
src/adaptors/publishing/UBCapturePublisher.cpp \ |
||||
src/adaptors/publishing/UBAbstractPublisher.cpp \ |
||||
src/adaptors/publishing/UBSvgSubsetRasterizer.cpp |
||||
|
||||
SOURCES += src/adaptors/voting/UBAbstractVotingSystem.cpp |
||||
|
||||
|
||||
win32 { |
||||
|
||||
SOURCES += src/adaptors/voting/UBReply2005VotingSystem.cpp \ |
||||
src/adaptors/voting/UBReplyWRS970VotingSystem.cpp |
||||
|
||||
HEADERS += src/adaptors/voting/UBReply2005VotingSystem.h \ |
||||
src/adaptors/voting/UBReplyWRS970VotingSystem.h |
||||
} |
||||
|
Loading…
Reference in new issue