GLK: Converted fillRect to use a Rect to specify bounds
This commit is contained in:
parent
13e2838715
commit
ffe0f5220b
25 changed files with 198 additions and 131 deletions
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
#include "gargoyle/conf.h"
|
#include "gargoyle/conf.h"
|
||||||
#include "gargoyle/fonts.h"
|
#include "gargoyle/fonts.h"
|
||||||
#include "gargoyle/unicode.h"
|
#include "gargoyle/utils.h"
|
||||||
#include "gargoyle/windows.h"
|
#include "gargoyle/windows.h"
|
||||||
#include "common/config-manager.h"
|
#include "common/config-manager.h"
|
||||||
#include "common/system.h"
|
#include "common/system.h"
|
||||||
|
|
|
@ -169,7 +169,7 @@ void Events::handleScroll(bool wheelUp) {
|
||||||
g_vm->_windows->inputHandleKey(wheelUp ? keycode_MouseWheelUp : keycode_MouseWheelDown);
|
g_vm->_windows->inputHandleKey(wheelUp ? keycode_MouseWheelUp : keycode_MouseWheelDown);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Events::handleMouseMove(const Common::Point &pos) {
|
void Events::handleMouseMove(const Point &pos) {
|
||||||
// hyperlinks and selection
|
// hyperlinks and selection
|
||||||
// TODO: Properly handle commented out lines
|
// TODO: Properly handle commented out lines
|
||||||
if (g_vm->_copySelect) {
|
if (g_vm->_copySelect) {
|
||||||
|
@ -184,14 +184,14 @@ void Events::handleMouseMove(const Common::Point &pos) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void Events::handleButtonDown(bool isLeft, const Common::Point &pos) {
|
void Events::handleButtonDown(bool isLeft, const Point &pos) {
|
||||||
if (isLeft)
|
if (isLeft)
|
||||||
g_vm->_windows->inputHandleClick(pos);
|
g_vm->_windows->inputHandleClick(pos);
|
||||||
else
|
else
|
||||||
g_vm->_clipboard->receive(PRIMARY);
|
g_vm->_clipboard->receive(PRIMARY);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Events::handleButtonUp(bool isLeft, const Common::Point &pos) {
|
void Events::handleButtonUp(bool isLeft, const Point &pos) {
|
||||||
if (isLeft) {
|
if (isLeft) {
|
||||||
g_vm->_copySelect = false;
|
g_vm->_copySelect = false;
|
||||||
//gdk_window_set_cursor((GTK_WIDGET(widget)->window), NULL);
|
//gdk_window_set_cursor((GTK_WIDGET(widget)->window), NULL);
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#define GARGOYLE_EVENTS_H
|
#define GARGOYLE_EVENTS_H
|
||||||
|
|
||||||
#include "common/events.h"
|
#include "common/events.h"
|
||||||
|
#include "gargoyle/utils.h"
|
||||||
|
|
||||||
namespace Gargoyle {
|
namespace Gargoyle {
|
||||||
|
|
||||||
|
@ -171,17 +172,17 @@ private:
|
||||||
/**
|
/**
|
||||||
* Handle mouse move events
|
* Handle mouse move events
|
||||||
*/
|
*/
|
||||||
void handleMouseMove(const Common::Point &pos);
|
void handleMouseMove(const Point &pos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle mouse down events
|
* Handle mouse down events
|
||||||
*/
|
*/
|
||||||
void handleButtonDown(bool isLeft, const Common::Point &pos);
|
void handleButtonDown(bool isLeft, const Point &pos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Handle mouse up events
|
* Handle mouse up events
|
||||||
*/
|
*/
|
||||||
void handleButtonUp(bool isLeft, const Common::Point &pos);
|
void handleButtonUp(bool isLeft, const Point &pos);
|
||||||
public:
|
public:
|
||||||
bool _forceClick;
|
bool _forceClick;
|
||||||
public:
|
public:
|
||||||
|
|
|
@ -103,14 +103,14 @@ Graphics::Font *Fonts::loadFont(FACES face, double size, double aspect, int styl
|
||||||
return Graphics::loadTTFFont(f, size, Graphics::kTTFSizeModeCharacter);
|
return Graphics::loadTTFFont(f, size, Graphics::kTTFSizeModeCharacter);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Fonts::drawString(const Common::Point &pos, int fontIdx, const byte *rgb, const Common::String &text, int spw) {
|
int Fonts::drawString(const Point &pos, int fontIdx, const byte *rgb, const Common::String &text, int spw) {
|
||||||
Graphics::Font *font = _fontTable[fontIdx];
|
Graphics::Font *font = _fontTable[fontIdx];
|
||||||
const uint32 color = _surface->format.RGBToColor(rgb[0], rgb[1], rgb[2]);
|
const uint32 color = _surface->format.RGBToColor(rgb[0], rgb[1], rgb[2]);
|
||||||
font->drawString(_surface, text, pos.x, pos.y, _surface->w - pos.x, color);
|
font->drawString(_surface, text, pos.x, pos.y, _surface->w - pos.x, color);
|
||||||
return font->getBoundingBox(text, pos.x, pos.y, _surface->w - pos.x).right;
|
return font->getBoundingBox(text, pos.x, pos.y, _surface->w - pos.x).right;
|
||||||
}
|
}
|
||||||
|
|
||||||
int Fonts::drawStringUni(const Common::Point &pos, int fontIdx, const byte *rgb, const Common::U32String &text, int spw) {
|
int Fonts::drawStringUni(const Point &pos, int fontIdx, const byte *rgb, const Common::U32String &text, int spw) {
|
||||||
Graphics::Font *font = _fontTable[fontIdx];
|
Graphics::Font *font = _fontTable[fontIdx];
|
||||||
const uint32 color = _surface->format.RGBToColor(rgb[0], rgb[1], rgb[2]);
|
const uint32 color = _surface->format.RGBToColor(rgb[0], rgb[1], rgb[2]);
|
||||||
font->drawString(_surface, text, pos.x, pos.y, _surface->w - pos.x, color);
|
font->drawString(_surface, text, pos.x, pos.y, _surface->w - pos.x, color);
|
||||||
|
|
|
@ -24,6 +24,7 @@
|
||||||
#define GARGOYLE_FONTS_H
|
#define GARGOYLE_FONTS_H
|
||||||
|
|
||||||
#include "gargoyle/glk_types.h"
|
#include "gargoyle/glk_types.h"
|
||||||
|
#include "gargoyle/utils.h"
|
||||||
#include "common/str.h"
|
#include "common/str.h"
|
||||||
#include "common/ustr.h"
|
#include "common/ustr.h"
|
||||||
#include "graphics/font.h"
|
#include "graphics/font.h"
|
||||||
|
@ -58,9 +59,9 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual ~Fonts();
|
virtual ~Fonts();
|
||||||
|
|
||||||
int drawString(const Common::Point &pos, int fontIdx, const byte *rgb, const Common::String &text, int spw = 0);
|
int drawString(const Point &pos, int fontIdx, const byte *rgb, const Common::String &text, int spw = 0);
|
||||||
|
|
||||||
int drawStringUni(const Common::Point &pos, int fontIdx, const byte *rgb, const Common::U32String &text, int spw = 0);
|
int drawStringUni(const Point &pos, int fontIdx, const byte *rgb, const Common::U32String &text, int spw = 0);
|
||||||
|
|
||||||
size_t stringWidth(int fontIdx, const Common::String &text, int spw = -1);
|
size_t stringWidth(int fontIdx, const Common::String &text, int spw = -1);
|
||||||
|
|
||||||
|
|
|
@ -295,7 +295,7 @@ void Glk::glk_window_move_cursor(winid_t win, glui32 xpos, glui32 ypos) {
|
||||||
if (!win) {
|
if (!win) {
|
||||||
warning("window_move_cursor: invalid ref");
|
warning("window_move_cursor: invalid ref");
|
||||||
} else {
|
} else {
|
||||||
win->moveCursor(Common::Point(xpos, ypos));
|
win->moveCursor(Point(xpos, ypos));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -770,7 +770,7 @@ void Glk::glk_window_erase_rect(winid_t win, glsi32 left, glsi32 top, glui32 wid
|
||||||
if (!win) {
|
if (!win) {
|
||||||
warning("window_erase_rect: invalid ref");
|
warning("window_erase_rect: invalid ref");
|
||||||
} else {
|
} else {
|
||||||
win->eraseRect(false, Common::Rect(left, top, left + width, top + height));
|
win->eraseRect(false, Rect(left, top, left + width, top + height));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -779,7 +779,7 @@ void Glk::glk_window_fill_rect(winid_t win, glui32 color, glsi32 left, glsi32 to
|
||||||
if (!win) {
|
if (!win) {
|
||||||
warning("window_fill_rect: invalid ref");
|
warning("window_fill_rect: invalid ref");
|
||||||
} else {
|
} else {
|
||||||
win->eraseRect(color, Common::Rect(left, top, left + width, top + height));
|
win->eraseRect(color, Rect(left, top, left + width, top + height));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -14,6 +14,7 @@ MODULE_OBJS := \
|
||||||
time.o \
|
time.o \
|
||||||
unicode.o \
|
unicode.o \
|
||||||
unicode_gen.o \
|
unicode_gen.o \
|
||||||
|
utils.o \
|
||||||
windows.o \
|
windows.o \
|
||||||
window_mask.o \
|
window_mask.o \
|
||||||
window_graphics.o \
|
window_graphics.o \
|
||||||
|
|
|
@ -29,12 +29,12 @@ void Screen::fill(const byte *rgb) {
|
||||||
clear(color);
|
clear(color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen::fillRect(uint x, uint y, uint w, uint h, const byte *rgb) {
|
void Screen::fillRect(const Rect &box, const byte *rgb) {
|
||||||
uint color = format.RGBToColor(rgb[0], rgb[1], rgb[2]);
|
uint color = format.RGBToColor(rgb[0], rgb[1], rgb[2]);
|
||||||
Graphics::Screen::fillRect(Common::Rect(x, y, x + w, y + h), color);
|
Graphics::Screen::fillRect(box, color);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Screen::drawCaret(const Common::Point &pos) {
|
void Screen::drawCaret(const Point &pos) {
|
||||||
// TODO
|
// TODO
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -43,9 +43,9 @@ public:
|
||||||
/**
|
/**
|
||||||
* Fill a given area of the screen with an rgb color
|
* Fill a given area of the screen with an rgb color
|
||||||
*/
|
*/
|
||||||
void fillRect(uint x, uint y, uint w, uint h, const byte *rgb);
|
void fillRect(const Rect &box, const byte *rgb);
|
||||||
|
|
||||||
void drawCaret(const Common::Point &pos);
|
void drawCaret(const Point &pos);
|
||||||
};
|
};
|
||||||
|
|
||||||
} // End of namespace Gargoyle
|
} // End of namespace Gargoyle
|
||||||
|
|
|
@ -33,22 +33,6 @@ size_t strlen_uni(const uint32 *s) {
|
||||||
return len;
|
return len;
|
||||||
}
|
}
|
||||||
|
|
||||||
int strToInt(const char *s) {
|
|
||||||
if (!*s)
|
|
||||||
// No string at all
|
|
||||||
return 0;
|
|
||||||
else if (toupper(s[strlen(s) - 1]) != 'H')
|
|
||||||
// Standard decimal string
|
|
||||||
return atoi(s);
|
|
||||||
|
|
||||||
// Hexadecimal string
|
|
||||||
uint tmp = 0;
|
|
||||||
int read = sscanf(s, "%xh", &tmp);
|
|
||||||
if (read < 1)
|
|
||||||
error("strToInt failed on string \"%s\"", s);
|
|
||||||
return (int)tmp;
|
|
||||||
}
|
|
||||||
|
|
||||||
glui32 bufferChangeCase(glui32 *buf, glui32 len, glui32 numchars, BufferChangeCase destcase,
|
glui32 bufferChangeCase(glui32 *buf, glui32 len, glui32 numchars, BufferChangeCase destcase,
|
||||||
BufferChangeCond cond, int changerest) {
|
BufferChangeCond cond, int changerest) {
|
||||||
glui32 ix, jx;
|
glui32 ix, jx;
|
||||||
|
|
|
@ -46,11 +46,6 @@ size_t strlen_uni(const uint32 *s);
|
||||||
extern glui32 bufferChangeCase(glui32 *buf, glui32 len,
|
extern glui32 bufferChangeCase(glui32 *buf, glui32 len,
|
||||||
glui32 numchars, BufferChangeCase destcase, BufferChangeCond cond, int changerest);
|
glui32 numchars, BufferChangeCase destcase, BufferChangeCond cond, int changerest);
|
||||||
|
|
||||||
/**
|
|
||||||
* Converts a decimal or hexadecimal string into a number
|
|
||||||
*/
|
|
||||||
int strToInt(const char *s);
|
|
||||||
|
|
||||||
} // End of namespace Gargoyle
|
} // End of namespace Gargoyle
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|
44
engines/gargoyle/utils.cpp
Normal file
44
engines/gargoyle/utils.cpp
Normal file
|
@ -0,0 +1,44 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* file distributed with this source distribution.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include "gargoyle/utils.h"
|
||||||
|
#include "common/textconsole.h"
|
||||||
|
|
||||||
|
namespace Gargoyle {
|
||||||
|
|
||||||
|
int strToInt(const char *s) {
|
||||||
|
if (!*s)
|
||||||
|
// No string at all
|
||||||
|
return 0;
|
||||||
|
else if (toupper(s[strlen(s) - 1]) != 'H')
|
||||||
|
// Standard decimal string
|
||||||
|
return atoi(s);
|
||||||
|
|
||||||
|
// Hexadecimal string
|
||||||
|
uint tmp = 0;
|
||||||
|
int read = sscanf(s, "%xh", &tmp);
|
||||||
|
if (read < 1)
|
||||||
|
error("strToInt failed on string \"%s\"", s);
|
||||||
|
return (int)tmp;
|
||||||
|
}
|
||||||
|
|
||||||
|
} // End of namespace Gargoyle
|
51
engines/gargoyle/utils.h
Normal file
51
engines/gargoyle/utils.h
Normal file
|
@ -0,0 +1,51 @@
|
||||||
|
/* ScummVM - Graphic Adventure Engine
|
||||||
|
*
|
||||||
|
* ScummVM is the legal property of its developers, whose names
|
||||||
|
* are too numerous to list here. Please refer to the COPYRIGHT
|
||||||
|
* file distributed with this source distribution.
|
||||||
|
*
|
||||||
|
* This program is free software; you can redistribute it and/or
|
||||||
|
* modify it under the terms of the GNU General Public License
|
||||||
|
* as published by the Free Software Foundation; either version 2
|
||||||
|
* of the License, or (at your option) any later version.
|
||||||
|
*
|
||||||
|
* This program is distributed in the hope that it will be useful,
|
||||||
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||||
|
* GNU General Public License for more details.
|
||||||
|
*
|
||||||
|
* You should have received a copy of the GNU General Public License
|
||||||
|
* along with this program; if not, write to the Free Software
|
||||||
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GARGOYLE_UTILS_H
|
||||||
|
#define GARGOYLE_UTILS_H
|
||||||
|
|
||||||
|
#include "common/rect.h"
|
||||||
|
#include "gargoyle/glk_types.h"
|
||||||
|
|
||||||
|
namespace Gargoyle {
|
||||||
|
|
||||||
|
typedef Common::Point Point;
|
||||||
|
|
||||||
|
struct Rect : public Common::Rect {
|
||||||
|
public:
|
||||||
|
static Rect fromXYWH(int x, int y, int w, int h) {
|
||||||
|
return Rect(x, y, x + w, y + h);
|
||||||
|
}
|
||||||
|
|
||||||
|
Rect() : Common::Rect() {}
|
||||||
|
Rect(int16 w, int16 h) : Common::Rect(w, h) {}
|
||||||
|
Rect(int16 x1, int16 y1, int16 x2, int16 y2) : Common::Rect(x1, y1, x2, y2) {}
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Converts a decimal or hexadecimal string into a number
|
||||||
|
*/
|
||||||
|
int strToInt(const char *s);
|
||||||
|
|
||||||
|
} // End of namespace Gargoyle
|
||||||
|
|
||||||
|
#endif
|
|
@ -36,7 +36,7 @@ GraphicsWindow::~GraphicsWindow() {
|
||||||
delete _surface;
|
delete _surface;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsWindow::rearrange(const Common::Rect &box) {
|
void GraphicsWindow::rearrange(const Rect &box) {
|
||||||
int newwid, newhgt;
|
int newwid, newhgt;
|
||||||
int bothwid, bothhgt;
|
int bothwid, bothhgt;
|
||||||
int oldw, oldh;
|
int oldw, oldh;
|
||||||
|
@ -92,7 +92,7 @@ void GraphicsWindow::redraw() {
|
||||||
_dirty = 0;
|
_dirty = 0;
|
||||||
|
|
||||||
if (_surface)
|
if (_surface)
|
||||||
screen.blitFrom(*_surface, Common::Point(_bbox.left, _bbox.top));
|
screen.blitFrom(*_surface, Point(_bbox.left, _bbox.top));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -120,7 +120,7 @@ glui32 GraphicsWindow::drawPicture(glui32 image, glsi32 xpos, glsi32 ypos, int s
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsWindow::eraseRect(bool whole, const Common::Rect &box) {
|
void GraphicsWindow::eraseRect(bool whole, const Rect &box) {
|
||||||
int x0 = box.left, y0 = box.top, x1 = box.right, y1 = box.bottom;
|
int x0 = box.left, y0 = box.top, x1 = box.right, y1 = box.bottom;
|
||||||
int hx0, hx1, hy0, hy1;
|
int hx0, hx1, hy0, hy1;
|
||||||
|
|
||||||
|
@ -148,11 +148,11 @@ void GraphicsWindow::eraseRect(bool whole, const Common::Rect &box) {
|
||||||
/* zero out hyperlinks for these coordinates */
|
/* zero out hyperlinks for these coordinates */
|
||||||
g_vm->_windowMask->putHyperlink(0, hx0, hy0, hx1, hy1);
|
g_vm->_windowMask->putHyperlink(0, hx0, hy0, hx1, hy1);
|
||||||
|
|
||||||
_surface->fillRect(Common::Rect(x0, y0, x1, y1), MKTAG(_bgnd[0], _bgnd[1], _bgnd[2], 0));
|
_surface->fillRect(Rect(x0, y0, x1, y1), MKTAG(_bgnd[0], _bgnd[1], _bgnd[2], 0));
|
||||||
touch();
|
touch();
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsWindow::fillRect(glui32 color, const Common::Rect &box) {
|
void GraphicsWindow::fillRect(glui32 color, const Rect &box) {
|
||||||
unsigned char col[3];
|
unsigned char col[3];
|
||||||
int x0 = box.left, y0 = box.top, x1 = box.right, y1 = box.bottom;
|
int x0 = box.left, y0 = box.top, x1 = box.right, y1 = box.bottom;
|
||||||
int hx0, hx1, hy0, hy1;
|
int hx0, hx1, hy0, hy1;
|
||||||
|
@ -178,7 +178,7 @@ void GraphicsWindow::fillRect(glui32 color, const Common::Rect &box) {
|
||||||
/* zero out hyperlinks for these coordinates */
|
/* zero out hyperlinks for these coordinates */
|
||||||
g_vm->_windowMask->putHyperlink(0, hx0, hy0, hx1, hy1);
|
g_vm->_windowMask->putHyperlink(0, hx0, hy0, hx1, hy1);
|
||||||
|
|
||||||
_surface->fillRect(Common::Rect(x0, y0, x1, y1), MKTAG(col[0], col[1], col[2], 0));
|
_surface->fillRect(Rect(x0, y0, x1, y1), MKTAG(col[0], col[1], col[2], 0));
|
||||||
touch();
|
touch();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -233,7 +233,7 @@ void GraphicsWindow::drawPicture(Picture *src, int x0, int y0, int width, int h
|
||||||
w = sx1 - sx0;
|
w = sx1 - sx0;
|
||||||
h = sy1 - sy0;
|
h = sy1 - sy0;
|
||||||
|
|
||||||
_surface->blitFrom(*g_vm->_screen, Common::Rect(sx0, sy0, sx0 + w, sy0 + h), Common::Point(0, 0));
|
_surface->blitFrom(*g_vm->_screen, Rect(sx0, sy0, sx0 + w, sy0 + h), Point(0, 0));
|
||||||
}
|
}
|
||||||
|
|
||||||
void GraphicsWindow::getSize(glui32 *width, glui32 *height) const {
|
void GraphicsWindow::getSize(glui32 *width, glui32 *height) const {
|
||||||
|
|
|
@ -58,7 +58,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Rearranges the window
|
* Rearranges the window
|
||||||
*/
|
*/
|
||||||
virtual void rearrange(const Common::Rect &box) override;
|
virtual void rearrange(const Rect &box) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get window split size within parent pair window
|
* Get window split size within parent pair window
|
||||||
|
@ -86,9 +86,9 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void redraw() override;
|
virtual void redraw() override;
|
||||||
|
|
||||||
virtual void eraseRect(bool whole, const Common::Rect &box) override;
|
virtual void eraseRect(bool whole, const Rect &box) override;
|
||||||
|
|
||||||
virtual void fillRect(glui32 color, const Common::Rect &box) override;
|
virtual void fillRect(glui32 color, const Rect &box) override;
|
||||||
|
|
||||||
virtual void getSize(glui32 *width, glui32 *height) const override;
|
virtual void getSize(glui32 *width, glui32 *height) const override;
|
||||||
|
|
||||||
|
|
|
@ -94,7 +94,7 @@ void WindowMask::putHyperlink(glui32 linkval, uint x0, uint y0, uint x1, uint y1
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
glui32 WindowMask::getHyperlink(const Common::Point &pos) {
|
glui32 WindowMask::getHyperlink(const Point &pos) {
|
||||||
if (!_hor || !_ver) {
|
if (!_hor || !_ver) {
|
||||||
warning("getHyperlink: struct not initialized");
|
warning("getHyperlink: struct not initialized");
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -110,7 +110,7 @@ glui32 WindowMask::getHyperlink(const Common::Point &pos) {
|
||||||
return _links[pos.x][pos.y];
|
return _links[pos.x][pos.y];
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowMask::startSelection(const Common::Point &pos) {
|
void WindowMask::startSelection(const Point &pos) {
|
||||||
int tx, ty;
|
int tx, ty;
|
||||||
|
|
||||||
if (!_hor || !_ver) {
|
if (!_hor || !_ver) {
|
||||||
|
@ -129,7 +129,7 @@ void WindowMask::startSelection(const Common::Point &pos) {
|
||||||
g_vm->_windows->selectionChanged();
|
g_vm->_windows->selectionChanged();
|
||||||
}
|
}
|
||||||
|
|
||||||
void WindowMask::moveSelection(const Common::Point &pos) {
|
void WindowMask::moveSelection(const Point &pos) {
|
||||||
int tx, ty;
|
int tx, ty;
|
||||||
|
|
||||||
if (ABS(pos.x - _lastX) < 5 && abs(pos.y - _lastY) < 5)
|
if (ABS(pos.x - _lastX) < 5 && abs(pos.y - _lastY) < 5)
|
||||||
|
|
|
@ -25,6 +25,7 @@
|
||||||
|
|
||||||
#include "common/rect.h"
|
#include "common/rect.h"
|
||||||
#include "gargoyle/glk_types.h"
|
#include "gargoyle/glk_types.h"
|
||||||
|
#include "gargoyle/utils.h"
|
||||||
|
|
||||||
namespace Gargoyle {
|
namespace Gargoyle {
|
||||||
|
|
||||||
|
@ -34,7 +35,7 @@ class WindowMask {
|
||||||
public:
|
public:
|
||||||
size_t _hor, _ver;
|
size_t _hor, _ver;
|
||||||
glui32 **_links;
|
glui32 **_links;
|
||||||
Common::Rect _select;
|
Rect _select;
|
||||||
|
|
||||||
static int _lastX, _lastY;
|
static int _lastX, _lastY;
|
||||||
public:
|
public:
|
||||||
|
@ -50,11 +51,11 @@ public:
|
||||||
|
|
||||||
void putHyperlink(glui32 linkval, uint x0, uint y0, uint x1, uint y1);
|
void putHyperlink(glui32 linkval, uint x0, uint y0, uint x1, uint y1);
|
||||||
|
|
||||||
glui32 getHyperlink(const Common::Point &pos);
|
glui32 getHyperlink(const Point &pos);
|
||||||
|
|
||||||
void startSelection(const Common::Point &pos);
|
void startSelection(const Point &pos);
|
||||||
|
|
||||||
void moveSelection(const Common::Point &pos);
|
void moveSelection(const Point &pos);
|
||||||
|
|
||||||
void clearSelection();
|
void clearSelection();
|
||||||
|
|
||||||
|
|
|
@ -36,8 +36,8 @@ PairWindow::PairWindow(Windows *windows, glui32 method, Window *key, glui32 size
|
||||||
_type = wintype_Pair;
|
_type = wintype_Pair;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PairWindow::rearrange(const Common::Rect &box) {
|
void PairWindow::rearrange(const Rect &box) {
|
||||||
Common::Rect box1, box2;
|
Rect box1, box2;
|
||||||
int min, diff, split, splitwid, max;
|
int min, diff, split, splitwid, max;
|
||||||
Window *ch1, *ch2;
|
Window *ch1, *ch2;
|
||||||
|
|
||||||
|
|
|
@ -51,7 +51,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Rearranges the window
|
* Rearranges the window
|
||||||
*/
|
*/
|
||||||
virtual void rearrange(const Common::Rect &box) override;
|
virtual void rearrange(const Rect &box) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Redraw the window
|
* Redraw the window
|
||||||
|
|
|
@ -70,7 +70,7 @@ TextBufferWindow::~TextBufferWindow() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextBufferWindow::rearrange(const Common::Rect &box) {
|
void TextBufferWindow::rearrange(const Rect &box) {
|
||||||
Window::rearrange(box);
|
Window::rearrange(box);
|
||||||
int newwid, newhgt;
|
int newwid, newhgt;
|
||||||
int rnd;
|
int rnd;
|
||||||
|
@ -371,7 +371,7 @@ void TextBufferWindow::touch(int line) {
|
||||||
int y = _bbox.top + g_conf->_tMarginY + (_height - line - 1) * g_conf->_leading;
|
int y = _bbox.top + g_conf->_tMarginY + (_height - line - 1) * g_conf->_leading;
|
||||||
_lines[line]._dirty = 1;
|
_lines[line]._dirty = 1;
|
||||||
g_vm->_windowMask->clearSelection();
|
g_vm->_windowMask->clearSelection();
|
||||||
_windows->repaint(Common::Rect(_bbox.left, y - 2, _bbox.right, y + g_conf->_leading + 2));
|
_windows->repaint(Rect(_bbox.left, y - 2, _bbox.right, y + g_conf->_leading + 2));
|
||||||
}
|
}
|
||||||
|
|
||||||
glui32 TextBufferWindow::getSplit(glui32 size, bool vertical) const {
|
glui32 TextBufferWindow::getSplit(glui32 size, bool vertical) const {
|
||||||
|
@ -567,7 +567,7 @@ void TextBufferWindow::clear() {
|
||||||
touch(i);
|
touch(i);
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextBufferWindow::click(const Common::Point &newPos) {
|
void TextBufferWindow::click(const Point &newPos) {
|
||||||
int gh = false;
|
int gh = false;
|
||||||
int gs = false;
|
int gs = false;
|
||||||
|
|
||||||
|
@ -843,7 +843,7 @@ void TextBufferWindow::redraw() {
|
||||||
|
|
||||||
/* repaint previously selected lines if needed */
|
/* repaint previously selected lines if needed */
|
||||||
if (ln->_repaint && !Windows::_forceRedraw)
|
if (ln->_repaint && !Windows::_forceRedraw)
|
||||||
_windows->redrawRect(Common::Rect(x0 / GLI_SUBPIX, y,
|
_windows->redrawRect(Rect(x0 / GLI_SUBPIX, y,
|
||||||
x1/GLI_SUBPIX, y + g_conf->_leading));
|
x1/GLI_SUBPIX, y + g_conf->_leading));
|
||||||
|
|
||||||
/* keep selected line dirty and flag for repaint */
|
/* keep selected line dirty and flag for repaint */
|
||||||
|
@ -954,8 +954,7 @@ void TextBufferWindow::redraw() {
|
||||||
* fill in background colors
|
* fill in background colors
|
||||||
*/
|
*/
|
||||||
color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
||||||
screen.fillRect(x0/GLI_SUBPIX, y,
|
screen.fillRect(Rect::fromXYWH(x0 / GLI_SUBPIX, y, (x1-x0) / GLI_SUBPIX, g_conf->_leading),
|
||||||
(x1-x0) / GLI_SUBPIX, g_conf->_leading,
|
|
||||||
color);
|
color);
|
||||||
|
|
||||||
x = x0 + SLOP + ln->_lm;
|
x = x0 + SLOP + ln->_lm;
|
||||||
|
@ -967,13 +966,11 @@ void TextBufferWindow::redraw() {
|
||||||
font = ln->_attrs[a].attrFont(_styles);
|
font = ln->_attrs[a].attrFont(_styles);
|
||||||
color = ln->_attrs[a].attrBg(_styles);
|
color = ln->_attrs[a].attrBg(_styles);
|
||||||
w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw);
|
w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw);
|
||||||
screen.fillRect(x/GLI_SUBPIX, y,
|
screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, w / GLI_SUBPIX, g_conf->_leading),
|
||||||
w/GLI_SUBPIX, g_conf->_leading,
|
|
||||||
color);
|
color);
|
||||||
if (link) {
|
if (link) {
|
||||||
screen.fillRect(x/GLI_SUBPIX + 1, y + g_conf->_baseLine + 1,
|
screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX + 1, y + g_conf->_baseLine + 1,
|
||||||
w/GLI_SUBPIX + 1, g_conf->_linkStyle,
|
w / GLI_SUBPIX + 1, g_conf->_linkStyle), g_conf->_linkColor);
|
||||||
g_conf->_linkColor);
|
|
||||||
g_vm->_windowMask->putHyperlink(link, x/GLI_SUBPIX, y,
|
g_vm->_windowMask->putHyperlink(link, x/GLI_SUBPIX, y,
|
||||||
x/GLI_SUBPIX + w/GLI_SUBPIX,
|
x/GLI_SUBPIX + w/GLI_SUBPIX,
|
||||||
y + g_conf->_leading);
|
y + g_conf->_leading);
|
||||||
|
@ -986,22 +983,18 @@ void TextBufferWindow::redraw() {
|
||||||
font = ln->_attrs[a].attrFont(_styles);
|
font = ln->_attrs[a].attrFont(_styles);
|
||||||
color = ln->_attrs[a].attrBg(_styles);
|
color = ln->_attrs[a].attrBg(_styles);
|
||||||
w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw);
|
w = screen.stringWidthUni(font, Common::U32String(ln->_chars + a, b - a), spw);
|
||||||
screen.fillRect(x/GLI_SUBPIX, y, w/GLI_SUBPIX,
|
screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, w / GLI_SUBPIX, g_conf->_leading), color);
|
||||||
g_conf->_leading, color);
|
|
||||||
if (link) {
|
if (link) {
|
||||||
screen.fillRect(x/GLI_SUBPIX + 1, y + g_conf->_baseLine + 1,
|
screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX + 1, y + g_conf->_baseLine + 1,
|
||||||
w/GLI_SUBPIX + 1, g_conf->_linkStyle,
|
w/GLI_SUBPIX + 1, g_conf->_linkStyle), g_conf->_linkColor);
|
||||||
g_conf->_linkColor);
|
g_vm->_windowMask->putHyperlink(link, x / GLI_SUBPIX, y,
|
||||||
g_vm->_windowMask->putHyperlink(link, x/GLI_SUBPIX, y,
|
x / GLI_SUBPIX + w / GLI_SUBPIX,
|
||||||
x/GLI_SUBPIX + w/GLI_SUBPIX,
|
|
||||||
y + g_conf->_leading);
|
y + g_conf->_leading);
|
||||||
}
|
}
|
||||||
x += w;
|
x += w;
|
||||||
|
|
||||||
color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
||||||
screen.fillRect(x/GLI_SUBPIX, y,
|
screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, x1/GLI_SUBPIX - x/GLI_SUBPIX, g_conf->_leading), color);
|
||||||
x1/GLI_SUBPIX - x/GLI_SUBPIX, g_conf->_leading,
|
|
||||||
color);
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* draw caret
|
* draw caret
|
||||||
|
@ -1010,7 +1003,7 @@ void TextBufferWindow::redraw() {
|
||||||
if (_windows->getFocusWindow() == this && i == 0 && (_lineRequest || _lineRequestUni)) {
|
if (_windows->getFocusWindow() == this && i == 0 && (_lineRequest || _lineRequestUni)) {
|
||||||
w = calcWidth(_chars, _attrs, 0, _inCurs, spw);
|
w = calcWidth(_chars, _attrs, 0, _inCurs, spw);
|
||||||
if (w < pw - g_conf->_caretShape * 2 * GLI_SUBPIX)
|
if (w < pw - g_conf->_caretShape * 2 * GLI_SUBPIX)
|
||||||
screen.drawCaret(Common::Point(x0 + SLOP + ln->_lm + w, y + g_conf->_baseLine));
|
screen.drawCaret(Point(x0 + SLOP + ln->_lm + w, y + g_conf->_baseLine));
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1025,7 +1018,7 @@ void TextBufferWindow::redraw() {
|
||||||
link = ln->_attrs[a].hyper;
|
link = ln->_attrs[a].hyper;
|
||||||
font = ln->_attrs[a].attrFont(_styles);
|
font = ln->_attrs[a].attrFont(_styles);
|
||||||
color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles);
|
color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles);
|
||||||
x = screen.drawStringUni(Common::Point(x, y + g_conf->_baseLine),
|
x = screen.drawStringUni(Point(x, y + g_conf->_baseLine),
|
||||||
font, color, Common::U32String(ln->_chars + a, b - a), spw);
|
font, color, Common::U32String(ln->_chars + a, b - a), spw);
|
||||||
a = b;
|
a = b;
|
||||||
}
|
}
|
||||||
|
@ -1033,7 +1026,7 @@ void TextBufferWindow::redraw() {
|
||||||
link = ln->_attrs[a].hyper;
|
link = ln->_attrs[a].hyper;
|
||||||
font = ln->_attrs[a].attrFont(_styles);
|
font = ln->_attrs[a].attrFont(_styles);
|
||||||
color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles);
|
color = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(_styles);
|
||||||
screen.drawStringUni(Common::Point(x, y + g_conf->_baseLine),
|
screen.drawStringUni(Point(x, y + g_conf->_baseLine),
|
||||||
font, color, Common::U32String(ln->_chars + a, linelen - a), spw);
|
font, color, Common::U32String(ln->_chars + a, linelen - a), spw);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1049,9 +1042,7 @@ void TextBufferWindow::redraw() {
|
||||||
x1/GLI_SUBPIX, y + g_conf->_leading);
|
x1/GLI_SUBPIX, y + g_conf->_leading);
|
||||||
|
|
||||||
color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
||||||
screen.fillRect(x/GLI_SUBPIX, y,
|
screen.fillRect(Rect::fromXYWH(x / GLI_SUBPIX, y, x1 / GLI_SUBPIX - x / GLI_SUBPIX, g_conf->_leading), color);
|
||||||
x1/GLI_SUBPIX - x/GLI_SUBPIX, g_conf->_leading,
|
|
||||||
color);
|
|
||||||
|
|
||||||
w = screen.stringWidth(g_conf->_moreFont, g_conf->_morePrompt);
|
w = screen.stringWidth(g_conf->_moreFont, g_conf->_morePrompt);
|
||||||
|
|
||||||
|
@ -1061,7 +1052,7 @@ void TextBufferWindow::redraw() {
|
||||||
x = x1 - SLOP - w;
|
x = x1 - SLOP - w;
|
||||||
|
|
||||||
color = Windows::_overrideFgSet ? g_conf->_moreColor : _fgColor;
|
color = Windows::_overrideFgSet ? g_conf->_moreColor : _fgColor;
|
||||||
screen.drawString(Common::Point(x, y + g_conf->_baseLine),
|
screen.drawString(Point(x, y + g_conf->_baseLine),
|
||||||
g_conf->_moreFont, color, g_conf->_morePrompt);
|
g_conf->_moreFont, color, g_conf->_morePrompt);
|
||||||
y1 = y; /* don't want pictures overdrawing "[more]" */
|
y1 = y; /* don't want pictures overdrawing "[more]" */
|
||||||
|
|
||||||
|
@ -1141,16 +1132,14 @@ void TextBufferWindow::redraw() {
|
||||||
t0 = t1 = y0;
|
t0 = t1 = y0;
|
||||||
}
|
}
|
||||||
|
|
||||||
screen.fillRect(x0+1, y0, x1-x0-2, y1-y0, g_conf->_scrollBg);
|
screen.fillRect(Rect::fromXYWH(x0 + 1, y0, x1-x0 - 2, y1 - y0), g_conf->_scrollBg);
|
||||||
screen.fillRect(x0+1, t0, x1-x0-2, t1-t0, g_conf->_scrollFg);
|
screen.fillRect(Rect::fromXYWH(x0 + 1, t0, x1-x0 - 2, t1 - t0), g_conf->_scrollFg);
|
||||||
|
|
||||||
for (i = 0; i < g_conf->_scrollWidth / 2 + 1; i++) {
|
for (i = 0; i < g_conf->_scrollWidth / 2 + 1; i++) {
|
||||||
screen.fillRect(x0+g_conf->_scrollWidth/2-i,
|
screen.fillRect(Rect::fromXYWH(x0 + g_conf->_scrollWidth / 2 - i,
|
||||||
y0 - g_conf->_scrollWidth/2 + i,
|
y0 - g_conf->_scrollWidth/2 + i, i * 2, 1), g_conf->_scrollFg);
|
||||||
i*2, 1, g_conf->_scrollFg);
|
screen.fillRect(Rect::fromXYWH(x0 + g_conf->_scrollWidth / 2 - i,
|
||||||
screen.fillRect(x0+g_conf->_scrollWidth/2-i,
|
y1 + g_conf->_scrollWidth / 2 - i, i * 2, 1), g_conf->_scrollFg);
|
||||||
y1 + g_conf->_scrollWidth/2 - i,
|
|
||||||
i*2, 1, g_conf->_scrollFg);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -147,7 +147,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Rearranges the window
|
* Rearranges the window
|
||||||
*/
|
*/
|
||||||
virtual void rearrange(const Common::Rect &box) override;
|
virtual void rearrange(const Rect &box) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get window split size within parent pair window
|
* Get window split size within parent pair window
|
||||||
|
@ -172,7 +172,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Click the window
|
* Click the window
|
||||||
*/
|
*/
|
||||||
virtual void click(const Common::Point &newPos) override;
|
virtual void click(const Point &newPos) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare for inputing a line
|
* Prepare for inputing a line
|
||||||
|
|
|
@ -52,7 +52,7 @@ TextGridWindow::~TextGridWindow() {
|
||||||
delete[] _lineTerminators;
|
delete[] _lineTerminators;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextGridWindow::rearrange(const Common::Rect &box) {
|
void TextGridWindow::rearrange(const Rect &box) {
|
||||||
Window::rearrange(box);
|
Window::rearrange(box);
|
||||||
int newwid, newhgt;
|
int newwid, newhgt;
|
||||||
|
|
||||||
|
@ -76,7 +76,7 @@ void TextGridWindow::rearrange(const Common::Rect &box) {
|
||||||
void TextGridWindow::touch(int line) {
|
void TextGridWindow::touch(int line) {
|
||||||
int y = _bbox.top + line * g_conf->_leading;
|
int y = _bbox.top + line * g_conf->_leading;
|
||||||
_lines[line].dirty = true;
|
_lines[line].dirty = true;
|
||||||
_windows->repaint(Common::Rect(_bbox.left, y, _bbox.right, y + g_conf->_leading));
|
_windows->repaint(Rect(_bbox.left, y, _bbox.right, y + g_conf->_leading));
|
||||||
}
|
}
|
||||||
|
|
||||||
glui32 TextGridWindow::getSplit(glui32 size, bool vertical) const {
|
glui32 TextGridWindow::getSplit(glui32 size, bool vertical) const {
|
||||||
|
@ -161,7 +161,7 @@ bool TextGridWindow::unputCharUni(uint32 ch) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextGridWindow::moveCursor(const Common::Point &pos) {
|
void TextGridWindow::moveCursor(const Point &pos) {
|
||||||
// If the values are negative, they're really huge positive numbers --
|
// If the values are negative, they're really huge positive numbers --
|
||||||
// remember that they were cast from glui32. So set them huge and
|
// remember that they were cast from glui32. So set them huge and
|
||||||
// let canonicalization take its course.
|
// let canonicalization take its course.
|
||||||
|
@ -189,7 +189,7 @@ void TextGridWindow::clear() {
|
||||||
_curY = 0;
|
_curY = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextGridWindow::click(const Common::Point &newPos) {
|
void TextGridWindow::click(const Point &newPos) {
|
||||||
int x = newPos.x - _bbox.left;
|
int x = newPos.x - _bbox.left;
|
||||||
int y = newPos.y - _bbox.top;
|
int y = newPos.y - _bbox.top;
|
||||||
|
|
||||||
|
@ -603,17 +603,17 @@ void TextGridWindow::redraw() {
|
||||||
fgcolor = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(styles);
|
fgcolor = link ? g_conf->_linkColor : ln->_attrs[a].attrFg(styles);
|
||||||
bgcolor = ln->_attrs[a].attrBg(styles);
|
bgcolor = ln->_attrs[a].attrBg(styles);
|
||||||
w = (b - a) * g_conf->_cellW;
|
w = (b - a) * g_conf->_cellW;
|
||||||
screen.fillRect(x, y, w, g_conf->_leading, bgcolor);
|
screen.fillRect(Rect::fromXYWH(x, y, w, g_conf->_leading), bgcolor);
|
||||||
o = x;
|
o = x;
|
||||||
|
|
||||||
for (k = a; k < b; k++) {
|
for (k = a; k < b; k++) {
|
||||||
screen.drawStringUni(Common::Point(o * GLI_SUBPIX, y + g_conf->_baseLine),
|
screen.drawStringUni(Point(o * GLI_SUBPIX, y + g_conf->_baseLine),
|
||||||
font, fgcolor, Common::U32String(&ln->_chars[k], 1), -1);
|
font, fgcolor, Common::U32String(&ln->_chars[k], 1), -1);
|
||||||
o += g_conf->_cellW;
|
o += g_conf->_cellW;
|
||||||
}
|
}
|
||||||
if (link) {
|
if (link) {
|
||||||
screen.fillRect(x, y + g_conf->_baseLine + 1, w,
|
screen.fillRect(Rect::fromXYWH(x, y + g_conf->_baseLine + 1, w,
|
||||||
g_conf->_linkStyle, g_conf->_linkColor);
|
g_conf->_linkStyle), g_conf->_linkColor);
|
||||||
g_vm->_windowMask->putHyperlink(link, x, y, x + w, y + g_conf->_leading);
|
g_vm->_windowMask->putHyperlink(link, x, y, x + w, y + g_conf->_leading);
|
||||||
}
|
}
|
||||||
x += w;
|
x += w;
|
||||||
|
@ -626,17 +626,17 @@ void TextGridWindow::redraw() {
|
||||||
bgcolor = ln->_attrs[a].attrBg(styles);
|
bgcolor = ln->_attrs[a].attrBg(styles);
|
||||||
w = (b - a) * g_conf->_cellW;
|
w = (b - a) * g_conf->_cellW;
|
||||||
w += _bbox.right - (x + w);
|
w += _bbox.right - (x + w);
|
||||||
screen.fillRect(x, y, w, g_conf->_leading, bgcolor);
|
screen.fillRect(Rect::fromXYWH(x, y, w, g_conf->_leading), bgcolor);
|
||||||
|
|
||||||
o = x;
|
o = x;
|
||||||
for (k = a; k < b; k++) {
|
for (k = a; k < b; k++) {
|
||||||
screen.drawStringUni(Common::Point(o * GLI_SUBPIX, y + g_conf->_baseLine),
|
screen.drawStringUni(Point(o * GLI_SUBPIX, y + g_conf->_baseLine),
|
||||||
font, fgcolor, Common::U32String(&ln->_chars[k], 1));
|
font, fgcolor, Common::U32String(&ln->_chars[k], 1));
|
||||||
o += g_conf->_cellW;
|
o += g_conf->_cellW;
|
||||||
}
|
}
|
||||||
if (link) {
|
if (link) {
|
||||||
screen.fillRect(x, y + g_conf->_baseLine + 1, w,
|
screen.fillRect(Rect::fromXYWH(x, y + g_conf->_baseLine + 1, w, g_conf->_linkStyle),
|
||||||
g_conf->_linkStyle, g_conf->_linkColor);
|
g_conf->_linkColor);
|
||||||
g_vm->_windowMask->putHyperlink(link, x, y, x + w, y + g_conf->_leading);
|
g_vm->_windowMask->putHyperlink(link, x, y, x + w, y + g_conf->_leading);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -90,7 +90,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Rearranges the window
|
* Rearranges the window
|
||||||
*/
|
*/
|
||||||
virtual void rearrange(const Common::Rect &box) override;
|
virtual void rearrange(const Rect &box) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get window split size within parent pair window
|
* Get window split size within parent pair window
|
||||||
|
@ -110,7 +110,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Move the cursor
|
* Move the cursor
|
||||||
*/
|
*/
|
||||||
virtual void moveCursor(const Common::Point &newPos) override;
|
virtual void moveCursor(const Point &newPos) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the window
|
* Clear the window
|
||||||
|
@ -120,7 +120,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Click the window
|
* Click the window
|
||||||
*/
|
*/
|
||||||
virtual void click(const Common::Point &newPos) override;
|
virtual void click(const Point &newPos) override;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Cancel a hyperlink event
|
* Cancel a hyperlink event
|
||||||
|
|
|
@ -249,7 +249,7 @@ PairWindow *Windows::newPairWindow(glui32 method, Window *key, glui32 size) {
|
||||||
|
|
||||||
void Windows::rearrange() {
|
void Windows::rearrange() {
|
||||||
if (_rootWin) {
|
if (_rootWin) {
|
||||||
Common::Rect box;
|
Rect box;
|
||||||
|
|
||||||
if (g_conf->_lockCols) {
|
if (g_conf->_lockCols) {
|
||||||
int desired_width = g_conf->_wMarginSaveX * 2 + g_conf->_cellW * g_conf->_cols;
|
int desired_width = g_conf->_wMarginSaveX * 2 + g_conf->_cellW * g_conf->_cols;
|
||||||
|
@ -384,7 +384,7 @@ void Windows::inputHandleKey(glui32 key) {
|
||||||
g_vm->quitGame();
|
g_vm->quitGame();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Windows::inputHandleClick(const Common::Point &pos) {
|
void Windows::inputHandleClick(const Point &pos) {
|
||||||
if (_rootWin)
|
if (_rootWin)
|
||||||
_rootWin->click(pos);
|
_rootWin->click(pos);
|
||||||
}
|
}
|
||||||
|
@ -399,7 +399,7 @@ void Windows::redraw() {
|
||||||
_claimSelect = false;
|
_claimSelect = false;
|
||||||
|
|
||||||
if (_forceRedraw) {
|
if (_forceRedraw) {
|
||||||
repaint(Common::Rect(0, 0, g_conf->_imageW, g_conf->_imageH));
|
repaint(Rect(0, 0, g_conf->_imageW, g_conf->_imageH));
|
||||||
g_vm->_screen->fill(g_conf->_windowColor);
|
g_vm->_screen->fill(g_conf->_windowColor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -412,12 +412,12 @@ void Windows::redraw() {
|
||||||
_forceRedraw = 0;
|
_forceRedraw = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Windows::redrawRect(const Common::Rect &r) {
|
void Windows::redrawRect(const Rect &r) {
|
||||||
_drawSelect = true;
|
_drawSelect = true;
|
||||||
repaint(r);
|
repaint(r);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Windows::repaint(const Common::Rect &box) {
|
void Windows::repaint(const Rect &box) {
|
||||||
// No implementation
|
// No implementation
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -556,7 +556,7 @@ void Window::cancelLineEvent(Event *ev) {
|
||||||
ev->clear();
|
ev->clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::moveCursor(const Common::Point &newPos) {
|
void Window::moveCursor(const Point &newPos) {
|
||||||
warning("moveCursor: not a TextGrid window");
|
warning("moveCursor: not a TextGrid window");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -572,7 +572,7 @@ void Window::redraw() {
|
||||||
if (Windows::_forceRedraw) {
|
if (Windows::_forceRedraw) {
|
||||||
unsigned char *color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
unsigned char *color = Windows::_overrideBgSet ? g_conf->_windowColor : _bgColor;
|
||||||
int y0 = _yAdj ? _bbox.top - _yAdj : _bbox.top;
|
int y0 = _yAdj ? _bbox.top - _yAdj : _bbox.top;
|
||||||
g_vm->_screen->fillRect(_bbox.left, y0, _bbox.width(), _bbox.bottom - y0, color);
|
g_vm->_screen->fillRect(Rect(_bbox.left, y0, _bbox.right, _bbox.bottom), color);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -604,11 +604,11 @@ void Window::flowBreak() {
|
||||||
warning("flowBreak: not a text buffer window");
|
warning("flowBreak: not a text buffer window");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::eraseRect(bool whole, const Common::Rect &box) {
|
void Window::eraseRect(bool whole, const Rect &box) {
|
||||||
warning("eraseRect: not a graphics window");
|
warning("eraseRect: not a graphics window");
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::fillRect(glui32 color, const Common::Rect &box) {
|
void Window::fillRect(glui32 color, const Rect &box) {
|
||||||
warning("fillRect: not a graphics window");
|
warning("fillRect: not a graphics window");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -179,7 +179,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Handle mouse clicks
|
* Handle mouse clicks
|
||||||
*/
|
*/
|
||||||
void inputHandleClick(const Common::Point &pos);
|
void inputHandleClick(const Point &pos);
|
||||||
|
|
||||||
void selectionChanged();
|
void selectionChanged();
|
||||||
|
|
||||||
|
@ -192,12 +192,12 @@ public:
|
||||||
|
|
||||||
void redraw();
|
void redraw();
|
||||||
|
|
||||||
void redrawRect(const Common::Rect &r);
|
void redrawRect(const Rect &r);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Repaint an area of the windows
|
* Repaint an area of the windows
|
||||||
*/
|
*/
|
||||||
void repaint(const Common::Rect &box);
|
void repaint(const Rect &box);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get an iterator that will move over the tree
|
* Get an iterator that will move over the tree
|
||||||
|
@ -282,7 +282,7 @@ public:
|
||||||
|
|
||||||
Window *_parent; ///< pair window which contains this one
|
Window *_parent; ///< pair window which contains this one
|
||||||
Window *_next, *_prev; ///< in the big linked list of windows
|
Window *_next, *_prev; ///< in the big linked list of windows
|
||||||
Common::Rect _bbox;
|
Rect _bbox;
|
||||||
int _yAdj;
|
int _yAdj;
|
||||||
|
|
||||||
Stream *_stream; ///< the window stream.
|
Stream *_stream; ///< the window stream.
|
||||||
|
@ -328,7 +328,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Rearranges the window
|
* Rearranges the window
|
||||||
*/
|
*/
|
||||||
virtual void rearrange(const Common::Rect &box) { _bbox = box; }
|
virtual void rearrange(const Rect &box) { _bbox = box; }
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get window split size within parent pair window
|
* Get window split size within parent pair window
|
||||||
|
@ -348,7 +348,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Move the cursor
|
* Move the cursor
|
||||||
*/
|
*/
|
||||||
virtual void moveCursor(const Common::Point &newPos);
|
virtual void moveCursor(const Point &newPos);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Clear the window
|
* Clear the window
|
||||||
|
@ -358,7 +358,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* Click the window
|
* Click the window
|
||||||
*/
|
*/
|
||||||
virtual void click(const Common::Point &newPos) {}
|
virtual void click(const Point &newPos) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Prepare for inputing a line
|
* Prepare for inputing a line
|
||||||
|
@ -423,9 +423,9 @@ public:
|
||||||
|
|
||||||
virtual void flowBreak();
|
virtual void flowBreak();
|
||||||
|
|
||||||
virtual void eraseRect(bool whole, const Common::Rect &box);
|
virtual void eraseRect(bool whole, const Rect &box);
|
||||||
|
|
||||||
virtual void fillRect(glui32 color, const Common::Rect &box);
|
virtual void fillRect(glui32 color, const Rect &box);
|
||||||
|
|
||||||
virtual void setBackgroundColor(glui32 color);
|
virtual void setBackgroundColor(glui32 color);
|
||||||
};
|
};
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue