insilmaril@0: #include "floatimageobj.h" insilmaril@0: #include "branchobj.h" insilmaril@0: insilmaril@0: insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: // FloatImageObj insilmaril@0: ///////////////////////////////////////////////////////////////// insilmaril@0: insilmaril@0: int FloatImageObj::counter=0; // make instance insilmaril@0: insilmaril@0: insilmaril@0: FloatImageObj::FloatImageObj ():FloatObj() insilmaril@0: { insilmaril@0: // cout << "Const FloatImageObj ()\n"; insilmaril@0: setParObj (this); insilmaril@0: init(); insilmaril@0: depth=-1; insilmaril@0: } insilmaril@0: insilmaril@0: FloatImageObj::FloatImageObj (QCanvas* c):FloatObj(c) insilmaril@0: { insilmaril@0: // cout << "Const FloatImageObj (c) called from MapCenterObj (c)\n"; insilmaril@0: setParObj (this); insilmaril@0: init(); insilmaril@0: depth=-1; insilmaril@0: } insilmaril@0: insilmaril@0: FloatImageObj::FloatImageObj (QCanvas* c, LinkableMapObj* p):FloatObj(c,p) insilmaril@0: { insilmaril@0: // cout << "Const FloatImageObj (c,p)\n"; insilmaril@0: init(); insilmaril@0: } insilmaril@0: insilmaril@0: FloatImageObj::~FloatImageObj () insilmaril@0: { insilmaril@0: // cout << "Destr FloatImageObj "<move (absPos.x(), absPos.y() ); insilmaril@0: icon->setVisibility (true); insilmaril@0: bbox.setSize (QSize(icon->size().width(), icon->size().height())); insilmaril@0: filename=""; insilmaril@0: originalFilename="no original name available"; insilmaril@0: filetype=""; insilmaril@0: saveInMap=true; insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::copy (FloatImageObj* other) insilmaril@0: { insilmaril@0: FloatObj::copy (other); insilmaril@0: icon->copy (other->icon); insilmaril@0: filename=other->filename; insilmaril@0: saveInMap=other->saveInMap; insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::setZ (const int &i) insilmaril@0: { insilmaril@0: icon->setZ (i); insilmaril@0: zPlane=i; insilmaril@0: } insilmaril@0: insilmaril@0: int FloatImageObj::z () insilmaril@0: { insilmaril@104: return qRound (icon->z()); insilmaril@0: } insilmaril@0: insilmaril@113: void FloatImageObj::load (const QPixmap &pixmap) insilmaril@113: { insilmaril@113: icon->load(pixmap); insilmaril@113: bbox.setSize (QSize(icon->size().width()+8, icon->size().height()+8)); insilmaril@113: positionBBox(); insilmaril@113: filetype="PNG"; insilmaril@113: filename="noname.png"; insilmaril@113: } insilmaril@113: insilmaril@0: bool FloatImageObj::load (const QString &fn) insilmaril@0: { insilmaril@0: if( icon->load (fn)) insilmaril@0: { insilmaril@0: bbox.setSize (QSize(icon->size().width()+8, icon->size().height()+8)); insilmaril@0: positionBBox(); insilmaril@0: filename=fn; insilmaril@0: filetype=QPixmap::imageFormat (fn); insilmaril@0: return true; insilmaril@0: } else insilmaril@0: return false; insilmaril@0: insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::save (const QString &fn, const char *format) insilmaril@0: { insilmaril@0: icon->save (fn,format); insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::setOriginalFilename(const QString & fn) insilmaril@0: { insilmaril@0: originalFilename=fn; insilmaril@0: } insilmaril@0: insilmaril@0: QString FloatImageObj::getOriginalFilename() insilmaril@0: { insilmaril@0: return originalFilename; insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::setVisibility(bool v) insilmaril@0: { insilmaril@0: LinkableMapObj::setVisibility(v); insilmaril@0: if (v) insilmaril@0: icon->setVisibility(true); insilmaril@0: else insilmaril@0: icon->setVisibility(false); insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::move (double x, double y) insilmaril@0: { insilmaril@0: FloatObj::move(x,y); insilmaril@0: icon->move (x+4,y+4); insilmaril@0: positionBBox(); insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::move (QPoint p) insilmaril@0: { insilmaril@0: move (p.x(), p.y()); insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::positionBBox() insilmaril@0: { insilmaril@0: // TODO insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::calcBBoxSize() insilmaril@0: { insilmaril@0: // TODO insilmaril@0: } insilmaril@0: insilmaril@0: QString FloatImageObj::saveToDir (const QString &tmpdir,const QString &prefix) insilmaril@0: { insilmaril@0: counter++; insilmaril@0: insilmaril@0: QString posAttr= insilmaril@0: attribut("relPosX",QString().setNum(relPos.x(),10)) + insilmaril@0: attribut("relPosY",QString().setNum(relPos.y(),10)); insilmaril@0: insilmaril@0: QString useOrientAttr; insilmaril@0: if (useOrientation) insilmaril@0: useOrientAttr=attribut ("useOrientation","true"); insilmaril@0: else insilmaril@0: useOrientAttr=attribut ("useOrientation","false"); insilmaril@0: insilmaril@0: QString saveInMapAttr; insilmaril@0: if (saveInMap) insilmaril@0: saveInMapAttr=attribut ("saveInMap","true"); insilmaril@0: else insilmaril@0: insilmaril@0: saveInMapAttr=attribut ("saveInMap","false"); insilmaril@0: insilmaril@0: QString exportAttr; insilmaril@0: if (floatExport) insilmaril@0: exportAttr=attribut ("floatExport","true"); insilmaril@0: else insilmaril@0: exportAttr=attribut ("floatExport","false"); insilmaril@0: insilmaril@0: QString zAttr=attribut ("zPlane",QString().setNum(zPlane)); insilmaril@0: QString url; insilmaril@0: insilmaril@0: // prevent saving as GIF insilmaril@0: if (filetype=="GIF") insilmaril@0: filetype="PNG"; insilmaril@0: insilmaril@0: url="images/"+prefix+"image-" + QString().number(counter,10) + "." +filetype; insilmaril@0: insilmaril@0: // And really save the image insilmaril@0: icon->save (tmpdir + "/" + url, filetype); insilmaril@0: insilmaril@0: return singleElement ("floatimage", insilmaril@0: posAttr + insilmaril@0: useOrientAttr + insilmaril@0: saveInMapAttr + insilmaril@0: exportAttr + insilmaril@0: zAttr + insilmaril@0: attribut ("href",QString ("file:")+url) insilmaril@0: ); insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::resetSaveCounter() insilmaril@0: { insilmaril@0: counter=0; insilmaril@0: } insilmaril@0: insilmaril@0: insilmaril@0: QRect FloatImageObj::getTotalBBox() insilmaril@0: { insilmaril@0: return bbox; insilmaril@0: } insilmaril@0: insilmaril@0: QRect FloatImageObj::getBBoxSizeWithChilds() insilmaril@0: { insilmaril@0: //FIXME abstract in linkablemapobj.h, not calculated insilmaril@0: return bboxTotal; insilmaril@0: } insilmaril@0: insilmaril@0: void FloatImageObj::calcBBoxSizeWithChilds() insilmaril@0: { insilmaril@0: //FIXME abstract in linkablemapobj.h insilmaril@0: } insilmaril@0: insilmaril@0: QString FloatImageObj::getSelectString() insilmaril@0: { insilmaril@0: QString s; insilmaril@0: if (parObj) insilmaril@0: { insilmaril@0: if (parObj->getDepth()==0) insilmaril@0: s= "fi:" + QString("%1").arg( ((BranchObj*)(parObj))->getFloatImageNum(this)); insilmaril@0: else insilmaril@0: s= ((BranchObj*)(parObj))->getSelectString() + ",fi:" + QString("%1").arg( ((BranchObj*)(parObj))->getFloatImageNum(this)); insilmaril@0: } else insilmaril@0: s="mc:"; insilmaril@0: insilmaril@0: return s; insilmaril@0: insilmaril@0: } insilmaril@0: