imageitem.cpp
author insilmaril
Thu, 03 Sep 2009 08:52:00 +0000
changeset 790 133e2ed6b9c5
parent 788 78ba80b54bc4
child 791 f1006de05c54
permissions -rw-r--r--
More work on xLinks
     1 #include "imageitem.h"
     2 
     3 #include "branchitem.h"
     4 #include "mapobj.h"		// z-values
     5 
     6 #include <QString>
     7 #include <iostream>
     8 using namespace std;
     9 
    10 ImageItem::ImageItem()
    11 {
    12 	init();
    13 }
    14 
    15 ImageItem::ImageItem (const QList<QVariant> &data, TreeItem *parent):MapItem (data,parent)
    16 {
    17 	init();
    18 }
    19 
    20 ImageItem::~ImageItem()
    21 {
    22 	//cout <<"Destr ImageItem\n";
    23 	if (lmo) delete lmo;
    24 }
    25 
    26 void ImageItem::init()
    27 {
    28 	setType (Image);
    29 	imageType=Undefined;
    30 	hideLinkUnselected=true;
    31 	originalFilename="no original name available";
    32 	zValue=Z_FLOATIMG;
    33 	posMode=Relative;
    34 }
    35 
    36 ImageItem::ImageType ImageItem::getImageType()
    37 {
    38 	return imageType;
    39 }
    40 
    41 bool ImageItem::load(const QString &fname)
    42 {
    43 	bool ok=pixmap.load (fname);
    44 	if (lmo && ok)
    45 	{
    46 		setOriginalFilename (fname);
    47 		setHeading (originalFilename);
    48 		((FloatImageObj*)lmo)->load (pixmap);
    49 	}	
    50 	return ok;	
    51 }
    52 
    53 FloatImageObj* ImageItem::createMapObj(QGraphicsScene *scene)
    54 {
    55 	FloatImageObj *fio=new FloatImageObj (scene,this);
    56 	lmo=fio;
    57 	fio->setParObj ( ((MapItem*)parentItem)->getLMO());
    58 	if (((BranchItem*)parentItem)->isScrolled() || !((MapItem*)parentItem)->getLMO()->isVisibleObj() )
    59 			fio->setVisibility (false);
    60 	initLMO();
    61 	fio->setZValue(zValue);
    62 	fio->setRelPos (pos);
    63 	cout << "II::createMO   fio="<<fio<<"   tI="<<fio->getTreeItem()<<endl;
    64 	return fio;
    65 }
    66 
    67 void ImageItem::setZValue(int z)
    68 {
    69 	zValue=z;
    70 	if (lmo) ((FloatImageObj*)lmo)->setZValue(z);
    71 }
    72 
    73 void ImageItem::setOriginalFilename(const QString & fn)
    74 {
    75 	originalFilename=fn;
    76 
    77 	// Set short name. Search from behind:
    78 	int i=originalFilename.findRev("/");
    79 	if (i>=0) originalFilename=originalFilename.remove (0,i+1);
    80 	setHeading (originalFilename);
    81 }
    82 
    83 QString ImageItem::getOriginalFilename()
    84 {
    85 	return originalFilename;
    86 }
    87 
    88 void ImageItem::save(const QString &fn, const QString &format)
    89 {
    90 	pixmap.save (fn,qPrintable (format));
    91 }
    92 
    93 QString ImageItem::saveToDir (const QString &tmpdir,const QString &prefix) 
    94 {
    95 	if (hidden) return "";
    96 
    97 	QString zAttr=attribut ("zValue",QString().setNum(zValue));
    98 	QString url;
    99 
   100 	ulong n=reinterpret_cast <ulong> (this);
   101 
   102 	url="images/"+prefix+"image-" + QString().number(n,10) + ".png" ;
   103 
   104 	// And really save the image
   105 	pixmap.save (tmpdir +"/"+ url, "PNG");
   106  
   107 	QString nameAttr=attribut ("originalName",originalFilename);
   108 
   109     return singleElement ("floatimage",  
   110 		getMapAttr() 
   111 		+getGeneralAttr()
   112 		+zAttr  
   113 		+attribut ("href",QString ("file:")+url)
   114 		+nameAttr
   115 	);	
   116 }
   117