//Auto-generated by kalyptus. DO NOT EDIT.
namespace Qyoto {
    using System;
    using System.Collections.Generic;
    [SmokeClass("QImageWriter")]
    public class QImageWriter : Object, IDisposable {
        protected SmokeInvocation interceptor = null;
        private IntPtr smokeObject;
        protected QImageWriter(Type dummy) {}
        protected void CreateProxy() {
            interceptor = new SmokeInvocation(typeof(QImageWriter), this);
        }
        private static SmokeInvocation staticInterceptor = null;
        static QImageWriter() {
            staticInterceptor = new SmokeInvocation(typeof(QImageWriter), null);
        }
        public enum ImageWriterError {
            UnknownError = 0,
            DeviceError = 1,
            UnsupportedFormatError = 2,
        }
        public QImageWriter() : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QImageWriter", "QImageWriter()", typeof(void));
        }
        public QImageWriter(QIODevice device, QByteArray format) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QImageWriter##", "QImageWriter(QIODevice*, const QByteArray&)", typeof(void), typeof(QIODevice), device, typeof(QByteArray), format);
        }
        public QImageWriter(string fileName, QByteArray format) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QImageWriter$#", "QImageWriter(const QString&, const QByteArray&)", typeof(void), typeof(string), fileName, typeof(QByteArray), format);
        }
        public QImageWriter(string fileName) : this((Type) null) {
            CreateProxy();
            interceptor.Invoke("QImageWriter$", "QImageWriter(const QString&)", typeof(void), typeof(string), fileName);
        }
        public void SetFormat(QByteArray format) {
            interceptor.Invoke("setFormat#", "setFormat(const QByteArray&)", typeof(void), typeof(QByteArray), format);
        }
        public QByteArray Format() {
            return (QByteArray) interceptor.Invoke("format", "format() const", typeof(QByteArray));
        }
        public void SetDevice(QIODevice device) {
            interceptor.Invoke("setDevice#", "setDevice(QIODevice*)", typeof(void), typeof(QIODevice), device);
        }
        public QIODevice Device() {
            return (QIODevice) interceptor.Invoke("device", "device() const", typeof(QIODevice));
        }
        public void SetFileName(string fileName) {
            interceptor.Invoke("setFileName$", "setFileName(const QString&)", typeof(void), typeof(string), fileName);
        }
        public string FileName() {
            return (string) interceptor.Invoke("fileName", "fileName() const", typeof(string));
        }
        public void SetQuality(int quality) {
            interceptor.Invoke("setQuality$", "setQuality(int)", typeof(void), typeof(int), quality);
        }
        public int Quality() {
            return (int) interceptor.Invoke("quality", "quality() const", typeof(int));
        }
        public void SetCompression(int compression) {
            interceptor.Invoke("setCompression$", "setCompression(int)", typeof(void), typeof(int), compression);
        }
        public int Compression() {
            return (int) interceptor.Invoke("compression", "compression() const", typeof(int));
        }
        public void SetGamma(float gamma) {
            interceptor.Invoke("setGamma$", "setGamma(float)", typeof(void), typeof(float), gamma);
        }
        public float Gamma() {
            return (float) interceptor.Invoke("gamma", "gamma() const", typeof(float));
        }
        public void SetDescription(string description) {
            interceptor.Invoke("setDescription$", "setDescription(const QString&)", typeof(void), typeof(string), description);
        }
        public string Description() {
            return (string) interceptor.Invoke("description", "description() const", typeof(string));
        }
        public void SetText(string key, string text) {
            interceptor.Invoke("setText$$", "setText(const QString&, const QString&)", typeof(void), typeof(string), key, typeof(string), text);
        }
        public bool CanWrite() {
            return (bool) interceptor.Invoke("canWrite", "canWrite() const", typeof(bool));
        }
        public bool Write(QImage image) {
            return (bool) interceptor.Invoke("write#", "write(const QImage&)", typeof(bool), typeof(QImage), image);
        }
        public QImageWriter.ImageWriterError Error() {
            return (QImageWriter.ImageWriterError) interceptor.Invoke("error", "error() const", typeof(QImageWriter.ImageWriterError));
        }
        public string ErrorString() {
            return (string) interceptor.Invoke("errorString", "errorString() const", typeof(string));
        }
        public bool SupportsOption(QImageIOHandler.ImageOption option) {
            return (bool) interceptor.Invoke("supportsOption$", "supportsOption(QImageIOHandler::ImageOption) const", typeof(bool), typeof(QImageIOHandler.ImageOption), option);
        }
        ~QImageWriter() {
            interceptor.Invoke("~QImageWriter", "~QImageWriter()", typeof(void));
        }
        public void Dispose() {
            interceptor.Invoke("~QImageWriter", "~QImageWriter()", typeof(void));
        }
        public static List<QByteArray> SupportedImageFormats() {
            return (List<QByteArray>) staticInterceptor.Invoke("supportedImageFormats", "supportedImageFormats()", typeof(List<QByteArray>));
        }
    }
}
