diff options
| author | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-03-11 02:58:13 +0000 |
|---|---|---|
| committer | jghali <jghali@11d20701-8431-0410-a711-e3c959e3b870> | 2012-03-11 02:58:13 +0000 |
| commit | ad42cec17b6be9475517d985fe4ca229b4f6bde1 (patch) | |
| tree | 3064a43f233382ed70b6d55c537de4b4ab219058 /scribus/pageitem_desaxe.cpp | |
| parent | d2276f1d8a9d402432191ac06f0b6b7b43976e1d (diff) | |
| download | scribus-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.cpp | 38 |
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>(); |
