summaryrefslogtreecommitdiff
path: root/oox/source/drawingml/textparagraph.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'oox/source/drawingml/textparagraph.cxx')
-rw-r--r--oox/source/drawingml/textparagraph.cxx130
1 files changed, 130 insertions, 0 deletions
diff --git a/oox/source/drawingml/textparagraph.cxx b/oox/source/drawingml/textparagraph.cxx
new file mode 100644
index 000000000000..a4bef1a5013c
--- /dev/null
+++ b/oox/source/drawingml/textparagraph.cxx
@@ -0,0 +1,130 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU Lesser General Public License version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+
+#include "oox/drawingml/textparagraph.hxx"
+#include "oox/drawingml/drawingmltypes.hxx"
+
+#include <rtl/ustring.hxx>
+#include "oox/helper/propertyset.hxx"
+#include <com/sun/star/text/XText.hpp>
+#include <com/sun/star/text/XTextCursor.hpp>
+#include <com/sun/star/text/ControlCharacter.hpp>
+
+using ::rtl::OUString;
+using namespace ::com::sun::star::text;
+using namespace ::com::sun::star::uno;
+using namespace ::com::sun::star::beans;
+using namespace ::com::sun::star::frame;
+
+namespace oox { namespace drawingml {
+
+TextParagraph::TextParagraph()
+{
+}
+
+TextParagraph::~TextParagraph()
+{
+}
+
+void TextParagraph::insertAt(
+ const ::oox::core::XmlFilterBase& rFilterBase,
+ const Reference < XText > &xText,
+ const Reference < XTextCursor > &xAt,
+ const TextCharacterProperties& rTextStyleProperties,
+ const TextListStyle& rTextListStyle, bool bFirst) const
+{
+ try {
+ sal_Int32 nParagraphSize = 0;
+ Reference< XTextRange > xStart( xAt, UNO_QUERY );
+
+ sal_Int16 nLevel = maProperties.getLevel();
+ const TextParagraphPropertiesVector& rListStyle = rTextListStyle.getListStyle();
+ if ( nLevel >= static_cast< sal_Int16 >( rListStyle.size() ) )
+ nLevel = 0;
+ TextParagraphPropertiesPtr pTextParagraphStyle;
+ if ( rListStyle.size() )
+ pTextParagraphStyle = rListStyle[ nLevel ];
+
+ TextCharacterProperties aTextCharacterStyle( rTextStyleProperties );
+ if ( pTextParagraphStyle.get() )
+ aTextCharacterStyle.assignUsed( pTextParagraphStyle->getTextCharacterProperties() );
+ aTextCharacterStyle.assignUsed( maProperties.getTextCharacterProperties() );
+
+ if( !bFirst )
+ {
+ xText->insertControlCharacter( xStart, ControlCharacter::APPEND_PARAGRAPH, sal_False );
+ xAt->gotoEnd( sal_True );
+ }
+ if ( maRuns.begin() == maRuns.end() )
+ {
+ PropertySet aPropSet( xStart );
+
+ TextCharacterProperties aTextCharacterProps( aTextCharacterStyle );
+ aTextCharacterProps.assignUsed( maEndProperties );
+ aTextCharacterProps.pushToPropSet( aPropSet, rFilterBase );
+ }
+ else
+ {
+ for( TextRunVector::const_iterator aIt = maRuns.begin(), aEnd = maRuns.end(); aIt != aEnd; ++aIt )
+ {
+ (*aIt)->insertAt( rFilterBase, xText, xAt, aTextCharacterStyle );
+ nParagraphSize += (*aIt)->getText().getLength();
+ }
+ }
+ xAt->gotoEnd( sal_True );
+
+ PropertyMap aioBulletList;
+ Reference< XPropertySet > xProps( xStart, UNO_QUERY);
+ float fCharacterSize = 18;
+ if ( pTextParagraphStyle.get() )
+ {
+ pTextParagraphStyle->pushToPropSet( rFilterBase, xProps, aioBulletList, NULL, sal_False, fCharacterSize );
+ fCharacterSize = pTextParagraphStyle->getCharHeightPoints( 18 );
+ }
+ maProperties.pushToPropSet( rFilterBase, xProps, aioBulletList, &pTextParagraphStyle->getBulletList(), sal_True, fCharacterSize );
+
+ // empty paragraphs do not have bullets in ppt
+ if ( !nParagraphSize )
+ {
+ const OUString sNumberingLevel( CREATE_OUSTRING( "NumberingLevel" ) );
+ xProps->setPropertyValue( sNumberingLevel, Any( static_cast< sal_Int16 >( -1 ) ) );
+ }
+
+// FIXME this is causing a lot of dispruption (ie does not work). I wonder what to do -- Hub
+// Reference< XTextRange > xEnd( xAt, UNO_QUERY );
+// Reference< XPropertySet > xProps2( xEnd, UNO_QUERY );
+// mpEndProperties->pushToPropSet( xProps2 );
+ }
+ catch( Exception & )
+ {
+ OSL_TRACE("OOX: exception in TextParagraph::insertAt");
+ }
+}
+
+
+} }
+