1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2000, 2010 Oracle and/or its affiliates.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * This file is part of OpenOffice.org.
11 * OpenOffice.org is free software: you can redistribute it and/or modify
12 * it under the terms of the GNU Lesser General Public License version 3
13 * only, as published by the Free Software Foundation.
15 * OpenOffice.org is distributed in the hope that it will be useful,
16 * but WITHOUT ANY WARRANTY; without even the implied warranty of
17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 * GNU Lesser General Public License version 3 for more details
19 * (a copy is included in the LICENSE file that accompanied this code).
21 * You should have received a copy of the GNU Lesser General Public License
22 * version 3 along with OpenOffice.org. If not, see
23 * <http://www.openoffice.org/license.html>
24 * for a copy of the LGPLv3 License.
26 ************************************************************************/
27 #ifndef __com_sun_star_rendering_XCanvas_idl__
28 #define __com_sun_star_rendering_XCanvas_idl__
30 #ifndef __com_sun_star_uno_XInterface_idl__
31 #include
<com
/sun
/star
/uno
/XInterface.idl
>
33 #ifndef __com_sun_star_lang_IllegalArgumentException_idl__
34 #include
<com
/sun
/star
/lang
/IllegalArgumentException.idl
>
36 #ifndef __com_sun_star_geometry_RealPoint2D_idl__
37 #include
<com
/sun
/star
/geometry
/RealPoint2D.idl
>
39 #ifndef __com_sun_star_geometry_RealBezierSegment2D_idl__
40 #include
<com
/sun
/star
/geometry
/RealBezierSegment2D.idl
>
42 #ifndef __com_sun_star_geometry_RealRectangle2D_idl__
43 #include
<com
/sun
/star
/geometry
/RealRectangle2D.idl
>
45 #ifndef __com_sun_star_geometry_Matrix2D_idl__
46 #include
<com
/sun
/star
/geometry
/Matrix2D.idl
>
48 #ifndef __com_sun_star_rendering_ViewState_idl__
49 #include
<com
/sun
/star
/rendering
/ViewState.idl
>
51 #ifndef __com_sun_star_rendering_RenderState_idl__
52 #include
<com
/sun
/star
/rendering
/RenderState.idl
>
54 #ifndef __com_sun_star_rendering_FontRequest_idl__
55 #include
<com
/sun
/star
/rendering
/FontRequest.idl
>
57 #ifndef __com_sun_star_rendering_FontInfo_idl__
58 #include
<com
/sun
/star
/rendering
/FontInfo.idl
>
60 #ifndef __com_sun_star_rendering_Texture_idl__
61 #include
<com
/sun
/star
/rendering
/Texture.idl
>
63 #ifndef __com_sun_star_rendering_StringContext_idl__
64 #include
<com
/sun
/star
/rendering
/StringContext.idl
>
66 #ifndef __com_sun_star_rendering_StrokeAttributes_idl__
67 #include
<com
/sun
/star
/rendering
/StrokeAttributes.idl
>
69 #ifndef __com_sun_star_rendering_VolatileContentDestroyedException_idl__
70 #include
<com
/sun
/star
/rendering
/VolatileContentDestroyedException.idl
>
73 #ifndef __com_sun_star_beans_PropertyValue_idl__
74 #include
<com
/sun
/star
/beans
/PropertyValue.idl
>
78 module com
{ module sun
{ module star
{ module geometry
{
82 module com
{ module sun
{ module star
{ module rendering
{
84 interface XCanvasFont
;
85 interface XPolyPolygon2D
;
86 interface XCachedPrimitive
;
88 interface XGraphicDevice
;
89 interface XTextLayout
;
91 /** Central interface for rendering.<p>
93 This is the central interface for graphical output production, and
94 the place where all draw methods are located.<p>
96 Some notes are in order to explain the concepts used here. The
97 <type>XCanvas</type> interface is free of client-modifiable state,
98 i.e. it can be used safely and without external synchronization in
99 a multi-threaded environment. On the other hand, this implies that
100 for nearly every canvas operation, external state is
101 required. This is provided by <type>ViewState</type> and
102 <type>RenderState</type> in a unified fashion, supplemented by a
103 few extra state parameters for some methods (e.g. textured
104 polygons or text rendering).<p>
106 When used careless, this scheme can be inefficient to some extend,
107 because internally, view, render and other states have to be
108 combined before rendering. This is especially expensive for
109 complex clip polygons, i.e. when both <type>ViewState</type> and
110 <type>RenderState</type> have a complex clip polygon set, which
111 have to be intersected before rendering. It is therefore
112 recommended to combine <type>ViewState</type> and
113 <type>RenderState</type> already at the client side, when objects
114 are organized in a hierarchical way: the classic example are
115 grouped draw shapes, whose parent group object imposes a
116 common clipping and a common transformation on its siblings. The
117 group object would therefore merge the <type>ViewState</type> and
118 the <type>RenderState</type> it is called with into a new
119 <type>ViewState</type>, and call its siblings with a
120 <type>RenderState</type> containing only the local offset (and no
123 Furtheron, this stateless nature provides easy ways for
124 caching. Every non-trivial operation on <type>XCanvas</type> can
125 return a cache object, which, when called to redraw, renders the
126 primitive usually much more quickly than the original method. Note
127 that such caching is a lot more complicated, should the actual
128 rendering a method yields depend on internal state (which is the
131 scope="::com::sun::star::drawing">::com::sun::star::drawing::XGraphics</type>
132 interface). Please note, though, that deciding whether to return
133 an <type>XCachedPrimitive</type> is completely up to the
134 implementation - don't rely on the methods returning something
135 (this is because there might be cases when returning such a cache
136 object will actually be a pessimization, since it involves memory
137 allocation and comparisons).<p>
139 Things that need more than a small, fixed amount of data are
140 encapsulated in own interfaces, e.g. polygons and bitmaps. You
141 can, in principle, roll your own implementations of these
142 interfaces, wrap it around your internal representation of
143 polygons and bitmaps, and render them. It might just not be overly
144 fast, because the <type>XCanvas</type> would need to convert for
145 each render call. It is therefore recommended to create such
146 objects via the <type>XGraphicDevice</type> factory (to be
147 retrieved from every canvas object via the
148 <member>getDevice()</member> call) - they will then internally
149 optimize to the underlying graphics subsystem.<p>
153 interface XCanvas
: ::com
::sun
::star
::uno
::XInterface
155 /** Clear the whole canvas area.<p>
157 This method clears the whole canvas area to the device default
158 color (e.g. white for a printer, transparent for an
159 <type>XCustomSprite</type>).
163 /** Draw a point in device resolution on the device.
169 The viewstate to be used when drawing this point.
172 The renderstate to be used when drawing this point.
174 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
175 if one of the view and renderstate parameters are outside the
178 void drawPoint
( [in] ::com
::sun
::star
::geometry
::RealPoint2D aPoint
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
179 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
181 //-------------------------------------------------------------------------
183 /** Draw a line in device resolution width (i.e. one device pixel
187 The start point of the line to draw.
190 The end point of the line to draw.
193 The viewstate to be used when drawing this line.
196 The renderstate to be used when drawing this line.
198 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
199 if one of the view and renderstate parameters are outside the
202 void drawLine
( [in] ::com
::sun
::star
::geometry
::RealPoint2D aStartPoint
, [in] ::com
::sun
::star
::geometry
::RealPoint2D aEndPoint
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
203 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
205 //-------------------------------------------------------------------------
207 /** Draw a cubic bezier curve in device resolution width (i.e. one
210 @param aBezierSegment
211 The start and the two control points of the bezier curve.
214 The end point of the bezier curve.
217 The viewstate to be used when drawing this curve.
220 The renderstate to be used when drawing this curve.
222 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
223 if one of the view and renderstate parameters are outside the
226 void drawBezier
( [in] ::com
::sun
::star
::geometry
::RealBezierSegment2D aBezierSegment
, [in] ::com
::sun
::star
::geometry
::RealPoint2D aEndPoint
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
227 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
229 //-------------------------------------------------------------------------
231 /** Draw a poly-polygon in device resolution line width (i.e. the
232 lines are one device pixel wide).
235 The poly-polygon to draw.
238 The viewstate to be used when drawing this polygon.
241 The renderstate to be used when drawing this polygon.
243 @return a handle to the cached rendering output.
245 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
246 if one of the view and renderstate parameters are outside the
249 XCachedPrimitive drawPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
250 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
252 //-------------------------------------------------------------------------
254 /** Stroke each polygon of the provided poly-polygon with the
255 specified stroke attributes.<p>
257 This method considers the stroking of all polygons as an
258 atomic operation in relation to the <type>RenderState</type>'s
259 <type>CompositeOperationy</type> operation. That means,
260 overlapping strokes from distinct polygons will look exactly
261 as overlapping segments of the same polygon, even with
265 The poly-polygon to render.
268 The viewstate to be used when stroking this polygon.
271 The renderstate to be used when stroking this polygon.
273 @param aStrokeAttributes
274 Further attributes used to parameterize the stroking.
276 @return a handle to the cached rendering output.
278 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
279 if one of the view and renderstate parameters are outside the
282 XCachedPrimitive strokePolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] StrokeAttributes aStrokeAttributes
)
283 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
285 //-------------------------------------------------------------------------
287 /** Stroke each polygon of the provided poly-polygon with the
288 specified stroke attributes, fill the stroked outline
289 with the specified texture graphics.<p>
291 This method considers the stroking of all polygons as an
292 atomic operation in relation to the <type>RenderState</type>'s
293 <type>CompositeOp</type> operation. That means, overlapping
294 strokes from distinct polygons will look exactly as
295 overlapping segments of the same polygon, even with
299 The poly-polygon to render.
302 The viewstate to be used when strokes this polygon.
305 The renderstate to be used when stroking this polygon.
308 A sequence of texture definitions, with which to fill the
311 @param aStrokeAttributes
312 Further attributes used to parameterize the stroking.
314 @return a handle to the cached rendering output.
316 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
317 if one of the view and renderstate parameters are outside the
320 @throws <type>VolatileContentDestroyedException</type>
321 if a texture bitmap was volatile, and the content was
322 destroyed before the rendering could take place.
324 XCachedPrimitive strokeTexturedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> aTextures
, [in] StrokeAttributes aStrokeAttributes
)
325 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
326 VolatileContentDestroyedException
);
328 //-------------------------------------------------------------------------
330 /** Stroke each polygon of the provided poly-polygon with the
331 specified stroke attributes, fill the stroked outline
332 with the specified texture graphics, map the texture to the
333 outline via the specified texture mapping.<p>
335 This method considers the stroking of all polygons as an
336 atomic operation in relation to the <type>RenderState</type>'s
337 <type>CompositeOp</type> operation. That means, overlapping
338 strokes from distinct polygons will look exactly as
339 overlapping segments of the same polygon, even with
343 The poly-polygon to render.
346 The viewstate to be used when stroking this polygon.
349 The renderstate to be used when stroking this polygon.
352 A sequence of texture definitions, with which to fill the
356 A bilinear mapping function which defines the warping of the
357 textures on the output area.
359 @param aStrokeAttributes
360 Further attributes used to parameterize the stroking.
362 @return a handle to the cached rendering output.
364 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
365 if one of the view and renderstate parameters are outside the
368 @throws <type>VolatileContentDestroyedException</type>
369 if a texture bitmap was volatile, and the content was
370 destroyed before the rendering could take place.
372 XCachedPrimitive strokeTextureMappedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> aTextures
, [in] ::com
::sun
::star
::geometry
::XMapping2D xMapping
, [in] StrokeAttributes aStrokeAttributes
)
373 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
374 VolatileContentDestroyedException
);
376 //-------------------------------------------------------------------------
378 // [TODO: Method misplaced at this interface?]
380 /** Query the polygonal representation of the stroke outlines, as
381 it would be generated by the strokePolyPolygon methods.<p>
383 This method can be used to e.g. set a clipping which covers the same
387 The poly-polygon to render.
390 The viewstate to be used when generating the outline.
393 The renderstate to be used when generating the outline.
395 @param aStrokeAttributes
396 Further attributes used to parameterize the stroking.
398 @return a poly-polygon describing the outline of the stroked
401 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
402 if one of the view and renderstate parameters are outside the
405 XPolyPolygon2D queryStrokeShapes
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] StrokeAttributes aStrokeAttributes
)
406 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
408 //-------------------------------------------------------------------------
410 /** Fill the given poly-polygon.<p>
412 This method fills the given poly-polygon according to the
413 <type>RenderState</type>'s color and the poly-polygon's fill
417 The poly-polygon to render.
420 The viewstate to be used when filling this polygon.
423 The renderstate to be used when filling this polygon.
425 @return a handle to the cached rendering output.
427 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
428 if one of the view and renderstate parameters are outside the
431 XCachedPrimitive fillPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
432 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
434 //-------------------------------------------------------------------------
436 /** Fill the given poly-polygon with a texture.<p>
438 This method fills the given poly-polygon according to the
439 <type>RenderState</type>'s color, the given textures and
440 poly-polygon's fill rule.<p>
443 The poly-polygon to render.
446 The viewstate to be used when filling this polygon.
449 The renderstate to be used when filling this polygon.
452 A sequence of texture definitions, with which to fill the
455 @return a handle to the cached rendering output.
457 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
458 if one of the view and renderstate parameters are outside the
461 @throws <type>VolatileContentDestroyedException</type>
462 if a texture bitmap was volatile, and the content was
463 destroyed before the rendering could take place.
465 XCachedPrimitive fillTexturedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> xTextures
)
466 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
467 VolatileContentDestroyedException
);
469 //-------------------------------------------------------------------------
471 /** Fill the given poly-polygon with a mapped texture.<p>
473 This method fills the given poly-polygon according to the
474 <type>RenderState</type>'s color, the given textures and
475 poly-polygon's fill rule. The texture is mapped to the
476 poly-polygon's interior via the given texture mapping.<p>
479 The poly-polygon to render.
482 The viewstate to be used when filling this polygon.
485 The renderstate to be used when filling this polygon.
488 A sequence of texture definitions, with which to fill the
492 A bilinear mapping function which defines the warping of the
493 textures on the output area.
495 @return a handle to the cached rendering output.
497 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
498 if one of the view and renderstate parameters are outside the
501 @throws <type>VolatileContentDestroyedException</type>
502 if a texture bitmap was volatile, and the content was
503 destroyed before the rendering could take place.
505 XCachedPrimitive fillTextureMappedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> xTextures
, [in] ::com
::sun
::star
::geometry
::XMapping2D xMapping
)
506 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
507 VolatileContentDestroyedException
);
509 //-------------------------------------------------------------------------
511 /** Create a suitable font for the specified font description.
515 @param aExtraFontProperties
516 Additional font properties to be applied when selecting this
517 font. Normally, you should not need this parameter. Currently,
518 the following properties are recognized:
521 <il>Kerning: a <type>double</type> between 0 and 1, where
522 0 completely disables kerning. Whether kerning is on or
523 off by default is font-dependent.</il>
525 <il>IsEmphasisMarks: a <type>boolean</type>, where <TRUE/>
526 enables automatic placements of emphasis marks, e.g. for
527 Hebrew. The default value, if this property is not
528 specified, is <FALSE/>.</il>
530 <il>ExpandedSpacing: a <type>double</type> value which is added
531 between all cell distances for this font. The default value for
532 this property is zero. Use negative values for condensed output,
533 and positive values for expanded output.</il>
535 <il>OptionalLayoutFeatures: a sequence of <type
536 scope=::com::sun::star::beans>PropertyValue</type> listing
537 font-specific optional layout features, like glyph
543 Font-specific transformation matrix, which affects both the
544 glyphs as well as the advancement.
546 @returns the requested font, or an invalid reference, if the
549 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
550 if one of the parameters is not within the allowed range.
552 XCanvasFont createFont
( [in] FontRequest aFontRequest
, [in] sequence
< ::com
::sun
::star
::beans
::PropertyValue
> aExtraFontProperties
, [in] ::com
::sun
::star
::geometry
::Matrix2D aFontMatrix
)
553 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
555 //-------------------------------------------------------------------------
557 /** Query font information, specific to this canvas.<p>
560 Filter parameter to reduce the list of returned fonts. Every
561 member of <type>FontInfo</type> that is not the empty string
562 or the "don't care" value restricts the list of returned fonts
563 to contain only those that have the specified attribute.
565 @param xFontProperties
566 This interface can provide additional font properties to
567 filter the list of available fonts against.
569 @returns the list of fonts matching the filter set.
571 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
572 if one of the font properties are invalid or not recognized,
573 or if one of the <type>FontInfo</type> members is not within
576 sequence
< FontInfo
> queryAvailableFonts
( [in] FontInfo aFilter
, [in] sequence
< ::com
::sun
::star
::beans
::PropertyValue
> aFontProperties
)
577 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
579 //-------------------------------------------------------------------------
581 /** Draw the text given by the substring of the specified string
582 with the given font.<p>
584 The local origin of this output operation is either the left
585 end of the text baseline, for textDirection equal
586 LEFT_TO_RIGHT, or the right end of the baseline, for
587 textDirection equal to RIGHT_TO_LEFT, respectively.<p>
593 The font retrieved from this canvas to be used when drawing
597 The viewstate to be used when drawing this text.
600 The renderstate to be used when drawing this text.
602 @param nTextDirection
603 A value from the <type>TextDirection</type> collection,
604 denoting the main writing direction for this string. The main
605 writing direction determines the origin of the text output,
606 i.e. the left edge for left-to-right and the right edge for
609 @return a handle to the cached rendering output.
611 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
612 if one of the view and renderstate parameters are outside the
615 XCachedPrimitive drawText
( [in] StringContext aText
, [in] XCanvasFont xFont
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] byte nTextDirection
)
616 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
618 //-------------------------------------------------------------------------
620 /** Draw the formatted text given by the text layout.<p>
622 The glyphs as represented by the text layout are always output
623 with the reference position being the leftmost edge of the
624 layout object's baseline. If the layout contains more than one
625 baseline, the baseline of the first strong character in
626 logical order is used here (strong in this context means that
627 the character can be unambiguously assigned to a unicode
631 An interface to the readily layouted text, obtained from a
632 <type>XCanvasFont</type> created at this canvas. The text
633 layout already carries intrinsic font information.
636 The viewstate to be used when drawing this text.
639 The renderstate to be used when drawing this text.
641 @return a handle to the cached rendering output.
643 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
644 if one of the view and renderstate parameters are outside the
647 XCachedPrimitive drawTextLayout
( [in] XTextLayout xLayoutetText
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
648 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
650 //-------------------------------------------------------------------------
652 /** Render the given bitmap.<p>
654 This method renders the bitmap, at a position and shape as
655 specified by the combined view and render transformations. For
656 fast render speed, the bitmap should be created by the
657 corresponding <type>XGraphicDevice</type>'s
658 <member>XGraphicDevice::createCompatibleBitmap()</member>
662 The bitmap to render.
665 The viewstate to be used when drawing this text.
668 The renderstate to be used when drawing this text.
670 @return a handle to the cached rendering output.
672 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
673 if one of the view and renderstate parameters are outside the
676 @throws <type>VolatileContentDestroyedException</type>
677 if a texture bitmap was volatile, and the content was
678 destroyed before the rendering could take place.
680 XCachedPrimitive drawBitmap
( [in] XBitmap xBitmap
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
681 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
682 VolatileContentDestroyedException
);
684 /** Render the given bitmap, with a global color modulation.<p>
686 This method renders the bitmap, at a position and shape as
687 specified by the combined view and render transformations. For
688 fast render speed, the bitmap should be created by the
689 corresponding <type>XGraphicDevice</type>'s
690 <member>XGraphicDevice::createCompatibleBitmap()</member>
691 method. The bitmap's color channel values are multiplied with
692 the device color values as specified in the render state.<p>
695 The bitmap to render.
698 The viewstate to be used when drawing this text.
701 The renderstate to be used when drawing this text. The device
702 color entry in the renderstate is multiplied with every pixel
703 color value, and only the result is rendered into the
704 canvas. If, for example, the bitmap should be rendered with
705 increased global transparency, set all device color channels
706 to 1.0, except for the alpha channel, which should be set to
707 the desired transparency.
709 @return a handle to the cached rendering output.
711 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
712 if one of the view and renderstate parameters are outside the
715 @throws <type>VolatileContentDestroyedException</type>
716 if a texture bitmap was volatile, and the content was
717 destroyed before the rendering could take place.
719 XCachedPrimitive drawBitmapModulated
( [in] XBitmap xBitmap
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
720 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
721 VolatileContentDestroyedException
);
723 //-------------------------------------------------------------------------
725 /** Request the associated graphic device for this canvas.<p>
727 A graphic device provides methods specific to the underlying
728 output device capabilities, which are common for all canvases
729 rendering to such a device. This includes device resolution,
730 color space, or bitmap formats.
732 @return the associated <type>XGraphicDevice</type>.
734 XGraphicDevice getDevice
();
737 //=============================================================================
739 /// Service providing an <type>XCanvas</type> interface
740 service Canvas
: XCanvas
;