[Libreoffice-commits] .: Branch 'libreoffice-3-5' - 3 commits - reportbuilder/util writerfilter/source

Michael Stahl mst at kemper.freedesktop.org
Thu Mar 1 03:23:01 PST 2012


 reportbuilder/util/makefile.mk                 |    2 
 writerfilter/source/rtftok/rtfdocumentimpl.cxx |   59 +++++++++++++++++++++++++
 writerfilter/source/rtftok/rtfdocumentimpl.hxx |   13 +++++
 3 files changed, 72 insertions(+), 2 deletions(-)

New commits:
commit 7c04bc04476acc6ccaec7c7a2e6cb569215cd20f
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Tue Feb 21 16:40:57 2012 +0100

    implement import of RTF_DOB{X,Y}{MARGIN,PAGE}
    (cherry picked from commit fa9e867a342a37d84f02f7e801962761cc1d2b6f)
    
    Signed-off-by: Michael Stahl <mstahl at redhat.com>

diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index a5f3578..413a82f 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1967,8 +1967,31 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
         case RTF_POSXR: m_aStates.top().aFrame.nHoriAlign = NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_right; break;
 
         case RTF_DPLINE:
-                m_aStates.top().aDrawingObject.xShape.set(getModelFactory()->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.LineShape"))), uno::UNO_QUERY);
-                m_aStates.top().aDrawingObject.xPropertySet.set(m_aStates.top().aDrawingObject.xShape, uno::UNO_QUERY);
+                {
+                    m_aStates.top().aDrawingObject.xShape.set(getModelFactory()->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.LineShape"))), uno::UNO_QUERY);
+                    m_aStates.top().aDrawingObject.xPropertySet.set(m_aStates.top().aDrawingObject.xShape, uno::UNO_QUERY);
+                    std::vector<beans::PropertyValue>& rPendingProperties = m_aStates.top().aDrawingObject.aPendingProperties;
+                    for (std::vector<beans::PropertyValue>::iterator i = rPendingProperties.begin(); i != rPendingProperties.end(); ++i)
+                        m_aStates.top().aDrawingObject.xPropertySet->setPropertyValue(i->Name, i->Value);
+                }
+                break;
+        case RTF_DOBXMARGIN:
+        case RTF_DOBYMARGIN:
+                {
+                    beans::PropertyValue aPropertyValue;
+                    aPropertyValue.Name = OUString(RTL_CONSTASCII_USTRINGPARAM((nKeyword == RTF_DOBXMARGIN ? "HoriOrientRelation" : "VertOrientRelation")));
+                    aPropertyValue.Value <<= text::RelOrientation::PAGE_PRINT_AREA;
+                    m_aStates.top().aDrawingObject.aPendingProperties.push_back(aPropertyValue);
+                }
+                break;
+        case RTF_DOBXPAGE:
+        case RTF_DOBYPAGE:
+                {
+                    beans::PropertyValue aPropertyValue;
+                    aPropertyValue.Name = OUString(RTL_CONSTASCII_USTRINGPARAM((nKeyword == RTF_DOBXPAGE ? "HoriOrientRelation" : "VertOrientRelation")));
+                    aPropertyValue.Value <<= text::RelOrientation::PAGE_FRAME;
+                    m_aStates.top().aDrawingObject.aPendingProperties.push_back(aPropertyValue);
+                }
                 break;
         default:
 #if OSL_DEBUG_LEVEL > 1
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 98fa57c..0e92eb4 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -187,6 +187,7 @@ namespace writerfilter {
             public:
                 uno::Reference<drawing::XShape> xShape;
                 uno::Reference<beans::XPropertySet> xPropertySet;
+                std::vector<beans::PropertyValue> aPendingProperties;
         };
 
         /// Stores the properties of a picture.
commit 059172306a4c4f8fc800a539d9fb1266301822ad
Author: Miklos Vajna <vmiklos at suse.cz>
Date:   Tue Feb 21 15:15:08 2012 +0100

    implement import of RTF_DPLINE, regression from LO 3.4
    
    (cherry picked from commits bbef8b4a93ff840fa6306cc6e41e1e2dd3e6c8fa and
    456a59b24d4ba5ac341f76b4302e82b687e97f69)
    
    Signed-off-by: Michael Stahl <mstahl at redhat.com>

diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.cxx b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
index 7f1569e..a5f3578 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.cxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.cxx
@@ -1285,6 +1285,9 @@ int RTFDocumentImpl::dispatchDestination(RTFKeyword nKeyword)
             // This destination should be ignored by readers that support nested tables.
             m_aStates.top().nDestinationState = DESTINATION_SKIP;
             break;
+        case RTF_DO:
+            m_aStates.top().nDestinationState = DESTINATION_DRAWINGOBJECT;
+            break;
         default:
 #if OSL_DEBUG_LEVEL > 1
             OSL_TRACE("%s: TODO handle destination '%s'", OSL_THIS_FUNC, lcl_RtfToString(nKeyword));
@@ -1963,6 +1966,10 @@ int RTFDocumentImpl::dispatchFlag(RTFKeyword nKeyword)
         case RTF_POSXL: m_aStates.top().aFrame.nHoriAlign = NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_left; break;
         case RTF_POSXR: m_aStates.top().aFrame.nHoriAlign = NS_ooxml::LN_Value_wordprocessingml_ST_XAlign_right; break;
 
+        case RTF_DPLINE:
+                m_aStates.top().aDrawingObject.xShape.set(getModelFactory()->createInstance(OUString(RTL_CONSTASCII_USTRINGPARAM("com.sun.star.drawing.LineShape"))), uno::UNO_QUERY);
+                m_aStates.top().aDrawingObject.xPropertySet.set(m_aStates.top().aDrawingObject.xShape, uno::UNO_QUERY);
+                break;
         default:
 #if OSL_DEBUG_LEVEL > 1
             OSL_TRACE("%s: TODO handle flag '%s'", OSL_THIS_FUNC, lcl_RtfToString(nKeyword));
@@ -2610,6 +2617,18 @@ int RTFDocumentImpl::dispatchValue(RTFKeyword nKeyword, int nParam)
             lcl_putNestedAttribute(m_aStates.top().aParagraphSprms,
                     NS_ooxml::LN_CT_PPrBase_spacing, NS_ooxml::LN_CT_Spacing_after, pIntValue);
             break;
+        case RTF_DPX:
+            m_aStates.top().aDrawingObject.nLeft = TWIP_TO_MM100(nParam);
+            break;
+        case RTF_DPY:
+            m_aStates.top().aDrawingObject.nTop = TWIP_TO_MM100(nParam);
+            break;
+        case RTF_DPXSIZE:
+            m_aStates.top().aDrawingObject.nRight = TWIP_TO_MM100(nParam);
+            break;
+        case RTF_DPYSIZE:
+            m_aStates.top().aDrawingObject.nBottom = TWIP_TO_MM100(nParam);
+            break;
         default:
 #if OSL_DEBUG_LEVEL > 1
             OSL_TRACE("%s: TODO handle value '%s'", OSL_THIS_FUNC, lcl_RtfToString(nKeyword));
@@ -3163,6 +3182,22 @@ int RTFDocumentImpl::popState()
         aFrame = m_aStates.top().aFrame;
         bPopFrame = true;
     }
+    else if (m_aStates.top().nDestinationState == DESTINATION_DRAWINGOBJECT && m_aStates.top().aDrawingObject.xShape.is())
+    {
+        RTFDrawingObject& rDrawing = m_aStates.top().aDrawingObject;
+        uno::Reference<drawing::XShape> xShape(rDrawing.xShape);
+        xShape->setPosition(awt::Point(rDrawing.nLeft, rDrawing.nTop));
+        xShape->setSize(awt::Size(rDrawing.nRight, rDrawing.nBottom));
+        uno::Reference<drawing::XDrawPageSupplier> xDrawSupplier( m_xDstDoc, uno::UNO_QUERY);
+        if ( xDrawSupplier.is() )
+        {
+            uno::Reference< drawing::XShapes > xShapes( xDrawSupplier->getDrawPage(), uno::UNO_QUERY );
+            if ( xShapes.is() )
+                xShapes->add( xShape );
+        }
+        Mapper().startShape(xShape);
+        Mapper().endShape();
+    }
 
     // See if we need to end a track change
     RTFValue::Pointer_t pTrackchange = m_aStates.top().aCharacterSprms.find(NS_ooxml::LN_trackchange);
@@ -3323,6 +3358,7 @@ RTFParserState::RTFParserState()
     aLevelNumbers(),
     aPicture(),
     aShape(),
+    aDrawingObject(),
     aFrame(),
     nCellX(0),
     nCells(0),
diff --git a/writerfilter/source/rtftok/rtfdocumentimpl.hxx b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
index 90ecc98..98fa57c 100644
--- a/writerfilter/source/rtftok/rtfdocumentimpl.hxx
+++ b/writerfilter/source/rtftok/rtfdocumentimpl.hxx
@@ -108,7 +108,8 @@ namespace writerfilter {
             DESTINATION_ANNOTATIONDATE,
             DESTINATION_ANNOTATIONAUTHOR,
             DESTINATION_FALT,
-            DESTINATION_FLYMAINCONTENT
+            DESTINATION_FLYMAINCONTENT,
+            DESTINATION_DRAWINGOBJECT
         };
 
         enum RTFBorderState
@@ -180,6 +181,14 @@ namespace writerfilter {
                 int nBottom;
         };
 
+        /// Stores the properties of a drawing object.
+        class RTFDrawingObject : public RTFShape
+        {
+            public:
+                uno::Reference<drawing::XShape> xShape;
+                uno::Reference<beans::XPropertySet> xPropertySet;
+        };
+
         /// Stores the properties of a picture.
         class RTFPicture
         {
@@ -262,6 +271,7 @@ namespace writerfilter {
 
                 RTFPicture aPicture;
                 RTFShape aShape;
+                RTFDrawingObject aDrawingObject;
                 RTFFrame aFrame;
 
                 /// Current cellx value.
commit e804bce8fa4c68ca018d9921d090771cc8836daf
Author: Michael Stahl <mstahl at redhat.com>
Date:   Thu Feb 23 12:34:21 2012 +0100

    reportbuilder: untested fix for WITH_LANG build
    
    Signed-off-by: Andras Timar <atimar at suse.com>
    (cherry picked from commit 7b72d62a7180db7e5fd1831d0455dee59fee1edb)

diff --git a/reportbuilder/util/makefile.mk b/reportbuilder/util/makefile.mk
index a559957..0963f14 100644
--- a/reportbuilder/util/makefile.mk
+++ b/reportbuilder/util/makefile.mk
@@ -152,7 +152,7 @@ $(DESCRIPTION_SRC): description.xml
     $(XRMEX) -p $(PRJNAME) -i description.xml -o $@ -m $(LOCALIZESDF) -l all
     $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" < $@ > $@.new
     mv $@.new $@
-    @$(COPY) $(@:d)/description-*.txt $(EXTENSIONDIR)
+    @@-$(COPY) $(@:d)/description-*.txt $(EXTENSIONDIR)
 .ELSE
     $(SED) "s/#VERSION#/$(EXTENSION_VERSION)/" < $< > $@
 .ENDIF


More information about the Libreoffice-commits mailing list