imageitem.cpp
author insilmaril
Mon, 29 Jun 2009 10:28:28 +0000
changeset 778 7b4e73ac247e
child 779 1fb50e79661c
permissions -rw-r--r--
added imageitem.*
insilmaril@778
     1
#include "imageitem.h"
insilmaril@778
     2
insilmaril@778
     3
#include "branchitem.h"
insilmaril@778
     4
#include "mapobj.h"		// z-values
insilmaril@778
     5
insilmaril@778
     6
#include <QString>
insilmaril@778
     7
#include <iostream>
insilmaril@778
     8
using namespace std;
insilmaril@778
     9
insilmaril@778
    10
uint ImageItem::saveCounter=0;		// create instance 
insilmaril@778
    11
insilmaril@778
    12
ImageItem::ImageItem()
insilmaril@778
    13
{
insilmaril@778
    14
	init();
insilmaril@778
    15
}
insilmaril@778
    16
insilmaril@778
    17
ImageItem::ImageItem (const QList<QVariant> &data, TreeItem *parent):TreeItem (data,parent)
insilmaril@778
    18
{
insilmaril@778
    19
	init();
insilmaril@778
    20
}
insilmaril@778
    21
insilmaril@778
    22
ImageItem::~ImageItem()
insilmaril@778
    23
{
insilmaril@778
    24
	//cout <<"Destr ImageItem\n";
insilmaril@778
    25
	if (lmo) delete lmo;
insilmaril@778
    26
}
insilmaril@778
    27
insilmaril@778
    28
void ImageItem::init()
insilmaril@778
    29
{
insilmaril@778
    30
	type=Image;
insilmaril@778
    31
	imageType=Undefined;
insilmaril@778
    32
	originalFilename="no original name available";
insilmaril@778
    33
	zValue=Z_FLOATIMG;
insilmaril@778
    34
	posMode=Relative;
insilmaril@778
    35
}
insilmaril@778
    36
insilmaril@778
    37
ImageItem::ImageType ImageItem::getImageType()
insilmaril@778
    38
{
insilmaril@778
    39
	return imageType;
insilmaril@778
    40
}
insilmaril@778
    41
insilmaril@778
    42
bool ImageItem::load(const QString &fname)
insilmaril@778
    43
{
insilmaril@778
    44
	bool ok=pixmap.load (fname);
insilmaril@778
    45
	if (lmo && ok)
insilmaril@778
    46
	{
insilmaril@778
    47
		setOriginalFilename (fname);
insilmaril@778
    48
		setHeading (originalFilename);
insilmaril@778
    49
		((FloatImageObj*)lmo)->load (pixmap);
insilmaril@778
    50
	}	
insilmaril@778
    51
	return ok;	
insilmaril@778
    52
}
insilmaril@778
    53
insilmaril@778
    54
FloatImageObj* ImageItem::createMapObj(QGraphicsScene *scene)
insilmaril@778
    55
{
insilmaril@778
    56
	FloatImageObj *fio=new FloatImageObj (scene);
insilmaril@778
    57
	fio->setTreeItem (this);
insilmaril@778
    58
	lmo=fio;
insilmaril@778
    59
	fio->setParObj ( parentItem->getLMO());
insilmaril@778
    60
	if (((BranchItem*)parentItem)->isScrolled() || !parentItem->getLMO()->isVisibleObj() )
insilmaril@778
    61
			fio->setVisibility (false);
insilmaril@778
    62
	initLMO();
insilmaril@778
    63
	fio->setZValue(zValue);
insilmaril@778
    64
	fio->setRelPos (pos);
insilmaril@778
    65
	return fio;
insilmaril@778
    66
}
insilmaril@778
    67
insilmaril@778
    68
void ImageItem::setZValue(int z)
insilmaril@778
    69
{
insilmaril@778
    70
	zValue=z;
insilmaril@778
    71
	if (lmo) ((FloatImageObj*)lmo)->setZValue(z);
insilmaril@778
    72
}
insilmaril@778
    73
