/*************************************************************************
 *
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
 * 
 * Copyright 2000, 2010 Oracle and/or its affiliates.
 *
 * OpenOffice.org - a multi-platform office productivity suite
 *
 * This file is part of OpenOffice.org.
 *
 * OpenOffice.org is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License version 3
 * only, as published by the Free Software Foundation.
 *
 * OpenOffice.org is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License version 3 for more details
 * (a copy is included in the LICENSE file that accompanied this code).
 *
 * You should have received a copy of the GNU Lesser General Public License
 * version 3 along with OpenOffice.org.  If not, see
 * <http://www.openoffice.org/license.html>
 * for a copy of the LGPLv3 License.
 *
 ************************************************************************/
#ifndef __com_sun_star_awt_XGraphics_idl__ 
#define __com_sun_star_awt_XGraphics_idl__ 
 
#ifndef __com_sun_star_uno_XInterface_idl__ 
#include <com/sun/star/uno/XInterface.idl> 
#endif 
 
#ifndef __com_sun_star_util_Color_idl__
#include <com/sun/star/util/Color.idl>
#endif

#ifndef __com_sun_star_awt_SimpleFontMetric_idl__ 
#include <com/sun/star/awt/SimpleFontMetric.idl> 
#endif 
 
#ifndef __com_sun_star_awt_FontDescriptor_idl__ 
#include <com/sun/star/awt/FontDescriptor.idl> 
#endif 
 
#ifndef __com_sun_star_awt_RasterOperation_idl__ 
#include <com/sun/star/awt/RasterOperation.idl> 
#endif 
 
#ifndef __com_sun_star_awt_Gradient_idl__ 
#include <com/sun/star/awt/Gradient.idl> 
#endif 
 
