[Libreoffice-commits] core.git: 5 commits - include/oox include/svx include/xmloff offapi/com oox/source sw/inc sw/qa sw/source xmloff/source
Zolnai Tamás
tamas.zolnai at collabora.com
Fri Feb 7 18:00:26 PST 2014
include/oox/drawingml/drawingmltypes.hxx | 6 +
include/svx/sdtaitm.hxx | 1
include/xmloff/xmltypes.hxx | 1
offapi/com/sun/star/text/BaseFrameProperties.idl | 8 ++
oox/source/drawingml/drawingmltypes.cxx | 39 +++++++++
oox/source/drawingml/fillpropertiesgroupcontext.cxx | 10 --
oox/source/drawingml/textbodypropertiescontext.cxx | 13 ---
oox/source/export/drawingml.cxx | 17 ----
oox/source/shape/WpsContext.cxx | 8 ++
sw/inc/format.hxx | 1
sw/inc/frmatr.hxx | 4 +
sw/inc/hintids.hxx | 47 ++++++------
sw/inc/swatrset.hxx | 2
sw/inc/unoprnms.hxx | 1
sw/qa/extras/odfexport/data/textframe-vertadjust.odt |binary
sw/qa/extras/odfexport/odfexport.cxx | 15 +++
sw/qa/extras/ooxmlexport/data/dml-textframe-vertadjust.docx |binary
sw/qa/extras/ooxmlexport/ooxmlexport.cxx | 16 ++++
sw/source/core/bastyp/init.cxx | 3
sw/source/core/unocore/unoframe.cxx | 13 +++
sw/source/core/unocore/unomap.cxx | 5 +
sw/source/filter/html/css1atr.cxx | 2
sw/source/filter/html/htmlatr.cxx | 2
sw/source/filter/ww8/docxsdrexport.cxx | 6 +
xmloff/source/text/txtprhdl.cxx | 17 +++-
xmloff/source/text/txtprmap.cxx | 1
26 files changed, 179 insertions(+), 59 deletions(-)
New commits:
commit 38ce69a1d10bd18b45b192ee4a5e650f817be676
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Sat Feb 8 00:15:02 2014 +0100
drawingML: remove code duplication: use GetRelativeRect()
Change-Id: I7368ad15292c82e5320deb9ab60e04f70d0c92b8
diff --git a/oox/source/drawingml/fillpropertiesgroupcontext.cxx b/oox/source/drawingml/fillpropertiesgroupcontext.cxx
index 8483e81..ad8cf41 100644
--- a/oox/source/drawingml/fillpropertiesgroupcontext.cxx
+++ b/oox/source/drawingml/fillpropertiesgroupcontext.cxx
@@ -229,15 +229,7 @@ ContextHandlerRef BlipFillContext::onCreateContext(
return new BlipContext( *this, rAttribs, mrBlipProps );
case A_TOKEN( srcRect ):
- {
- OUString aDefault( "0" );
- ::com::sun::star::geometry::IntegerRectangle2D aClipRect;
- aClipRect.X1 = GetPercent( rAttribs.getString( XML_l, aDefault ) );
- aClipRect.Y1 = GetPercent( rAttribs.getString( XML_t, aDefault ) );
- aClipRect.X2 = GetPercent( rAttribs.getString( XML_r, aDefault ) );
- aClipRect.Y2 = GetPercent( rAttribs.getString( XML_b, aDefault ) );
- mrBlipProps.moClipRect = aClipRect;
- }
+ mrBlipProps.moClipRect = GetRelativeRect( rAttribs.getFastAttributeList() );
break;
case A_TOKEN( tile ):
commit aec959dea00bfb362377fe1007da1f381f45559e
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Sat Feb 8 00:07:03 2014 +0100
drawingML: remove code duplication: use WriteStretch()
Change-Id: I0d589da01bf6afed86b5811d6b27f72f6e1bb160
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index f2dd046..22a1d97 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -828,9 +828,7 @@ void DrawingML::WriteBlipMode( Reference< XPropertySet > rXPropSet )
mpFS->singleElementNS( XML_a, XML_tile, FSEND );
break;
case BitmapMode_STRETCH:
- mpFS->startElementNS( XML_a, XML_stretch, FSEND );
- mpFS->singleElementNS( XML_a, XML_fillRect, FSEND );
- mpFS->endElementNS( XML_a, XML_stretch );
+ WriteStretch();
break;
default:
;
commit feae30c4ce1a1aa303500371b858f871d4ef88fc
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Sat Feb 8 01:50:55 2014 +0100
ODF export/import: text vertical adjustment attribute of text frames
ODF standard handle 'textarea-vertical-align' as a
'graphic-property' which "specifies formatting
properties for chart, draw, graphic, and frame elements".
So this change fit to the standard.
Change-Id: I956f512953380983c2c882e943178335fd4dbfeb
diff --git a/include/xmloff/xmltypes.hxx b/include/xmloff/xmltypes.hxx
index 55cac83..3c8d737 100644
--- a/include/xmloff/xmltypes.hxx
+++ b/include/xmloff/xmltypes.hxx
@@ -276,6 +276,7 @@
#define XML_TYPE_CHAR_SCRIPT (XML_TEXT_TYPES_START + 116)
#define XML_TYPE_CHAR_RFC_LANGUAGE_TAG (XML_TEXT_TYPES_START + 117)
+#define XML_TYPE_VERTICAL_ALIGN (XML_TEXT_TYPES_START + 118)
#define XML_SCH_TYPES_START (0x4 << XML_TYPE_APP_SHIFT)
#define XML_PM_TYPES_START (0x5 << XML_TYPE_APP_SHIFT) // page master
diff --git a/sw/qa/extras/odfexport/data/textframe-vertadjust.odt b/sw/qa/extras/odfexport/data/textframe-vertadjust.odt
new file mode 100644
index 0000000..bbf3416
Binary files /dev/null and b/sw/qa/extras/odfexport/data/textframe-vertadjust.odt differ
diff --git a/sw/qa/extras/odfexport/odfexport.cxx b/sw/qa/extras/odfexport/odfexport.cxx
index c2e5c0c..db75204 100644
--- a/sw/qa/extras/odfexport/odfexport.cxx
+++ b/sw/qa/extras/odfexport/odfexport.cxx
@@ -14,6 +14,7 @@
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/table/ShadowFormat.hpp>
#include <com/sun/star/text/RelOrientation.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
class Test : public SwModelTestBase
{
@@ -335,6 +336,20 @@ DECLARE_ODFEXPORT_TEST(testRelwPage, "relw-page.odt")
CPPUNIT_ASSERT_EQUAL(sal_Int32(4896), parseDump("/root/page/body/txt/anchored/fly/infos/bounds", "width").toInt32());
}
+DECLARE_ODFEXPORT_TEST(testTextFrameVertAdjust, "textframe-vertadjust.odt")
+{
+ // Test import/export of new frame attribute called TextVerticalAdjust
+
+ // 1st frame's context is adjusted to the top
+ uno::Reference<beans::XPropertySet> xFrame(getTextFrameByName("Rectangle 1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+ // 2nd frame's context is adjusted to the center
+ xFrame.set(getTextFrameByName("Rectangle 2"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_CENTER, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+ // 3rd frame's context is adjusted to the bottom
+ xFrame.set(getTextFrameByName("Rectangle 3"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/xmloff/source/text/txtprhdl.cxx b/xmloff/source/text/txtprhdl.cxx
index 951fa1f..032a055 100644
--- a/xmloff/source/text/txtprhdl.cxx
+++ b/xmloff/source/text/txtprhdl.cxx
@@ -45,6 +45,7 @@
#include "txtprhdl.hxx"
// OD 2004-05-05 #i28701#
#include <com/sun/star/text/WrapInfluenceOnPosition.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
@@ -211,7 +212,7 @@ static SvXMLEnumMapEntry const pXML_FontRelief_Enum[] =
{ XML_TOKEN_INVALID, 0 }
};
-static SvXMLEnumMapEntry const pXML_VerticalAlign_Enum[] =
+static SvXMLEnumMapEntry const pXML_ParaVerticalAlign_Enum[] =
{
{ XML_TOP, ParagraphVertAlign::TOP },
{ XML_MIDDLE, ParagraphVertAlign::CENTER },
@@ -231,6 +232,15 @@ static SvXMLEnumMapEntry const pXML_WrapInfluenceOnPosition_Enum[] =
{ XML_TOKEN_INVALID, 0 }
};
+static SvXMLEnumMapEntry const pXML_VerticalAlign_Enum[] =
+{
+ { XML_TOP, drawing::TextVerticalAdjust_TOP },
+ { XML_MIDDLE, drawing::TextVerticalAdjust_CENTER },
+ { XML_BOTTOM, drawing::TextVerticalAdjust_BOTTOM },
+ { XML_JUSTIFY, drawing::TextVerticalAdjust_BLOCK },
+ { XML_TOKEN_INVALID, 0 }
+};
+
static SvXMLEnumMapEntry const pXML_FillStyle_Enum[] =
{
{ XML_NONE, drawing::FillStyle_NONE },
@@ -1347,7 +1357,7 @@ const XMLPropertyHandler *XMLTextPropertyHandlerFactory_Impl::GetPropertyHandler
GetXMLToken( XML_LINE_HEIGHT ) );
break;
case XML_TYPE_TEXT_VERTICAL_ALIGN:
- pHdl = new XMLConstantsPropertyHandler( pXML_VerticalAlign_Enum, XML_TOKEN_INVALID );
+ pHdl = new XMLConstantsPropertyHandler( pXML_ParaVerticalAlign_Enum, XML_TOKEN_INVALID );
break;
case XML_TYPE_TEXT_RUBY_POSITION:
pHdl = new XMLNamedBoolPropertyHdl( ::xmloff::token::XML_ABOVE,
@@ -1383,6 +1393,9 @@ const XMLPropertyHandler *XMLTextPropertyHandlerFactory_Impl::GetPropertyHandler
case XML_TYPE_FILLSTYLE:
pHdl = new XMLConstantsPropertyHandler( pXML_FillStyle_Enum, XML_TOKEN_INVALID );
break;
+ case XML_TYPE_VERTICAL_ALIGN:
+ pHdl = new XMLConstantsPropertyHandler( pXML_VerticalAlign_Enum, XML_TOKEN_INVALID );
+ break;
}
return pHdl;
diff --git a/xmloff/source/text/txtprmap.cxx b/xmloff/source/text/txtprmap.cxx
index a1f9898..90cb26e 100644
--- a/xmloff/source/text/txtprmap.cxx
+++ b/xmloff/source/text/txtprmap.cxx
@@ -786,6 +786,7 @@ XMLPropertyMapEntry aXMLFramePropMap[] =
MG_E( "UserDefinedAttributes", TEXT, XMLNS, XML_TYPE_ATTRIBUTE_CONTAINER | MID_FLAG_SPECIAL_ITEM, 0 ),
MAP_EXT("RelativeWidthRelation", XML_NAMESPACE_LO_EXT, XML_REL_WIDTH_REL, XML_TYPE_TEXT_HORIZONTAL_REL|XML_TYPE_PROP_GRAPHIC, CTF_RELWIDTHREL),
MAP_EXT("RelativeHeightRelation", XML_NAMESPACE_LO_EXT, XML_REL_HEIGHT_REL, XML_TYPE_TEXT_VERTICAL_REL|XML_TYPE_PROP_GRAPHIC, CTF_RELHEIGHTREL),
+ MG_E("TextVerticalAdjust", DRAW, TEXTAREA_VERTICAL_ALIGN, XML_TYPE_VERTICAL_ALIGN, 0),
M_END()
};
commit 718203e37025fc1cc1e28f9e52f05bee79684811
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Sat Feb 8 01:49:39 2014 +0100
drawingML export/import: text frames with vertical alignment
Change-Id: I469da0a8234dd2979facfed3d66907aad1a138ab
diff --git a/include/oox/drawingml/drawingmltypes.hxx b/include/oox/drawingml/drawingmltypes.hxx
index aa00f2a..20c8c98 100644
--- a/include/oox/drawingml/drawingmltypes.hxx
+++ b/include/oox/drawingml/drawingmltypes.hxx
@@ -126,6 +126,12 @@ sal_Int16 GetCaseMap( sal_Int32 nToken );
/** converts a paragraph align to a ParaAdjust */
sal_Int16 GetParaAdjust( sal_Int32 nAlign );
+// Convert vertical adjust tokens to a TextVerticalAdjust item
+::com::sun::star::drawing::TextVerticalAdjust GetTextVerticalAdjust( sal_Int32 nToken );
+
+// Convert a TextVerticalAdjust item to string value appearing in ooxml
+SAL_DLLPUBLIC const char* GetTextVerticalAdjust( ::com::sun::star::drawing::TextVerticalAdjust eAdjust );
+
// ============================================================================
// CT_IndexRange
diff --git a/oox/source/drawingml/drawingmltypes.cxx b/oox/source/drawingml/drawingmltypes.cxx
index 9dd42eb..a96eaf3 100644
--- a/oox/source/drawingml/drawingmltypes.cxx
+++ b/oox/source/drawingml/drawingmltypes.cxx
@@ -187,6 +187,45 @@ sal_Int16 GetParaAdjust( sal_Int32 nAlign )
return nEnum;
}
+TextVerticalAdjust GetTextVerticalAdjust( sal_Int32 nToken )
+{
+ TextVerticalAdjust aVertAdjust;
+ switch( nToken )
+ {
+ case XML_b:
+ aVertAdjust = TextVerticalAdjust_BOTTOM;
+ break;
+ case XML_dist:
+ case XML_just:
+ case XML_ctr:
+ aVertAdjust = TextVerticalAdjust_CENTER;
+ break;
+ case XML_t:
+ default:
+ aVertAdjust = TextVerticalAdjust_TOP;
+ break;
+ }
+ return aVertAdjust;
+}
+
+const char* GetTextVerticalAdjust( TextVerticalAdjust eAdjust )
+{
+ const char* sVerticalAdjust = 0;
+ switch( eAdjust )
+ {
+ case TextVerticalAdjust_BOTTOM:
+ sVerticalAdjust = "b";
+ break;
+ case TextVerticalAdjust_CENTER:
+ sVerticalAdjust = "ctr";
+ break;
+ case TextVerticalAdjust_TOP:
+ default:
+ sVerticalAdjust = "t";
+ break;
+ }
+ return sVerticalAdjust;
+}
TabAlign GetTabAlign( sal_Int32 aToken )
{
diff --git a/oox/source/drawingml/textbodypropertiescontext.cxx b/oox/source/drawingml/textbodypropertiescontext.cxx
index 358db9f..81a99e82 100644
--- a/oox/source/drawingml/textbodypropertiescontext.cxx
+++ b/oox/source/drawingml/textbodypropertiescontext.cxx
@@ -96,16 +96,9 @@ TextBodyPropertiesContext::TextBodyPropertiesContext( ContextHandler2Helper& rPa
}
// ST_TextAnchoringType
- if( rAttribs.hasAttribute( XML_anchor ) ) {
- switch( rAttribs.getToken( XML_anchor, XML_t ) )
- {
- case XML_b : mrTextBodyProp.meVA = drawing::TextVerticalAdjust_BOTTOM; break;
- case XML_dist :
- case XML_just :
- case XML_ctr : mrTextBodyProp.meVA = drawing::TextVerticalAdjust_CENTER; break;
- default:
- case XML_t : mrTextBodyProp.meVA = drawing::TextVerticalAdjust_TOP; break;
- }
+ if( rAttribs.hasAttribute( XML_anchor ) )
+ {
+ mrTextBodyProp.meVA = GetTextVerticalAdjust( rAttribs.getToken( XML_anchor, XML_t ) );
mrTextBodyProp.maPropertyMap[ PROP_TextVerticalAdjust ] <<= mrTextBodyProp.meVA;
}
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 11fd26a..f2dd046 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1541,17 +1541,8 @@ void DrawingML::WriteText( Reference< XInterface > rXIface, bool bBodyPr, bool b
TextVerticalAdjust eVerticalAlignment( TextVerticalAdjust_TOP );
const char* sVerticalAlignment = NULL;
GET( eVerticalAlignment, TextVerticalAdjust );
- switch( eVerticalAlignment ) {
- case TextVerticalAdjust_BOTTOM:
- sVerticalAlignment = "b";
- break;
- case TextVerticalAdjust_CENTER:
- sVerticalAlignment = "ctr";
- break;
- case TextVerticalAdjust_TOP:
- default:
- ;
- }
+ if( eVerticalAlignment != TextVerticalAdjust_TOP )
+ sVerticalAlignment = GetTextVerticalAdjust(eVerticalAlignment);
const char* sWritingMode = NULL;
sal_Bool bVertical = sal_False;
diff --git a/oox/source/shape/WpsContext.cxx b/oox/source/shape/WpsContext.cxx
index 04e8a23..7d37fc1 100644
--- a/oox/source/shape/WpsContext.cxx
+++ b/oox/source/shape/WpsContext.cxx
@@ -11,6 +11,7 @@
#include <oox/drawingml/shapepropertiescontext.hxx>
#include <oox/drawingml/shapestylecontext.hxx>
#include <com/sun/star/beans/XPropertyState.hpp>
+#include <oox/drawingml/drawingmltypes.hxx>
using namespace com::sun::star;
@@ -86,6 +87,13 @@ oox::core::ContextHandlerRef WpsContext::onCreateContext(sal_Int32 nElementToken
for (size_t i = 0; i < SAL_N_ELEMENTS(aProps); ++i)
if (oInsets[i])
xPropertySet->setPropertyValue(aProps[i], uno::makeAny(*oInsets[i]));
+
+ // Handle text vertical adjustment inside a text frame
+ if( rAttribs.hasAttribute( XML_anchor ) )
+ {
+ drawing::TextVerticalAdjust eAdjust = drawingml::GetTextVerticalAdjust( rAttribs.getToken( XML_anchor, XML_t ) );
+ xPropertySet->setPropertyValue("TextVerticalAdjust", uno::makeAny(eAdjust));
+ }
return this;
}
break;
diff --git a/sw/qa/extras/ooxmlexport/data/dml-textframe-vertadjust.docx b/sw/qa/extras/ooxmlexport/data/dml-textframe-vertadjust.docx
new file mode 100644
index 0000000..bf5dcdd
Binary files /dev/null and b/sw/qa/extras/ooxmlexport/data/dml-textframe-vertadjust.docx differ
diff --git a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
index 1284699..27fba45 100644
--- a/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
+++ b/sw/qa/extras/ooxmlexport/ooxmlexport.cxx
@@ -49,6 +49,7 @@
#include <com/sun/star/drawing/EnhancedCustomShapeSegment.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeSegmentCommand.hpp>
#include <com/sun/star/drawing/EnhancedCustomShapeParameterPair.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <libxml/xpathInternals.h>
#include <libxml/parserInternals.h>
@@ -2868,6 +2869,21 @@ DECLARE_OOXMLEXPORT_TEST(testSegFaultWhileSave, "test_segfault_while_save.docx")
CPPUNIT_ASSERT(getXPath(pXmlDoc, "/w:document/w:body/w:tbl/w:tblGrid/w:gridCol[2]", "w").match("6138"));
}
+DECLARE_OOXMLEXPORT_TEST(testDMLTextFrameVertAdjust, "dml-textframe-vertadjust.docx")
+{
+ // DOCX textboxes with text are imported as text frames but in Writer text frames did not have
+ // TextVerticalAdjust attribute so far.
+
+ // 1st frame's context is adjusted to the top
+ uno::Reference<beans::XPropertySet> xFrame(getTextFrameByName("Rectangle 1"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_TOP, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+ // 2nd frame's context is adjusted to the center
+ xFrame.set(getTextFrameByName("Rectangle 2"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_CENTER, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+ // 3rd frame's context is adjusted to the bottom
+ xFrame.set(getTextFrameByName("Rectangle 3"), uno::UNO_QUERY);
+ CPPUNIT_ASSERT_EQUAL(drawing::TextVerticalAdjust_BOTTOM, getProperty<drawing::TextVerticalAdjust>(xFrame, "TextVerticalAdjust"));
+}
#endif
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sw/source/filter/ww8/docxsdrexport.cxx b/sw/source/filter/ww8/docxsdrexport.cxx
index cd2bd55..6278a29 100644
--- a/sw/source/filter/ww8/docxsdrexport.cxx
+++ b/sw/source/filter/ww8/docxsdrexport.cxx
@@ -881,6 +881,12 @@ void DocxSdrExport::writeDMLTextFrame(sw::Frame* pParentFrame, int nAnchorId)
FSEND);
m_pImpl->m_bDMLTextFrameSyntax = true;
m_pImpl->m_pBodyPrAttrList = pFS->createAttrList();
+ {
+ drawing::TextVerticalAdjust eAdjust = drawing::TextVerticalAdjust_TOP;
+ if( xPropSetInfo.is() && xPropSetInfo->hasPropertyByName("TextVerticalAdjust") )
+ xPropertySet->getPropertyValue("TextVerticalAdjust") >>= eAdjust;
+ m_pImpl->m_pBodyPrAttrList->add(XML_anchor, oox::drawingml::GetTextVerticalAdjust(eAdjust));
+ }
m_pImpl->m_rExport.OutputFormat(pParentFrame->GetFrmFmt(), false, false, true);
m_pImpl->m_bDMLTextFrameSyntax = false;
writeDMLEffectLst(rFrmFmt);
commit cf9d8194932318d5e8b27ec8188cf32938670abc
Author: Zolnai Tamás <tamas.zolnai at collabora.com>
Date: Sat Feb 8 02:06:32 2014 +0100
New frame attribute: TextVerticalAdjust <-> RES_TEXT_VERT_ADJUST
By now this property is added for MS Word interoperability.
With it we can make DOCX import/export working.
I use this solution instead of InteropGrabBag because vertical
adjustment would be a good thing to have for text frames too.
So later it can be the first step of an enhanchement.
Change-Id: I9dcfdc8ae56ce443f0c286c51136e1d006951938
diff --git a/include/svx/sdtaitm.hxx b/include/svx/sdtaitm.hxx
index 0cd3589..cab0d06 100644
--- a/include/svx/sdtaitm.hxx
+++ b/include/svx/sdtaitm.hxx
@@ -37,6 +37,7 @@ class SVX_DLLPUBLIC SdrTextVertAdjustItem: public SfxEnumItem {
public:
TYPEINFO();
SdrTextVertAdjustItem(SdrTextVertAdjust eAdj=SDRTEXTVERTADJUST_TOP): SfxEnumItem(SDRATTR_TEXT_VERTADJUST,(sal_uInt16)eAdj) {}
+ SdrTextVertAdjustItem(SdrTextVertAdjust eAdj, sal_uInt16 nWhich): SfxEnumItem(nWhich,(sal_uInt16)eAdj) {}
SdrTextVertAdjustItem(SvStream& rIn) : SfxEnumItem(SDRATTR_TEXT_VERTADJUST,rIn) {}
virtual SfxPoolItem* Clone(SfxItemPool* pPool=NULL) const;
virtual SfxPoolItem* Create(SvStream& rIn, sal_uInt16 nVer) const;
diff --git a/offapi/com/sun/star/text/BaseFrameProperties.idl b/offapi/com/sun/star/text/BaseFrameProperties.idl
index 9038d48..2a1f25c 100644
--- a/offapi/com/sun/star/text/BaseFrameProperties.idl
+++ b/offapi/com/sun/star/text/BaseFrameProperties.idl
@@ -29,6 +29,7 @@
#include <com/sun/star/xml/UserDefinedAttributesSupplier.idl>
#include <com/sun/star/drawing/FillStyle.idl>
#include <com/sun/star/awt/Gradient.idl>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
module com { module sun { module star { module text {
@@ -351,6 +352,13 @@ published service BaseFrameProperties
@since LibreOffice 4.3
*/
[optional, property] short RelativeWidthRelation;
+
+ /** adjusts the vertical position of the text inside of the frame.
+
+ @see com::sun::star::drawing::TextVerticalAdjust
+ @since LibreOffice 4.3
+ */
+ [optional, property] com::sun::star::drawing::TextVerticalAdjust TextVerticalAdjust;
};
diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx
index e92f8e3..cb79ce4 100644
--- a/sw/inc/format.hxx
+++ b/sw/inc/format.hxx
@@ -258,6 +258,7 @@ public:
inline const SwFmtFollowTextFlow &GetFollowTextFlow(sal_Bool = sal_True) const;
// #i28701#
inline const SwFmtWrapInfluenceOnObjPos& GetWrapInfluenceOnObjPos(sal_Bool = sal_True) const;
+ inline const SdrTextVertAdjustItem& GetTextVertAdjust(sal_Bool = sal_True) const;
/// Graphics-attributes - implemented in grfatr.hxx
inline const SwMirrorGrf &GetMirrorGrf( sal_Bool = sal_True ) const;
diff --git a/sw/inc/frmatr.hxx b/sw/inc/frmatr.hxx
index 977680c..772eb0c 100644
--- a/sw/inc/frmatr.hxx
+++ b/sw/inc/frmatr.hxx
@@ -56,6 +56,8 @@ inline const SvxMacroItem &SwAttrSet::GetMacro(sal_Bool bInP) const
{ return (const SvxMacroItem&)Get( RES_FRMMACRO,bInP); }
inline const SvxFrameDirectionItem &SwAttrSet::GetFrmDir(sal_Bool bInP) const
{ return (const SvxFrameDirectionItem&)Get( RES_FRAMEDIR,bInP); }
+inline const SdrTextVertAdjustItem &SwAttrSet::GetTextVertAdjust(sal_Bool bInP) const
+ { return (const SdrTextVertAdjustItem&)Get( RES_TEXT_VERT_ADJUST,bInP); }
// Implementation of FrameAttribute methods of SwFmt.
@@ -85,6 +87,8 @@ inline const SvxMacroItem &SwFmt::GetMacro(sal_Bool bInP) const
{ return aSet.GetMacro(bInP); }
inline const SvxFrameDirectionItem &SwFmt::GetFrmDir(sal_Bool bInP) const
{ return aSet.GetFrmDir(bInP); }
+inline const SdrTextVertAdjustItem &SwFmt::GetTextVertAdjust(sal_Bool bInP) const
+ { return aSet.GetTextVertAdjust(bInP); }
#endif // INCLUDED_SW_INC_FRMATR_HXX
diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx
index eef0557..cf911ab 100644
--- a/sw/inc/hintids.hxx
+++ b/sw/inc/hintids.hxx
@@ -232,47 +232,48 @@ RES_FRMATR_BEGIN = RES_PARATR_LIST_END,
RES_FILL_STYLE, // 127
RES_FILL_GRADIENT, // 128
RES_FRMATR_GRABBAG, // 129
+ RES_TEXT_VERT_ADJUST, // 130
RES_FRMATR_END
};
enum RES_GRFATR
{
RES_GRFATR_BEGIN = RES_FRMATR_END,
- RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 130
- RES_GRFATR_CROPGRF, // 131
-
- RES_GRFATR_ROTATION, // 132
- RES_GRFATR_LUMINANCE, // 133
- RES_GRFATR_CONTRAST, // 134
- RES_GRFATR_CHANNELR, // 135
- RES_GRFATR_CHANNELG, // 136
- RES_GRFATR_CHANNELB, // 137
- RES_GRFATR_GAMMA, // 138
- RES_GRFATR_INVERT, // 139
- RES_GRFATR_TRANSPARENCY, // 140
- RES_GRFATR_DRAWMODE, // 141
-
- RES_GRFATR_DUMMY1, // 142
- RES_GRFATR_DUMMY2, // 143
- RES_GRFATR_DUMMY3, // 144
- RES_GRFATR_DUMMY4, // 145
- RES_GRFATR_DUMMY5, // 146
+ RES_GRFATR_MIRRORGRF = RES_GRFATR_BEGIN, // 131
+ RES_GRFATR_CROPGRF, // 132
+
+ RES_GRFATR_ROTATION, // 133
+ RES_GRFATR_LUMINANCE, // 134
+ RES_GRFATR_CONTRAST, // 135
+ RES_GRFATR_CHANNELR, // 136
+ RES_GRFATR_CHANNELG, // 137
+ RES_GRFATR_CHANNELB, // 138
+ RES_GRFATR_GAMMA, // 139
+ RES_GRFATR_INVERT, // 140
+ RES_GRFATR_TRANSPARENCY, // 141
+ RES_GRFATR_DRAWMODE, // 142
+
+ RES_GRFATR_DUMMY1, // 143
+ RES_GRFATR_DUMMY2, // 144
+ RES_GRFATR_DUMMY3, // 145
+ RES_GRFATR_DUMMY4, // 146
+ RES_GRFATR_DUMMY5, // 147
RES_GRFATR_END
};
enum RES_BOXATR
{
RES_BOXATR_BEGIN = RES_GRFATR_END,
- RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 147
- RES_BOXATR_FORMULA, // 148
- RES_BOXATR_VALUE, // 149
+ RES_BOXATR_FORMAT = RES_BOXATR_BEGIN, // 148
+ RES_BOXATR_FORMULA, // 149
+ RES_BOXATR_VALUE, // 150
RES_BOXATR_END
};
enum RES_UNKNOWNATR
{
RES_UNKNOWNATR_BEGIN = RES_BOXATR_END,
- RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN,// 150
+ RES_UNKNOWNATR_CONTAINER = RES_UNKNOWNATR_BEGIN,// 151
RES_UNKNOWNATR_END
};
diff --git a/sw/inc/swatrset.hxx b/sw/inc/swatrset.hxx
index 72e77cf..edad754 100644
--- a/sw/inc/swatrset.hxx
+++ b/sw/inc/swatrset.hxx
@@ -96,6 +96,7 @@ class SwTextGridItem;
class SwHeaderAndFooterEatSpacingItem;
class SwFmtFollowTextFlow;
class SwFmtWrapInfluenceOnObjPos;
+class SdrTextVertAdjustItem;
// Graphic attributes
class SwMirrorGrf;
@@ -293,6 +294,7 @@ public:
inline const SwHeaderAndFooterEatSpacingItem &GetHeaderAndFooterEatSpacing( sal_Bool = sal_True ) const;
inline const SwFmtFollowTextFlow &GetFollowTextFlow(sal_Bool = sal_True) const;
inline const SwFmtWrapInfluenceOnObjPos& GetWrapInfluenceOnObjPos(sal_Bool = sal_True) const;
+ inline const SdrTextVertAdjustItem& GetTextVertAdjust(sal_Bool = sal_True) const;
// Graphic attributes - implementation in grfatr.hxx
inline const SwMirrorGrf &GetMirrorGrf( sal_Bool = sal_True ) const;
diff --git a/sw/inc/unoprnms.hxx b/sw/inc/unoprnms.hxx
index 369d3d3..0be3cf7 100644
--- a/sw/inc/unoprnms.hxx
+++ b/sw/inc/unoprnms.hxx
@@ -813,6 +813,7 @@
#define UNO_NAME_CHAR_HIGHLIGHT "CharHighlight"
#define UNO_NAME_STYLE_INTEROP_GRAB_BAG "StyleInteropGrabBag"
#define UNO_NAME_CHAR_INTEROP_GRAB_BAG "CharInteropGrabBag"
+#define UNO_NAME_TEXT_VERT_ADJUST "TextVerticalAdjust"
#endif
diff --git a/sw/source/core/bastyp/init.cxx b/sw/source/core/bastyp/init.cxx
index 4258612..1bfecbe 100644
--- a/sw/source/core/bastyp/init.cxx
+++ b/sw/source/core/bastyp/init.cxx
@@ -113,6 +113,7 @@
#include <svx/dialogs.hrc>
#include <svx/xfillit0.hxx>
#include <svx/xflgrit.hxx>
+#include <svx/sdtaitm.hxx>
#include <swcalwrp.hxx>
#include <SwStyleNameMapper.hxx>
#include <tblafmt.hxx>
@@ -390,6 +391,7 @@ SfxItemInfo aSlotTab[] =
{ SID_SW_ATTR_FILL_STYLE, SFX_ITEM_POOLABLE }, // RES_FILL_STYLE
{ SID_SW_ATTR_FILL_GRADIENT, SFX_ITEM_POOLABLE }, // RES_FILL_GRADIENT
{ 0, SFX_ITEM_POOLABLE }, // RES_FRMATR_GRABBAG
+ { 0, SFX_ITEM_POOLABLE }, // RES_TEXT_VERT_ADJUST
{ 0, SFX_ITEM_POOLABLE }, // RES_GRFATR_MIRRORGRF
{ SID_ATTR_GRAF_CROP, SFX_ITEM_POOLABLE }, // RES_GRFATR_CROPGRF
@@ -607,6 +609,7 @@ void _InitCore()
aAttrTab[ RES_FILL_STYLE - POOLATTR_BEGIN ] = new XFillStyleItem(XFILL_SOLID, RES_FILL_STYLE);
aAttrTab[ RES_FILL_GRADIENT - POOLATTR_BEGIN ] = new XFillGradientItem(RES_FILL_GRADIENT);
aAttrTab[ RES_FRMATR_GRABBAG - POOLATTR_BEGIN ] = new SfxGrabBagItem(RES_FRMATR_GRABBAG);
+ aAttrTab[ RES_TEXT_VERT_ADJUST - POOLATTR_BEGIN ] = new SdrTextVertAdjustItem(SDRTEXTVERTADJUST_TOP,RES_TEXT_VERT_ADJUST);
aAttrTab[ RES_GRFATR_MIRRORGRF- POOLATTR_BEGIN ] = new SwMirrorGrf;
aAttrTab[ RES_GRFATR_CROPGRF- POOLATTR_BEGIN ] = new SwCropGrf;
diff --git a/sw/source/core/unocore/unoframe.cxx b/sw/source/core/unocore/unoframe.cxx
index a295b82..9d204bf 100644
--- a/sw/source/core/unocore/unoframe.cxx
+++ b/sw/source/core/unocore/unoframe.cxx
@@ -27,9 +27,11 @@
#include <com/sun/star/embed/EmbedStates.hpp>
#include <com/sun/star/embed/Aspects.hpp>
#include <com/sun/star/graphic/XGraphicProvider.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <svx/svxids.hrc>
#include <svx/xfillit0.hxx>
#include <svx/xflgrit.hxx>
+#include <svx/sdtaitm.hxx>
#include <editeng/memberids.hrc>
#include <swtypes.hxx>
@@ -587,6 +589,17 @@ bool BaseFrameProperties_Impl::FillBaseProperties(SwDoc* pDoc, SfxItemSet& rToSe
rToSet.Put(aFmtWrapInfluenceOnObjPos);
}
+ {
+ const ::uno::Any* pTextVertAdjust = 0;
+ GetProperty(RES_TEXT_VERT_ADJUST, 0, pTextVertAdjust);
+ if ( pTextVertAdjust )
+ {
+ SdrTextVertAdjustItem aTextVertAdjust(static_cast <const :: SdrTextVertAdjustItem & > ( rFromSet.Get ( RES_TEXT_VERT_ADJUST ) ));
+ bRet &= ((SfxPoolItem&)aTextVertAdjust).PutValue(*pTextVertAdjust);
+ rToSet.Put(aTextVertAdjust);
+ }
+ }
+
return bRet;
}
diff --git a/sw/source/core/unocore/unomap.cxx b/sw/source/core/unocore/unomap.cxx
index a8b15f5..eac4e79 100644
--- a/sw/source/core/unocore/unomap.cxx
+++ b/sw/source/core/unocore/unomap.cxx
@@ -34,6 +34,7 @@
#include <com/sun/star/drawing/FillStyle.hpp>
#include <com/sun/star/drawing/LineStyle.hpp>
#include <com/sun/star/drawing/PointSequenceSequence.hpp>
+#include <com/sun/star/drawing/TextVerticalAdjust.hpp>
#include <com/sun/star/embed/XEmbeddedObject.hpp>
#include <com/sun/star/frame/XModel.hpp>
#include <com/sun/star/graphic/XGraphic.hpp>
@@ -409,7 +410,8 @@ SwUnoPropertyMapProvider::~SwUnoPropertyMapProvider()
{ OUString(UNO_NAME_DESCRIPTION), FN_UNO_DESCRIPTION, cppu::UnoType<OUString>::get(), PROPERTY_NONE, 0}, \
{ OUString(UNO_NAME_LAYOUT_SIZE), WID_LAYOUT_SIZE, cppu::UnoType<css::awt::Size>::get(), PropertyAttribute::MAYBEVOID | PropertyAttribute::READONLY, 0 }, \
{ OUString(UNO_NAME_LINE_STYLE), RES_BOX, cppu::UnoType<css::drawing::LineStyle>::get(), 0, LINE_STYLE }, \
- { OUString(UNO_NAME_LINE_WIDTH), RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, LINE_WIDTH |CONVERT_TWIPS },
+ { OUString(UNO_NAME_LINE_WIDTH), RES_BOX, cppu::UnoType<sal_Int32>::get(), 0, LINE_WIDTH |CONVERT_TWIPS }, \
+ { OUString(UNO_NAME_TEXT_VERT_ADJUST), RES_TEXT_VERT_ADJUST, cppu::UnoType<css::drawing::TextVerticalAdjust>::get(), PROPERTY_NONE ,0},
@@ -874,6 +876,7 @@ const SfxItemPropertyMapEntry* SwUnoPropertyMapProvider::GetPropertyMapEntries(s
{ OUString(UNO_NAME_WRAP_INFLUENCE_ON_POSITION), RES_WRAP_INFLUENCE_ON_OBJPOS, cppu::UnoType<sal_Int8>::get(), PROPERTY_NONE, MID_WRAP_INFLUENCE},
{ OUString(UNO_NAME_WRITING_MODE), RES_FRAMEDIR, cppu::UnoType<sal_Int16>::get(), PROPERTY_NONE, 0 },
{ OUString(UNO_NAME_HIDDEN), FN_UNO_HIDDEN, cppu::UnoType<bool>::get(), PROPERTY_NONE, 0},
+ { OUString(UNO_NAME_TEXT_VERT_ADJUST), RES_TEXT_VERT_ADJUST, cppu::UnoType<css::drawing::TextVerticalAdjust>::get(), PROPERTY_NONE ,0},
{ OUString(), 0, css::uno::Type(), 0, 0 }
};
aMapEntriesArr[nPropertyId] = aFrameStyleMap;
diff --git a/sw/source/filter/html/css1atr.cxx b/sw/source/filter/html/css1atr.cxx
index d251ef8..1919377 100644
--- a/sw/source/filter/html/css1atr.cxx
+++ b/sw/source/filter/html/css1atr.cxx
@@ -3735,6 +3735,8 @@ SwAttrFnTab aCSS1AttrFnTab = {
/* RES_FRMATR_CONDITIONAL_STYLE_NAME */ 0,
/* RES_FILL_STYLE */ 0,
/* RES_FILL_GRADIENT */ 0,
+/* RES_FRMATR_GRABBAG */ 0,
+/* RES_TEXT_VERT_ADJUST */ 0,
/* RES_GRFATR_MIRRORGRF */ 0,
/* RES_GRFATR_CROPGRF */ 0,
diff --git a/sw/source/filter/html/htmlatr.cxx b/sw/source/filter/html/htmlatr.cxx
index 351d4ff..f15a9ab 100644
--- a/sw/source/filter/html/htmlatr.cxx
+++ b/sw/source/filter/html/htmlatr.cxx
@@ -3369,6 +3369,8 @@ SwAttrFnTab aHTMLAttrFnTab = {
/* RES_FRMATR_CONDITIONAL_STYLE_NAME */ 0,
/* RES_FILL_STYLE */ 0,
/* RES_FILL_GRADIENT */ 0,
+/* RES_FRMATR_GRABBAG */ 0,
+/* RES_TEXT_VERT_ADJUST */ 0,
/* RES_GRFATR_MIRRORGRF */ 0,
/* RES_GRFATR_CROPGRF */ 0,
More information about the Libreoffice-commits
mailing list