LAB: Merge setPen() into rectFill()

This commit is contained in:
Filippos Karapetis 2015-12-24 12:08:51 +02:00
parent 05973b9b41
commit 7216bddd56
6 changed files with 59 additions and 96 deletions

View File

@ -48,7 +48,6 @@ DisplayMan::DisplayMan(LabEngine *vm) : _vm(vm) {
_actionMessageShown = false;
_screenBytesPerPage = 0;
_curPen = 0;
_curBitmap = nullptr;
_displayBuffer = nullptr;
_currentDisplayBuffer = nullptr;
@ -148,16 +147,12 @@ Common::String DisplayMan::getLine(TextFont *tf, const char **mainBuffer, uint16
int DisplayMan::flowText(TextFont *font, int16 spacing, byte penColor, byte backPen,
bool fillBack, bool centerh, bool centerv, bool output, Common::Rect textRect, const char *str) {
if (fillBack) {
setPen(backPen);
rectFill(textRect);
}
if (fillBack)
rectFill(textRect, backPen);
if (!str)
return 0;
setPen(penColor);
TextFont *msgFont = font;
uint16 fontHeight = textHeight(msgFont) + spacing;
uint16 numLines = (textRect.height() + 1) / fontHeight;
@ -219,15 +214,13 @@ int DisplayMan::flowTextToMem(Image *destIm, TextFont *font, int16 spacing, byte
void DisplayMan::createBox(uint16 y2) {
// Message box area
setPen(7);
rectFillScaled(4, 154, 315, y2 - 2);
rectFillScaled(4, 154, 315, y2 - 2, 7);
// Box around message area
setPen(0);
drawHLine(_vm->_utils->vgaScaleX(2), _vm->_utils->vgaScaleY(152), _vm->_utils->vgaScaleX(317));
drawVLine(_vm->_utils->vgaScaleX(317), _vm->_utils->vgaScaleY(152), _vm->_utils->vgaScaleY(y2));
drawHLine(_vm->_utils->vgaScaleX(2), _vm->_utils->vgaScaleY(y2), _vm->_utils->vgaScaleX(317));
drawVLine(_vm->_utils->vgaScaleX(2), _vm->_utils->vgaScaleY(152), _vm->_utils->vgaScaleY(y2));
drawHLine(_vm->_utils->vgaScaleX(2), _vm->_utils->vgaScaleY(152), _vm->_utils->vgaScaleX(317), 0);
drawVLine(_vm->_utils->vgaScaleX(317), _vm->_utils->vgaScaleY(152), _vm->_utils->vgaScaleY(y2), 0);
drawHLine(_vm->_utils->vgaScaleX(2), _vm->_utils->vgaScaleY(y2), _vm->_utils->vgaScaleX(317), 0);
drawVLine(_vm->_utils->vgaScaleX(2), _vm->_utils->vgaScaleY(152), _vm->_utils->vgaScaleY(y2), 0);
}
int DisplayMan::longDrawMessage(Common::String str, bool isActionMessage) {
@ -247,8 +240,7 @@ int DisplayMan::longDrawMessage(Common::String str, bool isActionMessage) {
if (!_longWinInFront) {
_longWinInFront = true;
// Clear Area
setPen(3);
rectFill(0, _vm->_utils->vgaScaleY(149) + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319), _vm->_utils->vgaScaleY(199));
rectFill(0, _vm->_utils->vgaScaleY(149) + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319), _vm->_utils->vgaScaleY(199), 3);
}
createBox(198);
@ -289,52 +281,45 @@ void DisplayMan::drawPanel() {
_vm->_event->mouseHide();
// Clear Area
setPen(3);
rectFill(0, _vm->_utils->vgaScaleY(149) + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319), _vm->_utils->vgaScaleY(199));
rectFill(0, _vm->_utils->vgaScaleY(149) + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319), _vm->_utils->vgaScaleY(199), 3);
// First Line
setPen(0);
drawHLine(0, _vm->_utils->vgaScaleY(149) + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319));
drawHLine(0, _vm->_utils->vgaScaleY(149) + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319), 0);
// Second Line
setPen(5);
drawHLine(0, _vm->_utils->vgaScaleY(149) + 1 + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319));
drawHLine(0, _vm->_utils->vgaScaleY(149) + 1 + _vm->_utils->svgaCord(2), _vm->_utils->vgaScaleX(319), 5);
// Button Separators
setPen(0);
// First black line to separate buttons
drawHLine(0, _vm->_utils->vgaScaleY(170), _vm->_utils->vgaScaleX(319));
drawHLine(0, _vm->_utils->vgaScaleY(170), _vm->_utils->vgaScaleX(319), 0);
if (!_vm->_alternate) {
setPen(4);
// The horizontal lines under the black one
drawHLine(0, _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(319));
drawHLine(0, _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(319), 4);
_vm->_event->drawButtonList(&_vm->_moveButtonList);
} else {
if (_vm->getPlatform() != Common::kPlatformWindows) {
// Vertical Black lines
drawVLine(_vm->_utils->vgaScaleX(124), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199));
drawVLine(_vm->_utils->vgaScaleX(194), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199));
drawVLine(_vm->_utils->vgaScaleX(124), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199), 0);
drawVLine(_vm->_utils->vgaScaleX(194), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199), 0);
} else {
// Vertical Black lines
drawVLine(_vm->_utils->vgaScaleX(90), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199));
drawVLine(_vm->_utils->vgaScaleX(160), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199));
drawVLine(_vm->_utils->vgaScaleX(230), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199));
drawVLine(_vm->_utils->vgaScaleX(90), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199), 0);
drawVLine(_vm->_utils->vgaScaleX(160), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199), 0);
drawVLine(_vm->_utils->vgaScaleX(230), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleY(199), 0);
}
setPen(4);
// The horizontal lines under the black one
drawHLine(0, _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(122));
drawHLine(_vm->_utils->vgaScaleX(126), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(192));
drawHLine(_vm->_utils->vgaScaleX(196), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(319));
drawHLine(0, _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(122), 4);
drawHLine(_vm->_utils->vgaScaleX(126), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(192), 4);
drawHLine(_vm->_utils->vgaScaleX(196), _vm->_utils->vgaScaleY(170) + 1, _vm->_utils->vgaScaleX(319), 4);
// The vertical high light lines
drawVLine(_vm->_utils->vgaScaleX(1), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198));
drawVLine(_vm->_utils->vgaScaleX(1), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198), 4);
if (_vm->getPlatform() != Common::kPlatformWindows) {
drawVLine(_vm->_utils->vgaScaleX(126), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198));
drawVLine(_vm->_utils->vgaScaleX(196), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198));
drawVLine(_vm->_utils->vgaScaleX(126), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198), 4);
drawVLine(_vm->_utils->vgaScaleX(196), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198), 4);
} else {
drawVLine(_vm->_utils->vgaScaleX(92), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198));
drawVLine(_vm->_utils->vgaScaleX(162), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198));
drawVLine(_vm->_utils->vgaScaleX(232), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198));
drawVLine(_vm->_utils->vgaScaleX(92), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198), 4);
drawVLine(_vm->_utils->vgaScaleX(162), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198), 4);
drawVLine(_vm->_utils->vgaScaleX(232), _vm->_utils->vgaScaleY(170) + 2, _vm->_utils->vgaScaleY(198), 4);
}
_vm->_event->drawButtonList(&_vm->_invButtonList);
@ -400,11 +385,7 @@ void DisplayMan::setUpScreens() {
delete invFile;
}
void DisplayMan::setPen(byte penNum) {
_curPen = penNum;
}
void DisplayMan::rectFill(Common::Rect fillRect) {
void DisplayMan::rectFill(Common::Rect fillRect, byte color) {
int width = fillRect.width() + 1;
int height = fillRect.height() + 1;
@ -422,7 +403,7 @@ void DisplayMan::rectFill(Common::Rect fillRect) {
int ww = width;
while (ww-- > 0) {
*dd++ = _curPen;
*dd++ = color;
}
d += _screenWidth;
@ -430,20 +411,20 @@ void DisplayMan::rectFill(Common::Rect fillRect) {
}
}
void DisplayMan::rectFill(uint16 x1, uint16 y1, uint16 x2, uint16 y2) {
rectFill(Common::Rect(x1, y1, x2, y2));
void DisplayMan::rectFill(uint16 x1, uint16 y1, uint16 x2, uint16 y2, byte color) {
rectFill(Common::Rect(x1, y1, x2, y2), color);
}
void DisplayMan::rectFillScaled(uint16 x1, uint16 y1, uint16 x2, uint16 y2) {
rectFill(_vm->_utils->vgaRectScale(x1, y1, x2, y2));
void DisplayMan::rectFillScaled(uint16 x1, uint16 y1, uint16 x2, uint16 y2, byte color) {
rectFill(_vm->_utils->vgaRectScale(x1, y1, x2, y2), color);
}
void DisplayMan::drawVLine(uint16 x, uint16 y1, uint16 y2) {
rectFill(x, y1, x, y2);
void DisplayMan::drawVLine(uint16 x, uint16 y1, uint16 y2, byte color) {
rectFill(x, y1, x, y2, color);
}
void DisplayMan::drawHLine(uint16 x1, uint16 y, uint16 x2) {
rectFill(x1, y, x2, y);
void DisplayMan::drawHLine(uint16 x1, uint16 y, uint16 x2, byte color) {
rectFill(x1, y, x2, y, color);
}
void DisplayMan::screenUpdate() {
@ -797,13 +778,11 @@ void DisplayMan::doTransWipe(CloseDataPtr *closePtrList, const Common::String fi
if (j == 0)
checkerboardEffect(0, 0, curY, _screenWidth - 1, curY + 1);
else
rectFill(0, curY, _screenWidth - 1, curY + 1);
rectFill(0, curY, _screenWidth - 1, curY + 1, 0);
curY += 4;
linesDone++;
} // while
} // for i
setPen(0);
} // for j
if (filename.empty())
@ -926,8 +905,7 @@ void DisplayMan::scrollDisplayX(int16 dx, uint16 x1, uint16 y1, uint16 x2, uint1
im.readScreenImage(x1, y1);
im.drawImage(x1 + dx, y1);
setPen(0);
rectFill(x1, y1, x1 + dx - 1, y2);
rectFill(x1, y1, x1 + dx - 1, y2, 0);
} else if (dx < 0) {
im._width = x2 - x1 + 1 + dx;
im._height = y2 - y1 + 1;
@ -935,8 +913,7 @@ void DisplayMan::scrollDisplayX(int16 dx, uint16 x1, uint16 y1, uint16 x2, uint1
im.readScreenImage(x1 - dx, y1);
im.drawImage(x1, y1);
setPen(0);
rectFill(x2 + dx + 1, y1, x2, y2);
rectFill(x2 + dx + 1, y1, x2, y2, 0);
}
// Prevent the Image destructor from deleting the external buffer
@ -960,8 +937,7 @@ void DisplayMan::scrollDisplayY(int16 dy, uint16 x1, uint16 y1, uint16 x2, uint1
im.readScreenImage(x1, y1);
im.drawImage(x1, y1 + dy);
setPen(0);
rectFill(x1, y1, x2, y1 + dy - 1);
rectFill(x1, y1, x2, y1 + dy - 1, 0);
} else if (dy < 0) {
im._width = x2 - x1 + 1;
im._height = y2 - y1 + 1 + dy;
@ -969,8 +945,7 @@ void DisplayMan::scrollDisplayY(int16 dy, uint16 x1, uint16 y1, uint16 x2, uint1
im.readScreenImage(x1, y1 - dy);
im.drawImage(x1, y1);
setPen(0);
rectFill(x1, y2 + dy + 1, x2, y2);
rectFill(x1, y2 + dy + 1, x2, y2, 0);
}
// Prevent the Image destructor from deleting the external buffer

View File

@ -157,9 +157,9 @@ public:
/**
* Fills in a rectangle.
*/
void rectFill(uint16 x1, uint16 y1, uint16 x2, uint16 y2);
void rectFill(Common::Rect fillRect);
void rectFillScaled(uint16 x1, uint16 y1, uint16 x2, uint16 y2);
void rectFill(uint16 x1, uint16 y1, uint16 x2, uint16 y2, byte color);
void rectFill(Common::Rect fillRect, byte color);
void rectFillScaled(uint16 x1, uint16 y1, uint16 x2, uint16 y2, byte color);
/**
* Dumps a chunk of text to an arbitrary box; flows it within that box and
* optionally centers it. Returns the number of characters that were processed.
@ -199,12 +199,12 @@ public:
/**
* Draws a vertical line.
*/
void drawHLine(uint16 x, uint16 y1, uint16 y2);
void drawHLine(uint16 x, uint16 y1, uint16 y2, byte color);
/**
* Draws a horizontal line.
*/
void drawVLine(uint16 x1, uint16 y, uint16 x2);
void drawVLine(uint16 x1, uint16 y, uint16 x2, byte color);
void screenUpdate();
/**

View File

@ -96,8 +96,7 @@ void Intro::doPictText(const Common::String filename, bool isScreen) {
_vm->_graphics->fade(false);
if (isScreen) {
_vm->_graphics->setPen(7);
_vm->_graphics->rectFillScaled(10, 10, 310, 190);
_vm->_graphics->rectFillScaled(10, 10, 310, 190, 7);
curText += _vm->_graphics->flowText(_font, _vm->_isHiRes ? 0 : -1, 5, 7, false, false, true, true, _vm->_utils->vgaRectScale(14, 11, 306, 189), (char *)curText);
_vm->_graphics->fade(true);
@ -431,8 +430,7 @@ void Intro::play() {
nReadPict("SubX");
if (_quitIntro) {
_vm->_graphics->setPen(0);
_vm->_graphics->rectFill(0, 0, _vm->_graphics->_screenWidth - 1, _vm->_graphics->_screenHeight - 1);
_vm->_graphics->rectFill(0, 0, _vm->_graphics->_screenWidth - 1, _vm->_graphics->_screenHeight - 1, 0);
_vm->_anim->_doBlack = true;
}
}

View File

@ -335,8 +335,7 @@ void LabEngine::drawMap(uint16 curRoom, uint16 curMsg, uint16 floorNum, bool fad
if (fadeOut)
_graphics->fade(false);
_graphics->setPen(0);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1, 0);
_imgMap->drawImage(0, 0);
_event->drawButtonList(&_mapButtonList);
@ -515,8 +514,7 @@ void LabEngine::processMap(uint16 curRoom) {
const char *sptr;
if ((sptr = _rooms[curMsg]._roomMsg.c_str())) {
_event->mouseHide();
_graphics->setPen(3);
_graphics->rectFillScaled(13, 148, 135, 186);
_graphics->rectFillScaled(13, 148, 135, 186, 3);
_graphics->flowText(_msgFont, 0, 5, 3, true, true, true, true, _utils->vgaRectScale(14, 148, 134, 186), sptr);
if (_maps[oldMsg]._pageNumber == curFloor)
@ -529,8 +527,7 @@ void LabEngine::processMap(uint16 curRoom) {
top = bottom = (curCoords.top + curCoords.bottom) / 2;
if ((curMsg != curRoom) && (_maps[curMsg]._pageNumber == curFloor)) {
_graphics->setPen(1);
_graphics->rectFill(left, top, right, bottom);
_graphics->rectFill(left, top, right, bottom, 1);
}
_event->mouseShow();
@ -566,8 +563,7 @@ void LabEngine::doMap(uint16 curRoom) {
_graphics->fade(false);
_graphics->blackAllScreen();
_event->mouseHide();
_graphics->setPen(0);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1, 0);
freeMapData();
_graphics->blackAllScreen();
_event->mouseShow();

View File

@ -288,8 +288,7 @@ void LabEngine::doJournal() {
_screenImage->_imageData = _graphics->getCurrentDrawingBuffer();
_graphics->setPen(0);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1, 0);
_graphics->blackScreen();
}
@ -316,17 +315,14 @@ void LabEngine::drawMonText(const char *text, TextFont *monitorFont, Common::Rec
else
_monitorButtonHeight = fheight;
_graphics->setPen(0);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, textRect.bottom);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, textRect.bottom, 0);
for (int i = 0; i < numlines; i++)
_monitorButton->drawImage(0, i * _monitorButtonHeight);
} else if (isinteractive) {
_graphics->setPen(0);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, textRect.bottom);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, textRect.bottom, 0);
} else {
_graphics->setPen(0);
_graphics->rectFill(textRect);
_graphics->rectFill(textRect, 0);
}
while (drawingToPage < _monitorPage) {
@ -469,8 +465,7 @@ void LabEngine::doMonitor(const Common::String background, const Common::String
_event->mouseHide();
_graphics->closeFont(&monitorFont);
_graphics->setPen(0);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1);
_graphics->rectFill(0, 0, _graphics->_screenWidth - 1, _graphics->_screenHeight - 1, 0);
_graphics->blackAllScreen();
_graphics->freePict();
}

View File

@ -208,8 +208,7 @@ void TilePuzzle::doTile(bool showsolution) {
rows = _vm->_utils->vgaScaleY(31);
cols = _vm->_utils->vgaScaleX(105);
} else {
_vm->_graphics->setPen(0);
_vm->_graphics->rectFillScaled(97, 22, 220, 126);
_vm->_graphics->rectFillScaled(97, 22, 220, 126, 0);
rowm = _vm->_utils->vgaScaleY(25);
colm = _vm->_utils->vgaScaleX(30);