[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