1 /*************************************************************************
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
5 * Copyright 2008 by Sun Microsystems, Inc.
7 * OpenOffice.org - a multi-platform office productivity suite
9 * $RCSfile: XCanvas.idl,v $
12 * This file is part of OpenOffice.org.
14 * OpenOffice.org is free software: you can redistribute it and/or modify
15 * it under the terms of the GNU Lesser General Public License version 3
16 * only, as published by the Free Software Foundation.
18 * OpenOffice.org is distributed in the hope that it will be useful,
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 * GNU Lesser General Public License version 3 for more details
22 * (a copy is included in the LICENSE file that accompanied this code).
24 * You should have received a copy of the GNU Lesser General Public License
25 * version 3 along with OpenOffice.org. If not, see
26 * <http://www.openoffice.org/license.html>
27 * for a copy of the LGPLv3 License.
29 ************************************************************************/
30 #ifndef __com_sun_star_rendering_XCanvas_idl__
31 #define __com_sun_star_rendering_XCanvas_idl__
33 #ifndef __com_sun_star_uno_XInterface_idl__
34 #include
<com
/sun
/star
/uno
/XInterface.idl
>
36 #ifndef __com_sun_star_lang_IllegalArgumentException_idl__
37 #include
<com
/sun
/star
/lang
/IllegalArgumentException.idl
>
39 #ifndef __com_sun_star_geometry_RealPoint2D_idl__
40 #include
<com
/sun
/star
/geometry
/RealPoint2D.idl
>
42 #ifndef __com_sun_star_geometry_RealBezierSegment2D_idl__
43 #include
<com
/sun
/star
/geometry
/RealBezierSegment2D.idl
>
45 #ifndef __com_sun_star_geometry_RealRectangle2D_idl__
46 #include
<com
/sun
/star
/geometry
/RealRectangle2D.idl
>
48 #ifndef __com_sun_star_geometry_Matrix2D_idl__
49 #include
<com
/sun
/star
/geometry
/Matrix2D.idl
>
51 #ifndef __com_sun_star_rendering_ViewState_idl__
52 #include
<com
/sun
/star
/rendering
/ViewState.idl
>
54 #ifndef __com_sun_star_rendering_RenderState_idl__
55 #include
<com
/sun
/star
/rendering
/RenderState.idl
>
57 #ifndef __com_sun_star_rendering_FontRequest_idl__
58 #include
<com
/sun
/star
/rendering
/FontRequest.idl
>
60 #ifndef __com_sun_star_rendering_FontInfo_idl__
61 #include
<com
/sun
/star
/rendering
/FontInfo.idl
>
63 #ifndef __com_sun_star_rendering_Texture_idl__
64 #include
<com
/sun
/star
/rendering
/Texture.idl
>
66 #ifndef __com_sun_star_rendering_StringContext_idl__
67 #include
<com
/sun
/star
/rendering
/StringContext.idl
>
69 #ifndef __com_sun_star_rendering_StrokeAttributes_idl__
70 #include
<com
/sun
/star
/rendering
/StrokeAttributes.idl
>
72 #ifndef __com_sun_star_rendering_VolatileContentDestroyedException_idl__
73 #include
<com
/sun
/star
/rendering
/VolatileContentDestroyedException.idl
>
76 #ifndef __com_sun_star_beans_PropertyValue_idl__
77 #include
<com
/sun
/star
/beans
/PropertyValue.idl
>
81 module com
{ module sun
{ module star
{ module geometry
{
85 module com
{ module sun
{ module star
{ module rendering
{
87 interface XCanvasFont
;
88 interface XPolyPolygon2D
;
89 interface XCachedPrimitive
;
91 interface XGraphicDevice
;
92 interface XTextLayout
;
94 /** Central interface for rendering.<p>
96 This is the central interface for graphical output production, and
97 the place where all draw methods are located.<p>
99 Some notes are in order to explain the concepts used here. The
100 <type>XCanvas</type> interface is free of client-modifiable state,
101 i.e. it can be used safely and without external synchronization in
102 a multi-threaded environment. On the other hand, this implies that
103 for nearly every canvas operation, external state is
104 required. This is provided by <type>ViewState</type> and
105 <type>RenderState</type> in a unified fashion, supplemented by a
106 few extra state parameters for some methods (e.g. textured
107 polygons or text rendering).<p>
109 When used careless, this scheme can be inefficient to some extend,
110 because internally, view, render and other states have to be
111 combined before rendering. This is especially expensive for
112 complex clip polygons, i.e. when both <type>ViewState</type> and
113 <type>RenderState</type> have a complex clip polygon set, which
114 have to be intersected before rendering. It is therefore
115 recommended to combine <type>ViewState</type> and
116 <type>RenderState</type> already at the client side, when objects
117 are organized in a hierarchical way: the classic example are
118 grouped draw shapes, whose parent group object imposes a
119 common clipping and a common transformation on its siblings. The
120 group object would therefore merge the <type>ViewState</type> and
121 the <type>RenderState</type> it is called with into a new
122 <type>ViewState</type>, and call its siblings with a
123 <type>RenderState</type> containing only the local offset (and no
126 Furtheron, this stateless nature provides easy ways for
127 caching. Every non-trivial operation on <type>XCanvas</type> can
128 return a cache object, which, when called to redraw, renders the
129 primitive usually much more quickly than the original method. Note
130 that such caching is a lot more complicated, should the actual
131 rendering a method yields depend on internal state (which is the
134 scope="::com::sun::star::drawing">::com::sun::star::drawing::XGraphics</type>
135 interface). Please note, though, that deciding whether to return
136 an <type>XCachedPrimitive</type> is completely up to the
137 implementation - don't rely on the methods returning something
138 (this is because there might be cases when returning such a cache
139 object will actually be a pessimization, since it involves memory
140 allocation and comparisons).<p>
142 Things that need more than a small, fixed amount of data are
143 encapsulated in own interfaces, e.g. polygons and bitmaps. You
144 can, in principle, roll your own implementations of these
145 interfaces, wrap it around your internal representation of
146 polygons and bitmaps, and render them. It might just not be overly
147 fast, because the <type>XCanvas</type> would need to convert for
148 each render call. It is therefore recommended to create such
149 objects via the <type>XGraphicDevice</type> factory (to be
150 retrieved from every canvas object via the
151 <member>getDevice()</member> call) - they will then internally
152 optimize to the underlying graphics subsystem.<p>
156 interface XCanvas
: ::com
::sun
::star
::uno
::XInterface
158 /** Clear the whole canvas area.<p>
160 This method clears the whole canvas area to the device default
161 color (e.g. white for a printer, transparent for an
162 <type>XCustomSprite</type>).
166 /** Draw a point in device resolution on the device.
172 The viewstate to be used when drawing this point.
175 The renderstate to be used when drawing this point.
177 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
178 if one of the view and renderstate parameters are outside the
181 void drawPoint
( [in] ::com
::sun
::star
::geometry
::RealPoint2D aPoint
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
182 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
184 //-------------------------------------------------------------------------
186 /** Draw a line in device resolution width (i.e. one device pixel
190 The start point of the line to draw.
193 The end point of the line to draw.
196 The viewstate to be used when drawing this line.
199 The renderstate to be used when drawing this line.
201 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
202 if one of the view and renderstate parameters are outside the
205 void drawLine
( [in] ::com
::sun
::star
::geometry
::RealPoint2D aStartPoint
, [in] ::com
::sun
::star
::geometry
::RealPoint2D aEndPoint
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
206 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
208 //-------------------------------------------------------------------------
210 /** Draw a cubic bezier curve in device resolution width (i.e. one
213 @param aBezierSegment
214 The start and the two control points of the bezier curve.
217 The end point of the bezier curve.
220 The viewstate to be used when drawing this curve.
223 The renderstate to be used when drawing this curve.
225 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
226 if one of the view and renderstate parameters are outside the
229 void drawBezier
( [in] ::com
::sun
::star
::geometry
::RealBezierSegment2D aBezierSegment
, [in] ::com
::sun
::star
::geometry
::RealPoint2D aEndPoint
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
230 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
232 //-------------------------------------------------------------------------
234 /** Draw a poly-polygon in device resolution line width (i.e. the
235 lines are one device pixel wide).
238 The poly-polygon to draw.
241 The viewstate to be used when drawing this polygon.
244 The renderstate to be used when drawing this polygon.
246 @return a handle to the cached rendering output.
248 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
249 if one of the view and renderstate parameters are outside the
252 XCachedPrimitive drawPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
253 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
255 //-------------------------------------------------------------------------
257 /** Stroke each polygon of the provided poly-polygon with the
258 specified stroke attributes.<p>
260 This method considers the stroking of all polygons as an
261 atomic operation in relation to the <type>RenderState</type>'s
262 <type>CompositeOperationy</type> operation. That means,
263 overlapping strokes from distinct polygons will look exactly
264 as overlapping segments of the same polygon, even with
268 The poly-polygon to render.
271 The viewstate to be used when stroking this polygon.
274 The renderstate to be used when stroking this polygon.
276 @param aStrokeAttributes
277 Further attributes used to parameterize the stroking.
279 @return a handle to the cached rendering output.
281 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
282 if one of the view and renderstate parameters are outside the
285 XCachedPrimitive strokePolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] StrokeAttributes aStrokeAttributes
)
286 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
288 //-------------------------------------------------------------------------
290 /** Stroke each polygon of the provided poly-polygon with the
291 specified stroke attributes, fill the stroked outline
292 with the specified texture graphics.<p>
294 This method considers the stroking of all polygons as an
295 atomic operation in relation to the <type>RenderState</type>'s
296 <type>CompositeOp</type> operation. That means, overlapping
297 strokes from distinct polygons will look exactly as
298 overlapping segments of the same polygon, even with
302 The poly-polygon to render.
305 The viewstate to be used when strokes this polygon.
308 The renderstate to be used when stroking this polygon.
311 A sequence of texture definitions, with which to fill the
314 @param aStrokeAttributes
315 Further attributes used to parameterize the stroking.
317 @return a handle to the cached rendering output.
319 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
320 if one of the view and renderstate parameters are outside the
323 @throws <type>VolatileContentDestroyedException</type>
324 if a texture bitmap was volatile, and the content was
325 destroyed before the rendering could take place.
327 XCachedPrimitive strokeTexturedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> aTextures
, [in] StrokeAttributes aStrokeAttributes
)
328 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
329 VolatileContentDestroyedException
);
331 //-------------------------------------------------------------------------
333 /** Stroke each polygon of the provided poly-polygon with the
334 specified stroke attributes, fill the stroked outline
335 with the specified texture graphics, map the texture to the
336 outline via the specified texture mapping.<p>
338 This method considers the stroking of all polygons as an
339 atomic operation in relation to the <type>RenderState</type>'s
340 <type>CompositeOp</type> operation. That means, overlapping
341 strokes from distinct polygons will look exactly as
342 overlapping segments of the same polygon, even with
346 The poly-polygon to render.
349 The viewstate to be used when stroking this polygon.
352 The renderstate to be used when stroking this polygon.
355 A sequence of texture definitions, with which to fill the
359 A bilinear mapping function which defines the warping of the
360 textures on the output area.
362 @param aStrokeAttributes
363 Further attributes used to parameterize the stroking.
365 @return a handle to the cached rendering output.
367 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
368 if one of the view and renderstate parameters are outside the
371 @throws <type>VolatileContentDestroyedException</type>
372 if a texture bitmap was volatile, and the content was
373 destroyed before the rendering could take place.
375 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
)
376 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
377 VolatileContentDestroyedException
);
379 //-------------------------------------------------------------------------
381 // [TODO: Method misplaced at this interface?]
383 /** Query the polygonal representation of the stroke outlines, as
384 it would be generated by the strokePolyPolygon methods.<p>
386 This method can be used to e.g. set a clipping which covers the same
390 The poly-polygon to render.
393 The viewstate to be used when generating the outline.
396 The renderstate to be used when generating the outline.
398 @param aStrokeAttributes
399 Further attributes used to parameterize the stroking.
401 @return a poly-polygon describing the outline of the stroked
404 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
405 if one of the view and renderstate parameters are outside the
408 XPolyPolygon2D queryStrokeShapes
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] StrokeAttributes aStrokeAttributes
)
409 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
411 //-------------------------------------------------------------------------
413 /** Fill the given poly-polygon.<p>
415 This method fills the given poly-polygon according to the
416 <type>RenderState</type>'s color and the poly-polygon's fill
420 The poly-polygon to render.
423 The viewstate to be used when filling this polygon.
426 The renderstate to be used when filling this polygon.
428 @return a handle to the cached rendering output.
430 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
431 if one of the view and renderstate parameters are outside the
434 XCachedPrimitive fillPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
435 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
437 //-------------------------------------------------------------------------
439 /** Fill the given poly-polygon with a texture.<p>
441 This method fills the given poly-polygon according to the
442 <type>RenderState</type>'s color, the given textures and
443 poly-polygon's fill rule.<p>
446 The poly-polygon to render.
449 The viewstate to be used when filling this polygon.
452 The renderstate to be used when filling this polygon.
455 A sequence of texture definitions, with which to fill the
458 @return a handle to the cached rendering output.
460 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
461 if one of the view and renderstate parameters are outside the
464 @throws <type>VolatileContentDestroyedException</type>
465 if a texture bitmap was volatile, and the content was
466 destroyed before the rendering could take place.
468 XCachedPrimitive fillTexturedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> xTextures
)
469 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
470 VolatileContentDestroyedException
);
472 //-------------------------------------------------------------------------
474 /** Fill the given poly-polygon with a mapped texture.<p>
476 This method fills the given poly-polygon according to the
477 <type>RenderState</type>'s color, the given textures and
478 poly-polygon's fill rule. The texture is mapped to the
479 poly-polygon's interior via the given texture mapping.<p>
482 The poly-polygon to render.
485 The viewstate to be used when filling this polygon.
488 The renderstate to be used when filling this polygon.
491 A sequence of texture definitions, with which to fill the
495 A bilinear mapping function which defines the warping of the
496 textures on the output area.
498 @return a handle to the cached rendering output.
500 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
501 if one of the view and renderstate parameters are outside the
504 @throws <type>VolatileContentDestroyedException</type>
505 if a texture bitmap was volatile, and the content was
506 destroyed before the rendering could take place.
508 XCachedPrimitive fillTextureMappedPolyPolygon
( [in] XPolyPolygon2D xPolyPolygon
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] sequence
<Texture
> xTextures
, [in] ::com
::sun
::star
::geometry
::XMapping2D xMapping
)
509 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
510 VolatileContentDestroyedException
);
512 //-------------------------------------------------------------------------
514 /** Create a suitable font for the specified font description.
518 @param aExtraFontProperties
519 Additional font properties to be applied when selecting this
520 font. Normally, you should not need this parameter. Currently,
521 the following properties are recognized:
524 <il>Kerning: a <type>double</type> between 0 and 1, where
525 0 completely disables kerning. Whether kerning is on or
526 off by default is font-dependent.</il>
528 <il>IsEmphasisMarks: a <type>boolean</type>, where <TRUE/>
529 enables automatic placements of emphasis marks, e.g. for
530 Hebrew. The default value, if this property is not
531 specified, is <FALSE/>.</il>
533 <il>ExpandedSpacing: a <type>double</type> value which is added
534 between all cell distances for this font. The default value for
535 this property is zero. Use negative values for condensed output,
536 and positive values for expanded output.</il>
538 <il>OptionalLayoutFeatures: a sequence of <type
539 scope=::com::sun::star::beans>PropertyValue</type> listing
540 font-specific optional layout features, like glyph
546 Font-specific transformation matrix, which affects both the
547 glyphs as well as the advancement.
549 @returns the requested font, or an invalid reference, if the
552 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
553 if one of the parameters is not within the allowed range.
555 XCanvasFont createFont
( [in] FontRequest aFontRequest
, [in] sequence
< ::com
::sun
::star
::beans
::PropertyValue
> aExtraFontProperties
, [in] ::com
::sun
::star
::geometry
::Matrix2D aFontMatrix
)
556 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
558 //-------------------------------------------------------------------------
560 /** Query font information, specific to this canvas.<p>
563 Filter parameter to reduce the list of returned fonts. Every
564 member of <type>FontInfo</type> that is not the empty string
565 or the "don't care" value restricts the list of returned fonts
566 to contain only those that have the specified attribute.
568 @param xFontProperties
569 This interface can provide additional font properties to
570 filter the list of available fonts against.
572 @returns the list of fonts matching the filter set.
574 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
575 if one of the font properties are invalid or not recognized,
576 or if one of the <type>FontInfo</type> members is not within
579 sequence
< FontInfo
> queryAvailableFonts
( [in] FontInfo aFilter
, [in] sequence
< ::com
::sun
::star
::beans
::PropertyValue
> aFontProperties
)
580 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
582 //-------------------------------------------------------------------------
584 /** Draw the text given by the substring of the specified string
585 with the given font.<p>
587 The local origin of this output operation is either the left
588 end of the text baseline, for textDirection equal
589 LEFT_TO_RIGHT, or the right end of the baseline, for
590 textDirection equal to RIGHT_TO_LEFT, respectively.<p>
596 The font retrieved from this canvas to be used when drawing
600 The viewstate to be used when drawing this text.
603 The renderstate to be used when drawing this text.
605 @param nTextDirection
606 A value from the <type>TextDirection</type> collection,
607 denoting the main writing direction for this string. The main
608 writing direction determines the origin of the text output,
609 i.e. the left edge for left-to-right and the right edge for
612 @return a handle to the cached rendering output.
614 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
615 if one of the view and renderstate parameters are outside the
618 XCachedPrimitive drawText
( [in] StringContext aText
, [in] XCanvasFont xFont
, [in] ViewState aViewState
, [in] RenderState aRenderState
, [in] byte nTextDirection
)
619 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
621 //-------------------------------------------------------------------------
623 /** Draw the formatted text given by the text layout.<p>
625 The glyphs as represented by the text layout are always output
626 with the reference position being the leftmost edge of the
627 layout object's baseline. If the layout contains more than one
628 baseline, the baseline of the first strong character in
629 logical order is used here (strong in this context means that
630 the character can be unambiguously assigned to a unicode
634 An interface to the readily layouted text, obtained from a
635 <type>XCanvasFont</type> created at this canvas. The text
636 layout already carries intrinsic font information.
639 The viewstate to be used when drawing this text.
642 The renderstate to be used when drawing this text.
644 @return a handle to the cached rendering output.
646 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
647 if one of the view and renderstate parameters are outside the
650 XCachedPrimitive drawTextLayout
( [in] XTextLayout xLayoutetText
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
651 raises
(com
::sun
::star
::lang
::IllegalArgumentException
);
653 //-------------------------------------------------------------------------
655 /** Render the given bitmap.<p>
657 This method renders the bitmap, at a position and shape as
658 specified by the combined view and render transformations. For
659 fast render speed, the bitmap should be created by the
660 corresponding <type>XGraphicDevice</type>'s
661 <member>XGraphicDevice::createCompatibleBitmap()</member>
665 The bitmap to render.
668 The viewstate to be used when drawing this text.
671 The renderstate to be used when drawing this text.
673 @return a handle to the cached rendering output.
675 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
676 if one of the view and renderstate parameters are outside the
679 @throws <type>VolatileContentDestroyedException</type>
680 if a texture bitmap was volatile, and the content was
681 destroyed before the rendering could take place.
683 XCachedPrimitive drawBitmap
( [in] XBitmap xBitmap
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
684 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
685 VolatileContentDestroyedException
);
687 /** Render the given bitmap, with a global color modulation.<p>
689 This method renders the bitmap, at a position and shape as
690 specified by the combined view and render transformations. For
691 fast render speed, the bitmap should be created by the
692 corresponding <type>XGraphicDevice</type>'s
693 <member>XGraphicDevice::createCompatibleBitmap()</member>
694 method. The bitmap's color channel values are multiplied with
695 the device color values as specified in the render state.<p>
698 The bitmap to render.
701 The viewstate to be used when drawing this text.
704 The renderstate to be used when drawing this text. The device
705 color entry in the renderstate is multiplied with every pixel
706 color value, and only the result is rendered into the
707 canvas. If, for example, the bitmap should be rendered with
708 increased global transparency, set all device color channels
709 to 1.0, except for the alpha channel, which should be set to
710 the desired transparency.
712 @return a handle to the cached rendering output.
714 @throws <type>com::sun::star::lang::IllegalArgumentException</type>
715 if one of the view and renderstate parameters are outside the
718 @throws <type>VolatileContentDestroyedException</type>
719 if a texture bitmap was volatile, and the content was
720 destroyed before the rendering could take place.
722 XCachedPrimitive drawBitmapModulated
( [in] XBitmap xBitmap
, [in] ViewState aViewState
, [in] RenderState aRenderState
)
723 raises
(com
::sun
::star
::lang
::IllegalArgumentException
,
724 VolatileContentDestroyedException
);
726 //-------------------------------------------------------------------------
728 /** Request the associated graphic device for this canvas.<p>
730 A graphic device provides methods specific to the underlying
731 output device capabilities, which are common for all canvases
732 rendering to such a device. This includes device resolution,
733 color space, or bitmap formats.
735 @return the associated <type>XGraphicDevice</type>.
737 XGraphicDevice getDevice
();
740 //=============================================================================
742 /// Service providing an <type>XCanvas</type> interface
743 service Canvas
: XCanvas
;