33 ifs.open(filename.c_str(), std::ios::in | std::ios::binary);
40 ifs.seekg(18, std::ios::beg);
41 ifs.read((
char*)&
_sizeX,
sizeof(
unsigned int));
42 ifs.read((
char*)&
_sizeY,
sizeof(
unsigned int));
49 unsigned short planes = 0;
50 ifs.read((
char*)&planes,
sizeof(
unsigned short));
57 ifs.read((
char*)&
_depth,
sizeof(
unsigned int));
64 _data =
new unsigned char[size4];
65 unsigned char* tempData =
new unsigned char[size3];
68 ifs.seekg(22, std::ios::cur);
69 ifs.read((
char*)tempData, size3);
72 unsigned int c1 = 0, c2 = 0;
73 for (c1 = 0, c2 = 0; c1 < size4; c1 += 4, c2 += 3)
75 _data[c1] = tempData[c2 + 2];
76 _data[c1 + 1] = tempData[c2 + 1];
77 _data[c1 + 2] = tempData[c2];
93 const unsigned int stride =
_depth;
94 const unsigned int w =
_sizeX;
95 const unsigned int h =
_sizeY;
96 const unsigned int m = h / 2;
97 unsigned char* temp =
new unsigned char[stride];
99 for (
unsigned int y = 0; y < m; ++y)
101 for (
unsigned int x = 0; x < w; ++x)
103 unsigned int offset = (y * w + x) * stride;
104 unsigned int offsetOpp = ((h - y - 1) * w + x) * stride;
106 std::memcpy(temp,
_data + offset, stride);
107 std::memcpy(
_data + offset,
_data + offsetOpp, stride);
108 std::memcpy(
_data + offsetOpp, temp, stride);
116 const unsigned int stride =
_depth;
117 const unsigned int w =
_sizeX;
118 const unsigned int h =
_sizeY;
119 const unsigned int m = w / 2;
120 unsigned char* temp =
new unsigned char[stride];
122 for (
unsigned int y = 0; y < h; ++y)
124 for (
unsigned int x = 0; x < m; ++x)
126 unsigned int offset = (y * w + x) * stride;
127 unsigned int offsetOpp = (y * w + (w - x - 1)) * stride;
129 std::memcpy(temp,
_data + offset, stride);
130 std::memcpy(
_data + offset,
_data + offsetOpp, stride);
131 std::memcpy(
_data + offsetOpp, temp, stride);
virtual bool load(const std::string &filename)