include/test/xmltesttools.hxx | 2 oox/source/export/drawingml.cxx | 318 +++++++++++++++--------------- oox/source/export/shapes.cxx | 44 +--- sd/qa/unit/data/bnc822347_EmptyBullet.odp |binary sd/qa/unit/export-tests.cxx | 37 +++ sd/qa/unit/sdmodeltestbase.hxx | 12 - sfx2/source/doc/objstor.cxx | 83 +++---- test/source/xmltesttools.cxx | 2 8 files changed, 269 insertions(+), 229 deletions(-)
New commits: commit 14fa2698f2f651343675761e75be01b84c4c5ff1 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Thu Aug 28 13:32:38 2014 +0200 bnc#822347: if number type is not set, skip numbering If numbering is detected then (level is > 0) and the number type is not set, the defult bullet symbol is written. This is not correct as the default should be SVX_NUM_NUMBER_NONE which should skip numbering or set it to none. With this change the numbering is skipped (as in MSO). Change-Id: I8d08a6325509c7bd6f96f64c8d29e5f3045458ca diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 12ec0a5..caf6d04 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1560,6 +1560,9 @@ void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sa } } + if (nNumberingType == SVX_NUM_NUMBER_NONE) + return; + if( !aGraphicURL.isEmpty() ) { OUString sRelId = WriteImage( aGraphicURL ); commit a870b029a072567cff06efb61fe915c621f178b4 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Thu Aug 28 13:04:32 2014 +0200 bnc#822347: Test for bullet character defined as '' - empty char. Change-Id: Ie771a5e53f04c0cd307d24a8bfc3ab7bc9a3094a diff --git a/sd/qa/unit/data/bnc822347_EmptyBullet.odp b/sd/qa/unit/data/bnc822347_EmptyBullet.odp new file mode 100644 index 0000000..73f7e02 Binary files /dev/null and b/sd/qa/unit/data/bnc822347_EmptyBullet.odp differ diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx index fa29403..0c856fd 100644 --- a/sd/qa/unit/export-tests.cxx +++ b/sd/qa/unit/export-tests.cxx @@ -8,6 +8,7 @@ */ #include "sdmodeltestbase.hxx" +#include "Outliner.hxx" #include <svl/stritem.hxx> #include <editeng/editobj.hxx> @@ -21,8 +22,11 @@ #include <editeng/numitem.hxx> #include <editeng/lrspitem.hxx> #include <editeng/postitem.hxx> +#include <editeng/bulletitem.hxx> + #include <rsc/rscsfx.hxx> +#include <svx/svdoutl.hxx> #include <svx/svdotext.hxx> #include <svx/svdoashp.hxx> #include <svx/svdograf.hxx> @@ -64,6 +68,7 @@ public: void testN828390(); void testBnc880763(); void testBnc862510_5(); + void testBnc822347_EmptyBullet(); CPPUNIT_TEST_SUITE(SdFiltersTest); CPPUNIT_TEST(testN821567); @@ -76,6 +81,7 @@ public: CPPUNIT_TEST(testN828390); CPPUNIT_TEST(testBnc880763); CPPUNIT_TEST(testBnc862510_5); + CPPUNIT_TEST(testBnc822347_EmptyBullet); CPPUNIT_TEST_SUITE_END(); }; @@ -420,6 +426,37 @@ void SdFiltersTest::testBnc862510_5() xDocShRef->DoClose(); } +// In numbering a bullet could be defined as empty (no character). +// When exporting to OOXML make sure that the bullet is ignored and +// not written into the file. +void SdFiltersTest::testBnc822347_EmptyBullet() +{ + sd::DrawDocShellRef xDocShRef = loadURL(getURLFromSrc("/sd/qa/unit/data/bnc822347_EmptyBullet.odp"), ODP); + xDocShRef = saveAndReload(xDocShRef, PPTX); + + SdDrawDocument* pDoc = xDocShRef->GetDoc(); + SdrOutliner* pOutliner = pDoc->GetInternalOutliner(); + const SdrPage* pPage = pDoc->GetPage(1); + SdrObject* pObject = pPage->GetObj(0); + SdrTextObj* pTextObject = dynamic_cast<SdrTextObj*>(pObject); + CPPUNIT_ASSERT(pTextObject); + + OutlinerParaObject* pOutlinerParagraphObject = pTextObject->GetOutlinerParaObject(); + const EditTextObject& aEdit = pOutlinerParagraphObject->GetTextObject(); + + OUString sText = aEdit.GetText(0); + CPPUNIT_ASSERT_EQUAL(OUString("M3 Feature Test"), sText); + + pOutliner->SetText(*pOutlinerParagraphObject); + CPPUNIT_ASSERT_EQUAL(sal_Int32(1), pOutliner->GetParagraphCount()); + + const sal_Int16 nDepth = pOutliner->GetDepth(0); + + CPPUNIT_ASSERT_EQUAL(sal_Int16(-1), nDepth); // depth >= 0 means that the paragraph has bullets enabled + + xDocShRef->DoClose(); +} + CPPUNIT_TEST_SUITE_REGISTRATION(SdFiltersTest); CPPUNIT_PLUGIN_IMPLEMENT(); commit 3f1f2d71009776072078897293b6b222492c102f Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Thu Aug 28 13:00:57 2014 +0200 drawingml: remove AUTONUM macro, unneded checks Change-Id: Ie0ad7ed9df9d0d1b19fa09b3a4b93a5cbd6b41c6 diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index e8c06f3..12ec0a5 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1386,11 +1386,12 @@ void DrawingML::WriteRun( Reference< XTextRange > rRun ) if( sText.isEmpty()) { Reference< XPropertySet > xPropSet( rRun, UNO_QUERY ); - try { - if( !xPropSet.is() || !( xPropSet->getPropertyValue( "PlaceholderText" ) >>= sText ) ) - return; - if( sText.isEmpty() ) - return; + try + { + if( !xPropSet.is() || !( xPropSet->getPropertyValue( "PlaceholderText" ) >>= sText ) ) + return; + if( sText.isEmpty() ) + return; } catch (const Exception &) { return; @@ -1422,44 +1423,45 @@ void DrawingML::WriteRun( Reference< XTextRange > rRun ) mpFS->endElementNS( XML_a, XML_r ); } -#define AUTONUM(x) \ - if( bPBoth ) \ - pAutoNumType = #x "ParenBoth"; \ - else if( bPBehind ) \ - pAutoNumType = #x "ParenR"; \ - else if( bSDot ) \ - pAutoNumType = #x "Period"; - -inline static const char* GetAutoNumType( sal_Int16 nNumberingType, bool bSDot, bool bPBehind, bool bPBoth ) +OUString GetAutoNumType(sal_Int16 nNumberingType, bool bSDot, bool bPBehind, bool bPBoth) { - const char* pAutoNumType = NULL; + OUString sPrefixSuffix; + + if (bPBoth) + sPrefixSuffix = "ParenBoth"; + else if (bPBehind) + sPrefixSuffix = "ParenR"; + else if (bSDot) + sPrefixSuffix = "Period"; switch( (SvxExtNumType)nNumberingType ) - { + { case SVX_NUM_CHARS_UPPER_LETTER_N : case SVX_NUM_CHARS_UPPER_LETTER : - AUTONUM( alphaUc ); - break; + return OUString("alphaUc") + sPrefixSuffix; + case SVX_NUM_CHARS_LOWER_LETTER_N : case SVX_NUM_CHARS_LOWER_LETTER : - AUTONUM( alphaLc ); - break; + return OUString("alphaLc") + sPrefixSuffix; + case SVX_NUM_ROMAN_UPPER : - AUTONUM( romanUc ); - break; + return OUString("romanUc") + sPrefixSuffix; + case SVX_NUM_ROMAN_LOWER : - AUTONUM( romanLc ); - break; + return OUString("romanLc") + sPrefixSuffix; + case SVX_NUM_ARABIC : - AUTONUM( arabic ) + { + if (sPrefixSuffix.isEmpty()) + return OUString("arabicPlain"); else - pAutoNumType = "arabicPlain"; - break; + return OUString("arabic") + sPrefixSuffix; + } default: break; - } + } - return pAutoNumType; + return OUString(); } void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sal_Int16 nLevel ) @@ -1520,7 +1522,6 @@ void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sa else if ( aPropName == "BulletChar" ) { aBulletChar = OUString ( *( (OUString*)pValue ) )[ 0 ]; - //printf ("bullet char: %d\n", aBulletChar.getStr()); } else if ( aPropName == "BulletFont" ) { @@ -1549,7 +1550,7 @@ void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sa if ( pPropValue[ i ].Value.getValueType() == cppu::UnoType<awt::Size>::get()) { // don't cast awt::Size to Size as on 64-bits they are not the same. - ::com::sun::star::awt::Size aSize; + css::awt::Size aSize; pPropValue[ i ].Value >>= aSize; //aBuGraSize.nA = aSize.Width; //aBuGraSize.nB = aSize.Height; @@ -1559,36 +1560,37 @@ void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sa } } - const char* pAutoNumType = GetAutoNumType( nNumberingType, bSDot, bPBehind, bPBoth ); + if( !aGraphicURL.isEmpty() ) + { + OUString sRelId = WriteImage( aGraphicURL ); - if( nLevel >= 0 ) + mpFS->startElementNS( XML_a, XML_buBlip, FSEND ); + mpFS->singleElementNS( XML_a, XML_blip, FSNS( XML_r, XML_embed ), USS( sRelId ), FSEND ); + mpFS->endElementNS( XML_a, XML_buBlip ); + } + else { - if( !aGraphicURL.isEmpty() ) - { - OUString sRelId = WriteImage( aGraphicURL ); + if( nBulletRelSize && nBulletRelSize != 100 ) + mpFS->singleElementNS( XML_a, XML_buSzPct, + XML_val, IS( std::max( (sal_Int32)25000, std::min( (sal_Int32)400000, 1000*( (sal_Int32)nBulletRelSize ) ) ) ), FSEND ); + if( bHasFontDesc ) + mpFS->singleElementNS( XML_a, XML_buFont, + XML_typeface, OUStringToOString( aFontDesc.Name, RTL_TEXTENCODING_UTF8 ).getStr(), + XML_charset, (aFontDesc.CharSet == awt::CharSet::SYMBOL) ? "2" : NULL, + FSEND ); - mpFS->startElementNS( XML_a, XML_buBlip, FSEND ); - mpFS->singleElementNS( XML_a, XML_blip, FSNS( XML_r, XML_embed ), USS( sRelId ), FSEND ); - mpFS->endElementNS( XML_a, XML_buBlip ); + OUString pAutoNumType = GetAutoNumType( nNumberingType, bSDot, bPBehind, bPBoth ); + + if (!pAutoNumType.isEmpty()) + { + mpFS->singleElementNS(XML_a, XML_buAutoNum, + XML_type, OUStringToOString(pAutoNumType, RTL_TEXTENCODING_UTF8).getStr(), + FSEND); } else { - if( nBulletRelSize && nBulletRelSize != 100 ) - mpFS->singleElementNS( XML_a, XML_buSzPct, - XML_val, IS( std::max( (sal_Int32)25000, std::min( (sal_Int32)400000, 1000*( (sal_Int32)nBulletRelSize ) ) ) ), FSEND ); - if( bHasFontDesc ) - mpFS->singleElementNS( XML_a, XML_buFont, - XML_typeface, OUStringToOString( aFontDesc.Name, RTL_TEXTENCODING_UTF8 ).getStr(), - XML_charset, (aFontDesc.CharSet == awt::CharSet::SYMBOL) ? "2" : NULL, - FSEND ); - - if( pAutoNumType ) - mpFS->singleElementNS( XML_a, XML_buAutoNum, XML_type, pAutoNumType, FSEND ); - else - { - aBulletChar = SubstituteBullet( aBulletChar, aFontDesc ); - mpFS->singleElementNS( XML_a, XML_buChar, XML_char, USS( OUString( aBulletChar ) ), FSEND ); - } + aBulletChar = SubstituteBullet( aBulletChar, aFontDesc ); + mpFS->singleElementNS(XML_a, XML_buChar, XML_char, USS( OUString( aBulletChar ) ), FSEND); } } } commit 2fa3aed1cb779b15773d98af23a3f705dc949f05 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Thu Aug 28 12:54:35 2014 +0200 parseXml should return xmlDocPtr instead of htmlDocPtr Change-Id: Ia9fb79ea40ca840d7328a078e747ad64a63d18f1 diff --git a/include/test/xmltesttools.hxx b/include/test/xmltesttools.hxx index 058bbc2..6709c1c 100644 --- a/include/test/xmltesttools.hxx +++ b/include/test/xmltesttools.hxx @@ -35,7 +35,7 @@ protected: XmlTestTools(); virtual ~XmlTestTools(); - htmlDocPtr parseXml(utl::TempFile& aTempFile); + xmlDocPtr parseXml(utl::TempFile& aTempFile); virtual void registerNamespaces(xmlXPathContextPtr& pXmlXpathCtx); diff --git a/sd/qa/unit/sdmodeltestbase.hxx b/sd/qa/unit/sdmodeltestbase.hxx index 20cdacc..a5d1133 100644 --- a/sd/qa/unit/sdmodeltestbase.hxx +++ b/sd/qa/unit/sdmodeltestbase.hxx @@ -29,8 +29,13 @@ using namespace ::com::sun::star; -struct FileFormat { - const char* pName; const char* pFilterName; const char* pTypeName; const char* pUserData; sal_uLong nFormatType; +struct FileFormat +{ + const char* pName; + const char* pFilterName; + const char* pTypeName; + const char* pUserData; + sal_uLong nFormatType; }; // These values are taken from "Flags" in filter/source/config/fragments/filters/* @@ -47,7 +52,8 @@ pFilterName: <node oor:Name="..."> pTypeName: <prop oor:Name="UIName">...</prop> nFormatType: <prop oor:name="Flags">...</prop> */ -FileFormat aFileFormats[] = { +FileFormat aFileFormats[] = +{ { "odp", "impress8", "impress8", "", ODP_FORMAT_TYPE }, { "ppt", "MS PowerPoint 97", "Microsoft PowerPoint 97/2000/XP/2003", "sdfilt", PPT_FORMAT_TYPE }, { "pptx", "Impress MS PowerPoint 2007 XML", "MS PowerPoint 2007 XML", "", PPTX_FORMAT_TYPE }, diff --git a/test/source/xmltesttools.cxx b/test/source/xmltesttools.cxx index 129e286..d70ee86 100644 --- a/test/source/xmltesttools.cxx +++ b/test/source/xmltesttools.cxx @@ -17,7 +17,7 @@ XmlTestTools::XmlTestTools() XmlTestTools::~XmlTestTools() {} -htmlDocPtr XmlTestTools::parseXml(utl::TempFile& aTempFile) +xmlDocPtr XmlTestTools::parseXml(utl::TempFile& aTempFile) { SvFileStream aFileStream(aTempFile.GetURL(), STREAM_READ); return parseXmlStream(&aFileStream); commit c75bddd73b125453b1d3f355195ad964bf27af28 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Wed Aug 27 17:04:02 2014 +0200 reduce nesting in WriteParagraphNumbering Change-Id: I49a3c3449d8354ce5e2a6e42414fbefdfc489388 diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 0df7e6c..e8c06f3 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1464,115 +1464,133 @@ inline static const char* GetAutoNumType( sal_Int16 nNumberingType, bool bSDot, void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sal_Int16 nLevel ) { - if( nLevel >= 0 && GETA( NumberingRules ) ) - { - Reference< XIndexAccess > rXIndexAccess; + if( nLevel < 0 || !GETA( NumberingRules ) ) + return; + + Reference< XIndexAccess > rXIndexAccess; + + if (!(mAny >>= rXIndexAccess) || nLevel >= rXIndexAccess->getCount()) + return; + + DBG(fprintf (stderr, "numbering rules\n")); + + Sequence<PropertyValue> aPropertySequence; + rXIndexAccess->getByIndex(nLevel) >>= aPropertySequence; + + if (!aPropertySequence.hasElements()) + return; + + sal_Int32 nPropertyCount = aPropertySequence.getLength(); + + const PropertyValue* pPropValue = aPropertySequence.getArray(); + + sal_Int16 nNumberingType = SVX_NUM_NUMBER_NONE; + bool bSDot = false; + bool bPBehind = false; + bool bPBoth = false; + sal_Unicode aBulletChar = 0x2022; // a bullet + awt::FontDescriptor aFontDesc; + bool bHasFontDesc = false; + OUString aGraphicURL; + sal_Int16 nBulletRelSize = 0; - if ( ( mAny >>= rXIndexAccess ) && nLevel < rXIndexAccess->getCount() ) + for ( sal_Int32 i = 0; i < nPropertyCount; i++ ) + { + const void* pValue = pPropValue[ i ].Value.getValue(); + if ( pValue ) { - DBG(fprintf (stderr, "numbering rules\n")); - - Sequence< PropertyValue > aPropertySequence; - rXIndexAccess->getByIndex( nLevel ) >>= aPropertySequence; - - const PropertyValue* pPropValue = aPropertySequence.getArray(); - - sal_Int32 nPropertyCount = aPropertySequence.getLength(); - - if ( nPropertyCount ) { - - sal_Int16 nNumberingType = SVX_NUM_NUMBER_NONE; - bool bSDot = false; - bool bPBehind = false; - bool bPBoth = false; - sal_Unicode aBulletChar = 0x2022; // a bullet - awt::FontDescriptor aFontDesc; - bool bHasFontDesc = false; - OUString aGraphicURL; - sal_Int16 nBulletRelSize = 0; - - for ( sal_Int32 i = 0; i < nPropertyCount; i++ ) { - const void* pValue = pPropValue[ i ].Value.getValue(); - if ( pValue ) { - OUString aPropName( pPropValue[ i ].Name ); - DBG(fprintf (stderr, "pro name: %s\n", OUStringToOString( aPropName, RTL_TEXTENCODING_UTF8 ).getStr())); - if ( aPropName == "NumberingType" ) - nNumberingType = *( (sal_Int16*)pValue ); - else if ( aPropName == "Prefix" ) { - if( *(OUString*)pValue == ")") - bPBoth = true; - } else if ( aPropName == "Suffix" ) { - if( *(OUString*)pValue == ".") - bSDot = true; - else if( *(OUString*)pValue == ")") - bPBehind = true; - } else if ( aPropName == "BulletChar" ) - { - aBulletChar = OUString ( *( (OUString*)pValue ) )[ 0 ]; - //printf ("bullet char: %d\n", aBulletChar.getStr()); - } - else if ( aPropName == "BulletFont" ) - { - aFontDesc = *( (awt::FontDescriptor*)pValue ); - bHasFontDesc = true; - - // Our numbullet dialog has set the wrong textencoding for our "StarSymbol" font, - // instead of a Unicode encoding the encoding RTL_TEXTENCODING_SYMBOL was used. - // Because there might exist a lot of damaged documemts I added this two lines - // which fixes the bullet problem for the export. - if ( aFontDesc.Name.equalsIgnoreAsciiCase("StarSymbol") ) - aFontDesc.CharSet = RTL_TEXTENCODING_MS_1252; - - } else if ( aPropName == "BulletRelSize" ) { - nBulletRelSize = *( (sal_Int16*)pValue ); - } else if ( aPropName == "GraphicURL" ) { - aGraphicURL = ( *(OUString*)pValue ); - DBG(fprintf (stderr, "graphic url: %s\n", OUStringToOString( aGraphicURL, RTL_TEXTENCODING_UTF8 ).getStr())); - } else if ( aPropName == "GraphicSize" ) - { - if ( pPropValue[ i ].Value.getValueType() == cppu::UnoType<awt::Size>::get()) - { - // don't cast awt::Size to Size as on 64-bits they are not the same. - ::com::sun::star::awt::Size aSize; - pPropValue[ i ].Value >>= aSize; - //aBuGraSize.nA = aSize.Width; - //aBuGraSize.nB = aSize.Height; - DBG(fprintf(stderr, "graphic size: %dx%d\n", int( aSize.Width ), int( aSize.Height ))); - } - } - } - } + OUString aPropName( pPropValue[ i ].Name ); + DBG(fprintf (stderr, "pro name: %s\n", OUStringToOString( aPropName, RTL_TEXTENCODING_UTF8 ).getStr())); + if ( aPropName == "NumberingType" ) + { + nNumberingType = *( (sal_Int16*)pValue ); + } + else if ( aPropName == "Prefix" ) + { + if( *(OUString*)pValue == ")") + bPBoth = true; + } + else if ( aPropName == "Suffix" ) + { + if( *(OUString*)pValue == ".") + bSDot = true; + else if( *(OUString*)pValue == ")") + bPBehind = true; + } + else if ( aPropName == "BulletChar" ) + { + aBulletChar = OUString ( *( (OUString*)pValue ) )[ 0 ]; + //printf ("bullet char: %d\n", aBulletChar.getStr()); + } + else if ( aPropName == "BulletFont" ) + { + aFontDesc = *( (awt::FontDescriptor*)pValue ); + bHasFontDesc = true; - const char* pAutoNumType = GetAutoNumType( nNumberingType, bSDot, bPBehind, bPBoth ); - - if( nLevel >= 0 ) { - if( !aGraphicURL.isEmpty() ) { - OUString sRelId = WriteImage( aGraphicURL ); - - mpFS->startElementNS( XML_a, XML_buBlip, FSEND ); - mpFS->singleElementNS( XML_a, XML_blip, FSNS( XML_r, XML_embed ), USS( sRelId ), FSEND ); - mpFS->endElementNS( XML_a, XML_buBlip ); - } else { - if( nBulletRelSize && nBulletRelSize != 100 ) - mpFS->singleElementNS( XML_a, XML_buSzPct, - XML_val, IS( std::max( (sal_Int32)25000, std::min( (sal_Int32)400000, 1000*( (sal_Int32)nBulletRelSize ) ) ) ), FSEND ); - if( bHasFontDesc ) - mpFS->singleElementNS( XML_a, XML_buFont, - XML_typeface, OUStringToOString( aFontDesc.Name, RTL_TEXTENCODING_UTF8 ).getStr(), - XML_charset, (aFontDesc.CharSet == awt::CharSet::SYMBOL) ? "2" : NULL, - FSEND ); - - if( pAutoNumType ) - mpFS->singleElementNS( XML_a, XML_buAutoNum, XML_type, pAutoNumType, FSEND ); - else { - aBulletChar = SubstituteBullet( aBulletChar, aFontDesc ); - mpFS->singleElementNS( XML_a, XML_buChar, XML_char, USS( OUString( aBulletChar ) ), FSEND ); - } - } + // Our numbullet dialog has set the wrong textencoding for our "StarSymbol" font, + // instead of a Unicode encoding the encoding RTL_TEXTENCODING_SYMBOL was used. + // Because there might exist a lot of damaged documemts I added this two lines + // which fixes the bullet problem for the export. + if ( aFontDesc.Name.equalsIgnoreAsciiCase("StarSymbol") ) + aFontDesc.CharSet = RTL_TEXTENCODING_MS_1252; + + } + else if ( aPropName == "BulletRelSize" ) + { + nBulletRelSize = *( (sal_Int16*)pValue ); + } + else if ( aPropName == "GraphicURL" ) + { + aGraphicURL = ( *(OUString*)pValue ); + DBG(fprintf (stderr, "graphic url: %s\n", OUStringToOString( aGraphicURL, RTL_TEXTENCODING_UTF8 ).getStr())); + } + else if ( aPropName == "GraphicSize" ) + { + if ( pPropValue[ i ].Value.getValueType() == cppu::UnoType<awt::Size>::get()) + { + // don't cast awt::Size to Size as on 64-bits they are not the same. + ::com::sun::star::awt::Size aSize; + pPropValue[ i ].Value >>= aSize; + //aBuGraSize.nA = aSize.Width; + //aBuGraSize.nB = aSize.Height; + DBG(fprintf(stderr, "graphic size: %dx%d\n", int( aSize.Width ), int( aSize.Height ))); } } } } + + const char* pAutoNumType = GetAutoNumType( nNumberingType, bSDot, bPBehind, bPBoth ); + + if( nLevel >= 0 ) + { + if( !aGraphicURL.isEmpty() ) + { + OUString sRelId = WriteImage( aGraphicURL ); + + mpFS->startElementNS( XML_a, XML_buBlip, FSEND ); + mpFS->singleElementNS( XML_a, XML_blip, FSNS( XML_r, XML_embed ), USS( sRelId ), FSEND ); + mpFS->endElementNS( XML_a, XML_buBlip ); + } + else + { + if( nBulletRelSize && nBulletRelSize != 100 ) + mpFS->singleElementNS( XML_a, XML_buSzPct, + XML_val, IS( std::max( (sal_Int32)25000, std::min( (sal_Int32)400000, 1000*( (sal_Int32)nBulletRelSize ) ) ) ), FSEND ); + if( bHasFontDesc ) + mpFS->singleElementNS( XML_a, XML_buFont, + XML_typeface, OUStringToOString( aFontDesc.Name, RTL_TEXTENCODING_UTF8 ).getStr(), + XML_charset, (aFontDesc.CharSet == awt::CharSet::SYMBOL) ? "2" : NULL, + FSEND ); + + if( pAutoNumType ) + mpFS->singleElementNS( XML_a, XML_buAutoNum, XML_type, pAutoNumType, FSEND ); + else + { + aBulletChar = SubstituteBullet( aBulletChar, aFontDesc ); + mpFS->singleElementNS( XML_a, XML_buChar, XML_char, USS( OUString( aBulletChar ) ), FSEND ); + } + } + } } const char* DrawingML::GetAlignment( sal_Int32 nAlignment ) commit 1edf2c0f1b77a8bcafd004a449ff88aa6e7f42f8 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Wed Aug 27 16:52:38 2014 +0200 drawingml: Use SVX_NUM_NUMBER_NONE as default numbering type Change-Id: I159fcf41fdb6c49687004e959d4032aef28678a5 diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 97e2dd7..0df7e6c 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -1481,7 +1481,7 @@ void DrawingML::WriteParagraphNumbering( Reference< XPropertySet > rXPropSet, sa if ( nPropertyCount ) { - sal_Int16 nNumberingType = -1; + sal_Int16 nNumberingType = SVX_NUM_NUMBER_NONE; bool bSDot = false; bool bPBehind = false; bool bPBoth = false; commit 64c4a651c8d1f12b3c8de415fa507071e15f3da8 Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Wed Aug 27 10:27:52 2014 +0200 sanitize "using" and "using namespace" declarations Change-Id: I0b0cccc2d9cfe721c1ed421e614c4350a6b3dc7c diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx index 598a330..97e2dd7 100644 --- a/oox/source/export/drawingml.cxx +++ b/oox/source/export/drawingml.cxx @@ -79,27 +79,18 @@ #include <svx/svdoashp.hxx> #include <svx/unoshape.hxx> -using namespace ::com::sun::star; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::drawing; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::style; -using namespace ::com::sun::star::text; -using namespace ::com::sun::star::uno; -using ::com::sun::star::beans::PropertyState; -using ::com::sun::star::beans::PropertyValue; -using ::com::sun::star::beans::XPropertySet; -using ::com::sun::star::beans::XPropertyState; -using ::com::sun::star::container::XEnumeration; -using ::com::sun::star::container::XEnumerationAccess; -using ::com::sun::star::container::XIndexAccess; -using ::com::sun::star::geometry::IntegerRectangle2D; -using ::com::sun::star::io::XOutputStream; -using ::com::sun::star::style::LineSpacing; -using ::com::sun::star::text::XText; -using ::com::sun::star::text::XTextContent; -using ::com::sun::star::text::XTextField; -using ::com::sun::star::text::XTextRange; +using namespace ::css; +using namespace ::css::beans; +using namespace ::css::drawing; +using namespace ::css::i18n; +using namespace ::css::style; +using namespace ::css::text; +using namespace ::css::uno; +using namespace ::css::container; +using namespace ::css::text; + +using ::css::geometry::IntegerRectangle2D; +using ::css::io::XOutputStream; using ::sax_fastparser::FSHelperPtr; namespace oox { diff --git a/oox/source/export/shapes.cxx b/oox/source/export/shapes.cxx index 4389e3e..fc14776 100644 --- a/oox/source/export/shapes.cxx +++ b/oox/source/export/shapes.cxx @@ -76,34 +76,24 @@ #include <svx/unoapi.hxx> #include <oox/export/chartexport.hxx> -using namespace ::com::sun::star; -using namespace ::com::sun::star::beans; -using namespace ::com::sun::star::uno; -using namespace ::com::sun::star::drawing; -using namespace ::com::sun::star::i18n; -using namespace ::com::sun::star::table; -using ::com::sun::star::beans::PropertyState; -using ::com::sun::star::beans::PropertyValue; -using ::com::sun::star::beans::XPropertySet; -using ::com::sun::star::beans::XPropertyState; -using ::com::sun::star::container::XEnumeration; -using ::com::sun::star::container::XEnumerationAccess; -using ::com::sun::star::container::XIndexAccess; -using ::com::sun::star::document::XExporter; -using ::com::sun::star::document::XFilter; -using ::com::sun::star::drawing::FillStyle; -using ::com::sun::star::graphic::XGraphic; -using ::com::sun::star::io::XOutputStream; -using ::com::sun::star::lang::XComponent; -using ::com::sun::star::text::XSimpleText; -using ::com::sun::star::text::XText; -using ::com::sun::star::text::XTextContent; -using ::com::sun::star::text::XTextField; -using ::com::sun::star::text::XTextRange; +using namespace ::css; +using namespace ::css::beans; +using namespace ::css::uno; +using namespace ::css::drawing; +using namespace ::css::i18n; +using namespace ::css::table; +using namespace ::css::container; +using namespace ::css::document; +using namespace ::css::text; + +using ::css::graphic::XGraphic; +using ::css::io::XOutputStream; +using ::css::lang::XComponent; +using ::css::chart2::XChartDocument; +using ::css::frame::XModel; +using ::css::sheet::XSpreadsheetDocument; + using ::oox::core::XmlFilterBase; -using ::com::sun::star::chart2::XChartDocument; -using ::com::sun::star::frame::XModel; -using ::com::sun::star::sheet::XSpreadsheetDocument; using ::sax_fastparser::FSHelperPtr; #define IDS(x) OString(OStringLiteral(#x " ") + OString::number( mnShapeIdMax++ )).getStr() commit 772323b4a94e18794f9932f34297c26974e17c5a Author: Tomaž Vajngerl <tomaz.vajng...@collabora.com> Date: Tue Aug 26 19:02:37 2014 +0200 Reduce nesting / style in thumbnail creation routines Change-Id: I733b677f4d4c7dfdf6fef531b43e1de36131f55d diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx index 6e8b659..a79ea8c 100644 --- a/sfx2/source/doc/objstor.cxx +++ b/sfx2/source/doc/objstor.cxx @@ -3512,28 +3512,25 @@ bool SfxObjectShell::CopyStoragesOfUnknownMediaType( const uno::Reference< embed return bResult; } -bool SfxObjectShell::GenerateAndStoreThumbnail( bool bEncrypted, - bool bIsTemplate, - const uno::Reference< embed::XStorage >& xStor ) +bool SfxObjectShell::GenerateAndStoreThumbnail(bool bEncrypted, bool bIsTemplate, const uno::Reference<embed::XStorage>& xStorage) { - bIsInGenerateThumbnail = true;//optimize thumbnail generate and store procedure to improve odt saving performance, i120030 + //optimize thumbnail generate and store procedure to improve odt saving performance, i120030 + bIsInGenerateThumbnail = true; bool bResult = false; - try { - uno::Reference< embed::XStorage > xThumbnailStor = - xStor->openStorageElement( OUString("Thumbnails"), - embed::ElementModes::READWRITE ); - if ( xThumbnailStor.is() ) + try + { + uno::Reference<embed::XStorage> xThumbnailStorage = xStorage->openStorageElement(OUString("Thumbnails"), embed::ElementModes::READWRITE); + + if (xThumbnailStorage.is()) { - uno::Reference< io::XStream > xStream = xThumbnailStor->openStreamElement( - OUString("thumbnail.png"), - embed::ElementModes::READWRITE ); + uno::Reference<io::XStream> xStream = xThumbnailStorage->openStreamElement(OUString("thumbnail.png"), embed::ElementModes::READWRITE); if (xStream.is() && WriteThumbnail(bEncrypted, bIsTemplate, xStream)) { - uno::Reference< embed::XTransactedObject > xTransact( xThumbnailStor, uno::UNO_QUERY_THROW ); - xTransact->commit(); + uno::Reference<embed::XTransactedObject> xTransactedObject(xThumbnailStorage, uno::UNO_QUERY_THROW); + xTransactedObject->commit(); bResult = true; } } @@ -3542,49 +3539,45 @@ bool SfxObjectShell::GenerateAndStoreThumbnail( bool bEncrypted, { } - bIsInGenerateThumbnail = false;//optimize thumbnail generate and store procedure to improve odt saving performance, i120030 + //optimize thumbnail generate and store procedure to improve odt saving performance, i120030 + bIsInGenerateThumbnail = false; return bResult; } -bool SfxObjectShell::WriteThumbnail( bool bEncrypted, - bool bIsTemplate, - const uno::Reference< io::XStream >& xStream ) +bool SfxObjectShell::WriteThumbnail(bool bEncrypted, bool bIsTemplate, const uno::Reference<io::XStream>& xStream) { bool bResult = false; - if ( xStream.is() ) + if (!xStream.is()) + return false; + + try { - try { - uno::Reference< io::XTruncate > xTruncate( xStream->getOutputStream(), uno::UNO_QUERY_THROW ); - xTruncate->truncate(); - - uno::Reference < beans::XPropertySet > xSet( xStream, uno::UNO_QUERY ); - if ( xSet.is() ) - xSet->setPropertyValue("MediaType", - uno::makeAny( OUString("image/png") ) ); - if ( bEncrypted ) - { - sal_uInt16 nResID = GraphicHelper::getThumbnailReplacementIDByFactoryName_Impl( - OUString::createFromAscii( GetFactory().GetShortName() ), - bIsTemplate ); - if ( nResID ) - bResult = GraphicHelper::getThumbnailReplacement_Impl(nResID, xStream); - } - else + uno::Reference<io::XTruncate> xTruncate(xStream->getOutputStream(), uno::UNO_QUERY_THROW); + xTruncate->truncate(); + + uno::Reference <beans::XPropertySet> xSet(xStream, uno::UNO_QUERY); + if (xSet.is()) + xSet->setPropertyValue("MediaType", uno::makeAny(OUString("image/png"))); + if (bEncrypted) + { + OUString sFactoryName = OUString::createFromAscii(GetFactory().GetShortName()); + sal_uInt16 nResID = GraphicHelper::getThumbnailReplacementIDByFactoryName_Impl(sFactoryName, bIsTemplate); + if (nResID) + bResult = GraphicHelper::getThumbnailReplacement_Impl(nResID, xStream); + } + else + { + boost::shared_ptr<GDIMetaFile> pMetaFile = GetPreviewMetaFile(false); + if (pMetaFile) { - ::boost::shared_ptr<GDIMetaFile> pMetaFile = - GetPreviewMetaFile( false ); - if ( pMetaFile ) - { - bResult = GraphicHelper::getThumbnailFormatFromGDI_Impl( - pMetaFile.get(), xStream); - } + bResult = GraphicHelper::getThumbnailFormatFromGDI_Impl(pMetaFile.get(), xStream); } } - catch( uno::Exception& ) - {} } + catch(uno::Exception&) + {} return bResult; }
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits