# HG changeset patch
# User insilmaril
# Date 1246271308 0
# Node ID 7b4e73ac247e26448296e7423f97250ac46338c3
# Parent  8acac4fade1b8b9395adb42900276d9cd0b5b3b1
added imageitem.*

diff -r 8acac4fade1b -r 7b4e73ac247e imageitem.cpp
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageitem.cpp	Mon Jun 29 10:28:28 2009 +0000
@@ -0,0 +1,148 @@
+#include "imageitem.h"
+
+#include "branchitem.h"
+#include "mapobj.h"		// z-values
+
+#include <QString>
+#include <iostream>
+using namespace std;
+
+uint ImageItem::saveCounter=0;		// create instance 
+
+ImageItem::ImageItem()
+{
+	init();
+}
+
+ImageItem::ImageItem (const QList<QVariant> &data, TreeItem *parent):TreeItem (data,parent)
+{
+	init();
+}
+
+ImageItem::~ImageItem()
+{
+	//cout <<"Destr ImageItem\n";
+	if (lmo) delete lmo;
+}
+
+void ImageItem::init()
+{
+	type=Image;
+	imageType=Undefined;
+	originalFilename="no original name available";
+	zValue=Z_FLOATIMG;
+	posMode=Relative;
+}
+
+ImageItem::ImageType ImageItem::getImageType()
+{
+	return imageType;
+}
+
+bool ImageItem::load(const QString &fname)
+{
+	bool ok=pixmap.load (fname);
+	if (lmo && ok)
+	{
+		setOriginalFilename (fname);
+		setHeading (originalFilename);
+		((FloatImageObj*)lmo)->load (pixmap);
+	}	
+	return ok;	
+}
+
+FloatImageObj* ImageItem::createMapObj(QGraphicsScene *scene)
+{
+	FloatImageObj *fio=new FloatImageObj (scene);
+	fio->setTreeItem (this);
+	lmo=fio;
+	fio->setParObj ( parentItem->getLMO());
+	if (((BranchItem*)parentItem)->isScrolled() || !parentItem->getLMO()->isVisibleObj() )
+			fio->setVisibility (false);
+	initLMO();
+	fio->setZValue(zValue);
+	fio->setRelPos (pos);
+	return fio;
+}
+
+void ImageItem::setZValue(int z)
+{
+	zValue=z;
+	if (lmo) ((FloatImageObj*)lmo)->setZValue(z);
+}
+
+void ImageItem::setOriginalFilename(const QString & fn)
+{
+	originalFilename=fn;
+
+	// Set short name. Search from behind:
+	int i=originalFilename.findRev("/");
+	if (i>=0) originalFilename=originalFilename.remove (0,i+1);
+	setHeading (originalFilename);
+}
+
+QString ImageItem::getOriginalFilename()
+{
+	return originalFilename;
+}
+
+void ImageItem::resetSaveCounter()
+{
+	saveCounter=0;
+}
+
+void ImageItem::save(const QString &fn, const QString &format)
+{
+	pixmap.save (fn,qPrintable (format));
+}
+
+QString ImageItem::saveToDir (const QString &tmpdir,const QString &prefix) 
+{
+	if (hidden) return "";
+
+	saveCounter++;
+	
+	/* FIXME-3 QString useOrientAttr;
+	if (useOrientation)
+		useOrientAttr=attribut ("useOrientation","true");
+	else	
+		useOrientAttr=attribut ("useOrientation","false");
+		*/
+		
+	/*FIXME-3 QString saveInMapAttr;
+	if (saveInMap)
+		saveInMapAttr=attribut ("saveInMap","true");
+	else	
+		
+		saveInMapAttr=attribut ("saveInMap","false");
+		*/
+
+	/* FIXME-3 QString exportAttr;
+	if (floatExport)
+		exportAttr=attribut ("floatExport","true");
+	else	
+		exportAttr=attribut ("floatExport","false");
+	*/	
+
+
+	QString zAttr=attribut ("zValue",QString().setNum(zValue));
+	QString url;
+
+	url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ;
+
+	// And really save the image
+	pixmap.save (tmpdir +"/"+ url, "PNG");
+ 
+	QString nameAttr=attribut ("originalName",originalFilename);
+
+    return singleElement ("floatimage",  
+		getAttr() 
+//		+useOrientAttr 
+//		+saveInMapAttr 
+//		+exportAttr  
+		+zAttr  
+		+attribut ("href",QString ("file:")+url)
+		+nameAttr
+	);	
+}
+
diff -r 8acac4fade1b -r 7b4e73ac247e imageitem.h
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/imageitem.h	Mon Jun 29 10:28:28 2009 +0000
@@ -0,0 +1,50 @@
+#ifndef IMAGEITEM_H
+#define IMAGEITEM_H
+
+#include <QList>
+#include <QPixmap>
+#include <QVariant>
+
+#include "floatimageobj.h"
+#include "treeitem.h"
+
+
+class ImageItem: public TreeItem
+{
+public:
+	enum ImageType {Undefined,Pixmap,SVG};
+
+public:
+	ImageItem();
+	ImageItem(const QList<QVariant> &data, TreeItem *parent = 0);
+
+	~ImageItem();
+
+protected:	
+	void init();
+	ImageType imageType;
+public:	
+	virtual ImageType getImageType();
+
+	virtual bool load (const QString &fname);
+	virtual FloatImageObj* createMapObj(QGraphicsScene *scene);		//! Create classic object in GraphicsView
+
+protected:	
+	QPixmap pixmap;
+	QString originalFilename;
+	static uint saveCounter;	// numerate the files during saveToDir
+	int zValue;
+
+public:	
+	virtual void setZValue(int z);
+	virtual void setOriginalFilename(const QString &);
+	virtual QString getOriginalFilename();
+	virtual void resetSaveCounter();
+	virtual void save (const QString &fn, const QString &format);
+	virtual QString saveToDir(const QString &,const QString&);
+
+};
+
+
+#endif
+