summaryrefslogtreecommitdiff
path: root/include
diff options
context:
space:
mode:
authorNoel Grandin <noel@peralex.com>2014-08-01 12:34:33 +0200
committerCaolán McNamara <caolanm@redhat.com>2014-08-20 09:01:26 -0500
commit794d5ac4ac0b1dcaac289772ce096a4295d4e15d (patch)
treed02d4d13e793b0856c4dd962cf4b8d946942e3c4 /include
parent71804294c79136ef43a8f91b5c961e266d32187a (diff)
vcl: use enum for complex text layout constants
Since these constants are bitfield flags, we define some methods to make working with them reasonably type safe. Move the definitions to outdevstate.hxx, since we need the values there, and that appears to be the "root most" header file. Also dump TEXT_LAYOUT_BIDI_LTR constant, since it means the same thing as TEXT_LAYOUT_DEFAULT (ie. 0), and leaving it in causes people to write weird code thinking that it's a real flag. Change-Id: Iddab86cd6c78181ceb8caa48e77e1f5a8e526343 Reviewed-on: https://gerrit.libreoffice.org/10676 Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'include')
-rw-r--r--include/vcl/metaact.hxx7
-rw-r--r--include/vcl/outdev.hxx17
-rw-r--r--include/vcl/outdevstate.hxx40
-rw-r--r--include/vcl/pdfwriter.hxx3
4 files changed, 48 insertions, 19 deletions
diff --git a/include/vcl/metaact.hxx b/include/vcl/metaact.hxx
index 569fd64de23d..572a0a2f3be4 100644
--- a/include/vcl/metaact.hxx
+++ b/include/vcl/metaact.hxx
@@ -35,6 +35,7 @@
#include <vcl/gfxlink.hxx>
#include <vcl/lineinfo.hxx>
#include <vcl/metaactiontypes.hxx>
+#include <vcl/outdevstate.hxx>
class SvStream;
@@ -1562,7 +1563,7 @@ class VCL_DLLPUBLIC MetaLayoutModeAction : public MetaAction
{
private:
- sal_uInt32 mnLayoutMode;
+ ComplexTextLayoutMode mnLayoutMode;
virtual bool Compare( const MetaAction& ) const SAL_OVERRIDE;
public:
@@ -1575,9 +1576,9 @@ public:
virtual void Write( SvStream& rOStm, ImplMetaWriteData* pData ) SAL_OVERRIDE;
virtual void Read( SvStream& rIStm, ImplMetaReadData* pData ) SAL_OVERRIDE;
- explicit MetaLayoutModeAction( sal_uInt32 nLayoutMode );
+ explicit MetaLayoutModeAction( ComplexTextLayoutMode nLayoutMode );
- sal_uInt32 GetLayoutMode() const { return mnLayoutMode; }
+ ComplexTextLayoutMode GetLayoutMode() const { return mnLayoutMode; }
};
class VCL_DLLPUBLIC MetaTextLanguageAction : public MetaAction
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index 738e6847bdf7..61114a1fba9c 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -181,17 +181,6 @@ namespace vcl
#define GRID_VERTLINES ((sal_uLong)0x00000004)
#define GRID_LINES (GRID_HORZLINES | GRID_VERTLINES)
-// LayoutModes for Complex Text Layout
-#define TEXT_LAYOUT_DEFAULT ((sal_uLong)0x00000000)
-#define TEXT_LAYOUT_BIDI_LTR ((sal_uLong)0x00000000)
-#define TEXT_LAYOUT_BIDI_RTL ((sal_uLong)0x00000001)
-#define TEXT_LAYOUT_BIDI_STRONG ((sal_uLong)0x00000002)
-#define TEXT_LAYOUT_TEXTORIGIN_LEFT ((sal_uLong)0x00000004)
-#define TEXT_LAYOUT_TEXTORIGIN_RIGHT ((sal_uLong)0x00000008)
-#define TEXT_LAYOUT_COMPLEX_DISABLED ((sal_uLong)0x00000100)
-#define TEXT_LAYOUT_ENABLE_LIGATURES ((sal_uLong)0x00000200)
-#define TEXT_LAYOUT_SUBSTITUTE_DIGITS ((sal_uLong)0x00000400)
-
// DrawModes
#define DRAWMODE_DEFAULT ((sal_uLong)0x00000000)
#define DRAWMODE_BLACKLINE ((sal_uLong)0x00000001)
@@ -316,7 +305,7 @@ private:
mutable long mnEmphasisAscent;
mutable long mnEmphasisDescent;
sal_uLong mnDrawMode;
- sal_uLong mnTextLayoutMode;
+ ComplexTextLayoutMode mnTextLayoutMode;
ImplMapRes maMapRes;
ImplThresholdRes maThresRes;
OutDevType meOutDevType;
@@ -565,8 +554,8 @@ public:
void SetDrawMode( sal_uLong nDrawMode );
sal_uLong GetDrawMode() const { return mnDrawMode; }
- void SetLayoutMode( sal_uLong nTextLayoutMode );
- sal_uLong GetLayoutMode() const { return mnTextLayoutMode; }
+ void SetLayoutMode( ComplexTextLayoutMode nTextLayoutMode );
+ ComplexTextLayoutMode GetLayoutMode() const { return mnTextLayoutMode; }
void SetDigitLanguage( LanguageType );
LanguageType GetDigitLanguage() const { return meTextLanguage; }
diff --git a/include/vcl/outdevstate.hxx b/include/vcl/outdevstate.hxx
index 39aedcbab390..847a5f27a70b 100644
--- a/include/vcl/outdevstate.hxx
+++ b/include/vcl/outdevstate.hxx
@@ -50,6 +50,44 @@
#define PUSH_ALLFONT (PUSH_ALLTEXT | PUSH_FONT)
#define PUSH_ALL ((sal_uInt16)0xFFFF)
+// LayoutModes for Complex Text Layout
+// These are flag values, i.e they can be combined
+enum ComplexTextLayoutMode
+{
+ TEXT_LAYOUT_DEFAULT = ((sal_uLong)0x00000000),
+ TEXT_LAYOUT_BIDI_RTL = ((sal_uLong)0x00000001),
+ TEXT_LAYOUT_BIDI_STRONG = ((sal_uLong)0x00000002),
+ TEXT_LAYOUT_TEXTORIGIN_LEFT = ((sal_uLong)0x00000004),
+ TEXT_LAYOUT_TEXTORIGIN_RIGHT = ((sal_uLong)0x00000008),
+ TEXT_LAYOUT_COMPLEX_DISABLED = ((sal_uLong)0x00000100),
+ TEXT_LAYOUT_ENABLE_LIGATURES = ((sal_uLong)0x00000200),
+ TEXT_LAYOUT_SUBSTITUTE_DIGITS = ((sal_uLong)0x00000400)
+};
+// make combining these type-safe
+inline ComplexTextLayoutMode operator| (ComplexTextLayoutMode lhs, ComplexTextLayoutMode rhs)
+{
+ return static_cast<ComplexTextLayoutMode>(static_cast<sal_uLong>(lhs) | static_cast<sal_uLong>(rhs));
+}
+inline ComplexTextLayoutMode operator& (ComplexTextLayoutMode lhs, ComplexTextLayoutMode rhs)
+{
+ return static_cast<ComplexTextLayoutMode>(static_cast<sal_uLong>(lhs) & static_cast<sal_uLong>(rhs));
+}
+inline ComplexTextLayoutMode operator~ (ComplexTextLayoutMode rhs)
+{
+ return static_cast<ComplexTextLayoutMode>(0x7ff & ~(static_cast<sal_uLong>(rhs)));
+}
+inline ComplexTextLayoutMode& operator|= (ComplexTextLayoutMode& lhs, ComplexTextLayoutMode rhs)
+{
+ lhs = static_cast<ComplexTextLayoutMode>(static_cast<sal_uLong>(lhs) | static_cast<sal_uLong>(rhs));
+ return lhs;
+}
+inline ComplexTextLayoutMode& operator&= (ComplexTextLayoutMode& lhs, ComplexTextLayoutMode rhs)
+{
+ lhs = static_cast<ComplexTextLayoutMode>(static_cast<sal_uLong>(lhs) & static_cast<sal_uLong>(rhs));
+ return lhs;
+}
+
+
class OutDevState
{
public:
@@ -68,7 +106,7 @@ public:
Point* mpRefPoint;
TextAlign meTextAlign;
RasterOp meRasterOp;
- sal_uLong mnTextLayoutMode;
+ ComplexTextLayoutMode mnTextLayoutMode;
LanguageType meTextLanguage;
sal_uInt16 mnFlags;
};
diff --git a/include/vcl/pdfwriter.hxx b/include/vcl/pdfwriter.hxx
index 49ce97cf1157..95a99ed8133f 100644
--- a/include/vcl/pdfwriter.hxx
+++ b/include/vcl/pdfwriter.hxx
@@ -28,6 +28,7 @@
#include <vcl/vclenum.hxx>
#include <vcl/font.hxx>
#include <vcl/graphictools.hxx>
+#include <vcl/outdevstate.hxx>
#include <com/sun/star/io/XOutputStream.hpp>
#include <com/sun/star/beans/XMaterialHolder.hpp>
@@ -737,7 +738,7 @@ The following structure describes the permissions used in PDF security
void IntersectClipRegion( const Rectangle& rRect );
void IntersectClipRegion( const basegfx::B2DPolyPolygon& rRegion );
- void SetLayoutMode( sal_uLong nMode );
+ void SetLayoutMode( ComplexTextLayoutMode nMode );
void SetDigitLanguage( LanguageType eLang );
void SetLineColor( const Color& rColor );