[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