/dmagick/c/quantum.d
http://github.com/MikeWey/DMagick · D · 176 lines · 153 code · 20 blank · 3 comment · 28 complexity · 764c3d5d620898cd86991bc753e6ea4a MD5 · raw file
- module dmagick.c.quantum;
- import dmagick.c.cacheView;
- import dmagick.c.exception;
- import dmagick.c.image;
- import dmagick.c.magickType;
- import dmagick.c.magickVersion;
- extern(C)
- {
- /**
- * The endianess of the image when reading the image file.
- */
- enum EndianType
- {
- UndefinedEndian, /// Not defined (default).
- LSBEndian, /// Little Endian.
- MSBEndian /// Big Endian.
- }
- 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)
- {
- static if(MagickHDRISupport)
- {
- return value;
- }
- else
- {
- if (value <= 0.0)
- return(cast(Quantum) 0);
- if (value >= cast(MagickRealType) QuantumRange)
- return(cast(Quantum) QuantumRange);
- return(cast(Quantum) (value+0.5));
- }
- }
- static pure nothrow ubyte ScaleQuantumToChar(const Quantum quantum)
- {
- static if(MagickHDRISupport)
- {
- if ( quantum <= 0 )
- return 0;
- static if ( MagickQuantumDepth == 8 )
- {
- if ( quantum >= 255 )
- return 255;
- return cast(ubyte)(quantum+0.5);
- }
- else static if ( MagickQuantumDepth == 16 )
- {
- if ( quantum/257 >= 255)
- return 255;
- return cast(ubyte)(quantum/257+0.5);
- }
- else static if ( MagickQuantumDepth == 32 )
- {
- if ( quantum/16843009 >= 255)
- return 255;
- return cast(ubyte)(quantum/16843009+0.5);
- }
- else
- {
- if ( quantum/72340172838076673 >= 255)
- return 255;
- return cast(ubyte)(quantum/72340172838076673+0.5);
- }
- }
- else
- {
- static if ( MagickQuantumDepth == 8 )
- return quantum;
- else static if ( MagickQuantumDepth == 16 )
- return cast(ubyte) (((quantum+128UL)-((quantum+128UL) >> 8)) >> 8);
- else static if ( MagickQuantumDepth == 32 )
- return cast(ubyte) (quantum+8421504UL/16843009UL );
- else
- return cast(ubyte) (quantum/72340172838076673.0+0.5);
- }
- }
- static pure nothrow Quantum ScaleCharToQuantum(ubyte value)
- {
- enum Quantum factor = QuantumRange/255;
- return cast(Quantum)(factor*value);
- }
- static if ( MagickLibVersion >= 0x681 )
- {
- EndianType GetQuantumEndian(const(QuantumInfo)*);
- }
- MagickBooleanType SetQuantumDepth(const(Image)*, QuantumInfo*, const size_t);
- static if ( MagickLibVersion >= 0x681 )
- {
- MagickBooleanType SetQuantumEndian(const(Image)*, QuantumInfo*, const EndianType);
- }
- MagickBooleanType SetQuantumFormat(const(Image)*, QuantumInfo*, const QuantumFormatType);
- MagickBooleanType SetQuantumPad(const(Image)*, QuantumInfo*, const size_t);
- static if ( MagickLibVersion >= 0x674 )
- {
- QuantumFormatType GetQuantumFormat(const(QuantumInfo)*);
- }
- 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);
- }