include/vcl/outdev.hxx | 11 ++++++++++- vcl/source/gdi/outdev.cxx | 39 ++++++++++++++++++++++++++++++++++----- 2 files changed, 44 insertions(+), 6 deletions(-)
New commits: commit 9d64cdc4cf2122bcbcf1fb670bd1103d09bbc7b3 Author: Chris Sherlock <chris.sherloc...@gmail.com> Date: Sun Feb 2 23:51:27 2014 +1100 Seperate initialization of OutputDevice instance I have split OutputDevice::ImplInitGraphics() from OutputDevice::ImplGetGraphics(). In future, we need to further seperate out this initialization function into it's own seperate classes. Note that ImplGetGraphics still initializes if mpGraphics is not set. Change-Id: I17d4778f735aa9d03bf9b37079a9d695bf95866b Reviewed-on: https://gerrit.libreoffice.org/7777 Reviewed-by: Caolán McNamara <caol...@redhat.com> Tested-by: Caolán McNamara <caol...@redhat.com> diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx index 9188568..9b012cc 100644 --- a/include/vcl/outdev.hxx +++ b/include/vcl/outdev.hxx @@ -359,9 +359,18 @@ public: /** Get the graphic context that the output device uses to draw on. + If no graphics device exists, then initialize it. + @returns SalGraphics instance. */ - SAL_DLLPRIVATE SalGraphics* ImplGetGraphics() const; + SAL_DLLPRIVATE SalGraphics const *ImplGetGraphics() const; + SAL_DLLPRIVATE SalGraphics* ImplGetGraphics(); + + /** Initialize the graphics device that the output device uses to draw on. + + @returns true if was able to initialize the graphics device, false otherwise. + */ + SAL_DLLPRIVATE bool ImplInitGraphics() const; /** Release the graphics device, and remove it from the graphics device list. diff --git a/vcl/source/gdi/outdev.cxx b/vcl/source/gdi/outdev.cxx index f721054..c1f42d7 100644 --- a/vcl/source/gdi/outdev.cxx +++ b/vcl/source/gdi/outdev.cxx @@ -183,7 +183,7 @@ bool OutputDevice::ImplSelectClipRegion( const Region& rRegion, SalGraphics* pGr if( !pGraphics ) { if( !mpGraphics ) - if( !ImplGetGraphics() ) + if( !ImplInitGraphics() ) return false; pGraphics = mpGraphics; } @@ -520,12 +520,39 @@ void OutputDevice::ReMirror( Region &rRegion ) const } -SalGraphics* OutputDevice::ImplGetGraphics() const +SalGraphics* OutputDevice::ImplGetGraphics() { DBG_TESTSOLARMUTEX(); - if ( mpGraphics ) - return mpGraphics; + if ( !mpGraphics ) + { + if ( !ImplInitGraphics() ) + { + SAL_WARN("vcl", "No mpGraphics set"); + } + } + + return mpGraphics; +} + +SalGraphics const *OutputDevice::ImplGetGraphics() const +{ + DBG_TESTSOLARMUTEX(); + + if ( !mpGraphics ) + { + if ( !ImplInitGraphics() ) + { + SAL_WARN("vcl", "No mpGraphics set"); + } + } + + return mpGraphics; +} + +bool OutputDevice::ImplInitGraphics() const +{ + DBG_TESTSOLARMUTEX(); mbInitLineColor = true; mbInitFillColor = true; @@ -534,6 +561,8 @@ SalGraphics* OutputDevice::ImplGetGraphics() const mbInitClipRegion = true; ImplSVData* pSVData = ImplGetSVData(); + + // TODO: move this out of OutputDevice and into subclasses if ( meOutDevType == OUTDEV_WINDOW ) { Window* pWindow = (Window*)this; @@ -667,7 +696,7 @@ SalGraphics* OutputDevice::ImplGetGraphics() const mpGraphics->setAntiAliasB2DDraw(mnAntialiasing & ANTIALIASING_ENABLE_B2DDRAW); } - return mpGraphics; + return mpGraphics ? true : false; } void OutputDevice::ImplReleaseGraphics( bool bRelease )
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits