diff options
Diffstat (limited to 'dmagick/c/quantum.d')
| -rw-r--r-- | dmagick/c/quantum.d | 103 |
1 files changed, 103 insertions, 0 deletions
diff --git a/dmagick/c/quantum.d b/dmagick/c/quantum.d new file mode 100644 index 0000000..5d534dd --- /dev/null +++ b/dmagick/c/quantum.d @@ -0,0 +1,103 @@ +module dmagick.c.quantum; + +import dmagick.c.cacheView; +import dmagick.c.exception; +import dmagick.c.image; +import dmagick.c.magickType; + +extern(C) +{ + enum EndianType + { + UndefinedEndian, + LSBEndian, + MSBEndian + } + + enum QuantumAlphaType + { + UndefinedQuantumAlpha, + AssociatedQuantumAlpha, + DisassociatedQuantumAlpha + } + + enum QuantumFormatType + { + UndefinedQuantumFormat, + FloatingPointQuantumFormat, + SignedQuantumFormat, + UnsignedQuantumFormat + } + + enum QuantumType + { + UndefinedQuantum, + AlphaQuantum, + BlackQuantum, + BlueQuantum, + CMYKAQuantum, + CMYKQuantum, + CyanQuantum, + GrayAlphaQuantum, + GrayQuantum, + GreenQuantum, + IndexAlphaQuantum, + IndexQuantum, + MagentaQuantum, + OpacityQuantum, + RedQuantum, + RGBAQuantum, + BGRAQuantum, + RGBOQuantum, + RGBQuantum, + YellowQuantum, + GrayPadQuantum, + RGBPadQuantum, + CbYCrYQuantum, + CbYCrQuantum, + CbYCrAQuantum, + CMYKOQuantum, + BGRQuantum, + BGROQuantum + } + + struct QuantumInfo {} + + alias ClampToQuantum RoundToQuantum; + static pure nothrow Quantum ClampToQuantum(const MagickRealType value) + { + if (value <= 0.0) + return(cast(Quantum) 0); + if (value >= cast(MagickRealType) 65535UL) + return(cast(Quantum) 65535UL); + return(cast(Quantum) (value+0.5)); + } + + static pure nothrow ubyte ScaleQuantumToChar(const Quantum quantum) + { + return(cast(ubyte) (((quantum+128UL)-((quantum+128UL) >> 8)) >> 8)); + } + + MagickBooleanType SetQuantumDepth(const Image*, QuantumInfo*, const size_t); + MagickBooleanType SetQuantumFormat(const Image*, QuantumInfo*, const QuantumFormatType); + MagickBooleanType SetQuantumPad(const Image*, QuantumInfo*, const size_t); + + QuantumInfo* AcquireQuantumInfo(const ImageInfo*, Image*); + QuantumInfo* DestroyQuantumInfo(QuantumInfo*); + + QuantumType GetQuantumType(Image*, ExceptionInfo*); + + size_t ExportQuantumPixels(const Image*, const CacheView*, const QuantumInfo*, const QuantumType, ubyte*, ExceptionInfo*); + size_t GetQuantumExtent(const Image*, const QuantumInfo*, const QuantumType); + size_t ImportQuantumPixels(Image*, CacheView*, const QuantumInfo*, const QuantumType, const ubyte*, ExceptionInfo*); + + ubyte* GetQuantumPixels(const QuantumInfo*); + + void GetQuantumInfo(const ImageInfo*, QuantumInfo*); + void SetQuantumAlphaType(QuantumInfo*, const QuantumAlphaType); + void SetQuantumImageType(Image*, const QuantumType); + void SetQuantumMinIsWhite(QuantumInfo*, const MagickBooleanType); + void SetQuantumPack(QuantumInfo*, const MagickBooleanType); + void SetQuantumQuantum(QuantumInfo*, const size_t); + void SetQuantumScale(QuantumInfo*, const double); +} |
