summaryrefslogtreecommitdiff
path: root/offapi/com/sun/star/rendering/XGraphicDevice.idl
diff options
context:
space:
mode:
Diffstat (limited to 'offapi/com/sun/star/rendering/XGraphicDevice.idl')
-rw-r--r--offapi/com/sun/star/rendering/XGraphicDevice.idl303
1 files changed, 303 insertions, 0 deletions
diff --git a/offapi/com/sun/star/rendering/XGraphicDevice.idl b/offapi/com/sun/star/rendering/XGraphicDevice.idl
new file mode 100644
index 000000000000..a9caaefede7e
--- /dev/null
+++ b/offapi/com/sun/star/rendering/XGraphicDevice.idl
@@ -0,0 +1,303 @@
+/*************************************************************************
+ *
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * Copyright 2000, 2010 Oracle and/or its affiliates.
+ *
+ * OpenOffice.org - a multi-platform office productivity suite
+ *
+ * This file is part of OpenOffice.org.
+ *
+ * OpenOffice.org is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License version 3
+ * only, as published by the Free Software Foundation.
+ *
+ * OpenOffice.org 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 version 3 for more details
+ * (a copy is included in the LICENSE file that accompanied this code).
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * version 3 along with OpenOffice.org. If not, see
+ * <http://www.openoffice.org/license.html>
+ * for a copy of the LGPLv3 License.
+ *
+ ************************************************************************/
+#ifndef __com_sun_star_rendering_XGraphicDevice_idl__
+#define __com_sun_star_rendering_XGraphicDevice_idl__
+
+#ifndef __com_sun_star_uno_XInterface_idl__
+#include <com/sun/star/uno/XInterface.idl>
+#endif
+#ifndef __com_sun_star_lang_IllegalArgumentException_idl__
+#include <com/sun/star/lang/IllegalArgumentException.idl>
+#endif
+#ifndef __com_sun_star_geometry_IntegerSize2D_idl__
+#include <com/sun/star/geometry/IntegerSize2D.idl>
+#endif
+#ifndef __com_sun_star_geometry_RealSize2D_idl__
+#include <com/sun/star/geometry/RealSize2D.idl>
+#endif
+#ifndef __com_sun_star_rendering_XLinePolyPolygon2D_idl__
+#include <com/sun/star/rendering/XLinePolyPolygon2D.idl>
+#endif
+#ifndef __com_sun_star_rendering_XBezierPolyPolygon2D_idl__
+#include <com/sun/star/rendering/XBezierPolyPolygon2D.idl>
+#endif
+#ifndef __com_sun_star_rendering_XColorSpace_idl__
+#include <com/sun/star/rendering/XColorSpace.idl>
+#endif
+#ifndef __com_sun_star_lang_XMultiServiceFactory_idl__
+#include <com/sun/star/lang/XMultiServiceFactory.idl>
+#endif
+
+module com { module sun { module star { module rendering {
+
+interface XBitmap;
+interface XVolatileBitmap;
+interface XBufferController;
+
+/* TODO: There's obviously a concept called window missing here, where
+ methods such as bufferController, fullscreen mode etc . belong
+ to. But see below
+ */
+
+/** This interface provides access to a graphic device, such as a
+ printer, or a screen device. Every canvas (@see XCanvas) has
+ exactly one associated graphic device, into which its output is
+ rendered.
+
+ For a typical windowing system, the graphic device is equivalent
+ to a distinct OS window, with it's own clipped output area,
+ fullscreen and double-buffering attributes. That is, even if one
+ can have multiple canvases per system window, they all share the
+ same graphic device and thus e.g. fullscreen state. If the OS
+ restrictions are in such a way that fullscreen or double-buffering
+ is screen-exclusive, i.e. that per screen, only one object can
+ have this state, it might even be that all windows on the screen
+ share a common graphic device.
+ */
+interface XGraphicDevice : ::com::sun::star::uno::XInterface
+{
+ /** Query the controller for multi buffering functionality on this
+ graphic device.
+
+ If there is no such functionality available, the NULL
+ reference is returned.
+ */
+ XBufferController getBufferController();
+
+ //-------------------------------------------------------------------------
+
+ /** Query the color space interface for this graphic device.
+
+ This is to be used when interpreting or setting device color
+ values.
+ */
+ XColorSpace getDeviceColorSpace();
+
+ //-------------------------------------------------------------------------
+
+ /** Query the physical resolution of the device in pixel per
+ millimeter.
+
+ A special floating point value of +infinity here indicates
+ 'unknown', i.e. at the time of rendering undetermined or
+ possibly infinite resolution along the corresponding
+ direction.
+ */
+ ::com::sun::star::geometry::RealSize2D getPhysicalResolution();
+
+ //-------------------------------------------------------------------------
+
+ /** Query the physical dimensions of the device in millimeter.
+
+ A special floating point value of +infinity here indicates
+ 'unknown', i.e. at the time of rendering undetermined or
+ possibly infinite resolution along the corresponding
+ direction.
+
+ @see XBitmap::getSize()
+ */
+ ::com::sun::star::geometry::RealSize2D getPhysicalSize();
+
+ //-------------------------------------------------------------------------
+
+ /** Create a line poly-polygon which can internally use
+ device-optimized representations already.
+
+ @param points
+ The points of the poly-polygon, in a separate array for every polygon.
+ */
+ XLinePolyPolygon2D createCompatibleLinePolyPolygon( [in] sequence< sequence< ::com::sun::star::geometry::RealPoint2D > > points );
+
+ //-------------------------------------------------------------------------
+
+ /** Create a bezier poly-polygon which can internally use
+ device-optimized representations already.
+
+ @param points
+ The points of the poly-polygon, in a separate array for every polygon.
+ */
+ XBezierPolyPolygon2D createCompatibleBezierPolyPolygon( [in] sequence< sequence< ::com::sun::star::geometry::RealBezierSegment2D > > points );
+
+ //-------------------------------------------------------------------------
+
+ /** Create a bitmap whose memory layout and sample model is
+ compatible to the graphic device.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XBitmap createCompatibleBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ //-------------------------------------------------------------------------
+
+ /** Create a volatile bitmap that is usable with this graphic device.
+
+ A volatile bitmap's difference in comparison to a plain bitmap
+ (e.g. generated via createCompatibleBitmap()) is the fact that
+ its content might vanish at any point in time (making any
+ operation with them produce a
+ <type>VolatileContentDestroyedException</type>). The benefit,
+ on the other hand, is that they might be easy to
+ hardware-accelerate on certain platforms, without the need to
+ keep a safety copy of the content internally.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XVolatileBitmap createVolatileBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ //-------------------------------------------------------------------------
+
+ /** Create a bitmap with alpha channel whose memory layout and
+ sample model is compatible to the graphic device.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XBitmap createCompatibleAlphaBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ //-------------------------------------------------------------------------
+
+ /** Create a volatile bitmap with alpha channel that is usable
+ with this graphic device.
+
+ A volatile bitmap's difference in comparison to a plain bitmap
+ (e.g. generated via createCompatibleBitmap()) is the fact that
+ its content might vanish at any point in time (making any
+ operation with them produce a
+ <type>VolatileContentDestroyedException</type>). The benefit,
+ on the other hand, is that they might be easy to
+ hardware-accelerate on certain platforms, without the need to
+ keep a safety copy of the content internally.
+
+ @param size
+ Size of the requested bitmap in pixel. Both components of the
+ size must be greater than 0
+ */
+ XVolatileBitmap createVolatileAlphaBitmap( [in] ::com::sun::star::geometry::IntegerSize2D size )
+ raises (com::sun::star::lang::IllegalArgumentException);
+
+ //-------------------------------------------------------------------------
+
+ /** Get a reference to this device's parametric polygon factory.
+
+ @return a reference to this device's parametric polygon
+ factory. Although it is possible to use parametric polygons on
+ all canvases, regardless of the associated graphic device,
+ this is not advisable: each canvas implementation is free to
+ internally generate optimized parametric polygons, which can
+ be used more directly for e.g. texturing operations.
+
+ <pre>
+ Available services (all canvas implementations should provide
+ this minimal set, though are free to add more; just check the
+ getAvailableServiceNames() on the returned interface):
+
+ - Gradients - all gradients need to support two construction
+ parameters, "Colors" being a <type>sequence<Color></type>
+ and "Stops" being a <type>sequence<double></type>. Both must
+ have the same length, and at least two elements. See
+ http://www.w3.org/TR/SVG11/pservers.html#GradientStops for
+ the semantics of gradient stops and colors.
+ Required gradient services:
+
+ * "LinearGradient" - the gradient varies linearly between
+ the given colors. without coordinate system
+ transformation, the color interpolation happens in
+ increasing x direction, and is constant in y
+ direction. Equivalent to svg linear gradient
+ http://www.w3.org/TR/SVG11/pservers.html#LinearGradients
+
+ * "EllipticalGradient" - this gradient has zeroth color
+ index in the middle, and varies linearly between center
+ and final color. The services takes an additional
+ parameter named "AspectRatio" of <type>double</type>
+ (width divided by height), if this aspect ratio is 1, the
+ gradient is circular. If it's not 1, the gradient is
+ elliptical, with the special twist that the aspect ratio
+ is maintained also for the center color: the gradient will
+ not collapse into a single point, but become a line of
+ center color. If "AspectRatio" is missing, or equal to 1,
+ this gradient yields similar results as the svg radial
+ gradient
+ http://www.w3.org/TR/SVG11/pservers.html#RadialGradients
+
+ * "RectangularGradient" - this gradient has zeroth color
+ index in the middle, and varies linearly between center
+ and final color via rectangular boxes
+ around the center point. The services takes an additional
+ parameter named "AspectRatio" of <type>double</type>
+ (width divided by height), if this aspect ratio is 1, the
+ gradient is quadratic. If it's not 1, the gradient is
+ rectangular, with the special twist that the aspect ratio
+ is maintained also for the center color: the gradient will
+ not collapse into a single point, but become a line of
+ center color.
+
+ - Hatch patterns - Required hatch services:
+
+ * "VerticalLineHatch" - this hatching consists of vertical lines
+ * "OrthogonalLinesHatch" - this hatching consists of
+ crossing vertical and horizontal lines
+ * "ThreeCrossingLinesHatch" - this hatching consists of
+ vertical and horizontal lines plus diagonal lines from
+ left, top to bottom, right.
+ * "FourCrossingLinesHatch" - this hatching consists of
+ vertical and horizontal lines plus diagonal lines in both
+ directions.
+ </pre>
+ */
+ com::sun::star::lang::XMultiServiceFactory getParametricPolyPolygonFactory();
+
+ //-------------------------------------------------------------------------
+
+ /** Tells whether this graphic device has a full screen mode,
+ i.e. whether a window can cover the whole screen exclusively.
+ */
+ boolean hasFullScreenMode();
+
+ //-------------------------------------------------------------------------
+
+ /** Enter or leave the fullscreen mode, if possible. The return
+ value denotes the success of the operation.
+
+ @attention depending on the underlying operating system,
+ fullscreen mode can be left without a enterFullScreenMode(
+ false ) call.
+ */
+ boolean enterFullScreenMode( [in] boolean bEnter );
+};
+
+}; }; }; };
+
+#endif