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

List:       kde-commits
Subject:    koffice/filters
From:       Lassi Taneli Nieminen <lassniem () gmail ! com>
Date:       2010-10-12 7:56:18
Message-ID: 20101012075618.435CFAC894 () svn ! kde ! org
[Download RAW message or body]

SVN commit 1185019 by lassin:

Fixed docx filter to support picture bullets.


 M  +2 -1      kpresenter/pptx/PptxXmlSlideReader.cpp  
 M  +38 -1     kword/docx/DocxXmlNumberingReader.cpp  
 M  +3 -0      kword/docx/DocxXmlNumberingReader.h  
 M  +1 -3      libmsooxml/MsooXmlCommonReader.h  
 M  +1 -16     libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h  
 M  +0 -6      libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h  
 M  +16 -3     libmsooxml/MsooXmlImport.cpp  
 M  +3 -1      libmsooxml/MsooXmlImport.h  
 M  +2 -0      libmsooxml/MsooXmlVmlReaderImpl.h  


--- trunk/koffice/filters/kpresenter/pptx/PptxXmlSlideReader.cpp #1185018:1185019
@@ -1088,7 +1088,8 @@
         m_currentDrawStyle->addProperty("draw:fill-image-name", fillImageName, \
KoGenStyle::DrawingPageType);  if (m_context->type != SlideMaster) {
             if (!m_recentSourceName.isEmpty()) {
-                const QSize size(imageSize(m_recentSourceName));
+                QSize size;
+                m_context->import->imageSize(m_recentSourceName, size);
                 kDebug() << "SIZE:" << size;
                 if (size.isValid()) {
                     m_currentDrawStyle->addProperty("draw:fill-image-width",
--- trunk/koffice/filters/kword/docx/DocxXmlNumberingReader.cpp #1185018:1185019
@@ -161,6 +161,8 @@
     m_bulletFont = QString();
     m_bulletStyle = false;
 
+    bool pictureType = false;
+
     while (!atEnd()) {
         readNext();
         BREAK_IF_END_OF(CURRENT_EL)
@@ -169,6 +171,10 @@
             ELSE_TRY_READ_IF(numFmt)
             ELSE_TRY_READ_IF(lvlText)
             ELSE_TRY_READ_IF(lvlJc)
+            else if (qualifiedName() == QLatin1String("w:lvlPicBulletId")) {
+                TRY_READ(lvlPicBulletId)
+                pictureType = true;
+            }
             else if ( qualifiedName() == QLatin1String("w:pPr") ) {
                 TRY_READ(pPr_numbering)
             }
@@ -180,7 +186,7 @@
 
     // For some symbol bullets MS2007 sets the bullet char to wingdings/symbol  but \
                since
     // ODF does not support this, we replace those cases with default value '-'
-    if (m_bulletStyle && !m_bulletCharacter.isEmpty()) {
+    if (!pictureType && m_bulletStyle && !m_bulletCharacter.isEmpty()) {
         if (m_bulletFont == "Wingdings" || m_bulletFont == "Symbol") {
             m_currentBulletProperties.setBulletChar("-");
         }
@@ -208,6 +214,10 @@
 {
     READ_PROLOGUE
 
+    const QXmlStreamAttributes attrs(attributes());
+
+    READ_ATTR(numPicBulletId)
+
     while (!atEnd()) {
         readNext();
         BREAK_IF_END_OF(CURRENT_EL)
@@ -216,6 +226,9 @@
         }
     }
 
+    m_picBulletPaths[numPicBulletId] = m_imagedataPath;
+    m_picBulletSizes[numPicBulletId] = m_imageSize;
+
     READ_EPILOGUE
 }
 
@@ -463,6 +476,30 @@
 }
 
 #undef CURRENT_EL
+#define CURRENT_EL lvlPicBulletId
+//! w:lvlPicBulletID (Picture bullet id)
+/*!
+ Parent elements:
+
+ Child elements:
+*/
+KoFilter::ConversionStatus DocxXmlNumberingReader::read_lvlPicBulletId()
+{
+    READ_PROLOGUE
+
+    const QXmlStreamAttributes attrs(attributes());
+
+    TRY_READ_ATTR(val)
+    if (!val.isEmpty()) {
+        m_currentBulletProperties.setPicturePath(m_picBulletPaths.value(val));
+        m_currentBulletProperties.setPictureSize(m_picBulletSizes.value(val));
+    }
+
+    readNext();
+    READ_EPILOGUE
+}
+
+#undef CURRENT_EL
 #define CURRENT_EL lvlJc
 //! w:lvlJc handler (Level justification)
 /*!
--- trunk/koffice/filters/kword/docx/DocxXmlNumberingReader.h #1185018:1185019
@@ -55,6 +55,7 @@
     KoFilter::ConversionStatus read_num();
     KoFilter::ConversionStatus read_abstractNumId();
     KoFilter::ConversionStatus read_lvlJc();
+    KoFilter::ConversionStatus read_lvlPicBulletId();
     KoFilter::ConversionStatus read_numPicBullet();
 
     // Note we read pPr here for now because we are only interested in subset of pPr \
features @@ -67,6 +68,8 @@
     bool m_bulletStyle;
 
     QMap<QString, KoGenStyle> m_abstractListStyles;
+    QMap<QString, QString> m_picBulletPaths;
+    QMap<QString, QSize> m_picBulletSizes;
 
     QString m_bulletCharacter;
     QString m_bulletFont;
--- trunk/koffice/filters/libmsooxml/MsooXmlCommonReader.h #1185018:1185019
@@ -106,9 +106,7 @@
     bool m_moveToStylesXml;
 
     QSize m_imageSize;
-
-    QMap<QString, QSize> m_imageSizes; //!< collects image sizes to avoid multiple \
                checks
-
+    QString m_recentSourceName; // recent image
     QPen m_currentPen;
 
     QSet<QString> m_copiedFiles; //!< collects source names to avoid multiple \
                copying of media files
--- trunk/koffice/filters/libmsooxml/MsooXmlCommonReaderDrawingMLImpl.h \
#1185018:1185019 @@ -90,21 +90,6 @@
     return KoFilter::OK;
 }
 
-QSize MSOOXML_CURRENT_CLASS::imageSize(const QString& sourceName)
-{
-    const QMap<QString, QSize>::ConstIterator \
                it(m_imageSizes.constFind(sourceName));
-    if (it == m_imageSizes.constEnd()) {
-        QSize size;
-        const KoFilter::ConversionStatus status = \
                m_context->import->imageSize(sourceName, &size);
-        if (status != KoFilter::OK)
-            size = QSize(-1, -1);
-        m_imageSizes.insert(sourceName, size);
-        return size;
-    }
-    return it.value();
-}
-
-
 // ================================================================
 // DrawingML tags
 // ================================================================
@@ -2493,7 +2478,7 @@
                                                                   m_context->file, \
r_embed));  kDebug() << "sourceName:" << sourceName;
 
-        m_imageSize = imageSize(sourceName);
+        m_context->import->imageSize(sourceName, m_imageSize);
 
         if (sourceName.isEmpty()) {
             return KoFilter::FileNotFound;
--- trunk/koffice/filters/libmsooxml/MsooXmlCommonReaderDrawingMLMethods.h \
#1185018:1185019 @@ -190,11 +190,6 @@
 KoFilter::ConversionStatus copyFile(
     const QString& sourceName, const QString& destinationDir, QString& \
destinationName, bool oleType=false);  
-/*! @return size of image file @a sourceName read from input.
- Can be invalid is the size cannot be determined.
- This method caches the result for efficiency. */
-QSize imageSize(const QString& sourceName);
-
 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()  
@@ -232,7 +227,6 @@
 bool m_noFill;
 
 QString m_xlinkHref; //!< set by read_blip()
-QString m_recentSourceName; //!< set by read_blip()
 QString m_cNvPrId; //!< set by read_cNvPr()
 QString m_cNvPrName; //!< set by read_cNvPr()
 QString m_cNvPrDescr; //!< set by read_cNvPr()
--- trunk/koffice/filters/libmsooxml/MsooXmlImport.cpp #1185018:1185019
@@ -139,14 +139,27 @@
     return status;
 }
 
-KoFilter::ConversionStatus MsooXmlImport::imageSize(const QString& sourceName, \
QSize* size) +KoFilter::ConversionStatus MsooXmlImport::imageSize(const QString& \
sourceName, QSize& size)  {
     if (!m_zip) {
         return KoFilter::UsageError;
     }
+
     QString errorMessage;
-    const KoFilter::ConversionStatus status = Utils::imageSize(
-        m_zip, errorMessage, sourceName, size);
+    KoFilter::ConversionStatus status = KoFilter::OK;
+
+    const QMap<QString, QSize>::ConstIterator \
it(m_imageSizes.constFind(sourceName)); +    if (it == m_imageSizes.constEnd()) {
+        status = Utils::imageSize(m_zip, errorMessage, sourceName, &size);
+
+        if (status != KoFilter::OK)
+            size = QSize(-1, -1);
+        m_imageSizes.insert(sourceName, size);
+    }
+    else {
+        size = it.value();
+    }
+
 //! @todo transmit the error to the GUI...
     kDebug() << errorMessage;
     return status;
--- trunk/koffice/filters/libmsooxml/MsooXmlImport.h #1185018:1185019
@@ -83,7 +83,7 @@
     Size of the image is returned in @a size.
     @return KoFilter::OK on success.
     On failure @a errorMessage is set. */
-    KoFilter::ConversionStatus imageSize(const QString& sourceName, QSize* size);
+    KoFilter::ConversionStatus imageSize(const QString& sourceName, QSize& size);
 
 protected:
     virtual KoFilter::ConversionStatus createDocument(KoStore *outputStore,
@@ -153,6 +153,8 @@
     
     //! XML with document contents, typically /word/document.xml
     KoXmlDocument m_documentXML;
+
+    QMap<QString, QSize> m_imageSizes; //!< collects image sizes to avoid multiple \
checks  };
 
 } // namespace MSOOXML
--- trunk/koffice/filters/libmsooxml/MsooXmlVmlReaderImpl.h #1185018:1185019
@@ -707,6 +707,8 @@
     kDebug() << "imagedata:" << imagedata;
     if (!imagedata.isEmpty()) {
 //! @todo ooo saves binaries to the root dir; should we?
+        m_context->import->imageSize(imagedata, m_imageSize);
+
         m_imagedataPath = QLatin1String("Pictures/") + \
                imagedata.mid(imagedata.lastIndexOf('/') + 1);;
         RETURN_IF_ERROR( m_context->import->copyFile(imagedata, m_imagedataPath, \
false ) )  addManifestEntryForFile(m_imagedataPath);


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

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