summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorTamás Zolnai <tamas.zolnai@collabora.com>2017-04-02 15:21:14 +0200
committerTamás Zolnai <tamas.zolnai@collabora.com>2017-04-02 19:11:19 +0000
commit1e30d2aface12a31687e5a27126e2061efd4b0cd (patch)
tree1f1a702a09c1996e0f0319cd039a9a4f39b08032 /editeng
parenta52f3310a6d84fcfffcc49016bbec35bfb6ee5e8 (diff)
Add SvxTextRotateItem inherited from SvxCharRotatItem
I will be use it later for text rotation inside a table. Change-Id: I4cbaf05953b0e71331d2f3fdb45b7c4254a2b8cc Reviewed-on: https://gerrit.libreoffice.org/36021 Reviewed-by: Tamás Zolnai <tamas.zolnai@collabora.com> Tested-by: Tamás Zolnai <tamas.zolnai@collabora.com>
Diffstat (limited to 'editeng')
-rw-r--r--editeng/source/items/svxitems.src8
-rw-r--r--editeng/source/items/textitem.cxx119
2 files changed, 115 insertions, 12 deletions
diff --git a/editeng/source/items/svxitems.src b/editeng/source/items/svxitems.src
index 087ee07bb6cd..47da1c953d5c 100644
--- a/editeng/source/items/svxitems.src
+++ b/editeng/source/items/svxitems.src
@@ -889,6 +889,14 @@ String RID_SVXITEMS_CHARROTATE_FITLINE
{
Text [ en-US ] = "Fit to line";
};
+String RID_SVXITEMS_TEXTROTATE_OFF
+{
+ Text [ en-US ] = "Text is not rotated";
+};
+String RID_SVXITEMS_TEXTROTATE
+{
+ Text [ en-US ] = "Text is rotated by $(ARG1)°";
+};
String RID_SVXITEMS_CHARSCALE
{
Text [ en-US ] = "Characters scaled $(ARG1)%";
diff --git a/editeng/source/items/textitem.cxx b/editeng/source/items/textitem.cxx
index 72fc2c210f66..e1d24094c8a7 100644
--- a/editeng/source/items/textitem.cxx
+++ b/editeng/source/items/textitem.cxx
@@ -2833,13 +2833,114 @@ sal_uInt16 SvxTwoLinesItem::GetVersion( sal_uInt16 nFFVer ) const
/*************************************************************************
+|* class SvxTextRotateItem
+*************************************************************************/
+
+SvxTextRotateItem::SvxTextRotateItem(sal_uInt16 nValue, const sal_uInt16 nW)
+ : SfxUInt16Item(nW, nValue)
+{
+}
+
+SfxPoolItem* SvxTextRotateItem::Clone(SfxItemPool*) const
+{
+ return new SvxTextRotateItem(GetValue(), Which());
+}
+
+SfxPoolItem* SvxTextRotateItem::Create(SvStream& rStrm, sal_uInt16) const
+{
+ sal_uInt16 nVal;
+ rStrm.ReadUInt16(nVal);
+ return new SvxTextRotateItem(nVal, Which());
+}
+
+SvStream& SvxTextRotateItem::Store(SvStream & rStrm, sal_uInt16) const
+{
+ rStrm.WriteUInt16(GetValue());
+ return rStrm;
+}
+
+sal_uInt16 SvxTextRotateItem::GetVersion(sal_uInt16 nFFVer) const
+{
+ return SOFFICE_FILEFORMAT_50 > nFFVer ? USHRT_MAX : 0;
+}
+
+bool SvxTextRotateItem::GetPresentation(
+ SfxItemPresentation /*ePres*/,
+ MapUnit /*eCoreMetric*/, MapUnit /*ePresMetric*/,
+ OUString &rText, const IntlWrapper*) const
+{
+ if (!GetValue())
+ rText = EditResId::GetString(RID_SVXITEMS_TEXTROTATE_OFF);
+ else
+ {
+ rText = EditResId::GetString(RID_SVXITEMS_TEXTROTATE);
+ rText = rText.replaceFirst("$(ARG1)",
+ OUString::number(GetValue() / 10));
+ }
+ return true;
+}
+
+bool SvxTextRotateItem::QueryValue(css::uno::Any& rVal,
+ sal_uInt8 nMemberId) const
+{
+ nMemberId &= ~CONVERT_TWIPS;
+ bool bRet = true;
+ switch (nMemberId)
+ {
+ case MID_ROTATE:
+ rVal <<= (sal_Int16)GetValue();
+ break;
+ default:
+ bRet = false;
+ break;
+ }
+ return bRet;
+}
+
+bool SvxTextRotateItem::PutValue(const css::uno::Any& rVal, sal_uInt8 nMemberId)
+{
+ nMemberId &= ~CONVERT_TWIPS;
+ bool bRet = true;
+ switch (nMemberId)
+ {
+ case MID_ROTATE:
+ {
+ sal_Int16 nVal = 0;
+ if ((rVal >>= nVal) && (0 == nVal || 900 == nVal || 2700 == nVal))
+ SetValue((sal_uInt16)nVal);
+ else
+ bRet = false;
+ break;
+ }
+ default:
+ bRet = false;
+ }
+ return bRet;
+}
+
+bool SvxTextRotateItem::operator==(const SfxPoolItem& rItem) const
+{
+ assert(SfxPoolItem::operator==(rItem));
+ return SfxUInt16Item::operator==(rItem);
+}
+
+void SvxTextRotateItem::dumpAsXml(xmlTextWriterPtr pWriter) const
+{
+ xmlTextWriterStartElement(pWriter, BAD_CAST("SvxTextRotateItem"));
+ xmlTextWriterWriteAttribute(pWriter, BAD_CAST("whichId"), BAD_CAST(OString::number(Which()).getStr()));
+ xmlTextWriterWriteAttribute(pWriter, BAD_CAST("value"), BAD_CAST(OString::number(GetValue()).getStr()));
+ xmlTextWriterEndElement(pWriter);
+}
+
+
+/*************************************************************************
|* class SvxCharRotateItem
*************************************************************************/
SvxCharRotateItem::SvxCharRotateItem( sal_uInt16 nValue,
bool bFitIntoLine,
const sal_uInt16 nW )
- : SfxUInt16Item( nW, nValue ), bFitToLine( bFitIntoLine )
+ : SvxTextRotateItem(nValue, nW), bFitToLine( bFitIntoLine )
{
}
@@ -2889,12 +2990,11 @@ bool SvxCharRotateItem::GetPresentation(
bool SvxCharRotateItem::QueryValue( css::uno::Any& rVal,
sal_uInt8 nMemberId ) const
{
- nMemberId &= ~CONVERT_TWIPS;
bool bRet = true;
- switch( nMemberId )
+ switch(nMemberId & ~CONVERT_TWIPS)
{
case MID_ROTATE:
- rVal <<= (sal_Int16)GetValue();
+ SvxTextRotateItem::QueryValue(rVal, nMemberId);
break;
case MID_FITTOLINE:
rVal <<= (bool) IsFitToLine();
@@ -2909,17 +3009,12 @@ bool SvxCharRotateItem::QueryValue( css::uno::Any& rVal,
bool SvxCharRotateItem::PutValue( const css::uno::Any& rVal,
sal_uInt8 nMemberId )
{
- nMemberId &= ~CONVERT_TWIPS;
bool bRet = true;
- switch( nMemberId )
+ switch(nMemberId & ~CONVERT_TWIPS)
{
case MID_ROTATE:
{
- sal_Int16 nVal = 0;
- if((rVal >>= nVal) && (0 == nVal || 900 == nVal || 2700 == nVal))
- SetValue( (sal_uInt16)nVal );
- else
- bRet = false;
+ bRet = SvxTextRotateItem::PutValue(rVal, nMemberId);
break;
}
@@ -2935,7 +3030,7 @@ bool SvxCharRotateItem::PutValue( const css::uno::Any& rVal,
bool SvxCharRotateItem::operator==( const SfxPoolItem& rItem ) const
{
assert(SfxPoolItem::operator==(rItem));
- return SfxUInt16Item::operator==( rItem ) &&
+ return SvxTextRotateItem::operator==( rItem ) &&
IsFitToLine() == static_cast<const SvxCharRotateItem&>(rItem).IsFitToLine();
}