1 /* 2 * DQt - D bindings for the Qt Toolkit 3 * 4 * GNU Lesser General Public License Usage 5 * This file may be used under the terms of the GNU Lesser 6 * General Public License version 3 as published by the Free Software 7 * Foundation and appearing in the file LICENSE.LGPL3 included in the 8 * packaging of this file. Please review the following information to 9 * ensure the GNU Lesser General Public License version 3 requirements 10 * will be met: https://www.gnu.org/licenses/lgpl-3.0.html. 11 */ 12 module qt.gui.imageiohandler; 13 extern(C++): 14 15 import qt.config; 16 import qt.core.bytearray; 17 import qt.core.flags; 18 import qt.core.iodevice; 19 import qt.core.rect; 20 import qt.core.scopedpointer; 21 import qt.core.size; 22 import qt.core.variant; 23 import qt.gui.image; 24 import qt.helpers; 25 static if(!defined!"QT_NO_IMAGEFORMATPLUGIN") 26 import qt.core.object; 27 28 29 extern(C++, class) struct QImageIOHandlerPrivate; 30 /// Binding for C++ class [QImageIOHandler](https://doc.qt.io/qt-6/qimageiohandler.html). 31 abstract class /+ Q_GUI_EXPORT +/ QImageIOHandler 32 { 33 private: 34 /+ Q_DECLARE_PRIVATE(QImageIOHandler) +/ 35 public: 36 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 37 this(); 38 })); 39 /+ virtual +/~this(); 40 41 final void setDevice(QIODevice device); 42 final QIODevice device() const; 43 44 final void setFormat(ref const(QByteArray) format); 45 final void setFormat(ref const(QByteArray) format) const; 46 final QByteArray format() const; 47 48 /+ virtual +/ abstract bool canRead() const; 49 /+ virtual +/ abstract bool read(QImage* image); 50 /+ virtual +/ bool write(ref const(QImage) image); 51 52 enum ImageOption { 53 Size, 54 ClipRect, 55 Description, 56 ScaledClipRect, 57 ScaledSize, 58 CompressionRatio, 59 Gamma, 60 Quality, 61 Name, 62 SubType, 63 IncrementalReading, 64 Endianness, 65 Animation, 66 BackgroundColor, 67 ImageFormat, 68 SupportedSubTypes, 69 OptimizedWrite, 70 ProgressiveScanWrite, 71 ImageTransformation 72 } 73 74 enum Transformation { 75 TransformationNone = 0, 76 TransformationMirror = 1, 77 TransformationFlip = 2, 78 TransformationRotate180 = Transformation.TransformationMirror | Transformation.TransformationFlip, 79 TransformationRotate90 = 4, 80 TransformationMirrorAndRotate90 = Transformation.TransformationMirror | Transformation.TransformationRotate90, 81 TransformationFlipAndRotate90 = Transformation.TransformationFlip | Transformation.TransformationRotate90, 82 TransformationRotate270 = Transformation.TransformationRotate180 | Transformation.TransformationRotate90 83 } 84 /+ Q_DECLARE_FLAGS(Transformations, Transformation) +/ 85 alias Transformations = QFlags!(Transformation); 86 /+ virtual +/ QVariant option(ImageOption option) const; 87 /+ virtual +/ void setOption(ImageOption option, ref const(QVariant) value); 88 /+ virtual +/ bool supportsOption(ImageOption option) const; 89 90 // incremental loading 91 /+ virtual +/ bool jumpToNextImage(); 92 /+ virtual +/ bool jumpToImage(int imageNumber); 93 /+ virtual +/ int loopCount() const; 94 /+ virtual +/ int imageCount() const; 95 /+ virtual +/ int nextImageDelay() const; 96 /+ virtual +/ int currentImageNumber() const; 97 /+ virtual +/ QRect currentImageRect() const; 98 99 static bool allocateImage(QSize size, QImage.Format format, QImage* image); 100 101 protected: 102 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 103 this(ref QImageIOHandlerPrivate dd); 104 })); 105 QScopedPointer!(QImageIOHandlerPrivate) d_ptr; 106 private: 107 /+ Q_DISABLE_COPY(QImageIOHandler) +/ 108 mixin(CREATE_CONVENIENCE_WRAPPERS); 109 } 110 111 static if(!defined!"QT_NO_IMAGEFORMATPLUGIN") 112 { 113 114 /+ #define QImageIOHandlerFactoryInterface_iid "org.qt-project.Qt.QImageIOHandlerFactoryInterface" +/ 115 116 /// Binding for C++ class [QImageIOPlugin](https://doc.qt.io/qt-6/qimageioplugin.html). 117 abstract class /+ Q_GUI_EXPORT +/ QImageIOPlugin : QObject 118 { 119 mixin(Q_OBJECT); 120 public: 121 mixin(changeItaniumMangling(q{mangleConstructorBaseObject}, q{ 122 /+ explicit +/this(QObject parent = null); 123 })); 124 ~this(); 125 126 enum Capability { 127 CanRead = 0x1, 128 CanWrite = 0x2, 129 CanReadIncremental = 0x4 130 } 131 /+ Q_DECLARE_FLAGS(Capabilities, Capability) +/ 132 alias Capabilities = QFlags!(Capability); 133 /+ virtual +/ abstract Capabilities capabilities(QIODevice device, ref const(QByteArray) format) const; 134 /+ virtual +/ abstract QImageIOHandler create(QIODevice device, ref const(QByteArray) format = globalInitVar!QByteArray) const; 135 mixin(CREATE_CONVENIENCE_WRAPPERS); 136 } 137 /+pragma(inline, true) QFlags!(QImageIOPlugin.Capabilities.enum_type) operator |(QImageIOPlugin.Capabilities.enum_type f1, QImageIOPlugin.Capabilities.enum_type f2)/+noexcept+/{return QFlags!(QImageIOPlugin.Capabilities.enum_type)(f1)|f2;}+/ 138 /+pragma(inline, true) QFlags!(QImageIOPlugin.Capabilities.enum_type) operator |(QImageIOPlugin.Capabilities.enum_type f1, QFlags!(QImageIOPlugin.Capabilities.enum_type) f2)/+noexcept+/{return f2|f1;}+/ 139 /+pragma(inline, true) QFlags!(QImageIOPlugin.Capabilities.enum_type) operator &(QImageIOPlugin.Capabilities.enum_type f1, QImageIOPlugin.Capabilities.enum_type f2)/+noexcept+/{return QFlags!(QImageIOPlugin.Capabilities.enum_type)(f1)&f2;}+/ 140 /+pragma(inline, true) QFlags!(QImageIOPlugin.Capabilities.enum_type) operator &(QImageIOPlugin.Capabilities.enum_type f1, QFlags!(QImageIOPlugin.Capabilities.enum_type) f2)/+noexcept+/{return f2&f1;}+/ 141 /+pragma(inline, true) void operator +(QImageIOPlugin.Capabilities.enum_type f1, QImageIOPlugin.Capabilities.enum_type f2)/+noexcept+/;+/ 142 /+pragma(inline, true) void operator +(QImageIOPlugin.Capabilities.enum_type f1, QFlags!(QImageIOPlugin.Capabilities.enum_type) f2)/+noexcept+/;+/ 143 /+pragma(inline, true) void operator +(int f1, QFlags!(QImageIOPlugin.Capabilities.enum_type) f2)/+noexcept+/;+/ 144 /+pragma(inline, true) void operator -(QImageIOPlugin.Capabilities.enum_type f1, QImageIOPlugin.Capabilities.enum_type f2)/+noexcept+/;+/ 145 /+pragma(inline, true) void operator -(QImageIOPlugin.Capabilities.enum_type f1, QFlags!(QImageIOPlugin.Capabilities.enum_type) f2)/+noexcept+/;+/ 146 /+pragma(inline, true) void operator -(int f1, QFlags!(QImageIOPlugin.Capabilities.enum_type) f2)/+noexcept+/;+/ 147 /+pragma(inline, true) QIncompatibleFlag operator |(QImageIOPlugin.Capabilities.enum_type f1, int f2)/+noexcept+/{return QIncompatibleFlag(int(f1)|f2);}+/ 148 /+pragma(inline, true) void operator +(int f1, QImageIOPlugin.Capabilities.enum_type f2)/+noexcept+/;+/ 149 /+pragma(inline, true) void operator +(QImageIOPlugin.Capabilities.enum_type f1, int f2)/+noexcept+/;+/ 150 /+pragma(inline, true) void operator -(int f1, QImageIOPlugin.Capabilities.enum_type f2)/+noexcept+/;+/ 151 /+pragma(inline, true) void operator -(QImageIOPlugin.Capabilities.enum_type f1, int f2)/+noexcept+/;+/ 152 153 /+ Q_DECLARE_OPERATORS_FOR_FLAGS(QImageIOPlugin::Capabilities) +/ 154 } 155