insilmaril@778
    74
void ImageItem::setOriginalFilename(const QString & fn)
insilmaril@778
    75
{
insilmaril@778
    76
	originalFilename=fn;
insilmaril@778
    77
insilmaril@778
    78
	// Set short name. Search from behind:
insilmaril@778
    79
	int i=originalFilename.findRev("/");
insilmaril@778
    80
	if (i>=0) originalFilename=originalFilename.remove (0,i+1);
insilmaril@778
    81
	setHeading (originalFilename);
insilmaril@778
    82
}
insilmaril@778
    83
insilmaril@778
    84
QString ImageItem::getOriginalFilename()
insilmaril@778
    85
{
insilmaril@778
    86
	return originalFilename;
insilmaril@778
    87
}
insilmaril@778
    88
insilmaril@778
    89
void ImageItem::resetSaveCounter()
insilmaril@778
    90
{
insilmaril@778
    91
	saveCounter=0;
insilmaril@778
    92
}
insilmaril@778
    93
insilmaril@778
    94
void ImageItem::save(const QString &fn, const QString &format)
insilmaril@778
    95
{
insilmaril@778
    96
	pixmap.save (fn,qPrintable (format));
insilmaril@778
    97
}
insilmaril@778
    98
insilmaril@778
    99
QString ImageItem::saveToDir (const QString &tmpdir,const QString &prefix) 
insilmaril@778
   100
{
insilmaril@778
   101
	if (hidden) return "";
insilmaril@778
   102
insilmaril@778
   103
	saveCounter++;
insilmaril@778
   104
	
insilmaril@778
   105
	/* FIXME-3 QString useOrientAttr;
insilmaril@778
   106
	if (useOrientation)
insilmaril@778
   107
		useOrientAttr=attribut ("useOrientation","true");
insilmaril@778
   108
	else	
insilmaril@778
   109
		useOrientAttr=attribut ("useOrientation","false");
insilmaril@778
   110
		*/
insilmaril@778
   111
		
insilmaril@778
   112
	/*FIXME-3 QString saveInMapAttr;
insilmaril@778
   113
	if (saveInMap)
insilmaril@778
   114
		saveInMapAttr=attribut ("saveInMap","true");
insilmaril@778
   115
	else	
insilmaril@778
   116
		
insilmaril@778
   117
		saveInMapAttr=attribut ("saveInMap","false");
insilmaril@778
   118
		*/
insilmaril@778
   119
insilmaril@778
   120
	/* FIXME-3 QString exportAttr;
insilmaril@778
   121
	if (floatExport)
insilmaril@778
   122
		exportAttr=attribut ("floatExport","true");
insilmaril@778
   123
	else	
insilmaril@778
   124
		exportAttr=attribut ("floatExport","false");
insilmaril@778
   125
	*/	
insilmaril@778
   126
insilmaril@778
   127
insilmaril@778
   128
	QString zAttr=attribut ("zValue",QString().setNum(zValue));
insilmaril@778
   129
	QString url;
insilmaril@778
   130
insilmaril@778
   131
	url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ;
insilmaril@778
   132
insilmaril@778
   133
	// And really save the image
insilmaril@778
   134
	pixmap.save (tmpdir +"/"+ url, "PNG");
insilmaril@778
   135
 
insilmaril@778
   136
	QString nameAttr=attribut ("originalName",originalFilename);
insilmaril@778
   137
insilmaril@778
   138
    return singleElement ("floatimage",  
insilmaril@778
   139
		getAttr() 
insilmaril@778
   140
//		+useOrientAttr 
insilmaril@778
   141
//		+saveInMapAttr 
insilmaril@778
   142
//		+exportAttr  
insilmaril@778
   143
		+zAttr  
insilmaril@778
   144
		+attribut ("href",QString ("file:")+url)
insilmaril@778
   145
		+nameAttr
insilmaril@778
   146
	);	
insilmaril@778
   147
}
insilmaril@778
   148