[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    =?utf-8?q?=5Bcalligra=5D_filters/=3A_Ooxml_filter=2C_drawingML_s?=
From:       Lassi Nieminen <lassniem () gmail ! com>
Date:       2011-01-26 12:58:05
Message-ID: 20110126125805.87A8AA6094 () git ! kde ! org
[Download RAW message or body]

Git commit 4440308043e5f8c2681acedb27d3cc3d2758b640 by Lassi Nieminen.
Pushed by lassin into branch 'master'.

Ooxml filter, drawingML srcRect support & fixed noFill to creater proper odf.

M  +14   -8    filters/kpresenter/pptx/PptxXmlSlideReader.cpp     
M  +0    -1    filters/libmsooxml/MsooXmlCommonReader.h     
M  +34   -40   filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h     
M  +2    -8    filters/libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h     
M  +38   -0    filters/libmsooxml/MsooXmlImport.cpp     
M  +11   -4    filters/libmsooxml/MsooXmlImport.h     
M  +42   -3    filters/libmsooxml/MsooXmlUtils.cpp     
M  +6    -2    filters/libmsooxml/MsooXmlUtils.h     
M  +9    -7    filters/tables/xlsx/XlsxXmlWorksheetReader.cpp     
M  +4    -2    filters/words/docx/DocxXmlDocumentReader.cpp     

http://commits.kde.org/47e7010d/4440308043e5f8c2681acedb27d3cc3d2758b640

diff --git a/filters/kpresenter/pptx/PptxXmlSlideReader.cpp \
b/filters/kpresenter/pptx/PptxXmlSlideReader.cpp index 5996bf4..9b71992 100644
--- a/filters/kpresenter/pptx/PptxXmlSlideReader.cpp
+++ b/filters/kpresenter/pptx/PptxXmlSlideReader.cpp
@@ -628,11 +628,11 @@ KoFilter::ConversionStatus PptxXmlSlideReader::read_oleObj()
             return KoFilter::FileNotFound;
         }
 
-        // As it is primary an ole ole object, this one should have the highest \
                priority
-        QString destinationName;
-
         body->startElement("draw:object-ole");
-        RETURN_IF_ERROR( copyFile(sourceName, "", destinationName))
+        QString destinationName = QLatin1String("") + \
sourceName.mid(sourceName.lastIndexOf('/') + 1);; +        RETURN_IF_ERROR( \
m_context->import->copyFile(sourceName, destinationName, false ) ) +        \
addManifestEntryForFile(destinationName); +
         body->addAttribute("xlink:href", destinationName);
         body->endElement(); // draw:object-ole
 
@@ -647,7 +647,9 @@ KoFilter::ConversionStatus PptxXmlSlideReader::read_oleObj()
         // These should be one day part of ole shape functionality wise
         if (progId == "Paint.Picture" || name == "Bitmap Image") {
             body->startElement("draw:image");
-            RETURN_IF_ERROR( copyFile(sourceName, QLatin1String("Pictures/"), \
destinationName, true) ) +            QString destinationName = \
QLatin1String("Pictures/") + sourceName.mid(sourceName.lastIndexOf('/') + 1);; +      \
RETURN_IF_ERROR( m_context->import->copyFile(sourceName, destinationName, true ) ) +  \
addManifestEntryForFile(destinationName);  addManifestEntryForPicturesDir();
             body->addAttribute("xlink:href", destinationName);
             body->addAttribute("xlink:show", "embed");
@@ -656,13 +658,17 @@ KoFilter::ConversionStatus PptxXmlSlideReader::read_oleObj()
         }
         else if (progId == "Package") {
             body->startElement("draw:plugin"); // The mimetype is not told by the \
                ole container, this is best guess
-            RETURN_IF_ERROR( copyFile(sourceName, "", destinationName, true ))
+            QString destinationName = QLatin1String("") + \
sourceName.mid(sourceName.lastIndexOf('/') + 1);; +            RETURN_IF_ERROR( \
m_context->import->copyFile(sourceName, destinationName, true ) ) +            \
addManifestEntryForFile(destinationName);  body->addAttribute("xlink:href", \
destinationName);  body->endElement(); // draw:plugin
         }
         else if (progId.contains("AcroExch")) { // PDF
             body->startElement("draw:object"); // The mimetype is not told by the \
                ole container, this is best guess
-            RETURN_IF_ERROR( copyFile(sourceName, "", destinationName, true ))
+            QString destinationName = QLatin1String("") + \
sourceName.mid(sourceName.lastIndexOf('/') + 1);; +            RETURN_IF_ERROR( \
m_context->import->copyFile(sourceName, destinationName, true ) ) +            \
addManifestEntryForFile(destinationName);  body->addAttribute("xlink:href", \
destinationName);  body->endElement(); // draw:object
         }
