75 virtual void Gen()
const=0;
86 Buffer(
const Buffer<T> &buf) : buffer(new T[buf.
count]),
count(buf.
count)
88 std::copy(buffer, buffer+count, buf.buffer);
90 void set(
int index, T val)
94 T &operator[](
int idx) {
return buffer[idx]; }
95 void operator=(
const Buffer<T> &buf)
97 buffer =
new T[buf.count];
99 std::copy(buffer, buffer+buf.count, buf.buffer);
102 ~Buffer() {
delete [] buffer; }
103 T *Array()
const {
return buffer; }
104 int Count()
const {
return count; }
105 static Buffer<T> Compose(
const Buffer<T> &buf,
const Buffer<T> &buf2)
107 Buffer<T> res(buf.count+buf2.count);
108 for(
int i=0;i<buf.count;i++)
112 for(
int k=0;k<buf2.count;k++)
114 res[buf.count+k]=buf2[k];
118 int NumTris()
const {
return count/3/3; }
119 int NumQuads()
const {
return count/6/3; }
120 int NumTexCoordTris()
const {
return count/2/3; }
121 int NumColorTris()
const {
return count/1/3; }
122 int NumTexCoordQuads()
const {
return count/2/6; }
123 int NumColorQuads()
const {
return count/1/6; }
124 friend void AnimBuffer(
const Buffer<float> &buf,
const Buffer<float> &buf2, Buffer<float> &res,
float val);
129inline void AnimBuffer(
const Buffer<float> &buf,
const Buffer<float> &buf2, Buffer<float> &res,
float val)
132 float *resbuf = res.buffer;
133 float *bufbuf = buf.buffer;
134 float *buf2buf = buf2.buffer;
135 for(
int i=0;i<buf.count;i++)
137 resbuf[i]=bufbuf[i]*val+buf2buf[i]*m;
virtual BufferRef Buffer() const =0
virtual void Gen() const =0
virtual ~BufferRefReq()
Definition Buffer.hh:77
size_t count(const T &t_target, const typename T::key_type &t_key)
Definition bootstrap_stl.hpp:104
float * operator[](int y) const
Definition Buffer.hh:57
static BufferRefF SubBuffer(BufferRefF old, int x, int y, int width, int height)
Definition Buffer.cc:118
static BufferRefF NewBuffer(int width, int height)
Definition Buffer.cc:108
unsigned int width
Definition Buffer.hh:50
unsigned int ydelta
Definition Buffer.hh:52
BufferRefF()
Definition Buffer.hh:58
float * buffer
Definition Buffer.hh:49
unsigned int height
Definition Buffer.hh:51
unsigned int height
Definition Buffer.hh:65
static BufferRefMask NewBuffer(int width, int height)
Definition Buffer.cc:97
unsigned int ydelta
Definition Buffer.hh:66
BufferRefMask()
Definition Buffer.hh:69
unsigned char * operator[](int y) const
Definition Buffer.hh:68
unsigned int width
Definition Buffer.hh:64
unsigned char * buffer
Definition Buffer.hh:63
static BufferRef SubBuffer(BufferRef old, int x, int y, int width, int height)
Definition Buffer.cc:56
BufferRef()
Definition Buffer.hh:45
static void CopyBuffer(BufferRef source, BufferRef target, int x, int y, int rx, int ry, int rex, int rey)
Definition Buffer.cc:66
unsigned int width
Definition Buffer.hh:34
unsigned int * buffer
Definition Buffer.hh:33
unsigned int ydelta
Definition Buffer.hh:36
static BufferRef NewBuffer(int width, int height)
Definition Buffer.cc:36
unsigned int height
Definition Buffer.hh:35
static void FreeBuffer(BufferRef &ref)
Definition Buffer.cc:92
unsigned int * operator[](int y)
Definition Buffer.hh:44
static BufferRef NewBufferWithoutAlloc(unsigned int *buf, unsigned int width, unsigned int height, unsigned int ydelta)
Definition Buffer.cc:26