summaryrefslogtreecommitdiffstats
path: root/canvas/source/directx/dx_surfacegraphics.hxx
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2007-11-01 17:00:10 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2007-11-01 17:00:10 +0000
commitd034efa5dd0ce46482b815fb57b018217c9d37df (patch)
tree36e39bc8bb68f1b3b955e863c8224c3432375a02 /canvas/source/directx/dx_surfacegraphics.hxx
parentINTEGRATION: CWS dxliberate01 (1.1.2); FILE ADDED (diff)
downloadcore-d034efa5dd0ce46482b815fb57b018217c9d37df.tar.gz
core-d034efa5dd0ce46482b815fb57b018217c9d37df.zip
INTEGRATION: CWS dxliberate01 (1.1.2); FILE ADDED
2007/07/23 12:05:08 thb 1.1.2.1: #i48454# dxcanvas is now part of OOo
Diffstat (limited to 'canvas/source/directx/dx_surfacegraphics.hxx')
-rwxr-xr-xcanvas/source/directx/dx_surfacegraphics.hxx80
1 files changed, 80 insertions, 0 deletions
diff --git a/canvas/source/directx/dx_surfacegraphics.hxx b/canvas/source/directx/dx_surfacegraphics.hxx
new file mode 100755
index 000000000000..fed6b4a3a6ea
--- /dev/null
+++ b/canvas/source/directx/dx_surfacegraphics.hxx
@@ -0,0 +1,80 @@
+/*************************************************************************
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * $RCSfile: dx_surfacegraphics.hxx,v $
+ *
+ * $Revision: 1.2 $
+ *
+ * last change: $Author: hr $ $Date: 2007-11-01 17:58:36 $
+ *
+ * The Contents of this file are made available subject to
+ * the terms of GNU Lesser General Public License Version 2.1.
+ *
+ *
+ * GNU Lesser General Public License Version 2.1
+ * =============================================
+ * Copyright 2005 by Sun Microsystems, Inc.
+ * 901 San Antonio Road, Palo Alto, CA 94303, USA
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License version 2.1, as published by the Free Software Foundation.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
+ * MA 02111-1307 USA
+ *
+ ************************************************************************/
+
+#ifndef _DXCANVAS_SURFACEGRAPHICS_HXX
+#define _DXCANVAS_SURFACEGRAPHICS_HXX
+
+#include <boost/shared_ptr.hpp>
+#include <boost/utility.hpp>
+
+namespace dxcanvas
+{
+ /** Container providing a Gdiplus::Graphics for a Surface
+
+ This wrapper class transparently handles allocation and
+ release of surface resources the RAII way. Please don't create
+ yourself, the only legal way to obtain such an object is via
+ Surface::getGraphics()
+
+ @see Surface::getGraphics()
+ */
+ class SurfaceGraphics : private ::boost::noncopyable
+ {
+ public:
+ SurfaceGraphics();
+ explicit SurfaceGraphics( HDC aHDC );
+ explicit SurfaceGraphics( const BitmapSharedPtr& rBitmap );
+ explicit SurfaceGraphics( const COMReference<surface_type>& rSurface );
+ ~SurfaceGraphics();
+
+ bool is() const { return mpGraphics != NULL; }
+ Gdiplus::Graphics* get() { return mpGraphics; }
+ const Gdiplus::Graphics* get() const { return mpGraphics; }
+ Gdiplus::Graphics* operator->() { return mpGraphics; }
+ const Gdiplus::Graphics* operator->() const { return mpGraphics; }
+ Gdiplus::Graphics& operator*() { return *mpGraphics; }
+ const Gdiplus::Graphics& operator*() const { return *mpGraphics; }
+
+ private:
+ COMReference<surface_type> mpSurface;
+ Gdiplus::Graphics* mpGraphics;
+ BitmapSharedPtr mpBitmap;
+ HDC maHDC;
+ };
+
+ typedef ::boost::shared_ptr< SurfaceGraphics > SurfaceGraphicsSharedPtr;
+}
+
+#endif /* _DXCANVAS_SURFACEGRAPHICS_HXX */