insilmaril@778: #include "imageitem.h" insilmaril@778: insilmaril@778: #include "branchitem.h" insilmaril@778: #include "mapobj.h" // z-values insilmaril@778: insilmaril@778: #include insilmaril@778: #include insilmaril@778: using namespace std; insilmaril@778: insilmaril@778: uint ImageItem::saveCounter=0; // create instance insilmaril@778: insilmaril@778: ImageItem::ImageItem() insilmaril@778: { insilmaril@778: init(); insilmaril@778: } insilmaril@778: insilmaril@779: ImageItem::ImageItem (const QList &data, TreeItem *parent):MapItem (data,parent) insilmaril@778: { insilmaril@778: init(); insilmaril@778: } insilmaril@778: insilmaril@778: ImageItem::~ImageItem() insilmaril@778: { insilmaril@778: //cout <<"Destr ImageItem\n"; insilmaril@778: if (lmo) delete lmo; insilmaril@778: } insilmaril@778: insilmaril@778: void ImageItem::init() insilmaril@778: { insilmaril@778: type=Image; insilmaril@778: imageType=Undefined; insilmaril@779: hideLinkUnselected=true; insilmaril@778: originalFilename="no original name available"; insilmaril@778: zValue=Z_FLOATIMG; insilmaril@778: posMode=Relative; insilmaril@778: } insilmaril@778: insilmaril@778: ImageItem::ImageType ImageItem::getImageType() insilmaril@778: { insilmaril@778: return imageType; insilmaril@778: } insilmaril@778: insilmaril@778: bool ImageItem::load(const QString &fname) insilmaril@778: { insilmaril@778: bool ok=pixmap.load (fname); insilmaril@778: if (lmo && ok) insilmaril@778: { insilmaril@778: setOriginalFilename (fname); insilmaril@778: setHeading (originalFilename); insilmaril@778: ((FloatImageObj*)lmo)->load (pixmap); insilmaril@778: } insilmaril@778: return ok; insilmaril@778: } insilmaril@778: insilmaril@778: FloatImageObj* ImageItem::createMapObj(QGraphicsScene *scene) insilmaril@778: { insilmaril@778: FloatImageObj *fio=new FloatImageObj (scene); insilmaril@778: fio->setTreeItem (this); insilmaril@778: lmo=fio; insilmaril@779: fio->setParObj ( ((MapItem*)parentItem)->getLMO()); insilmaril@779: if (((BranchItem*)parentItem)->isScrolled() || !((MapItem*)parentItem)->getLMO()->isVisibleObj() ) insilmaril@778: fio->setVisibility (false); insilmaril@778: initLMO(); insilmaril@778: fio->setZValue(zValue); insilmaril@778: fio->setRelPos (pos); insilmaril@778: return fio; insilmaril@778: } insilmaril@778: insilmaril@778: void ImageItem::setZValue(int z) insilmaril@778: { insilmaril@778: zValue=z; insilmaril@778: if (lmo) ((FloatImageObj*)lmo)->setZValue(z); insilmaril@778: } insilmaril@778: insilmaril@778: void ImageItem::setOriginalFilename(const QString & fn) insilmaril@778: { insilmaril@778: originalFilename=fn; insilmaril@778: insilmaril@778: // Set short name. Search from behind: insilmaril@778: int i=originalFilename.findRev("/"); insilmaril@778: if (i>=0) originalFilename=originalFilename.remove (0,i+1); insilmaril@778: setHeading (originalFilename); insilmaril@778: } insilmaril@778: insilmaril@778: QString ImageItem::getOriginalFilename() insilmaril@778: { insilmaril@778: return originalFilename; insilmaril@778: } insilmaril@778: insilmaril@778: void ImageItem::resetSaveCounter() insilmaril@778: { insilmaril@778: saveCounter=0; insilmaril@778: } insilmaril@778: insilmaril@778: void ImageItem::save(const QString &fn, const QString &format) insilmaril@778: { insilmaril@778: pixmap.save (fn,qPrintable (format)); insilmaril@778: } insilmaril@778: insilmaril@778: QString ImageItem::saveToDir (const QString &tmpdir,const QString &prefix) insilmaril@778: { insilmaril@778: if (hidden) return ""; insilmaril@778: insilmaril@778: saveCounter++; insilmaril@778: insilmaril@778: /* FIXME-3 QString useOrientAttr; insilmaril@778: if (useOrientation) insilmaril@778: useOrientAttr=attribut ("useOrientation","true"); insilmaril@778: else insilmaril@778: useOrientAttr=attribut ("useOrientation","false"); insilmaril@778: */ insilmaril@778: insilmaril@778: /*FIXME-3 QString saveInMapAttr; insilmaril@778: if (saveInMap) insilmaril@778: saveInMapAttr=attribut ("saveInMap","true"); insilmaril@778: else insilmaril@778: insilmaril@778: saveInMapAttr=attribut ("saveInMap","false"); insilmaril@778: */ insilmaril@778: insilmaril@778: /* FIXME-3 QString exportAttr; insilmaril@778: if (floatExport) insilmaril@778: exportAttr=attribut ("floatExport","true"); insilmaril@778: else insilmaril@778: exportAttr=attribut ("floatExport","false"); insilmaril@778: */ insilmaril@778: insilmaril@778: insilmaril@778: QString zAttr=attribut ("zValue",QString().setNum(zValue)); insilmaril@778: QString url; insilmaril@778: insilmaril@778: url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ; insilmaril@778: insilmaril@778: // And really save the image insilmaril@778: pixmap.save (tmpdir +"/"+ url, "PNG"); insilmaril@778: insilmaril@778: QString nameAttr=attribut ("originalName",originalFilename); insilmaril@778: insilmaril@778: return singleElement ("floatimage", insilmaril@779: getMapAttr() insilmaril@779: +getGeneralAttr() insilmaril@778: // +useOrientAttr insilmaril@778: // +saveInMapAttr insilmaril@778: // +exportAttr insilmaril@778: +zAttr insilmaril@778: +attribut ("href",QString ("file:")+url) insilmaril@778: +nameAttr insilmaril@778: ); insilmaril@778: } insilmaril@778: