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