@@ -1027,7 +1033,7 @@ KoFilter::ConversionStatus PptxXmlSlideReader::read_bgPr()
                 TRY_READ(effectLst)
             }
             else if (qualifiedName() == QLatin1String("a:noFill")) {
-                m_currentDrawStyle->addAttribute("style:fill", constNone);
+                m_currentDrawStyle->addProperty("draw:fill", constNone);
             }
             else if (qualifiedName() == QLatin1String("a:blipFill")) {
                 TRY_READ_IF_NS_IN_CONTEXT(a, blipFill)
diff --git a/filters/libmsooxml/MsooXmlCommonReader.h \
b/filters/libmsooxml/MsooXmlCommonReader.h index 0b18dc0..37fe514 100644
--- a/filters/libmsooxml/MsooXmlCommonReader.h
+++ b/filters/libmsooxml/MsooXmlCommonReader.h
@@ -101,7 +101,6 @@ protected:
     bool m_moveToStylesXml;
 
     QSize m_imageSize;
-    QString m_recentSourceName; // recent image
     QPen m_currentPen;
 
     QSet<QString> m_copiedFiles; //!< collects source names to avoid multiple \
                copying of media files
diff --git a/filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h \
b/filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h index b5d49ca..acc4134 100644
--- a/filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h
+++ b/filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h
@@ -62,7 +62,6 @@ void MSOOXML_CURRENT_CLASS::initDrawingML()
     m_hyperLink = false;
     m_listStylePropertiesAltered = false;
     m_inGrpSpPr = false;
-    m_fillImageRenderingStyleStretch = false;
 }
 
 bool MSOOXML_CURRENT_CLASS::unsupportedPredefinedShape()
@@ -97,30 +96,6 @@ bool MSOOXML_CURRENT_CLASS::unsupportedPredefinedShape()
 
 // ----------------------------------------------------------------
 
-KoFilter::ConversionStatus MSOOXML_CURRENT_CLASS::copyFile(const QString& \
                sourceName,
-                                                           const QString& \
                destinationDir,
-                                                           QString& destinationName,
-                                                           bool oleType)
-{
-    destinationName = destinationDir + sourceName.mid(sourceName.lastIndexOf('/') + \
                1);
-    if (oleType) {
-        // If it's of type ole, we don't know the file type, by default it has .bin
-        // ending which we're removing here.
-        destinationName.remove(".bin");
-    }
-
-    if (m_copiedFiles.contains(destinationName)) {
-        kDebug() << sourceName << "already copied - skipping";
-    }
-    else {
-//! @todo should we check name uniqueness here in case the sourceName can be located \
                in various directories?
-        RETURN_IF_ERROR( m_context->import->copyFile(sourceName, destinationName, \
                oleType) )
-        addManifestEntryForFile(destinationName);
-        m_copiedFiles.insert(destinationName);
-    }
-    return KoFilter::OK;
-}
-
 // ================================================================
 // DrawingML tags
 // ================================================================
@@ -180,7 +155,6 @@ KoFilter::ConversionStatus MSOOXML_CURRENT_CLASS::read_pic()
     m_cNvPrId.clear();
     m_cNvPrName.clear();
     m_cNvPrDescr.clear();
-    m_fillImageRenderingStyleStretch = false;
     m_flipH = false;
     m_flipV = false;
     m_rot = 0;
@@ -1232,11 +1206,11 @@ KoFilter::ConversionStatus MSOOXML_CURRENT_CLASS::read_spPr()
                     }
                 }
             }