//============================================================================= 
 
 module com {  module sun {  module star {  module awt {  
 
 published interface XRegion; 
 published interface XDisplayBitmap; 
 published interface XFont; 
 published interface XDevice; 
 
//============================================================================= 
 
/** provides the basic output operation of a device.
 */
published interface XGraphics: com::sun::star::uno::XInterface
{ 
    //------------------------------------------------------------------------- 
     
    /** returns the device of this graphics.
     */
    XDevice getDevice(); 
 
    //------------------------------------------------------------------------- 
     
    /** returns the font metric of the current font.
     */
    SimpleFontMetric getFontMetric(); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the font used by text operations.
     */
    [oneway] void setFont( [in] XFont xNewFont ); 
 
    //------------------------------------------------------------------------- 
     
    /** creates a new font and sets the font.
     */
    [oneway] void selectFont( [in] FontDescriptor aDescription ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the text color used by text operations.
     */
    [oneway] void setTextColor( [in] com::sun::star::util::Color nColor ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the fill color used by text operations.
     */
    [oneway] void setTextFillColor( [in] com::sun::star::util::Color nColor ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the line color.
     */
    [oneway] void setLineColor( [in] com::sun::star::util::Color nColor ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the fill color.
     */
    [oneway] void setFillColor( [in] com::sun::star::util::Color nColor ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the raster operation. 
                        
        <p>If the device does not support raster operations 
        then this call is ignored.</p>
     */
    [oneway] void setRasterOp( [in] RasterOperation ROP ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets the clip region to specified clipping.
     */
    [oneway] void setClipRegion( [in] XRegion Clipping ); 
 
    //------------------------------------------------------------------------- 
     
    /** builds the intersection with the current region.
     */
    [oneway] void intersectClipRegion( [in] XRegion xClipping ); 
 
    //------------------------------------------------------------------------- 
     
    /** saves all current settings (Font, TextColor, TextFillColor,
        LineColor, FillColor, RasterOp, ClipRegion).
     */
    [oneway] void push(); 
 
    //------------------------------------------------------------------------- 
     
    /** restores all previous saved settings.
     */
    [oneway] void pop(); 
 
    //------------------------------------------------------------------------- 
     
    /** copies a rectangle of pixels from another device into this one.
     */
    [oneway] void copy( [in] XDevice xSource, 
             [in] long nSourceX, 
             [in] long nSourceY, 
             [in] long nSourceWidth, 
             [in] long nSourceHeight, 
             [in] long nDestX, 
             [in] long nDestY, 
             [in] long nDestWidth, 
             [in] long nDestHeight ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a part of the specified bitmap to the output device.
     */
    [oneway] void draw( [in] XDisplayBitmap xBitmapHandle, 
             [in] long SourceX, 
             [in] long SourceY, 
             [in] long SourceWidth, 
             [in] long SourceHeight, 
             [in] long DestX, 
             [in] long DestY, 
             [in] long DestWidth, 
             [in] long DestHeight ); 
 
    //------------------------------------------------------------------------- 
     
    /** sets a single pixel in the output device.
     */
    [oneway] void drawPixel( [in] long X, 
             [in] long Y ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a line in the output device.
     */
    [oneway] void drawLine( [in] long X1, 
             [in] long Y1, 
             [in] long X2, 
             [in] long Y2 ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a rectangle in the output device.
     */
    [oneway] void drawRect( [in] long X, 
             [in] long Y, 
             [in] long Width, 
             [in] long Height ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a rectangle with rounded corners in the output device.
     */
    [oneway] void drawRoundedRect( [in] long X, 
             [in] long Y, 
             [in] long Width, 
             [in] long Height, 
             [in] long nHorzRound, 
             [in] long nVertRound ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws multiple lines in the output device at once.
     */
    [oneway] void drawPolyLine( [in] sequence<long> DataX, 
             [in] sequence<long> DataY ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a polygon line in the output device.
     */
    [oneway] void drawPolygon( [in] sequence<long> DataX, 
             [in] sequence<long> DataY ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws multiple polygons in the output device at once.
     */
    [oneway] void drawPolyPolygon( [in] sequence< sequence<long> > DataX, 
             [in] sequence< sequence<long> > DataY ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws an ellipse in the output device.
     */
    [oneway] void drawEllipse( [in] long X, 
             [in] long Y, 
             [in] long Width, 
             [in] long Height ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws an arc (part of a circle) in the output device.
     */
    [oneway] void drawArc( [in] long X, 
             [in] long Y, 
             [in] long Width, 
             [in] long Height, 
             [in] long X1, 
             [in] long Y1, 
             [in] long X2, 
             [in] long Y2 ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a circular area in the output device.
     */
    [oneway] void drawPie( [in] long X, 
             [in] long Y, 
             [in] long Width, 
             [in] long Height, 
             [in] long X1, 
             [in] long Y1, 
             [in] long X2, 
             [in] long Y2 ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a chord of a circular area in the output device.
                        
        <p>A chord is a segment of a circle. You get two chords from a 
        circle if you intersect the circle with a straight line 
        joining two points on the circle.</p>
     */
    [oneway] void drawChord( [in] long nX, 
             [in] long nY, 
             [in] long nWidth, 
             [in] long nHeight, 
             [in] long nX1, 
             [in] long nY1, 
             [in] long nX2, 
             [in] long nY2 ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws a color dispersion in the output device.
     */
    [oneway] void drawGradient( [in] long nX, 
             [in] long nY, 
             [in] long nWidth, 
             [in] long Height, 
             [in] Gradient aGradient ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws text in the output device.
     */
    [oneway] void drawText( [in] long X, 
             [in] long Y, 
             [in] string Text ); 
 
    //------------------------------------------------------------------------- 
     
    /** draws texts in the output device using an explicit kerning table.
     */
    [oneway] void drawTextArray( [in] long X, 
             [in] long Y, 
             [in] string Text, 
             [in] sequence<long> Longs ); 
 
}; 
 
//============================================================================= 
 
}; }; }; };  
 
#endif 
