AVALANCHE: Incorporate Graph::readImage() into Grap::copySurface(), update Lucerna's functions accordingly. Delete Graph::setPixel().

This commit is contained in:
uruk 2013-07-19 11:14:39 +02:00
parent b18ed9a5ff
commit 4dc97824e6
3 changed files with 17 additions and 53 deletions

View File

@ -70,10 +70,6 @@ byte *Graph::getPixel(int16 x, int16 y) {
return (byte *)_surface.getBasePtr(x, y);
}
void Graph::setPixel(int16 x, int16 y, byte color) {
*(byte *)_surface.getBasePtr(x, y) = color;
}
void Graph::drawBar(int16 x1, int16 y1, int16 x2, int16 y2, int16 color) {
_surface.fillRect(Common::Rect(x1, y1, x2, y2), color);
}
@ -85,9 +81,9 @@ void Graph::drawSprite(const SpriteInfo &sprite, byte picnum, int16 x, int16 y)
warning("STUB: Graph::drawSprite()");
}
Graphics::Surface *Graph::readImage(const byte *source) {
Graphics::Surface *picture = new Graphics::Surface;
void Graph::copySurface(const byte *source, uint16 destX, uint16 destY) {
Graphics::Surface picture;
uint32 i = 0;
uint16 pictureWidth = (source[i++] + 1);
@ -95,7 +91,7 @@ Graphics::Surface *Graph::readImage(const byte *source) {
uint16 pictureHeight = (source[i++] + 1);
pictureHeight += (source[i++] << 8);
picture->create(pictureWidth, pictureHeight, Graphics::PixelFormat::createFormatCLUT8());
picture.create(pictureWidth, pictureHeight, Graphics::PixelFormat::createFormatCLUT8());
for (byte y = 0; y < pictureHeight; y++)
for (int8 plane = 3; plane >= 0; plane--) // The planes are in the opposite way.
@ -103,17 +99,13 @@ Graphics::Surface *Graph::readImage(const byte *source) {
byte pixel = source[i++];
for (byte i = 0; i < 8; i++) {
byte pixelBit = (pixel >> i) & 1;
*(byte *)picture->getBasePtr(x + 7 - i, y) += (pixelBit << plane);
*(byte *)picture.getBasePtr(x + 7 - i, y) += (pixelBit << plane);
}
}
return picture;
}
void Graph::copySurface(const Graphics::Surface &source, uint16 destX, uint16 destY) {
for (uint16 y = 0; y < source.h; y++)
for (uint16 x = 0; x < source.w; x++)
*(byte *)_surface.getBasePtr(x + destX, y + destY) = *(byte *)source.getBasePtr(x, y);
for (uint16 y = 0; y < picture.h; y++)
for (uint16 x = 0; x < picture.w; x++)
*(byte *)_surface.getBasePtr(x + destX, y + destY) = *(byte *)picture.getBasePtr(x, y);
}
void Graph::refreshScreen() {

View File

@ -69,16 +69,11 @@ public:
byte *getPixel(int16 x, int16 y);
void setPixel(int16 x, int16 y, byte color);
void drawBar(int16 x1, int16 y1, int16 x2, int16 y2, int16 color);
void drawSprite(const SpriteInfo &sprite, byte picnum, int16 x, int16 y);
// Must free the returned pointer!!!
Graphics::Surface *readImage(const byte *source);
void copySurface(const Graphics::Surface &source, uint16 destX, uint16 destY);
void copySurface(const byte *source, uint16 destX, uint16 destY);
void refreshScreen();

View File

@ -261,7 +261,9 @@ void Lucerna::load(byte n) { /* Load2, actually */
}
}
_vm->_graph.copySurface(background, 0, 10);
for (uint16 y = 0; y < backgroundHeight; y++)
for (uint16 x = 0; x < backgroundWidht; x++)
*_vm->_graph.getPixel(x + 0, y + 10) = *(byte *)background.getBasePtr(x, y);
background.free();
@ -764,13 +766,7 @@ void Lucerna::thinkabout(byte z, bool th) { /* Hey!!! Get it and put it!!! *
f.read(buffer, picsize);
Graphics::Surface *picture = _vm->_graph.readImage(buffer);
_vm->_graph.copySurface(*picture, 205, 170);
picture->free();
delete picture;
_vm->_graph.copySurface(buffer, 205, 170);
delete[] buffer;
@ -827,13 +823,7 @@ void Lucerna::toolbar() {
f.read(buffer, bufferSize);
Graphics::Surface *toolbar = _vm->_graph.readImage(buffer);
_vm->_graph.copySurface(*toolbar, 5, 169);
toolbar->free();
delete toolbar;
_vm->_graph.copySurface(buffer, 5, 169);
delete[] buffer;
@ -868,15 +858,8 @@ void Lucerna::showscore() {
//setactivepage(3);
for (byte fv = 0; fv < 3; fv ++)
if (_vm->_gyro.lastscore[fv] != numbers[fv]) {
Graphics::Surface *digit = _vm->_graph.readImage(_vm->_gyro.digit[numbers[fv]]);
_vm->_graph.copySurface(*digit, 250 + (fv + 1) * 15, 177);
digit->free();
delete digit;
}
if (_vm->_gyro.lastscore[fv] != numbers[fv])
_vm->_graph.copySurface(_vm->_gyro.digit[numbers[fv]], 250 + (fv + 1) * 15, 177);
for (byte fv = 0; fv < 2; fv ++)
_vm->_trip.getset[fv].remember(scorespace);
@ -1069,13 +1052,7 @@ void Lucerna::showrw() { // It's data is loaded in load_digits().
putimage(0, 161, rwlite[with.rw], 0);
}*/
Graphics::Surface *rwlite = _vm->_graph.readImage(_vm->_gyro.rwlite[_vm->_gyro.dna.rw]);
_vm->_graph.copySurface(*rwlite, 0, 161);
rwlite->free();
delete rwlite;
_vm->_graph.copySurface(_vm->_gyro.rwlite[_vm->_gyro.dna.rw], 0, 161);
_vm->_gyro.on();
//setactivepage(1 - cp);