-            else if ( qualifiedName() == QLatin1String("a:ln") ) {
+            else if (qualifiedName() == QLatin1String("a:ln")) {
                 TRY_READ(ln)
             }
             else if (qualifiedName() == QLatin1String("a:noFill")) {
-                m_currentDrawStyle->addAttribute("style:fill", constNone);
+                m_currentDrawStyle->addProperty("draw:fill", constNone);
             }
             else if (qualifiedName() == QLatin1String("a:prstGeom")) {
                 TRY_READ(prstGeom)
@@ -2541,10 +2515,10 @@ KoFilter::ConversionStatus MSOOXML_CURRENT_CLASS::read_blip()
         if (sourceName.isEmpty()) {
             return KoFilter::FileNotFound;
         }
-        QString destinationName;
-
-        RETURN_IF_ERROR( copyFile(sourceName, QLatin1String("Pictures/"), \
                destinationName) )
-        m_recentSourceName = sourceName;
+        QString destinationName = QLatin1String("Pictures/") + \
sourceName.mid(sourceName.lastIndexOf('/') + 1); +        RETURN_IF_ERROR( \
m_context->import->copyFile(sourceName, destinationName, false ) ) +        \
addManifestEntryForFile(destinationName); +        m_recentDestName = sourceName;
         addManifestEntryForPicturesDir();
         m_xlinkHref = destinationName;
     }
@@ -2588,7 +2562,6 @@ KoFilter::ConversionStatus \
MSOOXML_CURRENT_CLASS::read_stretch()  {
     READ_PROLOGUE
 
-    m_fillImageRenderingStyleStretch = true;
     m_currentDrawStyle->addProperty("style:repeat", QLatin1String("stretch"));
 
     while (!atEnd()) {
@@ -2770,9 +2743,26 @@ KoFilter::ConversionStatus \
MSOOXML_CURRENT_CLASS::read_srcRect()  TRY_READ_ATTR_WITHOUT_NS(r)
     TRY_READ_ATTR_WITHOUT_NS(t)
 
-    //TODO: m_imageSize should be converted to cm and percentages here calculatted \
                in relation to that
-    // and calligra should support fo:clip.
-    //m_currentDrawStyle->addProperty("fo:clip", QString("rect(%1, %2, %3, \
%4)").arg(5).arg(5).arg(5).arg(5)); +    if (!b.isEmpty()) {
+        qreal bReal = b.toDouble() / 100000;
+        qreal tReal = t.toDouble() / 100000;
+        qreal lReal = l.toDouble() / 100000;
+        qreal rReal = r.toDouble() / 100000;
+
+        int rectLeft = m_imageSize.rwidth() * lReal;
+        int rectTop = m_imageSize.rheight() * tReal;
+        int rectWidth = m_imageSize.rwidth() - m_imageSize.rwidth() * rReal - \
rectLeft; +        int rectHeight = m_imageSize.rheight() - m_imageSize.rheight() * \
bReal - rectTop; +
+        QString destinationName = QLatin1String("Pictures/") +  b + l + r + t +
+            m_recentDestName.mid(m_recentDestName.lastIndexOf('/') + 1);;
+        QImage image;
+        m_context->import->imageFromFile(m_recentDestName, image);
+        image = image.copy(rectLeft, rectTop, rectWidth, rectHeight);
+        RETURN_IF_ERROR( m_context->import->createImage(image, destinationName) )
+        addManifestEntryForFile(destinationName);
+        m_xlinkHref = destinationName;
+    }
 
     readNext();
     READ_EPILOGUE
@@ -2811,8 +2801,6 @@ KoFilter::ConversionStatus \
MSOOXML_CURRENT_CLASS::read_fillRect()  TRY_READ_ATTR_WITHOUT_NS(r, t)*/
 //MSOOXML_EXPORT qreal ST_Percentage_withMsooxmlFix_to_double(const QString& val, \
bool& ok);  
-    //m_fillImageRenderingStyle = QLatin1String("stretch");
-
     readNext();
     READ_EPILOGUE
 }
@@ -2980,8 +2968,6 @@ KoFilter::ConversionStatus \
MSOOXML_CURRENT_CLASS::read_blipFill(blipFillCaller c  return KoFilter::WrongFormat;
     }
 
