1*b1cdbd2cSJim Jagielski/************************************************************** 2*b1cdbd2cSJim Jagielski * 3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one 4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file 5*b1cdbd2cSJim Jagielski * distributed with this work for additional information 6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file 7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the 8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance 9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at 10*b1cdbd2cSJim Jagielski * 11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0 12*b1cdbd2cSJim Jagielski * 13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing, 14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an 15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY 16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the 17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations 18*b1cdbd2cSJim Jagielski * under the License. 19*b1cdbd2cSJim Jagielski * 20*b1cdbd2cSJim Jagielski *************************************************************/ 21*b1cdbd2cSJim Jagielski 22*b1cdbd2cSJim Jagielski 23*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_XCanvas_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_rendering_XCanvas_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_uno_XInterface_idl__ 27*b1cdbd2cSJim Jagielski#include <com/sun/star/uno/XInterface.idl> 28*b1cdbd2cSJim Jagielski#endif 29*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_lang_IllegalArgumentException_idl__ 30*b1cdbd2cSJim Jagielski#include <com/sun/star/lang/IllegalArgumentException.idl> 31*b1cdbd2cSJim Jagielski#endif 32*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_RealPoint2D_idl__ 33*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/RealPoint2D.idl> 34*b1cdbd2cSJim Jagielski#endif 35*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_RealBezierSegment2D_idl__ 36*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/RealBezierSegment2D.idl> 37*b1cdbd2cSJim Jagielski#endif 38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_RealRectangle2D_idl__ 39*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/RealRectangle2D.idl> 40*b1cdbd2cSJim Jagielski#endif 41*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_Matrix2D_idl__ 42*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/Matrix2D.idl> 43*b1cdbd2cSJim Jagielski#endif 44*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_ViewState_idl__ 45*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/ViewState.idl> 46*b1cdbd2cSJim Jagielski#endif 47*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_RenderState_idl__ 48*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/RenderState.idl> 49*b1cdbd2cSJim Jagielski#endif 50*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_FontRequest_idl__ 51*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/FontRequest.idl> 52*b1cdbd2cSJim Jagielski#endif 53*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_FontInfo_idl__ 54*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/FontInfo.idl> 55*b1cdbd2cSJim Jagielski#endif 56*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_Texture_idl__ 57*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/Texture.idl> 58*b1cdbd2cSJim Jagielski#endif 59*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_StringContext_idl__ 60*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/StringContext.idl> 61*b1cdbd2cSJim Jagielski#endif 62*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_StrokeAttributes_idl__ 63*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/StrokeAttributes.idl> 64*b1cdbd2cSJim Jagielski#endif 65*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_VolatileContentDestroyedException_idl__ 66*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/VolatileContentDestroyedException.idl> 67*b1cdbd2cSJim Jagielski#endif 68*b1cdbd2cSJim Jagielski 69*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_beans_PropertyValue_idl__ 70*b1cdbd2cSJim Jagielski#include <com/sun/star/beans/PropertyValue.idl> 71*b1cdbd2cSJim Jagielski#endif 72*b1cdbd2cSJim Jagielski 73*b1cdbd2cSJim Jagielski 74*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module geometry { 75*b1cdbd2cSJim Jagielski published interface XMapping2D; 76*b1cdbd2cSJim Jagielski}; }; }; }; 77*b1cdbd2cSJim Jagielski 78*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module rendering { 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielskipublished interface XCanvasFont; 81*b1cdbd2cSJim Jagielskipublished interface XPolyPolygon2D; 82*b1cdbd2cSJim Jagielskipublished interface XCachedPrimitive; 83*b1cdbd2cSJim Jagielskipublished interface XBitmap; 84*b1cdbd2cSJim Jagielskipublished interface XGraphicDevice; 85*b1cdbd2cSJim Jagielskipublished interface XTextLayout; 86*b1cdbd2cSJim Jagielski 87*b1cdbd2cSJim Jagielski/** Central interface for rendering.<p> 88*b1cdbd2cSJim Jagielski 89*b1cdbd2cSJim Jagielski This is the central interface for graphical output production, and 90*b1cdbd2cSJim Jagielski the place where all draw methods are located.<p> 91*b1cdbd2cSJim Jagielski 92*b1cdbd2cSJim Jagielski Some notes are in order to explain the concepts used here. The 93*b1cdbd2cSJim Jagielski <type>XCanvas</type> interface is free of client-modifiable state, 94*b1cdbd2cSJim Jagielski i.e. it can be used safely and without external synchronization in 95*b1cdbd2cSJim Jagielski a multi-threaded environment. On the other hand, this implies that 96*b1cdbd2cSJim Jagielski for nearly every canvas operation, external state is 97*b1cdbd2cSJim Jagielski required. This is provided by <type>ViewState</type> and 98*b1cdbd2cSJim Jagielski <type>RenderState</type> in a unified fashion, supplemented by a 99*b1cdbd2cSJim Jagielski few extra state parameters for some methods (e.g. textured 100*b1cdbd2cSJim Jagielski polygons or text rendering).<p> 101*b1cdbd2cSJim Jagielski 102*b1cdbd2cSJim Jagielski When used careless, this scheme can be inefficient to some extend, 103*b1cdbd2cSJim Jagielski because internally, view, render and other states have to be 104*b1cdbd2cSJim Jagielski combined before rendering. This is especially expensive for 105*b1cdbd2cSJim Jagielski complex clip polygons, i.e. when both <type>ViewState</type> and 106*b1cdbd2cSJim Jagielski <type>RenderState</type> have a complex clip polygon set, which 107*b1cdbd2cSJim Jagielski have to be intersected before rendering. It is therefore 108*b1cdbd2cSJim Jagielski recommended to combine <type>ViewState</type> and 109*b1cdbd2cSJim Jagielski <type>RenderState</type> already at the client side, when objects 110*b1cdbd2cSJim Jagielski are organized in a hierarchical way: the classic example are 111*b1cdbd2cSJim Jagielski grouped draw shapes, whose parent group object imposes a 112*b1cdbd2cSJim Jagielski common clipping and a common transformation on its siblings. The 113*b1cdbd2cSJim Jagielski group object would therefore merge the <type>ViewState</type> and 114*b1cdbd2cSJim Jagielski the <type>RenderState</type> it is called with into a new 115*b1cdbd2cSJim Jagielski <type>ViewState</type>, and call its siblings with a 116*b1cdbd2cSJim Jagielski <type>RenderState</type> containing only the local offset (and no 117*b1cdbd2cSJim Jagielski extra clipping).<p> 118*b1cdbd2cSJim Jagielski 119*b1cdbd2cSJim Jagielski Furtheron, this stateless nature provides easy ways for 120*b1cdbd2cSJim Jagielski caching. Every non-trivial operation on <type>XCanvas</type> can 121*b1cdbd2cSJim Jagielski return a cache object, which, when called to redraw, renders the 122*b1cdbd2cSJim Jagielski primitive usually much more quickly than the original method. Note 123*b1cdbd2cSJim Jagielski that such caching is a lot more complicated, should the actual 124*b1cdbd2cSJim Jagielski rendering a method yields depend on internal state (which is the 125*b1cdbd2cSJim Jagielski case e.g. for the 126*b1cdbd2cSJim Jagielski <type 127*b1cdbd2cSJim Jagielski scope="::com::sun::star::drawing">::com::sun::star::drawing::XGraphics</type> 128*b1cdbd2cSJim Jagielski interface). Please note, though, that deciding whether to return 129*b1cdbd2cSJim Jagielski an <type>XCachedPrimitive</type> is completely up to the 130*b1cdbd2cSJim Jagielski implementation - don't rely on the methods returning something 131*b1cdbd2cSJim Jagielski (this is because there might be cases when returning such a cache 132*b1cdbd2cSJim Jagielski object will actually be a pessimization, since it involves memory 133*b1cdbd2cSJim Jagielski allocation and comparisons).<p> 134*b1cdbd2cSJim Jagielski 135*b1cdbd2cSJim Jagielski Things that need more than a small, fixed amount of data are 136*b1cdbd2cSJim Jagielski encapsulated in own interfaces, e.g. polygons and bitmaps. You 137*b1cdbd2cSJim Jagielski can, in principle, roll your own implementations of these 138*b1cdbd2cSJim Jagielski interfaces, wrap it around your internal representation of 139*b1cdbd2cSJim Jagielski polygons and bitmaps, and render them. It might just not be overly 140*b1cdbd2cSJim Jagielski fast, because the <type>XCanvas</type> would need to convert for 141*b1cdbd2cSJim Jagielski each render call. It is therefore recommended to create such 142*b1cdbd2cSJim Jagielski objects via the <type>XGraphicDevice</type> factory (to be 143*b1cdbd2cSJim Jagielski retrieved from every canvas object via the 144*b1cdbd2cSJim Jagielski <member>getDevice()</member> call) - they will then internally 145*b1cdbd2cSJim Jagielski optimize to the underlying graphics subsystem.<p> 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski @since OpenOffice 2.0 148*b1cdbd2cSJim Jagielski */ 149*b1cdbd2cSJim Jagielskipublished interface XCanvas : ::com::sun::star::uno::XInterface 150*b1cdbd2cSJim Jagielski{ 151*b1cdbd2cSJim Jagielski /** Clear the whole canvas area.<p> 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski This method clears the whole canvas area to the device default 154*b1cdbd2cSJim Jagielski color (e.g. white for a printer, transparent for an 155*b1cdbd2cSJim Jagielski <type>XCustomSprite</type>). 156*b1cdbd2cSJim Jagielski */ 157*b1cdbd2cSJim Jagielski void clear(); 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski /** Draw a point in device resolution on the device. 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski @param aPoint 162*b1cdbd2cSJim Jagielski The point to draw. 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski @param aViewState 165*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this point. 166*b1cdbd2cSJim Jagielski 167*b1cdbd2cSJim Jagielski @param aRenderState 168*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this point. 169*b1cdbd2cSJim Jagielski 170*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 171*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 172*b1cdbd2cSJim Jagielski specified range. 173*b1cdbd2cSJim Jagielski */ 174*b1cdbd2cSJim Jagielski void drawPoint( [in] ::com::sun::star::geometry::RealPoint2D aPoint, [in] ViewState aViewState, [in] RenderState aRenderState ) 175*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 176*b1cdbd2cSJim Jagielski 177*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 178*b1cdbd2cSJim Jagielski 179*b1cdbd2cSJim Jagielski /** Draw a line in device resolution width (i.e. one device pixel 180*b1cdbd2cSJim Jagielski wide). 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski @param aStartPoint 183*b1cdbd2cSJim Jagielski The start point of the line to draw. 184*b1cdbd2cSJim Jagielski 185*b1cdbd2cSJim Jagielski @param aEndPoint 186*b1cdbd2cSJim Jagielski The end point of the line to draw. 187*b1cdbd2cSJim Jagielski 188*b1cdbd2cSJim Jagielski @param aViewState 189*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this line. 190*b1cdbd2cSJim Jagielski 191*b1cdbd2cSJim Jagielski @param aRenderState 192*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this line. 193*b1cdbd2cSJim Jagielski 194*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 195*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 196*b1cdbd2cSJim Jagielski specified range. 197*b1cdbd2cSJim Jagielski */ 198*b1cdbd2cSJim Jagielski void drawLine( [in] ::com::sun::star::geometry::RealPoint2D aStartPoint, [in] ::com::sun::star::geometry::RealPoint2D aEndPoint, [in] ViewState aViewState, [in] RenderState aRenderState ) 199*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 200*b1cdbd2cSJim Jagielski 201*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 202*b1cdbd2cSJim Jagielski 203*b1cdbd2cSJim Jagielski /** Draw a cubic bezier curve in device resolution width (i.e. one 204*b1cdbd2cSJim Jagielski device pixel wide). 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski @param aBezierSegment 207*b1cdbd2cSJim Jagielski The start and the two control points of the bezier curve. 208*b1cdbd2cSJim Jagielski 209*b1cdbd2cSJim Jagielski @param aEndPoint 210*b1cdbd2cSJim Jagielski The end point of the bezier curve. 211*b1cdbd2cSJim Jagielski 212*b1cdbd2cSJim Jagielski @param aViewState 213*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this curve. 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski @param aRenderState 216*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this curve. 217*b1cdbd2cSJim Jagielski 218*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 219*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 220*b1cdbd2cSJim Jagielski specified range. 221*b1cdbd2cSJim Jagielski */ 222*b1cdbd2cSJim Jagielski void drawBezier( [in] ::com::sun::star::geometry::RealBezierSegment2D aBezierSegment, [in] ::com::sun::star::geometry::RealPoint2D aEndPoint, [in] ViewState aViewState, [in] RenderState aRenderState ) 223*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski /** Draw a poly-polygon in device resolution line width (i.e. the 228*b1cdbd2cSJim Jagielski lines are one device pixel wide). 229*b1cdbd2cSJim Jagielski 230*b1cdbd2cSJim Jagielski @param xPolyPolygon 231*b1cdbd2cSJim Jagielski The poly-polygon to draw. 232*b1cdbd2cSJim Jagielski 233*b1cdbd2cSJim Jagielski @param aViewState 234*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this polygon. 235*b1cdbd2cSJim Jagielski 236*b1cdbd2cSJim Jagielski @param aRenderState 237*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this polygon. 238*b1cdbd2cSJim Jagielski 239*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 240*b1cdbd2cSJim Jagielski 241*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 242*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 243*b1cdbd2cSJim Jagielski specified range. 244*b1cdbd2cSJim Jagielski */ 245*b1cdbd2cSJim Jagielski XCachedPrimitive drawPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState ) 246*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 247*b1cdbd2cSJim Jagielski 248*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski /** Stroke each polygon of the provided poly-polygon with the 251*b1cdbd2cSJim Jagielski specified stroke attributes.<p> 252*b1cdbd2cSJim Jagielski 253*b1cdbd2cSJim Jagielski This method considers the stroking of all polygons as an 254*b1cdbd2cSJim Jagielski atomic operation in relation to the <type>RenderState</type>'s 255*b1cdbd2cSJim Jagielski <type>CompositeOperationy</type> operation. That means, 256*b1cdbd2cSJim Jagielski overlapping strokes from distinct polygons will look exactly 257*b1cdbd2cSJim Jagielski as overlapping segments of the same polygon, even with 258*b1cdbd2cSJim Jagielski transparency.<p> 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski @param xPolyPolygon 261*b1cdbd2cSJim Jagielski The poly-polygon to render. 262*b1cdbd2cSJim Jagielski 263*b1cdbd2cSJim Jagielski @param aViewState 264*b1cdbd2cSJim Jagielski The viewstate to be used when stroking this polygon. 265*b1cdbd2cSJim Jagielski 266*b1cdbd2cSJim Jagielski @param aRenderState 267*b1cdbd2cSJim Jagielski The renderstate to be used when stroking this polygon. 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski @param aStrokeAttributes 270*b1cdbd2cSJim Jagielski Further attributes used to parameterize the stroking. 271*b1cdbd2cSJim Jagielski 272*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 275*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 276*b1cdbd2cSJim Jagielski specified range. 277*b1cdbd2cSJim Jagielski */ 278*b1cdbd2cSJim Jagielski XCachedPrimitive strokePolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] StrokeAttributes aStrokeAttributes ) 279*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 282*b1cdbd2cSJim Jagielski 283*b1cdbd2cSJim Jagielski /** Stroke each polygon of the provided poly-polygon with the 284*b1cdbd2cSJim Jagielski specified stroke attributes, fill the stroked outline 285*b1cdbd2cSJim Jagielski with the specified texture graphics.<p> 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski This method considers the stroking of all polygons as an 288*b1cdbd2cSJim Jagielski atomic operation in relation to the <type>RenderState</type>'s 289*b1cdbd2cSJim Jagielski <type>CompositeOp</type> operation. That means, overlapping 290*b1cdbd2cSJim Jagielski strokes from distinct polygons will look exactly as 291*b1cdbd2cSJim Jagielski overlapping segments of the same polygon, even with 292*b1cdbd2cSJim Jagielski transparency.<p> 293*b1cdbd2cSJim Jagielski 294*b1cdbd2cSJim Jagielski @param xPolyPolygon 295*b1cdbd2cSJim Jagielski The poly-polygon to render. 296*b1cdbd2cSJim Jagielski 297*b1cdbd2cSJim Jagielski @param aViewState 298*b1cdbd2cSJim Jagielski The viewstate to be used when strokes this polygon. 299*b1cdbd2cSJim Jagielski 300*b1cdbd2cSJim Jagielski @param aRenderState 301*b1cdbd2cSJim Jagielski The renderstate to be used when stroking this polygon. 302*b1cdbd2cSJim Jagielski 303*b1cdbd2cSJim Jagielski @param aTextures 304*b1cdbd2cSJim Jagielski A sequence of texture definitions, with which to fill the 305*b1cdbd2cSJim Jagielski stroked area. 306*b1cdbd2cSJim Jagielski 307*b1cdbd2cSJim Jagielski @param aStrokeAttributes 308*b1cdbd2cSJim Jagielski Further attributes used to parameterize the stroking. 309*b1cdbd2cSJim Jagielski 310*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 311*b1cdbd2cSJim Jagielski 312*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 313*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 314*b1cdbd2cSJim Jagielski specified range. 315*b1cdbd2cSJim Jagielski 316*b1cdbd2cSJim Jagielski @throws <type>VolatileContentDestroyedException</type> 317*b1cdbd2cSJim Jagielski if a texture bitmap was volatile, and the content was 318*b1cdbd2cSJim Jagielski destroyed before the rendering could take place. 319*b1cdbd2cSJim Jagielski */ 320*b1cdbd2cSJim Jagielski XCachedPrimitive strokeTexturedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> aTextures, [in] StrokeAttributes aStrokeAttributes ) 321*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException, 322*b1cdbd2cSJim Jagielski VolatileContentDestroyedException); 323*b1cdbd2cSJim Jagielski 324*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 325*b1cdbd2cSJim Jagielski 326*b1cdbd2cSJim Jagielski /** Stroke each polygon of the provided poly-polygon with the 327*b1cdbd2cSJim Jagielski specified stroke attributes, fill the stroked outline 328*b1cdbd2cSJim Jagielski with the specified texture graphics, map the texture to the 329*b1cdbd2cSJim Jagielski outline via the specified texture mapping.<p> 330*b1cdbd2cSJim Jagielski 331*b1cdbd2cSJim Jagielski This method considers the stroking of all polygons as an 332*b1cdbd2cSJim Jagielski atomic operation in relation to the <type>RenderState</type>'s 333*b1cdbd2cSJim Jagielski <type>CompositeOp</type> operation. That means, overlapping 334*b1cdbd2cSJim Jagielski strokes from distinct polygons will look exactly as 335*b1cdbd2cSJim Jagielski overlapping segments of the same polygon, even with 336*b1cdbd2cSJim Jagielski transparency. 337*b1cdbd2cSJim Jagielski 338*b1cdbd2cSJim Jagielski @param xPolyPolygon 339*b1cdbd2cSJim Jagielski The poly-polygon to render. 340*b1cdbd2cSJim Jagielski 341*b1cdbd2cSJim Jagielski @param aViewState 342*b1cdbd2cSJim Jagielski The viewstate to be used when stroking this polygon. 343*b1cdbd2cSJim Jagielski 344*b1cdbd2cSJim Jagielski @param aRenderState 345*b1cdbd2cSJim Jagielski The renderstate to be used when stroking this polygon. 346*b1cdbd2cSJim Jagielski 347*b1cdbd2cSJim Jagielski @param aTextures 348*b1cdbd2cSJim Jagielski A sequence of texture definitions, with which to fill the 349*b1cdbd2cSJim Jagielski stroked area. 350*b1cdbd2cSJim Jagielski 351*b1cdbd2cSJim Jagielski @param xMapping 352*b1cdbd2cSJim Jagielski A bilinear mapping function which defines the warping of the 353*b1cdbd2cSJim Jagielski textures on the output area. 354*b1cdbd2cSJim Jagielski 355*b1cdbd2cSJim Jagielski @param aStrokeAttributes 356*b1cdbd2cSJim Jagielski Further attributes used to parameterize the stroking. 357*b1cdbd2cSJim Jagielski 358*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 359*b1cdbd2cSJim Jagielski 360*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 361*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 362*b1cdbd2cSJim Jagielski specified range. 363*b1cdbd2cSJim Jagielski 364*b1cdbd2cSJim Jagielski @throws <type>VolatileContentDestroyedException</type> 365*b1cdbd2cSJim Jagielski if a texture bitmap was volatile, and the content was 366*b1cdbd2cSJim Jagielski destroyed before the rendering could take place. 367*b1cdbd2cSJim Jagielski */ 368*b1cdbd2cSJim Jagielski 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 ) 369*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException, 370*b1cdbd2cSJim Jagielski VolatileContentDestroyedException); 371*b1cdbd2cSJim Jagielski 372*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 373*b1cdbd2cSJim Jagielski 374*b1cdbd2cSJim Jagielski // [TODO: Method misplaced at this interface?] 375*b1cdbd2cSJim Jagielski 376*b1cdbd2cSJim Jagielski /** Query the polygonal representation of the stroke outlines, as 377*b1cdbd2cSJim Jagielski it would be generated by the strokePolyPolygon methods.<p> 378*b1cdbd2cSJim Jagielski 379*b1cdbd2cSJim Jagielski This method can be used to e.g. set a clipping which covers the same 380*b1cdbd2cSJim Jagielski area as a stroke.<p> 381*b1cdbd2cSJim Jagielski 382*b1cdbd2cSJim Jagielski @param xPolyPolygon 383*b1cdbd2cSJim Jagielski The poly-polygon to render. 384*b1cdbd2cSJim Jagielski 385*b1cdbd2cSJim Jagielski @param aViewState 386*b1cdbd2cSJim Jagielski The viewstate to be used when generating the outline. 387*b1cdbd2cSJim Jagielski 388*b1cdbd2cSJim Jagielski @param aRenderState 389*b1cdbd2cSJim Jagielski The renderstate to be used when generating the outline. 390*b1cdbd2cSJim Jagielski 391*b1cdbd2cSJim Jagielski @param aStrokeAttributes 392*b1cdbd2cSJim Jagielski Further attributes used to parameterize the stroking. 393*b1cdbd2cSJim Jagielski 394*b1cdbd2cSJim Jagielski @return a poly-polygon describing the outline of the stroked 395*b1cdbd2cSJim Jagielski area. 396*b1cdbd2cSJim Jagielski 397*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 398*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 399*b1cdbd2cSJim Jagielski specified range. 400*b1cdbd2cSJim Jagielski */ 401*b1cdbd2cSJim Jagielski XPolyPolygon2D queryStrokeShapes( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] StrokeAttributes aStrokeAttributes ) 402*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 403*b1cdbd2cSJim Jagielski 404*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 405*b1cdbd2cSJim Jagielski 406*b1cdbd2cSJim Jagielski /** Fill the given poly-polygon.<p> 407*b1cdbd2cSJim Jagielski 408*b1cdbd2cSJim Jagielski This method fills the given poly-polygon according to the 409*b1cdbd2cSJim Jagielski <type>RenderState</type>'s color and the poly-polygon's fill 410*b1cdbd2cSJim Jagielski rule.<p> 411*b1cdbd2cSJim Jagielski 412*b1cdbd2cSJim Jagielski @param xPolyPolygon 413*b1cdbd2cSJim Jagielski The poly-polygon to render. 414*b1cdbd2cSJim Jagielski 415*b1cdbd2cSJim Jagielski @param aViewState 416*b1cdbd2cSJim Jagielski The viewstate to be used when filling this polygon. 417*b1cdbd2cSJim Jagielski 418*b1cdbd2cSJim Jagielski @param aRenderState 419*b1cdbd2cSJim Jagielski The renderstate to be used when filling this polygon. 420*b1cdbd2cSJim Jagielski 421*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 422*b1cdbd2cSJim Jagielski 423*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 424*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 425*b1cdbd2cSJim Jagielski specified range. 426*b1cdbd2cSJim Jagielski */ 427*b1cdbd2cSJim Jagielski XCachedPrimitive fillPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState ) 428*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 429*b1cdbd2cSJim Jagielski 430*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 431*b1cdbd2cSJim Jagielski 432*b1cdbd2cSJim Jagielski /** Fill the given poly-polygon with a texture.<p> 433*b1cdbd2cSJim Jagielski 434*b1cdbd2cSJim Jagielski This method fills the given poly-polygon according to the 435*b1cdbd2cSJim Jagielski <type>RenderState</type>'s color, the given textures and 436*b1cdbd2cSJim Jagielski poly-polygon's fill rule.<p> 437*b1cdbd2cSJim Jagielski 438*b1cdbd2cSJim Jagielski @param xPolyPolygon 439*b1cdbd2cSJim Jagielski The poly-polygon to render. 440*b1cdbd2cSJim Jagielski 441*b1cdbd2cSJim Jagielski @param aViewState 442*b1cdbd2cSJim Jagielski The viewstate to be used when filling this polygon. 443*b1cdbd2cSJim Jagielski 444*b1cdbd2cSJim Jagielski @param aRenderState 445*b1cdbd2cSJim Jagielski The renderstate to be used when filling this polygon. 446*b1cdbd2cSJim Jagielski 447*b1cdbd2cSJim Jagielski @param aTextures 448*b1cdbd2cSJim Jagielski A sequence of texture definitions, with which to fill the 449*b1cdbd2cSJim Jagielski polygonal area. 450*b1cdbd2cSJim Jagielski 451*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 452*b1cdbd2cSJim Jagielski 453*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 454*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 455*b1cdbd2cSJim Jagielski specified range. 456*b1cdbd2cSJim Jagielski 457*b1cdbd2cSJim Jagielski @throws <type>VolatileContentDestroyedException</type> 458*b1cdbd2cSJim Jagielski if a texture bitmap was volatile, and the content was 459*b1cdbd2cSJim Jagielski destroyed before the rendering could take place. 460*b1cdbd2cSJim Jagielski */ 461*b1cdbd2cSJim Jagielski XCachedPrimitive fillTexturedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> xTextures ) 462*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException, 463*b1cdbd2cSJim Jagielski VolatileContentDestroyedException); 464*b1cdbd2cSJim Jagielski 465*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 466*b1cdbd2cSJim Jagielski 467*b1cdbd2cSJim Jagielski /** Fill the given poly-polygon with a mapped texture.<p> 468*b1cdbd2cSJim Jagielski 469*b1cdbd2cSJim Jagielski This method fills the given poly-polygon according to the 470*b1cdbd2cSJim Jagielski <type>RenderState</type>'s color, the given textures and 471*b1cdbd2cSJim Jagielski poly-polygon's fill rule. The texture is mapped to the 472*b1cdbd2cSJim Jagielski poly-polygon's interior via the given texture mapping.<p> 473*b1cdbd2cSJim Jagielski 474*b1cdbd2cSJim Jagielski @param xPolyPolygon 475*b1cdbd2cSJim Jagielski The poly-polygon to render. 476*b1cdbd2cSJim Jagielski 477*b1cdbd2cSJim Jagielski @param aViewState 478*b1cdbd2cSJim Jagielski The viewstate to be used when filling this polygon. 479*b1cdbd2cSJim Jagielski 480*b1cdbd2cSJim Jagielski @param aRenderState 481*b1cdbd2cSJim Jagielski The renderstate to be used when filling this polygon. 482*b1cdbd2cSJim Jagielski 483*b1cdbd2cSJim Jagielski @param aTextures 484*b1cdbd2cSJim Jagielski A sequence of texture definitions, with which to fill the 485*b1cdbd2cSJim Jagielski polygonal area. 486*b1cdbd2cSJim Jagielski 487*b1cdbd2cSJim Jagielski @param xMapping 488*b1cdbd2cSJim Jagielski A bilinear mapping function which defines the warping of the 489*b1cdbd2cSJim Jagielski textures on the output area. 490*b1cdbd2cSJim Jagielski 491*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 492*b1cdbd2cSJim Jagielski 493*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 494*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 495*b1cdbd2cSJim Jagielski specified range. 496*b1cdbd2cSJim Jagielski 497*b1cdbd2cSJim Jagielski @throws <type>VolatileContentDestroyedException</type> 498*b1cdbd2cSJim Jagielski if a texture bitmap was volatile, and the content was 499*b1cdbd2cSJim Jagielski destroyed before the rendering could take place. 500*b1cdbd2cSJim Jagielski */ 501*b1cdbd2cSJim Jagielski XCachedPrimitive fillTextureMappedPolyPolygon( [in] XPolyPolygon2D xPolyPolygon, [in] ViewState aViewState, [in] RenderState aRenderState, [in] sequence<Texture> xTextures, [in] ::com::sun::star::geometry::XMapping2D xMapping ) 502*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException, 503*b1cdbd2cSJim Jagielski VolatileContentDestroyedException); 504*b1cdbd2cSJim Jagielski 505*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 506*b1cdbd2cSJim Jagielski 507*b1cdbd2cSJim Jagielski /** Create a suitable font for the specified font description. 508*b1cdbd2cSJim Jagielski 509*b1cdbd2cSJim Jagielski @param aFontRequest 510*b1cdbd2cSJim Jagielski 511*b1cdbd2cSJim Jagielski @param aExtraFontProperties 512*b1cdbd2cSJim Jagielski Additional font properties to be applied when selecting this 513*b1cdbd2cSJim Jagielski font. Normally, you should not need this parameter. Currently, 514*b1cdbd2cSJim Jagielski the following properties are recognized: 515*b1cdbd2cSJim Jagielski <ul> 516*b1cdbd2cSJim Jagielski 517*b1cdbd2cSJim Jagielski <il>Kerning: a <type>double</type> between 0 and 1, where 518*b1cdbd2cSJim Jagielski 0 completely disables kerning. Whether kerning is on or 519*b1cdbd2cSJim Jagielski off by default is font-dependent.</il> 520*b1cdbd2cSJim Jagielski 521*b1cdbd2cSJim Jagielski <il>IsEmphasisMarks: a <type>boolean</type>, where <TRUE/> 522*b1cdbd2cSJim Jagielski enables automatic placements of emphasis marks, e.g. for 523*b1cdbd2cSJim Jagielski Hebrew. The default value, if this property is not 524*b1cdbd2cSJim Jagielski specified, is <FALSE/>.</il> 525*b1cdbd2cSJim Jagielski 526*b1cdbd2cSJim Jagielski <il>ExpandedSpacing: a <type>double</type> value which is added 527*b1cdbd2cSJim Jagielski between all cell distances for this font. The default value for 528*b1cdbd2cSJim Jagielski this property is zero. Use negative values for condensed output, 529*b1cdbd2cSJim Jagielski and positive values for expanded output.</il> 530*b1cdbd2cSJim Jagielski 531*b1cdbd2cSJim Jagielski <il>OptionalLayoutFeatures: a sequence of <type 532*b1cdbd2cSJim Jagielski scope=::com::sun::star::beans>PropertyValue</type> listing 533*b1cdbd2cSJim Jagielski font-specific optional layout features, like glyph 534*b1cdbd2cSJim Jagielski variants.</il> 535*b1cdbd2cSJim Jagielski 536*b1cdbd2cSJim Jagielski </ul> 537*b1cdbd2cSJim Jagielski 538*b1cdbd2cSJim Jagielski @param aFontMatrix 539*b1cdbd2cSJim Jagielski Font-specific transformation matrix, which affects both the 540*b1cdbd2cSJim Jagielski glyphs as well as the advancement. 541*b1cdbd2cSJim Jagielski 542*b1cdbd2cSJim Jagielski @returns the requested font, or an invalid reference, if the 543*b1cdbd2cSJim Jagielski request failed. 544*b1cdbd2cSJim Jagielski 545*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 546*b1cdbd2cSJim Jagielski if one of the parameters is not within the allowed range. 547*b1cdbd2cSJim Jagielski */ 548*b1cdbd2cSJim Jagielski XCanvasFont createFont( [in] FontRequest aFontRequest, [in] sequence< ::com::sun::star::beans::PropertyValue > aExtraFontProperties, [in] ::com::sun::star::geometry::Matrix2D aFontMatrix ) 549*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 550*b1cdbd2cSJim Jagielski 551*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 552*b1cdbd2cSJim Jagielski 553*b1cdbd2cSJim Jagielski /** Query font information, specific to this canvas.<p> 554*b1cdbd2cSJim Jagielski 555*b1cdbd2cSJim Jagielski @param aFilter 556*b1cdbd2cSJim Jagielski Filter parameter to reduce the list of returned fonts. Every 557*b1cdbd2cSJim Jagielski member of <type>FontInfo</type> that is not the empty string 558*b1cdbd2cSJim Jagielski or the "don't care" value restricts the list of returned fonts 559*b1cdbd2cSJim Jagielski to contain only those that have the specified attribute. 560*b1cdbd2cSJim Jagielski 561*b1cdbd2cSJim Jagielski @param xFontProperties 562*b1cdbd2cSJim Jagielski This interface can provide additional font properties to 563*b1cdbd2cSJim Jagielski filter the list of available fonts against. 564*b1cdbd2cSJim Jagielski 565*b1cdbd2cSJim Jagielski @returns the list of fonts matching the filter set. 566*b1cdbd2cSJim Jagielski 567*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 568*b1cdbd2cSJim Jagielski if one of the font properties are invalid or not recognized, 569*b1cdbd2cSJim Jagielski or if one of the <type>FontInfo</type> members is not within 570*b1cdbd2cSJim Jagielski the permitted range. 571*b1cdbd2cSJim Jagielski */ 572*b1cdbd2cSJim Jagielski sequence< FontInfo > queryAvailableFonts( [in] FontInfo aFilter, [in] sequence< ::com::sun::star::beans::PropertyValue > aFontProperties ) 573*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 574*b1cdbd2cSJim Jagielski 575*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 576*b1cdbd2cSJim Jagielski 577*b1cdbd2cSJim Jagielski /** Draw the text given by the substring of the specified string 578*b1cdbd2cSJim Jagielski with the given font.<p> 579*b1cdbd2cSJim Jagielski 580*b1cdbd2cSJim Jagielski The local origin of this output operation is either the left 581*b1cdbd2cSJim Jagielski end of the text baseline, for textDirection equal 582*b1cdbd2cSJim Jagielski LEFT_TO_RIGHT, or the right end of the baseline, for 583*b1cdbd2cSJim Jagielski textDirection equal to RIGHT_TO_LEFT, respectively.<p> 584*b1cdbd2cSJim Jagielski 585*b1cdbd2cSJim Jagielski @param aText 586*b1cdbd2cSJim Jagielski The text to output. 587*b1cdbd2cSJim Jagielski 588*b1cdbd2cSJim Jagielski @param xFont 589*b1cdbd2cSJim Jagielski The font retrieved from this canvas to be used when drawing 590*b1cdbd2cSJim Jagielski the text. 591*b1cdbd2cSJim Jagielski 592*b1cdbd2cSJim Jagielski @param aViewState 593*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this text. 594*b1cdbd2cSJim Jagielski 595*b1cdbd2cSJim Jagielski @param aRenderState 596*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this text. 597*b1cdbd2cSJim Jagielski 598*b1cdbd2cSJim Jagielski @param nTextDirection 599*b1cdbd2cSJim Jagielski A value from the <type>TextDirection</type> collection, 600*b1cdbd2cSJim Jagielski denoting the main writing direction for this string. The main 601*b1cdbd2cSJim Jagielski writing direction determines the origin of the text output, 602*b1cdbd2cSJim Jagielski i.e. the left edge for left-to-right and the right edge for 603*b1cdbd2cSJim Jagielski right-to-left text. 604*b1cdbd2cSJim Jagielski 605*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 606*b1cdbd2cSJim Jagielski 607*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 608*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 609*b1cdbd2cSJim Jagielski specified range. 610*b1cdbd2cSJim Jagielski */ 611*b1cdbd2cSJim Jagielski XCachedPrimitive drawText( [in] StringContext aText, [in] XCanvasFont xFont, [in] ViewState aViewState, [in] RenderState aRenderState, [in] byte nTextDirection ) 612*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 613*b1cdbd2cSJim Jagielski 614*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 615*b1cdbd2cSJim Jagielski 616*b1cdbd2cSJim Jagielski /** Draw the formatted text given by the text layout.<p> 617*b1cdbd2cSJim Jagielski 618*b1cdbd2cSJim Jagielski The glyphs as represented by the text layout are always output 619*b1cdbd2cSJim Jagielski with the reference position being the leftmost edge of the 620*b1cdbd2cSJim Jagielski layout object's baseline. If the layout contains more than one 621*b1cdbd2cSJim Jagielski baseline, the baseline of the first strong character in 622*b1cdbd2cSJim Jagielski logical order is used here (strong in this context means that 623*b1cdbd2cSJim Jagielski the character can be unambiguously assigned to a unicode 624*b1cdbd2cSJim Jagielski script).<p> 625*b1cdbd2cSJim Jagielski 626*b1cdbd2cSJim Jagielski @param xLayoutetText 627*b1cdbd2cSJim Jagielski An interface to the readily layouted text, obtained from a 628*b1cdbd2cSJim Jagielski <type>XCanvasFont</type> created at this canvas. The text 629*b1cdbd2cSJim Jagielski layout already carries intrinsic font information. 630*b1cdbd2cSJim Jagielski 631*b1cdbd2cSJim Jagielski @param aViewState 632*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this text. 633*b1cdbd2cSJim Jagielski 634*b1cdbd2cSJim Jagielski @param aRenderState 635*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this text. 636*b1cdbd2cSJim Jagielski 637*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 638*b1cdbd2cSJim Jagielski 639*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 640*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 641*b1cdbd2cSJim Jagielski specified range. 642*b1cdbd2cSJim Jagielski */ 643*b1cdbd2cSJim Jagielski XCachedPrimitive drawTextLayout( [in] XTextLayout xLayoutetText, [in] ViewState aViewState, [in] RenderState aRenderState ) 644*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException); 645*b1cdbd2cSJim Jagielski 646*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 647*b1cdbd2cSJim Jagielski 648*b1cdbd2cSJim Jagielski /** Render the given bitmap.<p> 649*b1cdbd2cSJim Jagielski 650*b1cdbd2cSJim Jagielski This method renders the bitmap, at a position and shape as 651*b1cdbd2cSJim Jagielski specified by the combined view and render transformations. For 652*b1cdbd2cSJim Jagielski fast render speed, the bitmap should be created by the 653*b1cdbd2cSJim Jagielski corresponding <type>XGraphicDevice</type>'s 654*b1cdbd2cSJim Jagielski <member>XGraphicDevice::createCompatibleBitmap()</member> 655*b1cdbd2cSJim Jagielski method.<p> 656*b1cdbd2cSJim Jagielski 657*b1cdbd2cSJim Jagielski @param xBitmap 658*b1cdbd2cSJim Jagielski The bitmap to render. 659*b1cdbd2cSJim Jagielski 660*b1cdbd2cSJim Jagielski @param aViewState 661*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this text. 662*b1cdbd2cSJim Jagielski 663*b1cdbd2cSJim Jagielski @param aRenderState 664*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this text. 665*b1cdbd2cSJim Jagielski 666*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 667*b1cdbd2cSJim Jagielski 668*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 669*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 670*b1cdbd2cSJim Jagielski specified range. 671*b1cdbd2cSJim Jagielski 672*b1cdbd2cSJim Jagielski @throws <type>VolatileContentDestroyedException</type> 673*b1cdbd2cSJim Jagielski if a texture bitmap was volatile, and the content was 674*b1cdbd2cSJim Jagielski destroyed before the rendering could take place. 675*b1cdbd2cSJim Jagielski */ 676*b1cdbd2cSJim Jagielski XCachedPrimitive drawBitmap( [in] XBitmap xBitmap, [in] ViewState aViewState, [in] RenderState aRenderState ) 677*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException, 678*b1cdbd2cSJim Jagielski VolatileContentDestroyedException); 679*b1cdbd2cSJim Jagielski 680*b1cdbd2cSJim Jagielski /** Render the given bitmap, with a global color modulation.<p> 681*b1cdbd2cSJim Jagielski 682*b1cdbd2cSJim Jagielski This method renders the bitmap, at a position and shape as 683*b1cdbd2cSJim Jagielski specified by the combined view and render transformations. For 684*b1cdbd2cSJim Jagielski fast render speed, the bitmap should be created by the 685*b1cdbd2cSJim Jagielski corresponding <type>XGraphicDevice</type>'s 686*b1cdbd2cSJim Jagielski <member>XGraphicDevice::createCompatibleBitmap()</member> 687*b1cdbd2cSJim Jagielski method. The bitmap's color channel values are multiplied with 688*b1cdbd2cSJim Jagielski the device color values as specified in the render state.<p> 689*b1cdbd2cSJim Jagielski 690*b1cdbd2cSJim Jagielski @param xBitmap 691*b1cdbd2cSJim Jagielski The bitmap to render. 692*b1cdbd2cSJim Jagielski 693*b1cdbd2cSJim Jagielski @param aViewState 694*b1cdbd2cSJim Jagielski The viewstate to be used when drawing this text. 695*b1cdbd2cSJim Jagielski 696*b1cdbd2cSJim Jagielski @param aRenderState 697*b1cdbd2cSJim Jagielski The renderstate to be used when drawing this text. The device 698*b1cdbd2cSJim Jagielski color entry in the renderstate is multiplied with every pixel 699*b1cdbd2cSJim Jagielski color value, and only the result is rendered into the 700*b1cdbd2cSJim Jagielski canvas. If, for example, the bitmap should be rendered with 701*b1cdbd2cSJim Jagielski increased global transparency, set all device color channels 702*b1cdbd2cSJim Jagielski to 1.0, except for the alpha channel, which should be set to 703*b1cdbd2cSJim Jagielski the desired transparency. 704*b1cdbd2cSJim Jagielski 705*b1cdbd2cSJim Jagielski @return a handle to the cached rendering output. 706*b1cdbd2cSJim Jagielski 707*b1cdbd2cSJim Jagielski @throws <type>com::sun::star::lang::IllegalArgumentException</type> 708*b1cdbd2cSJim Jagielski if one of the view and renderstate parameters are outside the 709*b1cdbd2cSJim Jagielski specified range. 710*b1cdbd2cSJim Jagielski 711*b1cdbd2cSJim Jagielski @throws <type>VolatileContentDestroyedException</type> 712*b1cdbd2cSJim Jagielski if a texture bitmap was volatile, and the content was 713*b1cdbd2cSJim Jagielski destroyed before the rendering could take place. 714*b1cdbd2cSJim Jagielski */ 715*b1cdbd2cSJim Jagielski XCachedPrimitive drawBitmapModulated( [in] XBitmap xBitmap, [in] ViewState aViewState, [in] RenderState aRenderState ) 716*b1cdbd2cSJim Jagielski raises (com::sun::star::lang::IllegalArgumentException, 717*b1cdbd2cSJim Jagielski VolatileContentDestroyedException); 718*b1cdbd2cSJim Jagielski 719*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 720*b1cdbd2cSJim Jagielski 721*b1cdbd2cSJim Jagielski /** Request the associated graphic device for this canvas.<p> 722*b1cdbd2cSJim Jagielski 723*b1cdbd2cSJim Jagielski A graphic device provides methods specific to the underlying 724*b1cdbd2cSJim Jagielski output device capabilities, which are common for all canvases 725*b1cdbd2cSJim Jagielski rendering to such a device. This includes device resolution, 726*b1cdbd2cSJim Jagielski color space, or bitmap formats. 727*b1cdbd2cSJim Jagielski 728*b1cdbd2cSJim Jagielski @return the associated <type>XGraphicDevice</type>. 729*b1cdbd2cSJim Jagielski */ 730*b1cdbd2cSJim Jagielski XGraphicDevice getDevice(); 731*b1cdbd2cSJim Jagielski}; 732*b1cdbd2cSJim Jagielski 733*b1cdbd2cSJim Jagielski//============================================================================= 734*b1cdbd2cSJim Jagielski 735*b1cdbd2cSJim Jagielski/// Service providing an <type>XCanvas</type> interface 736*b1cdbd2cSJim Jagielskiservice Canvas: XCanvas; 737*b1cdbd2cSJim Jagielski 738*b1cdbd2cSJim Jagielski}; }; }; }; 739*b1cdbd2cSJim Jagielski 740*b1cdbd2cSJim Jagielski#endif 741