int embPattern_read(EmbPattern* p, const char* fileName) /* TODO: This doesn't work. Write test case using this convenience function. */ { EmbReaderWriter* reader = 0; embPattern_free(p); p = embPattern_create(); reader = embReaderWriter_getByFileName(fileName); if(reader->reader(p, fileName)) { free(reader); return 1; } free(reader); return 0; }
int main(int argc, const char* argv[]) { #ifdef SHORT_WAY EmbPattern* p = 0; int successful = 0, i = 0; if(argc < 3) { usage(); exit(0); } p = embPattern_create(); if(!p) { embLog_error("libembroidery-convert-main.c main(), cannot allocate memory for p\n"); exit(1); } successful = embPattern_read(p, argv[1]); if(!successful) { embLog_error("libembroidery-convert-main.c main(), reading file %s was unsuccessful\n", argv[1]); embPattern_free(p); exit(1); } i = 2; for(i = 2; i < argc; i++) { successful = embPattern_write(p, argv[i]); if(!successful) embLog_error("libembroidery-convert-main.c main(), writing file %s was unsuccessful\n", argv[i]); } embPattern_free(p); return 0; #else /* LONG_WAY */ EmbPattern* p = 0; EmbReaderWriter* reader = 0, *writer = 0; int successful = 0, i = 0; if(argc < 3) { usage(); exit(0); } p = embPattern_create(); if(!p) { embLog_error("libembroidery-convert-main.c main(), cannot allocate memory for p\n"); exit(1); } successful = 0; reader = embReaderWriter_getByFileName(argv[1]); if(!reader) { successful = 0; embLog_error("libembroidery-convert-main.c main(), unsupported read file type: %s\n", argv[1]); } else { successful = reader->reader(p, argv[1]); if(!successful) embLog_error("libembroidery-convert-main.c main(), reading file was unsuccessful: %s\n", argv[1]); } free(reader); if(!successful) { embPattern_free(p); exit(1); } i = 2; for(i = 2; i < argc; i++) { writer = embReaderWriter_getByFileName(argv[i]); if(!writer) { embLog_error("libembroidery-convert-main.c main(), unsupported write file type: %s\n", argv[i]); } else { successful = writer->writer(p, argv[i]); if(!successful) embLog_error("libembroidery-convert-main.c main(), writing file %s was unsuccessful\n", argv[i]); } free(writer); } embPattern_free(p); return 0; #endif /* SHORT_WAY */ }
const QImage loadThumb(const QString& fileName) { QFile file(fileName); if(!file.open(QFile::ReadOnly | QFile::Text)) { //Error opening file return QImage(); } //Read EmbPattern* p = embPattern_create(); if(!p) { return QImage(); } int readSuccessful = 0; QString readError; EmbReaderWriter* reader = embReaderWriter_getByFileName(qPrintable(fileName)); if(!reader) { readSuccessful = 0; } else { readSuccessful = reader->reader(p, qPrintable(fileName)); } free(reader); if(readSuccessful) { QGraphicsScene gscene; QPainterPath path; if(p->stitchList) { int previousColor = p->stitchList->stitch.color; EmbStitchList* curStitchItem = p->stitchList; while(curStitchItem) { EmbStitch tempStitch = curStitchItem->stitch; curStitchItem = curStitchItem->next; if((tempStitch.flags & STOP) || (tempStitch.flags & END)) { if(!path.isEmpty()) { EmbColor thisColor = embThread_getAt(p->threadList, previousColor).color; QPen loadPen(qRgb(thisColor.r, thisColor.g, thisColor.b)); loadPen.setWidthF(0.35); loadPen.setCapStyle(Qt::RoundCap); loadPen.setJoinStyle(Qt::RoundJoin); gscene.addPath(path, loadPen); previousColor = tempStitch.color; path = QPainterPath(); } path.moveTo(tempStitch.xx, -tempStitch.yy); } else if((tempStitch.flags & JUMP) || (tempStitch.flags & TRIM)) { path.moveTo(tempStitch.xx, -tempStitch.yy); } else { path.lineTo(tempStitch.xx, -tempStitch.yy); } } } QImage sceneImg(gscene.width(), gscene.height(), QImage::Format_ARGB32); sceneImg.fill(QColor(0,0,0,0)); QPainter painter(&sceneImg); gscene.render(&painter); return sceneImg; } embPattern_free(p); return QImage(); }