-    m_fillImageRenderingStyleStretch = false;
-
     while (!atEnd()) {
         readNext();
         kDebug() << *this;
@@ -5555,6 +5541,14 @@ KoFilter::ConversionStatus \
MSOOXML_CURRENT_CLASS::read_bodyPr()  TRY_READ_ATTR_WITHOUT_NS(rIns)
     TRY_READ_ATTR_WITHOUT_NS(bIns)
     TRY_READ_ATTR_WITHOUT_NS(tIns)
+    TRY_READ_ATTR_WITHOUT_NS(vert)
+
+    // Todo
+    if (!vert.isEmpty()) {
+        if (vert == "vert270") {
+        }
+    }
+
 //TODO    TRY_READ_ATTR_WITHOUT_NS(fontAlgn)
 
     m_shapeTextPosition.clear();
diff --git a/filters/libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h \
b/filters/libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h index af42cc7..54e8cbf \
                100644
--- a/filters/libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h
+++ b/filters/libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h
@@ -202,17 +202,9 @@ void algnToODF(const char * odfEl, const QString& emuValue);
 //! Sets fo:margin-* attribute of style:style/style:graphic-properties element. Used \
in read_anchor()  void distToODF(const char * odfEl, const QString& emuValue);
 
-//! ODF 1.1., 15.14.9 Fill Image Rendering Style
-//! Set by read_stretch()
-bool m_fillImageRenderingStyleStretch;
-
 //! Used by read_wrap*()
 void readWrap();
 
-//! Copies file to destination directory. @a destinationName is set.
-KoFilter::ConversionStatus copyFile(
-    const QString& sourceName, const QString& destinationDir, QString& \
                destinationName, bool oleType=false);
-
 bool m_drawing_anchor; //! set by read_drawing() to indicate if we have encountered \
drawing/anchor, used by read_pic()  bool m_drawing_inline; //! set by read_drawing() \
to indicate if we have encountered drawing/inline, used by read_pic()  
@@ -269,3 +261,5 @@ qreal* m_currentDoubleValue;
 bool    m_hyperLink;
 QString m_hyperLinkTarget;
 
+QString m_recentDestName; // recent image
+
diff --git a/filters/libmsooxml/MsooXmlImport.cpp \
b/filters/libmsooxml/MsooXmlImport.cpp index bccc046..fff2208 100644
--- a/filters/libmsooxml/MsooXmlImport.cpp
+++ b/filters/libmsooxml/MsooXmlImport.cpp
@@ -39,6 +39,8 @@
 #include <QRegExp>
 #include <QImage>
 #include <QInputDialog>
+#include <QImageReader>
+#include <QFileInfo>
 
 #include <kdeversion.h>
 #include <KDebug>
@@ -533,6 +535,20 @@ KTemporaryFile* MsooXmlImport::tryDecryptFile(QString &filename)
 #endif
 }
 
