summaryrefslogtreecommitdiffstats
path: root/scribus/pageitem_desaxe.cpp
diff options
context:
space:
mode:
authorjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-03-11 02:58:13 +0000
committerjghali <jghali@11d20701-8431-0410-a711-e3c959e3b870>2012-03-11 02:58:13 +0000
commitad42cec17b6be9475517d985fe4ca229b4f6bde1 (patch)
tree3064a43f233382ed70b6d55c537de4b4ab219058 /scribus/pageitem_desaxe.cpp
parentd2276f1d8a9d402432191ac06f0b6b7b43976e1d (diff)
downloadscribus-ad42cec17b6be9475517d985fe4ca229b4f6bde1.tar.gz
scribus-ad42cec17b6be9475517d985fe4ca229b4f6bde1.tar.xz
scribus-ad42cec17b6be9475517d985fe4ca229b4f6bde1.zip
#10622: copy/paste of embedded bitmaps doesn't work
git-svn-id: svn://scribus.net/branches/Version14x/Scribus@17370 11d20701-8431-0410-a711-e3c959e3b870
Diffstat (limited to 'scribus/pageitem_desaxe.cpp')
-rw-r--r--scribus/pageitem_desaxe.cpp38
1 files changed, 38 insertions, 0 deletions
diff --git a/scribus/pageitem_desaxe.cpp b/scribus/pageitem_desaxe.cpp
index e19af8e..3ddf553 100644
--- a/scribus/pageitem_desaxe.cpp
+++ b/scribus/pageitem_desaxe.cpp
@@ -456,6 +456,44 @@ class ImageEffectsAndLayers : public MakeAction<ImageEffectsAndLayers_body>
class LoadPicture_body : public Action_body
{
+ void begin (const Xml_string& tagname, Xml_attr attr)
+ {
+ PageItem* item = this->dig->top<PageItem>();
+ if (item->itemType() != PageItem::ImageFrame)
+ return;
+
+ bool isInlineImage = parseBool(attr.value("isInlineImage", QString()));
+ QString inlineImageExt = attr.value("inlineImageExt", QString());
+ if (!isInlineImage || inlineImageExt.isEmpty())
+ return;
+
+ QString imageData = attr.value("ImageData", QString());
+ if (imageData.isEmpty())
+ return;
+
+ QByteArray inlineImageData;
+ inlineImageData.append(imageData);
+ if (inlineImageData.size() <= 0)
+ return;
+
+ item->tempImageFile = new QTemporaryFile(QDir::tempPath() + "/scribus_temp_XXXXXX." + inlineImageExt);
+ item->tempImageFile->open();
+ QString tempFileName = getLongPathName(item->tempImageFile->fileName());
+ item->tempImageFile->close();
+
+ inlineImageData = qUncompress(QByteArray::fromBase64(inlineImageData));
+
+ QFile imageFile(tempFileName);
+ if (imageFile.open(QIODevice::WriteOnly))
+ {
+ imageFile.write(inlineImageData);
+ imageFile.close();
+
+ item->isInlineImage = true;
+ item->Pfile = tempFileName;
+ }
+ }
+
void end (const Xml_string& /*tagname*/)
{
PageItem* item = this->dig->top<PageItem>();