/*
 * DO NOT EDIT.  THIS FILE IS GENERATED FROM nsIGraphics.idl
 */

#ifndef __gen_nsIGraphics_h__
#define __gen_nsIGraphics_h__


#ifndef __gen_nsISupports_h__
#include "nsISupports.h"
#endif

/* For IDL files that don't want to include root IDL files. */
#ifndef NS_NO_VTABLE
#define NS_NO_VTABLE
#endif
typedef PRUint32 nscolor;

typedef PRInt32 nscoord;


/* starting interface:    nsIGraphics */
#define NS_IGRAPHICS_IID_STR "812eae54-1dd2-11b2-b17b-d0acc700f975"

#define NS_IGRAPHICS_IID \
  {0x812eae54, 0x1dd2, 0x11b2, \
    { 0xb1, 0x7b, 0xd0, 0xac, 0xc7, 0x00, 0xf9, 0x75 }}

/**
 * Simplified graphics interface for JS rendering.
 */
class NS_NO_VTABLE nsIGraphics : public nsISupports {
 public: 

  NS_DEFINE_STATIC_IID_ACCESSOR(NS_IGRAPHICS_IID)

  /**
	 * The color used to paint with.
	 */
  /* attribute nscolor color; */
  NS_IMETHOD GetColor(nscolor *aColor) = 0;
  NS_IMETHOD SetColor(nscolor aColor) = 0;

  /**
     * Clipping.
     */
  /* void clipRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD ClipRect(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /**
     * Primitives.
     */
  /* void drawLine (in nscoord x1, in nscoord y1, in nscoord x2, in nscoord y2); */
  NS_IMETHOD DrawLine(nscoord x1, nscoord y1, nscoord x2, nscoord y2) = 0;

  /* void drawRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD DrawRect(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /* void fillRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD FillRect(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /* void invertRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD InvertRect(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /* void drawEllipse (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD DrawEllipse(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /* void fillEllipse (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD FillEllipse(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /* void invertEllipse (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
  NS_IMETHOD InvertEllipse(nscoord x, nscoord y, nscoord width, nscoord height) = 0;

  /* void drawArc (in nscoord x, in nscoord y, in nscoord width, in nscoord height, in float startAngle, in float endAngle); */
  NS_IMETHOD DrawArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) = 0;

  /* void fillArc (in nscoord x, in nscoord y, in nscoord width, in nscoord height, in float startAngle, in float endAngle); */
  NS_IMETHOD FillArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) = 0;

  /* void invertArc (in nscoord x, in nscoord y, in nscoord width, in nscoord height, in float startAngle, in float endAngle); */
  NS_IMETHOD InvertArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) = 0;

  /* void drawPolygon (in unsigned long count, [array, size_is (count)] in long points); */
  NS_IMETHOD DrawPolygon(PRUint32 count, PRInt32 *points) = 0;

  /* void fillPolygon (in unsigned long count, [array, size_is (count)] in long points); */
  NS_IMETHOD FillPolygon(PRUint32 count, PRInt32 *points) = 0;

  /* void invertPolygon (in unsigned long count, [array, size_is (count)] in long points); */
  NS_IMETHOD InvertPolygon(PRUint32 count, PRInt32 *points) = 0;

  /* void drawString (in wstring text, in nscoord x, in nscoord y); */
  NS_IMETHOD DrawString(const PRUnichar *text, nscoord x, nscoord y) = 0;

  /* void setFont (in wstring name, in nscoord size); */
  NS_IMETHOD SetFont(const PRUnichar *name, nscoord size) = 0;

  /**
	 * Stack of graphics states.
	 */
  /* void gsave (); */
  NS_IMETHOD Gsave(void) = 0;

  /* void grestore (); */
  NS_IMETHOD Grestore(void) = 0;

};

