[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-11-10 8:51:39
Message-ID: 20101110085139.BB0FFAC89E () svn ! kde ! org
[Download RAW message or body]

SVN commit 1194947 by lassin:

Fixed ole replacement pictures in xlsx files to have more sensible position & size.


 M  +2 -1      kspread/xlsx/XlsxXmlDocumentReader.cpp  
 M  +9 -11     kspread/xlsx/XlsxXmlWorksheetReader.cpp  
 M  +4 -1      kspread/xlsx/XlsxXmlWorksheetReader.h  
 M  +1 -0      kspread/xlsx/XlsxXmlWorksheetReader_p.h  
 M  +15 -0     libmsooxml/VmlDrawingReader.cpp  
 M  +5 -0      libmsooxml/VmlDrawingReader.h  


--- trunk/koffice/filters/kspread/xlsx/XlsxXmlDocumentReader.cpp #1194946:1194947
@@ -280,7 +280,8 @@
                                           *m_context->comments,
                                           *m_context->styles,
                                           *m_context->relationships, \
                m_context->import,
-                                          vmlreader.content());
+                                          vmlreader.content(),
+                                          vmlreader.frames());
     const KoFilter::ConversionStatus result = \
m_context->import->loadAndParseDocument(  &worksheetReader, filepath, &context);
     if (result != KoFilter::OK) {
--- trunk/koffice/filters/kspread/xlsx/XlsxXmlWorksheetReader.cpp #1194946:1194947
@@ -86,7 +86,8 @@
     const XlsxStyles& _styles,
     MSOOXML::MsooXmlRelationships& _relationships,
     XlsxImport* _import,
-    QMap<QString, QString> _oleReplacements)
+    QMap<QString, QString> _oleReplacements,
+    QMap<QString, QString> _oleBeginFrames)
         : MSOOXML::MsooXmlReaderContext(&_relationships)
         , sheet(new Sheet(_worksheetName))
         , worksheetNumber(_worksheetNumber)
@@ -100,6 +101,7 @@
         , path(_path)
         , file(_file)
         , oleReplacements(_oleReplacements)
+        , oleFrameBegins(_oleBeginFrames)
 {
 }
 
@@ -448,15 +450,12 @@
                     }
 
                     QPair<QString,QString> oleObject;
+                    int listIndex = 0;
                     foreach( oleObject, cell->oleObjects ) {
                         const QString olePath = oleObject.first;
                         const QString previewPath = oleObject.second;
-                        body->startElement("draw:frame");
-                        //TODO find out the proper values
-                        body->addAttribute("svg:x", "1cm");
-                        body->addAttribute("svg:y", "1cm");
-                        body->addAttribute("svg:width", "5cm");
-                        body->addAttribute("svg:height", "5cm");
+                        \
body->addCompleteElement(cell->oleFrameBegins.at(listIndex).toUtf8()); +              \
++listIndex;  
                         body->startElement("draw:object-ole");
                         body->addAttribute("xlink:href", olePath);
@@ -472,7 +471,7 @@
                         body->addAttribute("xlink:actuate", "onLoad");
                         body->endElement(); // draw:image
 
-                        body->endElement(); // draw:frame
+                        body->addCompleteElement("</draw:frame>");
                     }
                 }
                 body->endElement(); // table:table-cell
@@ -1370,12 +1369,11 @@
     QString fileName = link.right( link.lastIndexOf('/') +1 );
     RETURN_IF_ERROR( copyFile(link, "", fileName) )
 
-    QString filePath = m_context->oleReplacements.value(shapeId);
-
     //TODO find out which cell to pick
     Cell* cell = m_context->sheet->cell(0, 0, true);
 
-    cell->oleObjects << qMakePair<QString,QString>(fileName, filePath);
+    cell->oleObjects << qMakePair<QString,QString>(fileName, \
m_context->oleReplacements.value(shapeId)); +    cell->oleFrameBegins << \
m_context->oleFrameBegins.value(shapeId);  
     while (!atEnd()) {
         readNext();
--- trunk/koffice/filters/kspread/xlsx/XlsxXmlWorksheetReader.h #1194946:1194947
@@ -122,7 +122,9 @@
         const XlsxStyles& _styles,
         MSOOXML::MsooXmlRelationships& _relationships,
         XlsxImport* _import,
-        QMap<QString, QString> _oleReplacements);
+        QMap<QString, QString> _oleReplacements,
+        QMap<QString, QString> _oleBeginFrames);
+
     virtual ~XlsxXmlWorksheetReaderContext();
 
     Sheet* sheet;
@@ -139,6 +141,7 @@
     const QString file;
 
     QMap<QString, QString> oleReplacements;
+    QMap<QString, QString> oleFrameBegins;
 };
 
 #endif
--- trunk/koffice/filters/kspread/xlsx/XlsxXmlWorksheetReader_p.h #1194946:1194947
@@ -53,6 +53,7 @@
 
     //QPair< oleObjectFile, imageReplacementFile>
     QList< QPair<QString,QString> > oleObjects;
+    QList<QString> oleFrameBegins;
 
     Cell(Sheet* s, int columnIndex, int rowIndex) : sheet(s), column(columnIndex), \
row(rowIndex), rowsMerged(1), columnsMerged(1), isPlainText(true) {}  ~Cell() { \
                qDeleteAll(drawings); }
--- trunk/koffice/filters/libmsooxml/VmlDrawingReader.cpp #1194946:1194947
@@ -75,6 +75,11 @@
     return m_content;
 }
 
+QMap<QString, QString> VmlDrawingReader::frames()
+{
+    return m_frames;
+}
+
 KoFilter::ConversionStatus VmlDrawingReader::read(MSOOXML::MsooXmlReaderContext* \
context)  {
     m_context = static_cast<VmlDrawingReaderContext*>(context);
@@ -105,6 +110,7 @@
 KoFilter::ConversionStatus VmlDrawingReader::read_xml()
 {
     unsigned index = 0;
+    KoXmlWriter *oldBody = 0;
 
     while (!atEnd()) {
         readNext();
@@ -115,6 +121,15 @@
             if (qualifiedName() == "v:shape") {
                 TRY_READ(shape) //from vml
                 m_content[m_currentShapeId] = m_imagedataPath;
+                oldBody = body; // Body protetion starts
+                QBuffer frameBuf;
+                KoXmlWriter frameWriter(&frameBuf);
+                body = &frameWriter;
+                pushCurrentDrawStyle(new KoGenStyle(KoGenStyle::GraphicAutoStyle, \
"graphic")); +                createFrameStart();
+                popCurrentDrawStyle();
+                m_frames[m_currentShapeId] = QString::fromUtf8(frameBuf.buffer(), \
frameBuf.buffer().size()).append(">"); +                body = oldBody; // Body \
protection ends  ++index;
             }
         }
--- trunk/koffice/filters/libmsooxml/VmlDrawingReader.h #1194946:1194947
@@ -48,6 +48,7 @@
     virtual KoFilter::ConversionStatus read(MSOOXML::MsooXmlReaderContext* context = \
0);  
     QMap<QString, QString> content();
+    QMap<QString, QString> frames();
 
 #include <MsooXmlVmlReaderMethods.h>
 
@@ -62,6 +63,10 @@
     Private* const d;
     // List of draw:images meant to be used as object replacements
     QMap<QString, QString> m_content;
+
+    // List of beginning draw:frames meant to be used if the position is unknown \
otherwise +    // Note that the ending draw:frame still needs to be added by the \
calling program +    QMap<QString, QString> m_frames;
 };
 
 #endif //DOCXXMLHEADERREADER_H


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

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