dlangui/3rdparty/dimage/image.d

84 lines
1.7 KiB
D

// dimage is actually stripped out part of dlib - just to support reading PNG and JPEG
module dimage.image;
//import dimage.color;
class ImageLoadException : Exception
{
this(string msg, string file = __FILE__, size_t line = __LINE__, Throwable next = null)
{
super(msg, file, line, next);
}
}
class SuperImageFactory {
SuperImage createImage(int width, int height, int components, int bitsPerComponent) {
return new SuperImage(width, height, components, bitsPerComponent);
}
}
class SuperImage {
immutable int width;
immutable int height;
uint[] data;
immutable int channels;
immutable int bitDepth;
immutable int length;
void opIndexAssign(uint color, int x, int y) {
data[x + y * width] = color;
}
uint opIndex(int x, int y) {
return data[x + y * width];
}
this(int w, int h, int chan, int depth) {
width = w;
height = h;
channels = chan;
bitDepth = depth;
length = width * height;
data.length = width * height;
}
void free() {
data = null;
}
}
__gshared SuperImageFactory defaultImageFactory = new SuperImageFactory();
/*
* Byte operations
*/
version (BigEndian)
{
uint bigEndian(uint value) nothrow
{
return value;
}
uint networkByteOrder(uint value) nothrow
{
return value;
}
}
version (LittleEndian)
{
uint bigEndian(uint value) nothrow
{
return value << 24
| (value & 0x0000FF00) << 8
| (value & 0x00FF0000) >> 8
| value >> 24;
}
uint networkByteOrder(uint value) nothrow
{
return bigEndian(value);
}
}