imageitem.cpp
author insilmaril
Tue, 07 Jul 2009 11:21:27 +0000
changeset 780 fe839bdfd10c
parent 779 1fb50e79661c
child 788 78ba80b54bc4
permissions -rw-r--r--
vymLinks working again
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@779
    17
ImageItem::ImageItem (const QList<QVariant> &data, TreeItem *parent):MapItem (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@779
    32
	hideLinkUnselected=true;
insilmaril@778
    33
	originalFilename="no original name available";
insilmaril@778
    34
	zValue=Z_FLOATIMG;
insilmaril@778
    35
	posMode=Relative;
insilmaril@778
    36
}
insilmaril@778
    37
insilmaril@778
    38
ImageItem::ImageType ImageItem::getImageType()
insilmaril@778
    39
{
insilmaril@778
    40
	return imageType;
insilmaril@778
    41
}
insilmaril@778
    42
insilmaril@778
    43
bool ImageItem::load(const QString &fname)
insilmaril@778
    44
{
insilmaril@778
    45
	bool ok=pixmap.load (fname);
insilmaril@778
    46
	if (lmo && ok)
insilmaril@778
    47
	{
insilmaril@778
    48
		setOriginalFilename (fname);
insilmaril@778
    49
		setHeading (originalFilename);
insilmaril@778
    50
		((FloatImageObj*)lmo)->load (pixmap);
insilmaril@778
    51
	}	
insilmaril@778
    52
	return ok;	
insilmaril@778
    53
}
insilmaril@778
    54
insilmaril@778
    55
FloatImageObj* ImageItem::createMapObj(QGraphicsScene *scene)
insilmaril@778
    56
{
insilmaril@778
    57
	FloatImageObj *fio=new FloatImageObj (scene);
insilmaril@778
    58
	fio->setTreeItem (this);
insilmaril@778
    59
	lmo=fio;
insilmaril@779
    60
	fio->setParObj ( ((MapItem*)parentItem)->getLMO());
insilmaril@779
    61
	if (((BranchItem*)parentItem)->isScrolled() || !((MapItem*)parentItem)->getLMO()->isVisibleObj() )
insilmaril@778
    62
			fio->setVisibility (false);
insilmaril@778
    63
	initLMO();
insilmaril@778
    64
	fio->setZValue(zValue);
insilmaril@778
    65
	fio->setRelPos (pos);
insilmaril@778
    66
	return fio;
insilmaril@778
    67
}
insilmaril@778
    68
insilmaril@778
    69
void ImageItem::setZValue(int z)
insilmaril@778
    70
{
insilmaril@778
    71
	zValue=z;
insilmaril@778
    72
	if (lmo) ((FloatImageObj*)lmo)->setZValue(z);
insilmaril@778
    73
}
insilmaril@778
    74
insilmaril@778
    75
void ImageItem::setOriginalFilename(const QString & fn)
insilmaril@778
    76
{
insilmaril@778
    77
	originalFilename=fn;
insilmaril@778
    78
insilmaril@778
    79
	// Set short name. Search from behind:
insilmaril@778
    80
	int i=originalFilename.findRev("/");
insilmaril@778
    81
	if (i>=0) originalFilename=originalFilename.remove (0,i+1);
insilmaril@778
    82
	setHeading (originalFilename);
insilmaril@778
    83
}
insilmaril@778
    84
insilmaril@778
    85
QString ImageItem::getOriginalFilename()
insilmaril@778
    86
{
insilmaril@778
    87
	return originalFilename;
insilmaril@778
    88
}
insilmaril@778
    89
insilmaril@778
    90
void ImageItem::resetSaveCounter()
insilmaril@778
    91
{
insilmaril@778
    92
	saveCounter=0;
insilmaril@778
    93
}
insilmaril@778
    94
insilmaril@778
    95
void ImageItem::save(const QString &fn, const QString &format)
insilmaril@778
    96
{
insilmaril@778
    97
	pixmap.save (fn,qPrintable (format));
insilmaril@778
    98
}
insilmaril@778
    99
insilmaril@778
   100
QString ImageItem::saveToDir (const QString &tmpdir,const QString &prefix) 
insilmaril@778
   101
{
insilmaril@778
   102
	if (hidden) return "";
insilmaril@778
   103
insilmaril@778
   104
	saveCounter++;
insilmaril@778
   105
	
insilmaril@780
   106
	
insilmaril@778
   107
	QString zAttr=attribut ("zValue",QString().setNum(zValue));
insilmaril@778
   108
	QString url;
insilmaril@778
   109
insilmaril@778
   110
	url="images/"+prefix+"image-" + QString().number(saveCounter,10) + ".png" ;
insilmaril@778
   111
insilmaril@778
   112
	// And really save the image
insilmaril@778
   113
	pixmap.save (tmpdir +"/"+ url, "PNG");
insilmaril@778
   114
 
insilmaril@778
   115
	QString nameAttr=attribut ("originalName",originalFilename);
insilmaril@778
   116
insilmaril@778
   117
    return singleElement ("floatimage",  
insilmaril@779
   118
		getMapAttr() 
insilmaril@779
   119
		+getGeneralAttr()
insilmaril@778
   120
		+zAttr  
insilmaril@778
   121
		+attribut ("href",QString ("file:")+url)
insilmaril@778
   122
		+nameAttr
insilmaril@778
   123
	);	
insilmaril@778
   124
}
insilmaril@778
   125