diff options
author | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2011-08-23 15:07:32 +0200 |
---|---|---|
committer | Bjoern Michaelsen <bjoern.michaelsen@canonical.com> | 2011-08-23 15:07:32 +0200 |
commit | 99effbc418feee675b6fd54a07c2f68d927de469 (patch) | |
tree | b9a415494780c6cb86d0dfcf2d69a9da9cc436bd /sdext/source/pdfimport/tree/drawtreevisiting.cxx | |
parent | f76f752dc908cfbab1cade605fe4f742233dfa6d (diff) |
recreated tag libreoffice-3.3.0.4 which had these commits:
commit 01c917c0bdbb833cda4a0a77bc10264c4d40fcd5 (tag: refs/tags/libreoffice-3.3.0.4, refs/remotes/origin/libreoffice-3-3-0)
Author: Petr Mladek <pmladek@suse.cz>
Date: Tue Jan 18 19:01:16 2011 +0100
Version 3.3.0.4, tag libreoffice-3.3.0.4 (3.3-rc4)
commit 983cd7d8b4d9c87f872472343f8399cb640cfb9a
Author: Rene Engelhard <rene@debian.org>
Date: Wed Jan 12 10:03:30 2011 +0100
fix presenter screens description.xml build
sdext/source/presenter/makefile.mk | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
commit cb68579984b772fcbccd673f9cf930b4828d6fde
Author: Petr Mladek <pmladek@suse.cz>
Date: Tue Jan 11 22:59:36 2011 +0100
Branch libreoffice-3-3-0
This is 'libreoffice-3-3-0' - the stable branch for the 3.3.0 release.
Only very safe changes, reviewed by three people are allowed.
If you want to commit more complicated fix for the next 3.3.x release,
please use the 'libreoffice-3-3' branch.
If you want to build something cool, unstable, and risky, use master.
Notes
split repo tag: extensions_libreoffice-3.3.0.4
Diffstat (limited to 'sdext/source/pdfimport/tree/drawtreevisiting.cxx')
-rw-r--r-- | sdext/source/pdfimport/tree/drawtreevisiting.cxx | 234 |
1 files changed, 117 insertions, 117 deletions
diff --git a/sdext/source/pdfimport/tree/drawtreevisiting.cxx b/sdext/source/pdfimport/tree/drawtreevisiting.cxx index bc24000025c2..bb6c6c6d3451 100644 --- a/sdext/source/pdfimport/tree/drawtreevisiting.cxx +++ b/sdext/source/pdfimport/tree/drawtreevisiting.cxx @@ -2,7 +2,7 @@ /************************************************************************* * * 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 @@ -80,19 +80,19 @@ const ::com::sun::star::uno::Reference< ::com::sun::star::i18n::XBreakIterator > return mxBreakIter; } -void DrawXmlEmitter::visit( HyperlinkElement& elem, const std::list< Element* >::const_iterator& ) -{ +void DrawXmlEmitter::visit( HyperlinkElement& elem, const std::list< Element* >::const_iterator& ) +{ if( elem.Children.empty() ) return; - + const char* pType = dynamic_cast<DrawElement*>(elem.Children.front()) ? "draw:a" : "text:a"; - + PropertyMap aProps; aProps[ USTR( "xlink:type" ) ] = USTR( "simple" ); aProps[ USTR( "xlink:href" ) ] = elem.URI; aProps[ USTR( "office:target-frame-name" ) ] = USTR( "_blank" ); aProps[ USTR( "xlink:show" ) ] = USTR( "new" ); - + m_rEmitContext.rEmitter.beginTag( pType, aProps ); std::list< Element* >::iterator this_it = elem.Children.begin(); while( this_it !=elem.Children.end() && *this_it != &elem ) @@ -103,18 +103,18 @@ void DrawXmlEmitter::visit( HyperlinkElement& elem, const std::list< Element* >: m_rEmitContext.rEmitter.endTag( pType ); } -void DrawXmlEmitter::visit( TextElement& elem, const std::list< Element* >::const_iterator& ) +void DrawXmlEmitter::visit( TextElement& elem, const std::list< Element* >::const_iterator& ) { if( ! elem.Text.getLength() ) return; - + rtl::OUString strSpace(32); rtl::OUString strNbSpace(160); rtl::OUString tabSpace(0x09); PropertyMap aProps; if( elem.StyleId != -1 ) { - aProps[ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "text:style-name" ) ) ] = + aProps[ rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "text:style-name" ) ) ] = m_rEmitContext.rStyles.getStyleName( elem.StyleId ); } @@ -127,7 +127,7 @@ void DrawXmlEmitter::visit( TextElement& elem, const std::list< Element* >::cons sal_Int16 nType = GetBreakIterator()->getScriptType( str, i + 1); if (nType == ::com::sun::star::i18n::ScriptType::COMPLEX) isComplex = true; - } + } m_rEmitContext.rEmitter.beginTag( "text:span", aProps ); @@ -152,7 +152,7 @@ void DrawXmlEmitter::visit( TextElement& elem, const std::list< Element* >::cons m_rEmitContext.rEmitter.write( strToken ); } } - } + } std::list< Element* >::iterator this_it = elem.Children.begin(); while( this_it !=elem.Children.end() && *this_it != &elem ) @@ -160,7 +160,7 @@ void DrawXmlEmitter::visit( TextElement& elem, const std::list< Element* >::cons (*this_it)->visitedBy( *this, this_it ); this_it++; } - + m_rEmitContext.rEmitter.endTag( "text:span" ); } @@ -175,28 +175,28 @@ void DrawXmlEmitter::visit( ParagraphElement& elem, const std::list< Element* >: if( elem.Type == elem.Headline ) pTagType = "text:h"; m_rEmitContext.rEmitter.beginTag( pTagType, aProps ); - + std::list< Element* >::iterator this_it = elem.Children.begin(); while( this_it !=elem.Children.end() && *this_it != &elem ) { (*this_it)->visitedBy( *this, this_it ); this_it++; } - + m_rEmitContext.rEmitter.endTag( pTagType ); } -void DrawXmlEmitter::fillFrameProps( DrawElement& rElem, - PropertyMap& rProps, +void DrawXmlEmitter::fillFrameProps( DrawElement& rElem, + PropertyMap& rProps, const EmitContext& rEmitContext ) { double rel_x = rElem.x, rel_y = rElem.y; - + rProps[ USTR( "draw:z-index" ) ] = rtl::OUString::valueOf( rElem.ZOrder ); rProps[ USTR( "draw:style-name" )] = rEmitContext.rStyles.getStyleName( rElem.StyleId ); rProps[ USTR( "svg:width" ) ] = convertPixelToUnitString( rElem.w ); rProps[ USTR( "svg:height" ) ] = convertPixelToUnitString( rElem.h ); - + const GraphicsContext& rGC = rEmitContext.rProcessor.getGraphicsContext( rElem.GCId ); if( rGC.Transformation.isIdentity() ) @@ -208,14 +208,14 @@ void DrawXmlEmitter::fillFrameProps( DrawElement& rElem, { basegfx::B2DTuple aScale, aTranslation; double fRotate, fShearX; - + rGC.Transformation.decompose( aScale, aTranslation, fRotate, fShearX ); - + rtl::OUStringBuffer aBuf( 256 ); - // TODO(F2): general transformation case missing; if implemented, note + // TODO(F2): general transformation case missing; if implemented, note // that ODF rotation is oriented the other way - + // vertical mirroring is done by horizontally mirroring and rotaing 180 degree // quaint ! if( rElem.MirrorVertical ) @@ -244,36 +244,36 @@ void DrawXmlEmitter::fillFrameProps( DrawElement& rElem, aBuf.append( sal_Unicode(' ') ); aBuf.append( convertPixelToUnitString( rel_y ) ); aBuf.appendAscii( " )" ); - + rProps[ USTR( "draw:transform" ) ] = aBuf.makeStringAndClear(); } } -void DrawXmlEmitter::visit( FrameElement& elem, const std::list< Element* >::const_iterator& ) -{ +void DrawXmlEmitter::visit( FrameElement& elem, const std::list< Element* >::const_iterator& ) +{ if( elem.Children.empty() ) return; - + bool bTextBox = (dynamic_cast<ParagraphElement*>(elem.Children.front()) != NULL); PropertyMap aFrameProps; fillFrameProps( elem, aFrameProps, m_rEmitContext ); m_rEmitContext.rEmitter.beginTag( "draw:frame", aFrameProps ); if( bTextBox ) m_rEmitContext.rEmitter.beginTag( "draw:text-box", PropertyMap() ); - + std::list< Element* >::iterator this_it = elem.Children.begin(); while( this_it !=elem.Children.end() && *this_it != &elem ) { (*this_it)->visitedBy( *this, this_it ); this_it++; } - + if( bTextBox ) m_rEmitContext.rEmitter.endTag( "draw:text-box" ); m_rEmitContext.rEmitter.endTag( "draw:frame" ); } -void DrawXmlEmitter::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& ) +void DrawXmlEmitter::visit( PolyPolyElement& elem, const std::list< Element* >::const_iterator& ) { elem.updateGeometry(); /* note: @@ -287,44 +287,44 @@ void DrawXmlEmitter::visit( PolyPolyElement& elem, const std::list< Element* >:: { basegfx::B2DPolygon b2dPolygon; b2dPolygon = elem.PolyPoly.getB2DPolygon( i ); - + for ( sal_uInt32 j = 0; j< b2dPolygon.count(); j++ ) { basegfx::B2DPoint point; basegfx::B2DPoint nextPoint; point = b2dPolygon.getB2DPoint( j ); - + basegfx::B2DPoint prevPoint; prevPoint = b2dPolygon.getPrevControlPoint( j ) ; - - point.setX( convPx2mmPrec2( point.getX() )*100.0 ); + + point.setX( convPx2mmPrec2( point.getX() )*100.0 ); point.setY( convPx2mmPrec2( point.getY() )*100.0 ); - + if ( b2dPolygon.isPrevControlPointUsed( j ) ) { - prevPoint.setX( convPx2mmPrec2( prevPoint.getX() )*100.0 ); + prevPoint.setX( convPx2mmPrec2( prevPoint.getX() )*100.0 ); prevPoint.setY( convPx2mmPrec2( prevPoint.getY() )*100.0 ); } - + if ( b2dPolygon.isNextControlPointUsed( j ) ) { nextPoint = b2dPolygon.getNextControlPoint( j ) ; - nextPoint.setX( convPx2mmPrec2( nextPoint.getX() )*100.0 ); + nextPoint.setX( convPx2mmPrec2( nextPoint.getX() )*100.0 ); nextPoint.setY( convPx2mmPrec2( nextPoint.getY() )*100.0 ); - } - + } + b2dPolygon.setB2DPoint( j, point ); - + if ( b2dPolygon.isPrevControlPointUsed( j ) ) b2dPolygon.setPrevControlPoint( j , prevPoint ) ; - + if ( b2dPolygon.isNextControlPointUsed( j ) ) b2dPolygon.setNextControlPoint( j , nextPoint ) ; } - + elem.PolyPoly.setB2DPolygon( i, b2dPolygon ); } - + PropertyMap aProps; fillFrameProps( elem, aProps, m_rEmitContext ); rtl::OUStringBuffer aBuf( 64 ); @@ -334,14 +334,14 @@ void DrawXmlEmitter::visit( PolyPolyElement& elem, const std::list< Element* >:: aBuf.append( convPx2mmPrec2(elem.h)*100.0 ); aProps[ USTR( "svg:viewBox" ) ] = aBuf.makeStringAndClear(); aProps[ USTR( "svg:d" ) ] = basegfx::tools::exportToSvgD( elem.PolyPoly ); - + m_rEmitContext.rEmitter.beginTag( "draw:path", aProps ); m_rEmitContext.rEmitter.endTag( "draw:path" ); } -void DrawXmlEmitter::visit( ImageElement& elem, const std::list< Element* >::const_iterator& ) +void DrawXmlEmitter::visit( ImageElement& elem, const std::list< Element* >::const_iterator& ) { - PropertyMap aImageProps; + PropertyMap aImageProps; m_rEmitContext.rEmitter.beginTag( "draw:image", aImageProps ); m_rEmitContext.rEmitter.beginTag( "office:binary-data", PropertyMap() ); m_rEmitContext.rImages.writeBase64EncodedStream( elem.Image, m_rEmitContext); @@ -353,9 +353,9 @@ void DrawXmlEmitter::visit( PageElement& elem, const std::list< Element* >::cons { PropertyMap aPageProps; aPageProps[ USTR( "draw:master-page-name" ) ] = m_rEmitContext.rStyles.getStyleName( elem.StyleId ); - + m_rEmitContext.rEmitter.beginTag("draw:page", aPageProps); - + if( m_rEmitContext.xStatusIndicator.is() ) m_rEmitContext.xStatusIndicator->setValue( elem.PageNumber ); @@ -365,23 +365,23 @@ void DrawXmlEmitter::visit( PageElement& elem, const std::list< Element* >::cons (*this_it)->visitedBy( *this, this_it ); this_it++; } - + m_rEmitContext.rEmitter.endTag("draw:page"); } - + void DrawXmlEmitter::visit( DocumentElement& elem, const std::list< Element* >::const_iterator&) { m_rEmitContext.rEmitter.beginTag( "office:body", PropertyMap() ); - m_rEmitContext.rEmitter.beginTag( m_bWriteDrawDocument ? "office:drawing" : "office:presentation", + m_rEmitContext.rEmitter.beginTag( m_bWriteDrawDocument ? "office:drawing" : "office:presentation", PropertyMap() ); - + std::list< Element* >::iterator this_it = elem.Children.begin(); while( this_it !=elem.Children.end() && *this_it != &elem ) { (*this_it)->visitedBy( *this, this_it ); this_it++; } - + m_rEmitContext.rEmitter.endTag( m_bWriteDrawDocument ? "office:drawing" : "office:presentation" ); m_rEmitContext.rEmitter.endTag( "office:body" ); } @@ -412,12 +412,12 @@ void DrawXmlOptimizer::visit( PolyPolyElement& elem, const std::list< Element* > * the other is a fill */ if( elem.Parent ) - { - // find following PolyPolyElement in parent's children list + { + // find following PolyPolyElement in parent's children list std::list< Element* >::iterator this_it = elem.Parent->Children.begin(); while( this_it != elem.Parent->Children.end() && *this_it != &elem ) ++this_it; - + if( this_it != elem.Parent->Children.end() ) { std::list< Element* >::iterator next_it = this_it; @@ -477,15 +477,15 @@ void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::co if( m_rProcessor.getStatusIndicator().is() ) m_rProcessor.getStatusIndicator()->setValue( elem.PageNumber ); - // resolve hyperlinks + // resolve hyperlinks elem.resolveHyperlinks(); - + elem.resolveFontStyles( m_rProcessor ); // underlines and such - - // FIXME: until hyperlinks and font effects are adjusted for - // geometrical search handle them before sorting + + // FIXME: until hyperlinks and font effects are adjusted for + // geometrical search handle them before sorting m_rProcessor.sortElements( &elem ); - + // find paragraphs in text ParagraphElement* pCurPara = NULL; std::list< Element* >::iterator page_element, next_page_element; @@ -514,7 +514,7 @@ void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::co fCurLineHeight = (fCurLineHeight*double(nCurLineElements) + pTestText->h)/double(nCurLineElements+1); nCurLineElements++; } - } + } continue; } @@ -525,7 +525,7 @@ void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::co if( pDraw ) { // insert small drawing objects as character, else leave them page bound - + bool bInsertToParagraph = false; // first check if this is either inside the paragraph if( pCurPara && pDraw->y < pCurPara->y + pCurPara->h ) @@ -568,14 +568,14 @@ void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::co pDraw->isCharacter = true; } } - + if( ! bInsertToParagraph ) { pCurPara = NULL; continue; } } - + TextElement* pText = dynamic_cast<TextElement*>(*page_element); if( ! pText && pLink && ! pLink->Children.empty() ) pText = dynamic_cast<TextElement*>(pLink->Children.front()); @@ -604,10 +604,10 @@ void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::co } } - + } - + // update line height/width if( pCurPara ) { @@ -626,8 +626,8 @@ void DrawXmlOptimizer::visit( PageElement& elem, const std::list< Element* >::co line_right = pGeo->x + pGeo->w; } } - - + + // move element to current paragraph if (! pCurPara ) // new paragraph, insert one { @@ -662,7 +662,7 @@ bool isSpaces(TextElement* pTextElem) rtl::OUString strToken = ouTxt2.copy(i,1) ; if( !strSpace.equals(strToken) ) return false; - } + } return true; } @@ -672,7 +672,7 @@ bool notTransformed(GraphicsContext GC) GC.Transformation.get(0,0) == 100.00 && GC.Transformation.get(1,0) == 0.00 && GC.Transformation.get(0,1) == 0.00 && - GC.Transformation.get(1,1) == -100.00 + GC.Transformation.get(1,1) == -100.00 ); } @@ -683,7 +683,7 @@ void DrawXmlOptimizer::optimizeTextElements(Element& rParent) OSL_ENSURE( 0, "empty paragraph optimized" ); return; } - + // concatenate child elements with same font id std::list< Element* >::iterator next = rParent.Children.begin(); std::list< Element* >::iterator it = next++; @@ -705,12 +705,12 @@ void DrawXmlOptimizer::optimizeTextElements(Element& rParent) TextElement* pNext = dynamic_cast<TextElement*>(*next); bool isComplex = false; rtl::OUString str(pCur->Text.getStr()); - for(int i=0; i< str.getLength(); i++) + for(int i=0; i< str.getLength(); i++) { sal_Int16 nType = GetBreakIterator()->getScriptType( str, i ); if (nType == ::com::sun::star::i18n::ScriptType::COMPLEX) isComplex = true; - } + } bool bPara = strspn("ParagraphElement", typeid(rParent).name()); ParagraphElement* pPara = dynamic_cast<ParagraphElement*>(&rParent); if (bPara && isComplex) @@ -719,9 +719,9 @@ void DrawXmlOptimizer::optimizeTextElements(Element& rParent) { const GraphicsContext& rCurGC = m_rProcessor.getGraphicsContext( pCur->GCId ); const GraphicsContext& rNextGC = m_rProcessor.getGraphicsContext( pNext->GCId ); - + // line and space optimization; works only in strictly horizontal mode - + // concatenate consecutive text elements unless there is a // font or text color or matrix change, leave a new span in that case if( (pCur->FontId == pNext->FontId || isSpaces(pNext)) && @@ -729,7 +729,7 @@ void DrawXmlOptimizer::optimizeTextElements(Element& rParent) rCurGC.FillColor.Green == rNextGC.FillColor.Green && rCurGC.FillColor.Blue == rNextGC.FillColor.Blue && rCurGC.FillColor.Alpha == rNextGC.FillColor.Alpha && - (rCurGC.Transformation == rNextGC.Transformation || notTransformed(rNextGC)) + (rCurGC.Transformation == rNextGC.Transformation || notTransformed(rNextGC)) ) { pCur->updateGeometryWith( pNext ); @@ -737,7 +737,7 @@ void DrawXmlOptimizer::optimizeTextElements(Element& rParent) pCur->Text.append( pNext->Text.getStr(), pNext->Text.getLength() ); str = pCur->Text.getStr(); - for(int i=0; i< str.getLength(); i++) + for(int i=0; i< str.getLength(); i++) { sal_Int16 nType = GetBreakIterator()->getScriptType( str, i ); if (nType == ::com::sun::star::i18n::ScriptType::COMPLEX) @@ -761,7 +761,7 @@ void DrawXmlOptimizer::optimizeTextElements(Element& rParent) if ( bConcat ) next = it; else - ++it; + ++it; ++next; } } @@ -783,7 +783,7 @@ void DrawXmlFinalizer::visit( PolyPolyElement& elem, const std::list< Element* > aProps[ USTR( "style:parent-style-name") ] = USTR( "standard" ); // generate standard graphic style if necessary m_rStyleContainer.getStandardStyleId( "graphic" ); - + PropertyMap aGCProps; // TODO(F3): proper dash emulation @@ -821,7 +821,7 @@ void DrawXmlFinalizer::visit( PolyPolyElement& elem, const std::list< Element* > StyleContainer::Style aStyle( "style:style", aProps ); StyleContainer::Style aSubStyle( "style:graphic-properties", aGCProps ); aStyle.SubStyles.push_back( &aSubStyle ); - + elem.StyleId = m_rStyleContainer.getStyleId( aStyle ); } @@ -830,22 +830,22 @@ void DrawXmlFinalizer::visit( HyperlinkElement&, const std::list< Element* >::co } void DrawXmlFinalizer::visit( TextElement& elem, const std::list< Element* >::const_iterator& ) -{ +{ const FontAttributes& rFont = m_rProcessor.getFont( elem.FontId ); PropertyMap aProps; aProps[ USTR( "style:family" ) ] = USTR( "text" ); PropertyMap aFontProps; - + // family name aFontProps[ USTR( "fo:font-family" ) ] = rFont.familyName; aFontProps[ USTR( "style:font-family-complex" ) ] = rFont.familyName; - + // bold if( rFont.isBold ) { aFontProps[ USTR( "fo:font-weight" ) ] = USTR( "bold" ); - aFontProps[ USTR( "fo:font-weight-asian" ) ] = USTR( "bold" ); + aFontProps[ USTR( "fo:font-weight-asian" ) ] = USTR( "bold" ); aFontProps[ USTR( "style:font-weight-complex" ) ] = USTR( "bold" ); } // italic @@ -853,7 +853,7 @@ void DrawXmlFinalizer::visit( TextElement& elem, const std::list< Element* >::co { aFontProps[ USTR( "fo:font-style" ) ] = USTR( "italic" ); aFontProps[ USTR( "fo:font-style-asian" ) ] = USTR( "italic" ); - aFontProps[ USTR( "style:font-style-complex" ) ] = USTR( "italic" ); + aFontProps[ USTR( "style:font-style-complex" ) ] = USTR( "italic" ); } // underline if( rFont.isUnderline ) @@ -878,7 +878,7 @@ void DrawXmlFinalizer::visit( TextElement& elem, const std::list< Element* >::co // color const GraphicsContext& rGC = m_rProcessor.getGraphicsContext( elem.GCId ); aFontProps[ USTR( "fo:color" ) ] = getColorString( rFont.isOutline ? rGC.LineColor : rGC.FillColor ); - + StyleContainer::Style aStyle( "style:style", aProps ); StyleContainer::Style aSubStyle( "style:text-properties", aFontProps ); aStyle.SubStyles.push_back( &aSubStyle ); @@ -886,13 +886,13 @@ void DrawXmlFinalizer::visit( TextElement& elem, const std::list< Element* >::co } void DrawXmlFinalizer::visit( ParagraphElement& elem, const std::list< Element* >::const_iterator& ) -{ +{ PropertyMap aProps; aProps[ USTR( "style:family" ) ] = USTR( "paragraph" ); // generate standard paragraph style if necessary m_rStyleContainer.getStandardStyleId( "paragraph" ); - + PropertyMap aParProps; aParProps[ USTR("fo:text-align")] = USTR("start"); @@ -900,11 +900,11 @@ void DrawXmlFinalizer::visit( ParagraphElement& elem, const std::list< Element* aParProps[ USTR("style:writing-mode")] = USTR("rl-tb"); else aParProps[ USTR("style:writing-mode")] = USTR("lr-tb"); - + StyleContainer::Style aStyle( "style:style", aProps ); StyleContainer::Style aSubStyle( "style:paragraph-properties", aParProps ); aStyle.SubStyles.push_back( &aSubStyle ); - + elem.StyleId = m_rStyleContainer.getStyleId( aStyle ); // update page boundaries @@ -916,7 +916,7 @@ void DrawXmlFinalizer::visit( ParagraphElement& elem, const std::list< Element* double p_y = elem.Parent->y; double p_w = elem.Parent->w; double p_h = elem.Parent->h; - + PageElement* pPage = dynamic_cast<PageElement*>(elem.Parent); if( pPage ) { @@ -937,7 +937,7 @@ void DrawXmlFinalizer::visit( FrameElement& elem, const std::list< Element* >::c aProps[ USTR( "style:parent-style-name") ] = USTR( "standard" ); // generate standard graphic style if necessary m_rStyleContainer.getStandardStyleId( "graphic" ); - + PropertyMap aGCProps; aGCProps[ USTR("draw:stroke") ] = USTR("none"); @@ -952,18 +952,18 @@ void DrawXmlFinalizer::visit( FrameElement& elem, const std::list< Element* >::c aGCProps[ USTR("fo:padding-left") ] = USTR("0cm"); aGCProps[ USTR("fo:padding-right") ] = USTR("0cm"); aGCProps[ USTR("fo:padding-bottom") ] = USTR("0cm"); - + // remark: vertical mirroring is done in current OOO by // mirroring horzontally and rotating 180 degrees // this is quaint, but unfortunately it seems // mirror=vertical is defined but not implemented in current code if( elem.MirrorVertical ) aGCProps[ USTR("style:mirror") ] = USTR("horizontal"); - + StyleContainer::Style aStyle( "style:style", aProps ); StyleContainer::Style aSubStyle( "style:graphic-properties", aGCProps ); aStyle.SubStyles.push_back( &aSubStyle ); - + elem.StyleId = m_rStyleContainer.getStyleId( aStyle ); elem.applyToChildren(*this); } @@ -976,10 +976,10 @@ void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::co { if( m_rProcessor.getStatusIndicator().is() ) m_rProcessor.getStatusIndicator()->setValue( elem.PageNumber ); - + // transform from pixel to mm double page_width = convPx2mm( elem.w ), page_height = convPx2mm( elem.h ); - + // calculate page margins out of the relevant children (paragraphs) elem.TopMargin = elem.h, elem.BottomMargin = 0, elem.LeftMargin = elem.w, elem.RightMargin = 0; @@ -994,20 +994,20 @@ void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::co if( (*it)->y + (*it)->h > elem.BottomMargin ) elem.BottomMargin = ((*it)->y + (*it)->h); } - + // transform margins to mm double left_margin = convPx2mm( elem.LeftMargin ); double right_margin = convPx2mm( elem.RightMargin ); double top_margin = convPx2mm( elem.TopMargin ); double bottom_margin = convPx2mm( elem.BottomMargin ); - + // round left/top margin to nearest mm left_margin = rtl_math_round( left_margin, 0, rtl_math_RoundingMode_Floor ); top_margin = rtl_math_round( top_margin, 0, rtl_math_RoundingMode_Floor ); // round (fuzzy) right/bottom margin to nearest cm right_margin = rtl_math_round( right_margin, right_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor ); - bottom_margin = rtl_math_round( bottom_margin, bottom_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor ); - + bottom_margin = rtl_math_round( bottom_margin, bottom_margin >= 10 ? -1 : 0, rtl_math_RoundingMode_Floor ); + // set reasonable default in case of way too large margins // e.g. no paragraph case if( left_margin > page_width/2.0 - 10 ) @@ -1018,7 +1018,7 @@ void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::co top_margin = 10; if( bottom_margin > page_height/2.0 - 10 ) bottom_margin = 10; - + // catch the weird cases if( left_margin < 0 ) left_margin = 0; @@ -1028,16 +1028,16 @@ void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::co top_margin = 0; if( bottom_margin < 0 ) bottom_margin = 0; - + // widely differing margins are unlikely to be correct if( right_margin > left_margin*1.5 ) right_margin = left_margin; - + elem.LeftMargin = convmm2Px( left_margin ); elem.RightMargin = convmm2Px( right_margin ); elem.TopMargin = convmm2Px( top_margin ); elem.BottomMargin = convmm2Px( bottom_margin ); - + // get styles for paragraphs PropertyMap aPageProps; PropertyMap aPageLayoutProps; @@ -1048,26 +1048,26 @@ void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::co aPageLayoutProps[ USTR( "fo:margin-right" ) ] = unitMMString( right_margin ); aPageLayoutProps[ USTR( "fo:page-width" ) ] = unitMMString( page_width ); aPageLayoutProps[ USTR( "fo:page-height" ) ] = unitMMString( page_height ); - aPageLayoutProps[ USTR( "style:print-orientation" ) ]= elem.w < elem.h ? USTR( "portrait" ) : USTR( "landscape" ); + aPageLayoutProps[ USTR( "style:print-orientation" ) ]= elem.w < elem.h ? USTR( "portrait" ) : USTR( "landscape" ); aPageLayoutProps[ USTR( "style:writing-mode" ) ]= USTR( "lr-tb" ); - - StyleContainer::Style aStyle( "style:page-layout", aPageProps); - StyleContainer::Style aSubStyle( "style:page-layout-properties", aPageLayoutProps); + + StyleContainer::Style aStyle( "style:page-layout", aPageProps); + StyleContainer::Style aSubStyle( "style:page-layout-properties", aPageLayoutProps); aStyle.SubStyles.push_back(&aSubStyle); sal_Int32 nPageStyle = m_rStyleContainer.impl_getStyleId( aStyle, false ); // create master page rtl::OUString aMasterPageLayoutName = m_rStyleContainer.getStyleName( nPageStyle ); - aPageProps[ USTR( "style:page-layout-name" ) ] = aMasterPageLayoutName; - - StyleContainer::Style aMPStyle( "style:master-page", aPageProps); - + aPageProps[ USTR( "style:page-layout-name" ) ] = aMasterPageLayoutName; + + StyleContainer::Style aMPStyle( "style:master-page", aPageProps); + StyleContainer::Style aHeaderStyle( "style:header", PropertyMap() ); StyleContainer::Style aFooterStyle( "style:footer", PropertyMap() ); elem.StyleId = m_rStyleContainer.impl_getStyleId( aMPStyle,false ); - + rtl::OUString aMasterPageName = m_rStyleContainer.getStyleName( elem.StyleId ); // create styles for children @@ -1075,7 +1075,7 @@ void DrawXmlFinalizer::visit( PageElement& elem, const std::list< Element* >::co } void DrawXmlFinalizer::visit( DocumentElement& elem, const std::list< Element* >::const_iterator& ) -{ +{ elem.applyToChildren(*this); } |