/* Use this macro when declaring classes that implement this interface. */
#define NS_DECL_NSIGRAPHICS \
  NS_IMETHOD GetColor(nscolor *aColor); \
  NS_IMETHOD SetColor(nscolor aColor); \
  NS_IMETHOD ClipRect(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD DrawLine(nscoord x1, nscoord y1, nscoord x2, nscoord y2); \
  NS_IMETHOD DrawRect(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD FillRect(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD InvertRect(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD DrawEllipse(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD FillEllipse(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD InvertEllipse(nscoord x, nscoord y, nscoord width, nscoord height); \
  NS_IMETHOD DrawArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle); \
  NS_IMETHOD FillArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle); \
  NS_IMETHOD InvertArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle); \
  NS_IMETHOD DrawPolygon(PRUint32 count, PRInt32 *points); \
  NS_IMETHOD FillPolygon(PRUint32 count, PRInt32 *points); \
  NS_IMETHOD InvertPolygon(PRUint32 count, PRInt32 *points); \
  NS_IMETHOD DrawString(const PRUnichar *text, nscoord x, nscoord y); \
  NS_IMETHOD SetFont(const PRUnichar *name, nscoord size); \
  NS_IMETHOD Gsave(void); \
  NS_IMETHOD Grestore(void); 

/* Use this macro to declare functions that forward the behavior of this interface to another object. */
#define NS_FORWARD_NSIGRAPHICS(_to) \
  NS_IMETHOD GetColor(nscolor *aColor) { return _to GetColor(aColor); } \
  NS_IMETHOD SetColor(nscolor aColor) { return _to SetColor(aColor); } \
  NS_IMETHOD ClipRect(nscoord x, nscoord y, nscoord width, nscoord height) { return _to ClipRect(x, y, width, height); } \
  NS_IMETHOD DrawLine(nscoord x1, nscoord y1, nscoord x2, nscoord y2) { return _to DrawLine(x1, y1, x2, y2); } \
  NS_IMETHOD DrawRect(nscoord x, nscoord y, nscoord width, nscoord height) { return _to DrawRect(x, y, width, height); } \
  NS_IMETHOD FillRect(nscoord x, nscoord y, nscoord width, nscoord height) { return _to FillRect(x, y, width, height); } \
  NS_IMETHOD InvertRect(nscoord x, nscoord y, nscoord width, nscoord height) { return _to InvertRect(x, y, width, height); } \
  NS_IMETHOD DrawEllipse(nscoord x, nscoord y, nscoord width, nscoord height) { return _to DrawEllipse(x, y, width, height); } \
  NS_IMETHOD FillEllipse(nscoord x, nscoord y, nscoord width, nscoord height) { return _to FillEllipse(x, y, width, height); } \
  NS_IMETHOD InvertEllipse(nscoord x, nscoord y, nscoord width, nscoord height) { return _to InvertEllipse(x, y, width, height); } \
  NS_IMETHOD DrawArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) { return _to DrawArc(x, y, width, height, startAngle, endAngle); } \
  NS_IMETHOD FillArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) { return _to FillArc(x, y, width, height, startAngle, endAngle); } \
  NS_IMETHOD InvertArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) { return _to InvertArc(x, y, width, height, startAngle, endAngle); } \
  NS_IMETHOD DrawPolygon(PRUint32 count, PRInt32 *points) { return _to DrawPolygon(count, points); } \
  NS_IMETHOD FillPolygon(PRUint32 count, PRInt32 *points) { return _to FillPolygon(count, points); } \
  NS_IMETHOD InvertPolygon(PRUint32 count, PRInt32 *points) { return _to InvertPolygon(count, points); } \
  NS_IMETHOD DrawString(const PRUnichar *text, nscoord x, nscoord y) { return _to DrawString(text, x, y); } \
  NS_IMETHOD SetFont(const PRUnichar *name, nscoord size) { return _to SetFont(name, size); } \
  NS_IMETHOD Gsave(void) { return _to Gsave(); } \
  NS_IMETHOD Grestore(void) { return _to Grestore(); } 

/* Use this macro to declare functions that forward the behavior of this interface to another object in a safe way. */
#define NS_FORWARD_SAFE_NSIGRAPHICS(_to) \
  NS_IMETHOD GetColor(nscolor *aColor) { return !_to ? NS_ERROR_NULL_POINTER : _to->GetColor(aColor); } \
  NS_IMETHOD SetColor(nscolor aColor) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetColor(aColor); } \
  NS_IMETHOD ClipRect(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->ClipRect(x, y, width, height); } \
  NS_IMETHOD DrawLine(nscoord x1, nscoord y1, nscoord x2, nscoord y2) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawLine(x1, y1, x2, y2); } \
  NS_IMETHOD DrawRect(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawRect(x, y, width, height); } \
  NS_IMETHOD FillRect(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->FillRect(x, y, width, height); } \
  NS_IMETHOD InvertRect(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->InvertRect(x, y, width, height); } \
  NS_IMETHOD DrawEllipse(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawEllipse(x, y, width, height); } \
  NS_IMETHOD FillEllipse(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->FillEllipse(x, y, width, height); } \
  NS_IMETHOD InvertEllipse(nscoord x, nscoord y, nscoord width, nscoord height) { return !_to ? NS_ERROR_NULL_POINTER : _to->InvertEllipse(x, y, width, height); } \
  NS_IMETHOD DrawArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawArc(x, y, width, height, startAngle, endAngle); } \
  NS_IMETHOD FillArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) { return !_to ? NS_ERROR_NULL_POINTER : _to->FillArc(x, y, width, height, startAngle, endAngle); } \
  NS_IMETHOD InvertArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle) { return !_to ? NS_ERROR_NULL_POINTER : _to->InvertArc(x, y, width, height, startAngle, endAngle); } \
  NS_IMETHOD DrawPolygon(PRUint32 count, PRInt32 *points) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawPolygon(count, points); } \
  NS_IMETHOD FillPolygon(PRUint32 count, PRInt32 *points) { return !_to ? NS_ERROR_NULL_POINTER : _to->FillPolygon(count, points); } \
  NS_IMETHOD InvertPolygon(PRUint32 count, PRInt32 *points) { return !_to ? NS_ERROR_NULL_POINTER : _to->InvertPolygon(count, points); } \
  NS_IMETHOD DrawString(const PRUnichar *text, nscoord x, nscoord y) { return !_to ? NS_ERROR_NULL_POINTER : _to->DrawString(text, x, y); } \
  NS_IMETHOD SetFont(const PRUnichar *name, nscoord size) { return !_to ? NS_ERROR_NULL_POINTER : _to->SetFont(name, size); } \
  NS_IMETHOD Gsave(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Gsave(); } \
  NS_IMETHOD Grestore(void) { return !_to ? NS_ERROR_NULL_POINTER : _to->Grestore(); } 

