diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-11-29 14:37:55 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2016-11-30 06:38:09 +0000 |
commit | 4c5224a29fc11125bc845624a0ffe470416b791c (patch) | |
tree | 54e0bb39313e940290c365625908429924e7a099 /vcl/source | |
parent | 794c542953ca040d0e039f238bb00c95f6fdbaea (diff) |
convert GraphicsState flags to o3tl::typed_flags
Change-Id: I5b660895c470a904fa5f1bc8123cea901ad8cf9c
Reviewed-on: https://gerrit.libreoffice.org/31365
Tested-by: Jenkins <ci@libreoffice.org>
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'vcl/source')
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.cxx | 44 | ||||
-rw-r--r-- | vcl/source/gdi/pdfwriter_impl.hxx | 61 |
2 files changed, 56 insertions, 49 deletions
diff --git a/vcl/source/gdi/pdfwriter_impl.cxx b/vcl/source/gdi/pdfwriter_impl.cxx index 30daf70ee248..cd391ca5481f 100644 --- a/vcl/source/gdi/pdfwriter_impl.cxx +++ b/vcl/source/gdi/pdfwriter_impl.cxx @@ -11515,9 +11515,9 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode) GraphicsState& rNewState = m_aGraphicsStack.front(); // first set clip region since it might invalidate everything else - if( (rNewState.m_nUpdateFlags & GraphicsState::updateClipRegion) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::ClipRegion) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateClipRegion; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::ClipRegion; if( m_aCurrentPDFState.m_bClipRegion != rNewState.m_bClipRegion || ( rNewState.m_bClipRegion && m_aCurrentPDFState.m_aClipRegion != rNewState.m_aClipRegion ) ) @@ -11527,7 +11527,7 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode) aLine.append( "Q " ); // invalidate everything but the clip region m_aCurrentPDFState = GraphicsState(); - rNewState.m_nUpdateFlags = sal::static_int_cast<sal_uInt16>(~GraphicsState::updateClipRegion); + rNewState.m_nUpdateFlags = ~GraphicsStateUpdateFlags::ClipRegion; } if( rNewState.m_bClipRegion ) { @@ -11550,34 +11550,34 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode) } } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateMapMode) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::MapMode) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateMapMode; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::MapMode; getReferenceDevice()->SetMapMode( rNewState.m_aMapMode ); } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateFont) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::Font) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateFont; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::Font; getReferenceDevice()->SetFont( rNewState.m_aFont ); getReferenceDevice()->ImplNewFont(); } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateLayoutMode) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::LayoutMode) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateLayoutMode; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::LayoutMode; getReferenceDevice()->SetLayoutMode( rNewState.m_nLayoutMode ); } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateDigitLanguage) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::DigitLanguage) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateDigitLanguage; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::DigitLanguage; getReferenceDevice()->SetDigitLanguage( rNewState.m_aDigitLanguage ); } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateLineColor) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::LineColor) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateLineColor; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::LineColor; if( m_aCurrentPDFState.m_aLineColor != rNewState.m_aLineColor && rNewState.m_aLineColor != Color( COL_TRANSPARENT ) ) { @@ -11586,9 +11586,9 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode) } } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateFillColor) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::FillColor) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateFillColor; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::FillColor; if( m_aCurrentPDFState.m_aFillColor != rNewState.m_aFillColor && rNewState.m_aFillColor != Color( COL_TRANSPARENT ) ) { @@ -11597,9 +11597,9 @@ void PDFWriterImpl::updateGraphicsState(Mode const mode) } } - if( (rNewState.m_nUpdateFlags & GraphicsState::updateTransparentPercent) ) + if( (rNewState.m_nUpdateFlags & GraphicsStateUpdateFlags::TransparentPercent) ) { - rNewState.m_nUpdateFlags &= ~GraphicsState::updateTransparentPercent; + rNewState.m_nUpdateFlags &= ~GraphicsStateUpdateFlags::TransparentPercent; if( m_aContext.Version >= PDFWriter::PDF_1_4 && m_aCurrentPDFState.m_nTransparentPercent != rNewState.m_nTransparentPercent ) { // TODO: switch extended graphicsstate @@ -11623,7 +11623,7 @@ void PDFWriterImpl::setFont( const vcl::Font& rFont ) aColor = m_aGraphicsStack.front().m_aFont.GetColor(); m_aGraphicsStack.front().m_aFont = rFont; m_aGraphicsStack.front().m_aFont.SetColor( aColor ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFont; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::Font; } void PDFWriterImpl::push( PushFlags nFlags ) @@ -11675,7 +11675,7 @@ void PDFWriterImpl::pop() // what ? } // invalidate graphics state - m_aGraphicsStack.front().m_nUpdateFlags = sal::static_int_cast<sal_uInt16>(~0U); + m_aGraphicsStack.front().m_nUpdateFlags = GraphicsStateUpdateFlags::All; } void PDFWriterImpl::setMapMode( const MapMode& rMapMode ) @@ -11691,7 +11691,7 @@ void PDFWriterImpl::setClipRegion( const basegfx::B2DPolyPolygon& rRegion ) aRegion = getReferenceDevice()->PixelToLogic( aRegion, m_aMapMode ); m_aGraphicsStack.front().m_aClipRegion = aRegion; m_aGraphicsStack.front().m_bClipRegion = true; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::ClipRegion; } void PDFWriterImpl::moveClipRegion( sal_Int32 nX, sal_Int32 nY ) @@ -11709,7 +11709,7 @@ void PDFWriterImpl::moveClipRegion( sal_Int32 nX, sal_Int32 nY ) basegfx::B2DHomMatrix aMat; aMat.translate( aPoint.X(), aPoint.Y() ); m_aGraphicsStack.front().m_aClipRegion.transform( aMat ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::ClipRegion; } } @@ -11724,7 +11724,7 @@ bool PDFWriterImpl::intersectClipRegion( const basegfx::B2DPolyPolygon& rRegion { basegfx::B2DPolyPolygon aRegion( getReferenceDevice()->LogicToPixel( rRegion, m_aGraphicsStack.front().m_aMapMode ) ); aRegion = getReferenceDevice()->PixelToLogic( aRegion, m_aMapMode ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::ClipRegion; if( m_aGraphicsStack.front().m_bClipRegion ) { basegfx::B2DPolyPolygon aOld( basegfx::tools::prepareForPolygonOperation( m_aGraphicsStack.front().m_aClipRegion ) ); diff --git a/vcl/source/gdi/pdfwriter_impl.hxx b/vcl/source/gdi/pdfwriter_impl.hxx index 8cad2f900be4..9abe5b5bf24e 100644 --- a/vcl/source/gdi/pdfwriter_impl.hxx +++ b/vcl/source/gdi/pdfwriter_impl.hxx @@ -38,6 +38,7 @@ #include <vcl/outdev.hxx> #include <vcl/pdfwriter.hxx> #include <vcl/wall.hxx> +#include <o3tl/typed_flags_set.hxx> #include "sallayout.hxx" #include "outdata.hxx" @@ -64,6 +65,24 @@ class SvMemoryStream; // PDF spec ver. 1.4: see there for details #define MAXIMUM_RC4_KEY_LENGTH (SECUR_128BIT_KEY+3+2) +enum class GraphicsStateUpdateFlags { + Font = 0x0001, + MapMode = 0x0002, + LineColor = 0x0004, + FillColor = 0x0008, + TextLineColor = 0x0010, + OverlineColor = 0x0020, + ClipRegion = 0x0040, + AntiAlias = 0x0080, + LayoutMode = 0x0100, + TransparentPercent = 0x0200, + DigitLanguage = 0x0400, + All = 0x07ff +}; +namespace o3tl { + template<> struct typed_flags<GraphicsStateUpdateFlags> : is_typed_flags<GraphicsStateUpdateFlags, 0x07ff> {}; +} + namespace vcl { @@ -676,19 +695,7 @@ private: LanguageType m_aDigitLanguage; sal_Int32 m_nTransparentPercent; PushFlags m_nFlags; - sal_uInt16 m_nUpdateFlags; - - static const sal_uInt16 updateFont = 0x0001; - static const sal_uInt16 updateMapMode = 0x0002; - static const sal_uInt16 updateLineColor = 0x0004; - static const sal_uInt16 updateFillColor = 0x0008; - static const sal_uInt16 updateTextLineColor = 0x0010; - static const sal_uInt16 updateOverlineColor = 0x0020; - static const sal_uInt16 updateClipRegion = 0x0040; - static const sal_uInt16 updateAntiAlias = 0x0080; - static const sal_uInt16 updateLayoutMode = 0x0100; - static const sal_uInt16 updateTransparentPercent = 0x0200; - static const sal_uInt16 updateDigitLanguage = 0x0400; + GraphicsStateUpdateFlags m_nUpdateFlags; GraphicsState() : m_aLineColor( COL_TRANSPARENT ), @@ -700,7 +707,7 @@ private: m_aDigitLanguage( 0 ), m_nTransparentPercent( 0 ), m_nFlags( PushFlags::ALL ), - m_nUpdateFlags( 0xffff ) + m_nUpdateFlags( GraphicsStateUpdateFlags::All ) {} }; std::list< GraphicsState > m_aGraphicsStack; @@ -1037,62 +1044,62 @@ public: void setLineColor( const Color& rColor ) { m_aGraphicsStack.front().m_aLineColor = ImplIsColorTransparent(rColor) ? Color( COL_TRANSPARENT ) : rColor; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateLineColor; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::LineColor; } void setFillColor( const Color& rColor ) { m_aGraphicsStack.front().m_aFillColor = ImplIsColorTransparent(rColor) ? Color( COL_TRANSPARENT ) : rColor; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFillColor; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::FillColor; } void setTextLineColor() { m_aGraphicsStack.front().m_aTextLineColor = Color( COL_TRANSPARENT ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateTextLineColor; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::TextLineColor; } void setTextLineColor( const Color& rColor ) { m_aGraphicsStack.front().m_aTextLineColor = rColor; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateTextLineColor; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::TextLineColor; } void setOverlineColor() { m_aGraphicsStack.front().m_aOverlineColor = Color( COL_TRANSPARENT ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateOverlineColor; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::OverlineColor; } void setOverlineColor( const Color& rColor ) { m_aGraphicsStack.front().m_aOverlineColor = rColor; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateOverlineColor; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::OverlineColor; } void setTextFillColor( const Color& rColor ) { m_aGraphicsStack.front().m_aFont.SetFillColor( rColor ); m_aGraphicsStack.front().m_aFont.SetTransparent( ImplIsColorTransparent( rColor ) ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFont; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::Font; } void setTextFillColor() { m_aGraphicsStack.front().m_aFont.SetFillColor( Color( COL_TRANSPARENT ) ); m_aGraphicsStack.front().m_aFont.SetTransparent( true ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFont; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::Font; } void setTextColor( const Color& rColor ) { m_aGraphicsStack.front().m_aFont.SetColor( rColor ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFont; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::Font; } void clearClipRegion() { m_aGraphicsStack.front().m_aClipRegion.clear(); m_aGraphicsStack.front().m_bClipRegion = false; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateClipRegion; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::ClipRegion; } void setClipRegion( const basegfx::B2DPolyPolygon& rRegion ); @@ -1106,19 +1113,19 @@ public: void setLayoutMode( ComplexTextLayoutFlags nLayoutMode ) { m_aGraphicsStack.front().m_nLayoutMode = nLayoutMode; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateLayoutMode; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::LayoutMode; } void setDigitLanguage( LanguageType eLang ) { m_aGraphicsStack.front().m_aDigitLanguage = eLang; - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateDigitLanguage; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::DigitLanguage; } void setTextAlign( TextAlign eAlign ) { m_aGraphicsStack.front().m_aFont.SetAlignment( eAlign ); - m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsState::updateFont; + m_aGraphicsStack.front().m_nUpdateFlags |= GraphicsStateUpdateFlags::Font; } /* actual drawing functions */ |