diff options
author | Caolán McNamara <caolanm@redhat.com> | 2015-03-18 17:43:03 +0000 |
---|---|---|
committer | Caolán McNamara <caolanm@redhat.com> | 2015-03-18 17:43:03 +0000 |
commit | 3d495712258359d14c3d08b29caaa8b66a9b621c (patch) | |
tree | 421955b973e6299d20ef6028bcaedbffba034b35 /canvas | |
parent | 641b6f2037bec26097574dd921219101d8386da5 (diff) |
revert work in progress
Change-Id: I1387b0ed7b2d8bb9df801c03cf59efc9c0e1cfd3
Diffstat (limited to 'canvas')
-rw-r--r-- | canvas/source/cairo/cairo_devicehelper.cxx | 12 | ||||
-rw-r--r-- | canvas/source/cairo/cairo_xlib_cairo.cxx | 102 | ||||
-rw-r--r-- | canvas/source/cairo/cairo_xlib_cairo.hxx | 23 |
3 files changed, 14 insertions, 123 deletions
diff --git a/canvas/source/cairo/cairo_devicehelper.cxx b/canvas/source/cairo/cairo_devicehelper.cxx index 05266e424457..fab8b1b0e754 100644 --- a/canvas/source/cairo/cairo_devicehelper.cxx +++ b/canvas/source/cairo/cairo_devicehelper.cxx @@ -17,6 +17,8 @@ * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ +#include <config_features.h> + #include <canvas/debug.hxx> #include <canvas/verbosetrace.hxx> #include <canvas/canvastools.hxx> @@ -92,20 +94,18 @@ namespace cairocanvas OutputDevice* pOutDev=getOutputDevice(); - if (mpSurface && pOutDev->CanResizeCairoSurface()) - { - // X11 only +#if HAVE_FEATURE_X11 + // X11 only + if( mpSurface ) mpSurface->Resize( rSize.getX() + pOutDev->GetOutOffXPixel(), rSize.getY() + pOutDev->GetOutOffYPixel() ); - } else - { +#endif mpSurface = cairo::createSurface( *pOutDev, pOutDev->GetOutOffXPixel(), pOutDev->GetOutOffYPixel(), rSize.getX(), rSize.getY() ); - } } geometry::RealSize2D DeviceHelper::getPhysicalResolution() diff --git a/canvas/source/cairo/cairo_xlib_cairo.cxx b/canvas/source/cairo/cairo_xlib_cairo.cxx index fe82ceae72f1..a4665e14aa04 100644 --- a/canvas/source/cairo/cairo_xlib_cairo.cxx +++ b/canvas/source/cairo/cairo_xlib_cairo.cxx @@ -324,103 +324,17 @@ namespace cairo return X11SysData( rVirDev.GetSystemGfxData() ); } - /** - * Surface::Surface: Create Canvas surface from Window reference. - * @param x horizontal location of the new surface - * @param y vertical location of the new surface - * @param width width of the new surface - * @param height height of the new surface - * - * Set the mpSurface to the new surface or NULL - **/ - Gtk3Surface::Gtk3Surface(const OutputDevice& rRefDevice, int x, int y, int width, int height) - : mpSurface(cairo_get_target(rRefDevice.GetCairoContext()), &cairo_surface_flush) - , mpDevice(&rRefDevice) - , mnWidth(width) - , mnHeight(height) - { - cairo_surface_set_device_offset(mpSurface.get(), x, y ); - } - - /** - * Surface::Surface: Create generic Canvas surface using given Cairo Surface - * - * @param pSurface Cairo Surface - * - * This constructor only stores data, it does no processing. - * It is used with e.g. cairo_image_surface_create_for_data() - * - * Set the mpSurface as pSurface - **/ - Gtk3Surface::Gtk3Surface(const CairoSurfaceSharedPtr& pSurface, int width, int height) - : mpSurface(pSurface) - , mpDevice(NULL) - , mnWidth(width) - , mnHeight(height) - { - } - - /** - * Surface::getCairo: Create Cairo (drawing object) for the Canvas surface - * - * @return new Cairo or NULL - **/ - CairoSharedPtr Gtk3Surface::getCairo() const - { - return CairoSharedPtr(cairo_create(mpSurface.get()), - &cairo_destroy); - } - - /** - * Surface::getSimilar: Create new similar Canvas surface - * @param aContent format of the new surface (cairo_content_t from cairo/src/cairo.h) - * @param width width of the new surface - * @param height height of the new surface - * - * Creates a new Canvas surface. - * - * Cairo surface from aContent (cairo_content_t) - * - * @return new surface or NULL - **/ - SurfaceSharedPtr Gtk3Surface::getSimilar( Content aContent, int width, int height ) const - { - return SurfaceSharedPtr( - new Gtk3Surface(CairoSurfaceSharedPtr( - cairo_surface_create_similar( mpSurface.get(), aContent, width, height ), - &cairo_surface_destroy ), width, height)); - } - - /** - * Surface::Resize: Resizes the Canvas surface. - * @param width new width of the surface - * @param height new height of the surface - * - * Only used on X11. - * - * @return The new surface or NULL - **/ - void Gtk3Surface::Resize( int /*width*/, int /*height*/ ) - { - assert(false && "not supposed to be called!"); - } - - void Gtk3Surface::flush() const - { - cairo_surface_flush(mpSurface.get()); - if (mpDevice) - mpDevice->FlushCairoContext(NULL); - } - - boost::shared_ptr<VirtualDevice> Gtk3Surface::createVirtualDevice() const - { - return boost::shared_ptr<VirtualDevice>(new VirtualDevice(NULL, Size(mnWidth, mnHeight), 0)); - } - SurfaceSharedPtr createSurface( const OutputDevice& rRefDevice, int x, int y, int width, int height ) { - return SurfaceSharedPtr(new Gtk3Surface(rRefDevice, x, y, width, height)); + if( rRefDevice.GetOutDevType() == OUTDEV_WINDOW ) + return SurfaceSharedPtr(new X11Surface(getSysData(static_cast<const vcl::Window&>(rRefDevice)), + x,y,width,height)); + else if( rRefDevice.GetOutDevType() == OUTDEV_VIRDEV ) + return SurfaceSharedPtr(new X11Surface(getSysData(static_cast<const VirtualDevice&>(rRefDevice)), + x,y,width,height)); + else + return SurfaceSharedPtr(); } SurfaceSharedPtr createBitmapSurface( const OutputDevice& rRefDevice, diff --git a/canvas/source/cairo/cairo_xlib_cairo.hxx b/canvas/source/cairo/cairo_xlib_cairo.hxx index 0cc4212c7c64..f040b9bc0ced 100644 --- a/canvas/source/cairo/cairo_xlib_cairo.hxx +++ b/canvas/source/cairo/cairo_xlib_cairo.hxx @@ -97,29 +97,6 @@ namespace cairo { void* getRenderFormat() const { return maSysData.pRenderFormat; } long getDrawable() const { return mpPixmap ? mpPixmap->mhDrawable : maSysData.hDrawable; } }; - - class Gtk3Surface : public Surface - { - CairoSurfaceSharedPtr mpSurface; - const OutputDevice* mpDevice; - int mnWidth; - int mnHeight; - public: - /// takes over ownership of passed cairo_surface - explicit Gtk3Surface(const CairoSurfaceSharedPtr& pSurface, int width, int height); - /// create surface on subarea of given drawable - explicit Gtk3Surface(const OutputDevice& rRefDevice, int x, int y, int width, int height); - - // Surface interface - virtual CairoSharedPtr getCairo() const SAL_OVERRIDE; - virtual CairoSurfaceSharedPtr getCairoSurface() const SAL_OVERRIDE { return mpSurface; } - virtual SurfaceSharedPtr getSimilar( Content aContent, int width, int height ) const SAL_OVERRIDE; - - virtual boost::shared_ptr<VirtualDevice> createVirtualDevice() const SAL_OVERRIDE; - - virtual void Resize(int width, int height) SAL_OVERRIDE; - virtual void flush() const SAL_OVERRIDE; - }; } #endif |