#if 0
/* Use the code below as a template for the implementation class for this interface. */

/* Header file */
class nsGraphics : public nsIGraphics
{
public:
  NS_DECL_ISUPPORTS
  NS_DECL_NSIGRAPHICS

  nsGraphics();
  virtual ~nsGraphics();
  /* additional members */
};

/* Implementation file */
NS_IMPL_ISUPPORTS1(nsGraphics, nsIGraphics)

nsGraphics::nsGraphics()
{
  /* member initializers and constructor code */
}

nsGraphics::~nsGraphics()
{
  /* destructor code */
}

/* attribute nscolor color; */
NS_IMETHODIMP nsGraphics::GetColor(nscolor *aColor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}
NS_IMETHODIMP nsGraphics::SetColor(nscolor aColor)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void clipRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::ClipRect(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawLine (in nscoord x1, in nscoord y1, in nscoord x2, in nscoord y2); */
NS_IMETHODIMP nsGraphics::DrawLine(nscoord x1, nscoord y1, nscoord x2, nscoord y2)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::DrawRect(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fillRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::FillRect(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invertRect (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::InvertRect(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawEllipse (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::DrawEllipse(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fillEllipse (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::FillEllipse(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invertEllipse (in nscoord x, in nscoord y, in nscoord width, in nscoord height); */
NS_IMETHODIMP nsGraphics::InvertEllipse(nscoord x, nscoord y, nscoord width, nscoord height)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawArc (in nscoord x, in nscoord y, in nscoord width, in nscoord height, in float startAngle, in float endAngle); */
NS_IMETHODIMP nsGraphics::DrawArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fillArc (in nscoord x, in nscoord y, in nscoord width, in nscoord height, in float startAngle, in float endAngle); */
NS_IMETHODIMP nsGraphics::FillArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invertArc (in nscoord x, in nscoord y, in nscoord width, in nscoord height, in float startAngle, in float endAngle); */
NS_IMETHODIMP nsGraphics::InvertArc(nscoord x, nscoord y, nscoord width, nscoord height, float startAngle, float endAngle)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawPolygon (in unsigned long count, [array, size_is (count)] in long points); */
NS_IMETHODIMP nsGraphics::DrawPolygon(PRUint32 count, PRInt32 *points)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void fillPolygon (in unsigned long count, [array, size_is (count)] in long points); */
NS_IMETHODIMP nsGraphics::FillPolygon(PRUint32 count, PRInt32 *points)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void invertPolygon (in unsigned long count, [array, size_is (count)] in long points); */
NS_IMETHODIMP nsGraphics::InvertPolygon(PRUint32 count, PRInt32 *points)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void drawString (in wstring text, in nscoord x, in nscoord y); */
NS_IMETHODIMP nsGraphics::DrawString(const PRUnichar *text, nscoord x, nscoord y)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void setFont (in wstring name, in nscoord size); */
NS_IMETHODIMP nsGraphics::SetFont(const PRUnichar *name, nscoord size)
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void gsave (); */
NS_IMETHODIMP nsGraphics::Gsave()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* void grestore (); */
NS_IMETHODIMP nsGraphics::Grestore()
{
    return NS_ERROR_NOT_IMPLEMENTED;
}

/* End of implementation class template. */
#endif


#endif /* __gen_nsIGraphics_h__ */
