nvidia-texture-tools/src/nvimage/Image.h

79 lines
1.8 KiB
C
Raw Normal View History

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"
#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);
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
};
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
}
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