/**************************************************************
 * 
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
 * 
 *   http://www.apache.org/licenses/LICENSE-2.0
 * 
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 * KIND, either express or implied.  See the License for the
 * specific language governing permissions and limitations
 * under the 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