2011-10-10 20:24:12 +00:00
|
|
|
// This code is in the public domain -- castanyo@yahoo.es
|
|
|
|
#pragma once
|
|
|
|
|
|
|
|
#include "nvimage.h"
|
|
|
|
#include "nvcore/Debug.h"
|
|
|
|
|
2016-06-27 01:09:39 +00:00
|
|
|
#if NV_USE_ALTIVEC
|
|
|
|
#undef pixel
|
|
|
|
#endif
|
|
|
|
|
2011-10-10 20:24:12 +00:00
|
|
|
namespace nv
|
|
|
|
{
|
|
|
|
class Color32;
|
|
|
|
|
2020-03-30 17:09:31 +00:00
|
|
|
// 32 bit ARGB image.
|
|
|
|
class Image
|
2011-10-10 20:24:12 +00:00
|
|
|
{
|
|
|
|
public:
|
|
|
|
|
2020-03-30 17:09:31 +00:00
|
|
|
enum Format : uint8 {
|
|
|
|
Format_XRGB,
|
2011-10-10 20:24:12 +00:00
|
|
|
Format_ARGB,
|
|
|
|
};
|
|
|
|
|
2020-03-30 17:09:31 +00:00
|
|
|
Image() {}
|
2011-10-10 20:24:12 +00:00
|
|
|
Image(const Image & img);
|
|
|
|
~Image();
|
|
|
|
|
|
|
|
const Image & operator=(const Image & img);
|
|
|
|
|
|
|
|
|
|
|
|
void allocate(uint w, uint h, uint d = 1);
|
2018-02-06 02:55:07 +00:00
|
|
|
void acquire(Color32 * data, uint w, uint h, uint d = 1);
|
2011-10-10 20:24:12 +00:00
|
|
|
bool load(const char * name);
|
2020-03-30 17:09:31 +00:00
|
|
|
void free();
|
2011-10-10 20:24:12 +00:00
|
|
|
|
2014-11-04 17:49:29 +00:00
|
|
|
void resize(uint w, uint h, uint d = 1);
|
|
|
|
|
2011-10-10 20:24:12 +00:00
|
|
|
void wrap(void * data, uint w, uint h, uint d = 1);
|
|
|
|
void unwrap();
|
|
|
|
|
|
|
|
const Color32 * scanline(uint h) const;
|
|
|
|
Color32 * scanline(uint h);
|
|
|
|
|
|
|
|
const Color32 * pixels() const;
|
|
|
|
Color32 * pixels();
|
|
|
|
|
|
|
|
const Color32 & pixel(uint idx) const;
|
|
|
|
Color32 & pixel(uint idx);
|
|
|
|
|
2012-08-28 17:22:37 +00:00
|
|
|
const Color32 & pixel(uint x, uint y, uint z = 0) const;
|
|
|
|
Color32 & pixel(uint x, uint y, uint z = 0);
|
2011-10-10 20:24:12 +00:00
|
|
|
|
|
|
|
void fill(Color32 c);
|
|
|
|
|
|
|
|
|
2020-03-30 17:09:31 +00:00
|
|
|
uint width = 0;
|
|
|
|
uint height = 0;
|
|
|
|
uint depth = 0;
|
|
|
|
Format format = Format_XRGB;
|
|
|
|
bool sRGB = false;
|
|
|
|
Color32 * data = NULL;
|
2011-10-10 20:24:12 +00:00
|
|
|
};
|
|
|
|
|
|
|
|
|
2012-08-28 17:22:37 +00:00
|
|
|
inline const Color32 & Image::pixel(uint x, uint y, uint z) const
|
2011-10-10 20:24:12 +00:00
|
|
|
{
|
2020-03-30 17:09:31 +00:00
|
|
|
nvDebugCheck(x < width && y < height && z < depth);
|
|
|
|
return pixel((z * height + y) * width + x);
|
2011-10-10 20:24:12 +00:00
|
|
|
}
|
|
|
|
|
2012-08-28 17:22:37 +00:00
|
|
|
inline Color32 & Image::pixel(uint x, uint y, uint z)
|
2011-10-10 20:24:12 +00:00
|
|
|
{
|
2020-03-30 17:09:31 +00:00
|
|
|
nvDebugCheck(x < width && y < height && z < depth);
|
|
|
|
return pixel((z * height + y) * width + x);
|
2011-10-10 20:24:12 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
} // nv namespace
|