-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathimgBuffer.cpp
106 lines (90 loc) · 1.53 KB
/
imgBuffer.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
#include "imgBuffer.h"
#include <cstring> // memcpy
#include <cstdlib> //realloc
imgBuffer::imgBuffer(){
nStored=0;
buffers=0;
nBuf=0;
nSz=0;
cBuf=0;
}
imgBuffer::~imgBuffer(){
if ( buffers )
{
for(unsigned int i=0; i<nBuf; i++){
delete [] buffers[i];
buffers[i] = NULL;
}
delete [] buffers;
buffers = NULL;
}
}
void imgBuffer::allocate(int num, int size){
if ( buffers )
{
for(unsigned int i=0; i<nBuf; i++){
delete [] buffers[i];
buffers[i] = NULL;
}
delete [] buffers;
buffers = NULL;
}
nBuf=num;
nSz = size;
buffers = new PBYTE[num];
for(unsigned int i=0; i<nBuf; i++){
buffers[i] = new BYTE[nSz];
}
}
bool imgBuffer::store(PBYTE pbuf){
if(buffers){
bool ret=true;
if(nStored<nBuf&&nBuf){
if(buffers[nStored]) memcpy(buffers[nStored++],pbuf,nSz/3);
}
else ret = false;
return ret;
}
return 0;
}
void imgBuffer::resetStore(){
nStored=0;
}
bool imgBuffer::nextFrame(){
bool ret=false;
if(ret=(cBuf<nStored-1)){
cBuf++;
}
return ret;
}
bool imgBuffer::prevFrame(){
bool ret=false;
if(ret=(cBuf>0)){
cBuf--;
}
return ret;
}
bool imgBuffer::gotoFrame(int num){
bool ret=false;
if(ret=(num>=0&&num<nStored)){
cBuf=num;
}
return ret;
}
void imgBuffer::gotoPercent(float perc){
int temp = perc*nStored;
if(temp>=0&&temp<nStored){
cBuf=temp;
}
}
float imgBuffer::getPercentDone(){
return float(cBuf)/float(nStored);
}
PBYTE imgBuffer::operator[](int i){
return buffers[i];
}
PBYTE imgBuffer::currentFrame(){
PBYTE ret=0;
if(buffers) ret = buffers[cBuf];
return ret;
}