+KoFilter::ConversionStatus MsooXmlImport::createImage(const QImage& source,
+                                       const QString& destinationName)
+{
+    if (!m_zip || !m_outputStore) {
+        return KoFilter::UsageError;
+    }
+    QString errorMessage;
+    const KoFilter::ConversionStatus status = Utils::createImage(errorMessage, \
source, m_outputStore, destinationName); +    if (status != KoFilter::OK) {
+        kWarning() << "Failed to createImage:" << errorMessage;
+    }
+    return status;
+}
+
 KoFilter::ConversionStatus MsooXmlImport::copyFile(const QString& sourceName,
         const QString& destinationName, bool oleFile)
 {
@@ -548,6 +564,28 @@ KoFilter::ConversionStatus MsooXmlImport::copyFile(const \
QString& sourceName,  return status;
 }
 
+KoFilter::ConversionStatus MsooXmlImport::imageFromFile(const QString& sourceName, \
QImage& image) +{
+    if (!m_zip) {
+        return KoFilter::UsageError;
+    }
+
+    QString errorMessage;
+    KoFilter::ConversionStatus status = KoFilter::OK;
+
+    std::auto_ptr<QIODevice> inputDevice(Utils::openDeviceForFile(m_zip, \
errorMessage, sourceName, status)); +    if (!inputDevice.get()) {
+        return status;
+    }
+    QImageReader r(inputDevice.get(), QFileInfo(sourceName).suffix().toLatin1());
+    if (!r.canRead()) {
+        return KoFilter::WrongFormat;
+    }
+    image = r.read();
+
+    return status;
+}
+
 KoFilter::ConversionStatus MsooXmlImport::imageSize(const QString& sourceName, \
QSize& size)  {
     if (!m_zip) {
diff --git a/filters/libmsooxml/MsooXmlImport.h b/filters/libmsooxml/MsooXmlImport.h
index ffe8346..59bed24 100644
--- a/filters/libmsooxml/MsooXmlImport.h
+++ b/filters/libmsooxml/MsooXmlImport.h
@@ -74,14 +74,21 @@ public:
             MsooXmlReaderContext* context = 0);
 
     /*! Copies file @a sourceName from the input archive to the output document
-     under @a destinationName name. @return KoFilter::OK on success.
-     On failure @a errorMessage is set.
-     KoFilter::UsageError is returned if this method is called outside
-     of the importing process, i.e. not from within parseParts(). */
+    under @a destinationName name. @return KoFilter::OK on success.
+    On failure @a errorMessage is set.
+    KoFilter::UsageError is returned if this method is called outside
+    of the importing process, i.e. not from within parseParts(). */
     KoFilter::ConversionStatus copyFile(const QString& sourceName,
                                         const QString& destinationName,
                                         bool oleFile);
 
+    /* Creates an image to the resulting odf with the given name */
+    KoFilter::ConversionStatus createImage(const QImage& source,
+                                           const QString& destinationName);
+
+    /*! @return image from the file for modifications */
+    KoFilter::ConversionStatus imageFromFile(const QString& sourceName, QImage& \
image); +
     /*! @return size of image file @a sourceName read from zip archive @a zip.
     Size of the image is returned in @a size.
     @return KoFilter::OK on success.
diff --git a/filters/libmsooxml/MsooXmlUtils.cpp \
b/filters/libmsooxml/MsooXmlUtils.cpp index 1ea9924..66d3ed9 100644
--- a/filters/libmsooxml/MsooXmlUtils.cpp
+++ b/filters/libmsooxml/MsooXmlUtils.cpp
@@ -333,6 +333,44 @@ static KoFilter::ConversionStatus copyOle(QString& errorMessage,
 #undef BLOCK_SIZE
 
 #define BLOCK_SIZE 4096
+KoFilter::ConversionStatus Utils::createImage(QString& errorMessage,
+                                       const QImage& source, KoStore *outputStore,
+                                       const QString& destinationName)
+{
+    if (outputStore->hasFile(destinationName)) {
+        return KoFilter::OK;
+    }
+
+    KoFilter::ConversionStatus status = KoFilter::OK;
+    QByteArray array;
+    QBuffer inputDevice(&array);
+    inputDevice.open(QIODevice::ReadWrite);
+    QFileInfo info = QFileInfo(destinationName);
+    source.save(&inputDevice, info.suffix().toUtf8());
+    inputDevice.seek(0);
+
+    if (!outputStore->open(destinationName)) {
+        errorMessage = i18n("Could not open entry \"%1\" for writing.", \
destinationName); +        return KoFilter::CreationError;
+    }
+    char block[BLOCK_SIZE];
+    while (true) {
+        const qint64 in = inputDevice.read(block, BLOCK_SIZE);
+        if (in <= 0) {
+            break;
+        }
+        if (in != outputStore->write(block, in)) {
+            errorMessage = i18n("Could not write block");
+            status = KoFilter::CreationError;
+            break;
+        }
+    }
+    outputStore->close();
+    return status;
+}
+#undef BLOCK_SIZE
+
+#define BLOCK_SIZE 4096
 KoFilter::ConversionStatus Utils::copyFile(const KZip* zip, QString& errorMessage,
                                            const QString& sourceName, KoStore \
                *outputStore,
                                            const QString& destinationName, bool \
oleType) @@ -427,10 +465,11 @@ static bool checkNsUri(const KoXmlElement& el, const \
char* expectedNsUri)  bool Utils::convertBooleanAttr(const QString& value, bool \
defaultValue)  {
     const QByteArray val(value.toLatin1());
-    if (val.isEmpty())
+    if (val.isEmpty()) {
         return defaultValue;
-kDebug() << val;
-    
+    }
+    kDebug() << val;
+
     return val != MsooXmlReader::constOff && val != MsooXmlReader::constFalse && val \
!= MsooXmlReader::const0;  }
 
diff --git a/filters/libmsooxml/MsooXmlUtils.h b/filters/libmsooxml/MsooXmlUtils.h
index 12d5bf8..91b90ee 100644
--- a/filters/libmsooxml/MsooXmlUtils.h
+++ b/filters/libmsooxml/MsooXmlUtils.h
@@ -248,10 +248,14 @@ MSOOXML_EXPORT KoFilter::ConversionStatus \
loadAndParseDocument(MsooXmlReader* re  @return KoFilter::OK on success.
  On failure @a errorMessage is set. */
 KoFilter::ConversionStatus copyFile(const KZip* zip, QString& errorMessage,
-                                    const QString& sourceName,
-                                    KoStore *outputStore,
+                                    const QString& sourceName, KoStore *outputStore,
                                     const QString& destinationName, bool \
oleType=false);  
+/*! Creates a file */
+KoFilter::ConversionStatus createImage(QString& errorMessage,
+                                       const QImage& source, KoStore *outputStore,
+                                       const QString& destinationName);
+
 /*! @return size of image file @a sourceName read from zip archive @a zip.
  Size of the image is returned in @a size.
  @return KoFilter::OK on success.
diff --git a/filters/tables/xlsx/XlsxXmlWorksheetReader.cpp \
b/filters/tables/xlsx/XlsxXmlWorksheetReader.cpp index 5f8cb22..fc2f771 100644
--- a/filters/tables/xlsx/XlsxXmlWorksheetReader.cpp
+++ b/filters/tables/xlsx/XlsxXmlWorksheetReader.cpp
@@ -1336,10 +1336,11 @@ KoFilter::ConversionStatus \
XlsxXmlWorksheetReader::read_picture()  const QXmlStreamAttributes \
attrs(attributes());  TRY_READ_ATTR_WITH_NS(r, id)
     const QString link = m_context->relationships->target(m_context->path, \
                m_context->file, r_id);
-    QString fileName = link.right( link.lastIndexOf('/') +1 );
-    RETURN_IF_ERROR( copyFile(link, "Pictures/", fileName) )
-    m_context->sheet->setPictureBackgroundPath(fileName);
-    //NOTE manifest entry is added by copyFile
+    QString destinationName = QLatin1String("Pictures/") + \
link.mid(link.lastIndexOf('/') + 1); +    RETURN_IF_ERROR( \
m_context->import->copyFile(link, destinationName, true ) ) +    \
addManifestEntryForFile(destinationName); +
+    m_context->sheet->setPictureBackgroundPath(destinationName);
 
     while (!atEnd()) {
         readNext();
@@ -1381,12 +1382,13 @@ KoFilter::ConversionStatus \
XlsxXmlWorksheetReader::read_oleObject()  shapeId = "_x0000_s" + shapeId;
 
     const QString link = m_context->relationships->target(m_context->path, \
                m_context->file, r_id);
-    QString fileName = link.right( link.lastIndexOf('/') +1 );
-    RETURN_IF_ERROR( copyFile(link, "", fileName) )
+    QString destinationName = QLatin1String("") + link.mid(link.lastIndexOf('/') + \
1); +    RETURN_IF_ERROR( m_context->import->copyFile(link, destinationName, true ) )
+    addManifestEntryForFile(destinationName);
 
     //TODO find out which cell to pick
     Cell* cell = m_context->sheet->cell(0, 0, true);
-    cell->appendOleObject( qMakePair<QString,QString>(fileName, \
m_context->oleReplacements.value(shapeId)), \
m_context->oleFrameBegins.value(shapeId)); +    cell->appendOleObject( \
qMakePair<QString,QString>(destinationName, \
m_context->oleReplacements.value(shapeId)), \
m_context->oleFrameBegins.value(shapeId));  
     while (!atEnd()) {
         readNext();
diff --git a/filters/words/docx/DocxXmlDocumentReader.cpp \
b/filters/words/docx/DocxXmlDocumentReader.cpp index 4b87b75..2d51891 100644
--- a/filters/words/docx/DocxXmlDocumentReader.cpp
+++ b/filters/words/docx/DocxXmlDocumentReader.cpp
@@ -4601,9 +4601,11 @@ KoFilter::ConversionStatus \
                DocxXmlDocumentReader::read_OLEObject()
     const QString oleName(m_context->relationships->target(m_context->path, \
m_context->file, r_id));  kDebug() << "oleName:" << oleName;
 
-    QString destinationName;
 //! @todo ooo saves binaries to the root dir; should we?
-    RETURN_IF_ERROR( copyFile(oleName, QString(), destinationName) )
+
+    QString destinationName = QLatin1String("") + \
oleName.mid(oleName.lastIndexOf('/') + 1);; +    RETURN_IF_ERROR( \
m_context->import->copyFile(oleName, destinationName, false ) ) +    \
addManifestEntryForFile(destinationName);  
     while (!atEnd()) {
         readNext();


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic