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_XSimpleCanvas_idl__ 24*b1cdbd2cSJim Jagielski#define __com_sun_star_rendering_XSimpleCanvas_idl__ 25*b1cdbd2cSJim Jagielski 26*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_util_Color_idl__ 27*b1cdbd2cSJim Jagielski#include <com/sun/star/util/Color.idl> 28*b1cdbd2cSJim Jagielski#endif 29*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_RealPoint2D_idl__ 30*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/RealPoint2D.idl> 31*b1cdbd2cSJim Jagielski#endif 32*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_RealRectangle2D_idl__ 33*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/RealRectangle2D.idl> 34*b1cdbd2cSJim Jagielski#endif 35*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_geometry_AffineMatrix2D_idl__ 36*b1cdbd2cSJim Jagielski#include <com/sun/star/geometry/AffineMatrix2D.idl> 37*b1cdbd2cSJim Jagielski#endif 38*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_StringContext_idl__ 39*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/StringContext.idl> 40*b1cdbd2cSJim Jagielski#endif 41*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_ViewState_idl__ 42*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/ViewState.idl> 43*b1cdbd2cSJim Jagielski#endif 44*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_RenderState_idl__ 45*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/RenderState.idl> 46*b1cdbd2cSJim Jagielski#endif 47*b1cdbd2cSJim Jagielski#ifndef __com_sun_star_rendering_FontMetrics_idl__ 48*b1cdbd2cSJim Jagielski#include <com/sun/star/rendering/FontMetrics.idl> 49*b1cdbd2cSJim Jagielski#endif 50*b1cdbd2cSJim Jagielski 51*b1cdbd2cSJim Jagielski//============================================================================= 52*b1cdbd2cSJim Jagielski 53*b1cdbd2cSJim Jagielskimodule com { module sun { module star { module rendering { 54*b1cdbd2cSJim Jagielski 55*b1cdbd2cSJim Jagielskiinterface XCanvas; 56*b1cdbd2cSJim Jagielskiinterface XCanvasFont; 57*b1cdbd2cSJim Jagielskiinterface XBitmap; 58*b1cdbd2cSJim Jagielskiinterface XGraphicDevice; 59*b1cdbd2cSJim Jagielskiinterface XPolyPolygon2D; 60*b1cdbd2cSJim Jagielski 61*b1cdbd2cSJim Jagielski/** Provides the basic graphical output operations for a canvas.<p> 62*b1cdbd2cSJim Jagielski 63*b1cdbd2cSJim Jagielski This interface is a simplified version of the <type>XCanvas</type> 64*b1cdbd2cSJim Jagielski interface. It holds explicit state, i.e. the pen and fill color, 65*b1cdbd2cSJim Jagielski the current transformation, clip and font are persistently 66*b1cdbd2cSJim Jagielski remembered.<p> 67*b1cdbd2cSJim Jagielski 68*b1cdbd2cSJim Jagielski In contrast to the <type>XCanvas</type> interface, XSimpleCanvas 69*b1cdbd2cSJim Jagielski does not distinguish between stroke and fill operations; instead, 70*b1cdbd2cSJim Jagielski switching between stroke and fill (or taking both) works by 71*b1cdbd2cSJim Jagielski setting appropriate pen and fill colors.<p> 72*b1cdbd2cSJim Jagielski */ 73*b1cdbd2cSJim Jagielskiinterface XSimpleCanvas: com::sun::star::uno::XInterface 74*b1cdbd2cSJim Jagielski{ 75*b1cdbd2cSJim Jagielski /** Select a font.<p> 76*b1cdbd2cSJim Jagielski 77*b1cdbd2cSJim Jagielski This method selects the specified font (or a close substitute) 78*b1cdbd2cSJim Jagielski as the current font for text output.<p> 79*b1cdbd2cSJim Jagielski 80*b1cdbd2cSJim Jagielski @param sFontName 81*b1cdbd2cSJim Jagielski The name of the font (like e.g. Arial) 82*b1cdbd2cSJim Jagielski 83*b1cdbd2cSJim Jagielski @param size 84*b1cdbd2cSJim Jagielski The size of the font (note that this is not the usual points 85*b1cdbd2cSJim Jagielski unit, but in the same coordinate system as the other rendering 86*b1cdbd2cSJim Jagielski operations - usually, device pixel). 87*b1cdbd2cSJim Jagielski 88*b1cdbd2cSJim Jagielski @param bold 89*b1cdbd2cSJim Jagielski When true, selected font is bold. 90*b1cdbd2cSJim Jagielski 91*b1cdbd2cSJim Jagielski @param italic 92*b1cdbd2cSJim Jagielski When true, selected font is italic 93*b1cdbd2cSJim Jagielski */ 94*b1cdbd2cSJim Jagielski void selectFont( [in] string sFontName, [in]double size, [in] boolean bold, [in] boolean italic ); 95*b1cdbd2cSJim Jagielski 96*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 97*b1cdbd2cSJim Jagielski 98*b1cdbd2cSJim Jagielski /** Sets the color used by line and text operations.<p> 99*b1cdbd2cSJim Jagielski 100*b1cdbd2cSJim Jagielski To disable stroking, simply set this color to something with 101*b1cdbd2cSJim Jagielski zero alpha (i.e. fully transparent).<p> 102*b1cdbd2cSJim Jagielski 103*b1cdbd2cSJim Jagielski @param nsRgbaColor 104*b1cdbd2cSJim Jagielski RGBA color tuple, interpreted in the sRGB color space. 105*b1cdbd2cSJim Jagielski */ 106*b1cdbd2cSJim Jagielski void setPenColor( [in] com::sun::star::util::Color nsRgbaColor ); 107*b1cdbd2cSJim Jagielski 108*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 109*b1cdbd2cSJim Jagielski 110*b1cdbd2cSJim Jagielski /** Sets the fill color.<p> 111*b1cdbd2cSJim Jagielski 112*b1cdbd2cSJim Jagielski To disable filling, simply set this color to something with 113*b1cdbd2cSJim Jagielski zero alpha (i.e. fully transparent).<p> 114*b1cdbd2cSJim Jagielski 115*b1cdbd2cSJim Jagielski @param nsRgbaColor 116*b1cdbd2cSJim Jagielski RGBA color tuple, interpreted in the sRGB color space. 117*b1cdbd2cSJim Jagielski */ 118*b1cdbd2cSJim Jagielski void setFillColor( [in] com::sun::star::util::Color nsRgbaColor ); 119*b1cdbd2cSJim Jagielski 120*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 121*b1cdbd2cSJim Jagielski 122*b1cdbd2cSJim Jagielski /** Sets the clip to the specified rectangle.<p> 123*b1cdbd2cSJim Jagielski */ 124*b1cdbd2cSJim Jagielski void setRectClip( [in] ::com::sun::star::geometry::RealRectangle2D aRect ); 125*b1cdbd2cSJim Jagielski 126*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 127*b1cdbd2cSJim Jagielski 128*b1cdbd2cSJim Jagielski /** Set the current transform matrix.<p> 129*b1cdbd2cSJim Jagielski */ 130*b1cdbd2cSJim Jagielski void setTransformation( [in] ::com::sun::star::geometry::AffineMatrix2D aTransform ); 131*b1cdbd2cSJim Jagielski 132*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 133*b1cdbd2cSJim Jagielski 134*b1cdbd2cSJim Jagielski /** Sets a single pixel on the canvas.<p> 135*b1cdbd2cSJim Jagielski */ 136*b1cdbd2cSJim Jagielski void drawPixel( [in] ::com::sun::star::geometry::RealPoint2D aPoint ); 137*b1cdbd2cSJim Jagielski 138*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 139*b1cdbd2cSJim Jagielski 140*b1cdbd2cSJim Jagielski /** Draws a line on the canvas.<p> 141*b1cdbd2cSJim Jagielski */ 142*b1cdbd2cSJim Jagielski void drawLine( [in] ::com::sun::star::geometry::RealPoint2D aStartPoint, 143*b1cdbd2cSJim Jagielski [in] ::com::sun::star::geometry::RealPoint2D aEndPoint ); 144*b1cdbd2cSJim Jagielski 145*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 146*b1cdbd2cSJim Jagielski 147*b1cdbd2cSJim Jagielski /** Draws a rectangle on the canvas.<p> 148*b1cdbd2cSJim Jagielski */ 149*b1cdbd2cSJim Jagielski void drawRect( [in] ::com::sun::star::geometry::RealRectangle2D aRect ); 150*b1cdbd2cSJim Jagielski 151*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 152*b1cdbd2cSJim Jagielski 153*b1cdbd2cSJim Jagielski /** Draws a poly-polygon on the canvas.<p> 154*b1cdbd2cSJim Jagielski */ 155*b1cdbd2cSJim Jagielski void drawPolyPolygon( [in] XPolyPolygon2D xPolyPolygon ); 156*b1cdbd2cSJim Jagielski 157*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 158*b1cdbd2cSJim Jagielski 159*b1cdbd2cSJim Jagielski /** Draws text on the canvas.<p> 160*b1cdbd2cSJim Jagielski 161*b1cdbd2cSJim Jagielski @param aText 162*b1cdbd2cSJim Jagielski Text to render. The text color is the current pen color. 163*b1cdbd2cSJim Jagielski 164*b1cdbd2cSJim Jagielski @param aOutPos 165*b1cdbd2cSJim Jagielski Output position of the text. This is the left or right edge, 166*b1cdbd2cSJim Jagielski depending on nTextDirection. Output position is always 167*b1cdbd2cSJim Jagielski relative to the font baseline. 168*b1cdbd2cSJim Jagielski 169*b1cdbd2cSJim Jagielski @param nTextDirection 170*b1cdbd2cSJim Jagielski A value from the <type>TextDirection</type> collection, 171*b1cdbd2cSJim Jagielski denoting the main writing direction for this string. The main 172*b1cdbd2cSJim Jagielski writing direction determines the origin of the text output, 173*b1cdbd2cSJim Jagielski i.e. the left edge for left-to-right and the right edge for 174*b1cdbd2cSJim Jagielski right-to-left text. 175*b1cdbd2cSJim Jagielski */ 176*b1cdbd2cSJim Jagielski void drawText( [in] StringContext aText, 177*b1cdbd2cSJim Jagielski [in] ::com::sun::star::geometry::RealPoint2D aOutPos, 178*b1cdbd2cSJim Jagielski [in] byte nTextDirection ); 179*b1cdbd2cSJim Jagielski 180*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 181*b1cdbd2cSJim Jagielski 182*b1cdbd2cSJim Jagielski /** Draws the bitmap on the canvas.<p> 183*b1cdbd2cSJim Jagielski 184*b1cdbd2cSJim Jagielski @param xBitmap 185*b1cdbd2cSJim Jagielski Bitmap to render 186*b1cdbd2cSJim Jagielski 187*b1cdbd2cSJim Jagielski @param aLeftTop 188*b1cdbd2cSJim Jagielski Left, top position of the bitmap on the destination canvas. 189*b1cdbd2cSJim Jagielski */ 190*b1cdbd2cSJim Jagielski void drawBitmap( [in] XBitmap xBitmap, 191*b1cdbd2cSJim Jagielski [in] ::com::sun::star::geometry::RealPoint2D aLeftTop ); 192*b1cdbd2cSJim Jagielski 193*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 194*b1cdbd2cSJim Jagielski 195*b1cdbd2cSJim Jagielski /** Request the associated graphic device for this canvas.<p> 196*b1cdbd2cSJim Jagielski 197*b1cdbd2cSJim Jagielski A graphic device provides methods specific to the underlying 198*b1cdbd2cSJim Jagielski output device capabilities, which are common for all canvases 199*b1cdbd2cSJim Jagielski rendering to such a device. This includes device resolution, 200*b1cdbd2cSJim Jagielski color space, or bitmap formats.<p> 201*b1cdbd2cSJim Jagielski 202*b1cdbd2cSJim Jagielski @return the associated <type>XGraphicDevice</type>. 203*b1cdbd2cSJim Jagielski */ 204*b1cdbd2cSJim Jagielski XGraphicDevice getDevice(); 205*b1cdbd2cSJim Jagielski 206*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 207*b1cdbd2cSJim Jagielski 208*b1cdbd2cSJim Jagielski /** Query the underlying <type>XCanvas</type>.<p> 209*b1cdbd2cSJim Jagielski 210*b1cdbd2cSJim Jagielski @return the canvas interface this object is internally based 211*b1cdbd2cSJim Jagielski on. 212*b1cdbd2cSJim Jagielski */ 213*b1cdbd2cSJim Jagielski XCanvas getCanvas(); 214*b1cdbd2cSJim Jagielski 215*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 216*b1cdbd2cSJim Jagielski 217*b1cdbd2cSJim Jagielski /** Request the font metrics of the current font.<p> 218*b1cdbd2cSJim Jagielski 219*b1cdbd2cSJim Jagielski @return the font metrics of the currently selected font. 220*b1cdbd2cSJim Jagielski */ 221*b1cdbd2cSJim Jagielski FontMetrics getFontMetrics(); 222*b1cdbd2cSJim Jagielski 223*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 224*b1cdbd2cSJim Jagielski 225*b1cdbd2cSJim Jagielski /** Retrieve currently selected font.<p> 226*b1cdbd2cSJim Jagielski 227*b1cdbd2cSJim Jagielski @return the font instance that's currently used for rendering 228*b1cdbd2cSJim Jagielski text. 229*b1cdbd2cSJim Jagielski */ 230*b1cdbd2cSJim Jagielski XCanvasFont getCurrentFont(); 231*b1cdbd2cSJim Jagielski 232*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 233*b1cdbd2cSJim Jagielski 234*b1cdbd2cSJim Jagielski /** Retrieve color currently used for lines. 235*b1cdbd2cSJim Jagielski */ 236*b1cdbd2cSJim Jagielski com::sun::star::util::Color getCurrentPenColor(); 237*b1cdbd2cSJim Jagielski 238*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 239*b1cdbd2cSJim Jagielski 240*b1cdbd2cSJim Jagielski /** Retrieve color currently used for fills 241*b1cdbd2cSJim Jagielski */ 242*b1cdbd2cSJim Jagielski com::sun::star::util::Color getCurrentFillColor(); 243*b1cdbd2cSJim Jagielski 244*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 245*b1cdbd2cSJim Jagielski 246*b1cdbd2cSJim Jagielski /** Retrieve current clip rect 247*b1cdbd2cSJim Jagielski */ 248*b1cdbd2cSJim Jagielski com::sun::star::geometry::RealRectangle2D getCurrentClipRect(); 249*b1cdbd2cSJim Jagielski 250*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 251*b1cdbd2cSJim Jagielski 252*b1cdbd2cSJim Jagielski /** Retrieve current transformation matrix 253*b1cdbd2cSJim Jagielski */ 254*b1cdbd2cSJim Jagielski com::sun::star::geometry::AffineMatrix2D getCurrentTransformation(); 255*b1cdbd2cSJim Jagielski 256*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 257*b1cdbd2cSJim Jagielski 258*b1cdbd2cSJim Jagielski /** Retrieve view state.<p> 259*b1cdbd2cSJim Jagielski 260*b1cdbd2cSJim Jagielski @return the view state, that would generate matching output, 261*b1cdbd2cSJim Jagielski when rendering to an XCanvas instead. 262*b1cdbd2cSJim Jagielski */ 263*b1cdbd2cSJim Jagielski ViewState getCurrentViewState(); 264*b1cdbd2cSJim Jagielski 265*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 266*b1cdbd2cSJim Jagielski 267*b1cdbd2cSJim Jagielski /** Retrieve render state.<p> 268*b1cdbd2cSJim Jagielski 269*b1cdbd2cSJim Jagielski @param bUseFillColor 270*b1cdbd2cSJim Jagielski When true, the Color member of the RenderState is initialized 271*b1cdbd2cSJim Jagielski with the current fill color; when false, the current pen color 272*b1cdbd2cSJim Jagielski is used. 273*b1cdbd2cSJim Jagielski 274*b1cdbd2cSJim Jagielski @return the render state, that would generate matching output, 275*b1cdbd2cSJim Jagielski when rendering to an XCanvas instead. 276*b1cdbd2cSJim Jagielski */ 277*b1cdbd2cSJim Jagielski RenderState getCurrentRenderState( [in] boolean bUseFillColor ); 278*b1cdbd2cSJim Jagielski 279*b1cdbd2cSJim Jagielski //------------------------------------------------------------------------- 280*b1cdbd2cSJim Jagielski 281*b1cdbd2cSJim Jagielski}; 282*b1cdbd2cSJim Jagielski 283*b1cdbd2cSJim Jagielski//============================================================================= 284*b1cdbd2cSJim Jagielski 285*b1cdbd2cSJim Jagielski}; }; }; }; 286*b1cdbd2cSJim Jagielski 287*b1cdbd2cSJim Jagielski#endif 288