//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    [SmokeClass("QPaintEngine")]
    public abstract class QPaintEngine : Object {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected QPaintEngine(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QPaintEngine), this);
        }
        public enum PaintEngineFeature : uint {
            PrimitiveTransform = 0x00000001,
            PatternTransform = 0x00000002,
            PixmapTransform = 0x00000004,
            PatternBrush = 0x00000008,
            LinearGradientFill = 0x00000010,
            RadialGradientFill = 0x00000020,
            ConicalGradientFill = 0x00000040,
            AlphaBlend = 0x00000080,
            PorterDuff = 0x00000100,
            PainterPaths = 0x00000200,
            Antialiasing = 0x00000400,
            BrushStroke = 0x00000800,
            ConstantOpacity = 0x00001000,
            MaskedBrush = 0x00002000,
            PerspectiveTransform = 0x00004000,
            BlendModes = 0x00008000,
            ObjectBoundingModeGradients = 0x00010000,
            RasterOpModes = 0x00020000,
            PaintOutsidePaintEvent = 0x20000000,
            AllFeatures = 0xffffffff,
        }
        public enum DirtyFlag {
            DirtyPen = 0x0001,
            DirtyBrush = 0x0002,
            DirtyBrushOrigin = 0x0004,
            DirtyFont = 0x0008,
            DirtyBackground = 0x0010,
            DirtyBackgroundMode = 0x0020,
            DirtyTransform = 0x0040,
            DirtyClipRegion = 0x0080,
            DirtyClipPath = 0x0100,
            DirtyHints = 0x0200,
            DirtyCompositionMode = 0x0400,
            DirtyClipEnabled = 0x0800,
            DirtyOpacity = 0x1000,
            AllDirty = 0xffff,
        }
        public enum PolygonDrawMode {
            OddEvenMode = 0,
            WindingMode = 1,
            ConvexMode = 2,
            PolylineMode = 3,
        }
        public enum TypeOf {
            X11 = 0,
            Windows = 1,
            QuickDraw = 2,
            CoreGraphics = 3,
            MacPrinter = 4,
            QWindowSystem = 5,
            PostScript = 6,
            OpenGL = 7,
            Picture = 8,
            SVG = 9,
            Raster = 10,
            Direct3D = 11,
            Pdf = 12,
            OpenVG = 13,
            User = 50,
            MaxUser = 100,
        }
        // QPaintEngine* QPaintEngine(QPaintEnginePrivate& arg1,QPaintEngine::PaintEngineFeatures arg2); >>>> NOT CONVERTED
        // QPaintEngine* QPaintEngine(QPaintEnginePrivate& arg1); >>>> NOT CONVERTED
        public QPaintEngine(uint features) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QPaintEngine$", "QPaintEngine(QPaintEngine::PaintEngineFeatures)", typeof(void), typeof(uint), features);
        }
        public QPaintEngine() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QPaintEngine", "QPaintEngine()", typeof(void));
        }
        public bool IsActive() {
            return (bool) interceptor.Invoke("isActive", "isActive() const", typeof(bool));
        }
        public void SetActive(bool newState) {
            interceptor.Invoke("setActive$", "setActive(bool)", typeof(void), typeof(bool), newState);
        }
        [SmokeMethod("begin(QPaintDevice*)")]
        public abstract bool Begin(IQPaintDevice pdev);
        [SmokeMethod("end()")]
        public abstract bool End();
        [SmokeMethod("updateState(const QPaintEngineState&)")]
        public abstract void UpdateState(QPaintEngineState state);
        [SmokeMethod("drawRects(const QRect*, int)")]
        public virtual void DrawRects(QRect rects, int rectCount) {
            interceptor.Invoke("drawRects#$", "drawRects(const QRect*, int)", typeof(void), typeof(QRect), rects, typeof(int), rectCount);
        }
        [SmokeMethod("drawRects(const QRectF*, int)")]
        public virtual void DrawRects(QRectF rects, int rectCount) {
            interceptor.Invoke("drawRects#$", "drawRects(const QRectF*, int)", typeof(void), typeof(QRectF), rects, typeof(int), rectCount);
        }
        [SmokeMethod("drawLines(const QLine*, int)")]
        public virtual void DrawLines(QLine lines, int lineCount) {
            interceptor.Invoke("drawLines#$", "drawLines(const QLine*, int)", typeof(void), typeof(QLine), lines, typeof(int), lineCount);
        }
        [SmokeMethod("drawLines(const QLineF*, int)")]
        public virtual void DrawLines(QLineF lines, int lineCount) {
            interceptor.Invoke("drawLines#$", "drawLines(const QLineF*, int)", typeof(void), typeof(QLineF), lines, typeof(int), lineCount);
        }
        [SmokeMethod("drawEllipse(const QRectF&)")]
        public virtual void DrawEllipse(QRectF r) {
            interceptor.Invoke("drawEllipse#", "drawEllipse(const QRectF&)", typeof(void), typeof(QRectF), r);
        }
        [SmokeMethod("drawEllipse(const QRect&)")]
        public virtual void DrawEllipse(QRect r) {
            interceptor.Invoke("drawEllipse#", "drawEllipse(const QRect&)", typeof(void), typeof(QRect), r);
        }
        [SmokeMethod("drawPath(const QPainterPath&)")]
        public virtual void DrawPath(QPainterPath path) {
            interceptor.Invoke("drawPath#", "drawPath(const QPainterPath&)", typeof(void), typeof(QPainterPath), path);
        }
        [SmokeMethod("drawPoints(const QPointF*, int)")]
        public virtual void DrawPoints(QPointF points, int pointCount) {
            interceptor.Invoke("drawPoints#$", "drawPoints(const QPointF*, int)", typeof(void), typeof(QPointF), points, typeof(int), pointCount);
        }
        [SmokeMethod("drawPoints(const QPoint*, int)")]
        public virtual void DrawPoints(QPoint points, int pointCount) {
            interceptor.Invoke("drawPoints#$", "drawPoints(const QPoint*, int)", typeof(void), typeof(QPoint), points, typeof(int), pointCount);
        }
        [SmokeMethod("drawPolygon(const QPointF*, int, QPaintEngine::PolygonDrawMode)")]
        public virtual void DrawPolygon(QPointF points, int pointCount, QPaintEngine.PolygonDrawMode mode) {
            interceptor.Invoke("drawPolygon#$$", "drawPolygon(const QPointF*, int, QPaintEngine::PolygonDrawMode)", typeof(void), typeof(QPointF), points, typeof(int), pointCount, typeof(QPaintEngine.PolygonDrawMode), mode);
        }
        [SmokeMethod("drawPolygon(const QPoint*, int, QPaintEngine::PolygonDrawMode)")]
        public virtual void DrawPolygon(QPoint points, int pointCount, QPaintEngine.PolygonDrawMode mode) {
            interceptor.Invoke("drawPolygon#$$", "drawPolygon(const QPoint*, int, QPaintEngine::PolygonDrawMode)", typeof(void), typeof(QPoint), points, typeof(int), pointCount, typeof(QPaintEngine.PolygonDrawMode), mode);
        }
        [SmokeMethod("drawPixmap(const QRectF&, const QPixmap&, const QRectF&)")]
        public abstract void DrawPixmap(QRectF r, QPixmap pm, QRectF sr);
        [SmokeMethod("drawTiledPixmap(const QRectF&, const QPixmap&, const QPointF&)")]
        public virtual void DrawTiledPixmap(QRectF r, QPixmap pixmap, QPointF s) {
            interceptor.Invoke("drawTiledPixmap###", "drawTiledPixmap(const QRectF&, const QPixmap&, const QPointF&)", typeof(void), typeof(QRectF), r, typeof(QPixmap), pixmap, typeof(QPointF), s);
        }
        [SmokeMethod("drawImage(const QRectF&, const QImage&, const QRectF&, Qt::ImageConversionFlags)")]
        public virtual void DrawImage(QRectF r, QImage pm, QRectF sr, uint flags) {
            interceptor.Invoke("drawImage###$", "drawImage(const QRectF&, const QImage&, const QRectF&, Qt::ImageConversionFlags)", typeof(void), typeof(QRectF), r, typeof(QImage), pm, typeof(QRectF), sr, typeof(uint), flags);
        }
        [SmokeMethod("drawImage(const QRectF&, const QImage&, const QRectF&)")]
        public virtual void DrawImage(QRectF r, QImage pm, QRectF sr) {
            interceptor.Invoke("drawImage###", "drawImage(const QRectF&, const QImage&, const QRectF&)", typeof(void), typeof(QRectF), r, typeof(QImage), pm, typeof(QRectF), sr);
        }
        public void SetPaintDevice(IQPaintDevice device) {
            interceptor.Invoke("setPaintDevice#", "setPaintDevice(QPaintDevice*)", typeof(void), typeof(IQPaintDevice), device);
        }
        public IQPaintDevice PaintDevice() {
            return (IQPaintDevice) interceptor.Invoke("paintDevice", "paintDevice() const", typeof(IQPaintDevice));
        }
        public void SetSystemClip(QRegion baseClip) {
            interceptor.Invoke("setSystemClip#", "setSystemClip(const QRegion&)", typeof(void), typeof(QRegion), baseClip);
        }
        public QRegion SystemClip() {
            return (QRegion) interceptor.Invoke("systemClip", "systemClip() const", typeof(QRegion));
        }
        public void SetSystemRect(QRect rect) {
            interceptor.Invoke("setSystemRect#", "setSystemRect(const QRect&)", typeof(void), typeof(QRect), rect);
        }
        public QRect SystemRect() {
            return (QRect) interceptor.Invoke("systemRect", "systemRect() const", typeof(QRect));
        }
        [SmokeMethod("coordinateOffset() const")]
        public virtual QPoint CoordinateOffset() {
            return (QPoint) interceptor.Invoke("coordinateOffset", "coordinateOffset() const", typeof(QPoint));
        }
        [SmokeMethod("type() const")]
        public abstract QPaintEngine.TypeOf type();
        public void Fix_neg_rect(ref int x, ref int y, ref int w, ref int h) {
            StackItem[] stack = new StackItem[5];
            stack[1].s_int = x;
            stack[2].s_int = y;
            stack[3].s_int = w;
            stack[4].s_int = h;
            interceptor.Invoke("fix_neg_rect$$$$", "fix_neg_rect(int*, int*, int*, int*)", stack);
            x = stack[1].s_int;
            y = stack[2].s_int;
            w = stack[3].s_int;
            h = stack[4].s_int;
            return;
        }
        public bool TestDirty(uint df) {
            return (bool) interceptor.Invoke("testDirty$", "testDirty(QPaintEngine::DirtyFlags)", typeof(bool), typeof(uint), df);
        }
        public void SetDirty(uint df) {
            interceptor.Invoke("setDirty$", "setDirty(QPaintEngine::DirtyFlags)", typeof(void), typeof(uint), df);
        }
        public void ClearDirty(uint df) {
            interceptor.Invoke("clearDirty$", "clearDirty(QPaintEngine::DirtyFlags)", typeof(void), typeof(uint), df);
        }
        public bool HasFeature(uint feature) {
            return (bool) interceptor.Invoke("hasFeature$", "hasFeature(QPaintEngine::PaintEngineFeatures) const", typeof(bool), typeof(uint), feature);
        }
        public QPainter Painter() {
            return (QPainter) interceptor.Invoke("painter", "painter() const", typeof(QPainter));
        }
        public void SyncState() {
            interceptor.Invoke("syncState", "syncState()", typeof(void));
        }
        public bool IsExtended() {
            return (bool) interceptor.Invoke("isExtended", "isExtended() const", typeof(bool));
        }
    }
}
