GLK: Added window getSize methods

This commit is contained in:
Paul Gilbert 2018-10-24 22:11:29 -07:00 committed by Paul Gilbert
parent 49b8281ce3
commit 594f63f475
9 changed files with 39 additions and 23 deletions

View File

@ -83,8 +83,12 @@ void Glk::glk_window_close(winid_t win, stream_result_t *result) {
}
}
void Glk::glk_window_get_size(winid_t win, glui32 *widthptr, glui32 *heightptr) {
// TODO
void Glk::glk_window_get_size(winid_t win, glui32 *width, glui32 *height) {
if (!win) {
warning("window_get_size: invalid ref");
} else {
win->getSize(width, height);
}
}
void Glk::glk_window_set_arrangement(winid_t win, glui32 method, glui32 size, winid_t keywin) {

View File

@ -71,12 +71,11 @@ public:
glui32 wintype, glui32 rock = 0) const;
void glk_window_close(winid_t win, stream_result_t *result);
void glk_window_get_size(winid_t win, glui32 *widthptr,
glui32 *heightptr);
void glk_window_get_size(winid_t win, glui32 *width, glui32 *height);
void glk_window_set_arrangement(winid_t win, glui32 method,
glui32 size, winid_t keywin);
glui32 size, winid_t keyWin);
void glk_window_get_arrangement(winid_t win, glui32 *method,
glui32 *size, winid_t *keywin);
glui32 *size, winid_t *keyWin);
winid_t glk_window_iterate(winid_t win, glui32 *rockptr);
glui32 glk_window_get_rock(winid_t win);
glui32 glk_window_get_type(winid_t win);

View File

@ -82,24 +82,10 @@ public:
*/
virtual void redraw() override;
virtual void getSize(glui32 *width, glui32 *height) override;
glui32 drawPicture(glui32 image, glsi32 xpos, glsi32 ypos, int scale,
glui32 imagewidth, glui32 imageheight);
/**
* Get the window dimensions
*/
void getSize(glui32 *w, glui32 *h) {
*w = _w;
*h = _h;
}
/**
* Set the window dimensions
*/
void setSize(glui32 w, glui32 h) {
_w = w;
_h = h;
}
};
} // End of namespace Gargoyle

View File

@ -1633,6 +1633,13 @@ void TextBufferWindow::copyTextToClipboard(const glui32 *text, size_t len) {
// TODO
}
void TextBufferWindow::getSize(glui32 *width, glui32 *height) {
if (width)
*width = (_bbox.width() - g_conf->_tMarginX * 2) / g_conf->_cellW;
if (height)
*height = (_bbox.height() - g_conf->_tMarginY * 2) / g_conf->_cellH;
}
/*--------------------------------------------------------------------------*/
TextBufferWindow::TextBufferRow::TextBufferRow() : _len(0), _newLine(0), _dirty(false),

View File

@ -206,6 +206,8 @@ public:
virtual void acceptReadChar(glui32 arg) override;
virtual void getSize(glui32 *width, glui32 *height) override;
int acceptScroll(glui32 arg);
glui32 drawPicture(glui32 image, glui32 align, glui32 scaled, glui32 width, glui32 height);

View File

@ -645,6 +645,13 @@ void TextGridWindow::redraw() {
}
}
void TextGridWindow::getSize(glui32 *width, glui32 *height) {
if (width)
*width = _bbox.width() / g_conf->_cellW;
if (height)
*height = _bbox.height() / g_conf->_cellH;
}
/*--------------------------------------------------------------------------*/
void TextGridWindow::TextGridRow::resize(size_t newSize) {

View File

@ -155,6 +155,8 @@ public:
virtual void acceptReadLine(glui32 arg) override;
virtual void acceptReadChar(glui32 arg) override;
virtual void getSize(glui32 *width, glui32 *height) override;
};
} // End of namespace Gargoyle

View File

@ -503,6 +503,13 @@ bool Window::imageDraw(glui32 image, glui32 align, glsi32 val1, glsi32 val2) {
return false;
}
void Window::getSize(glui32 *width, glui32 *height) {
if (width)
*width = 0;
if (height)
*height = 0;
}
/*--------------------------------------------------------------------------*/
BlankWindow::BlankWindow(Windows *windows, uint32 rock) : Window(windows, rock) {

View File

@ -360,6 +360,8 @@ public:
bool imageDraw(glui32 image, glui32 align, glsi32 val1, glsi32 val2);
int acceptScroll(glui32 arg);
virtual glui32 drawPicture(glui32 image, glui32 align, glui32 scaled, glui32 width, glui32 height) { return false; }
virtual void acceptReadLine(glui32 arg);
@ -370,7 +372,7 @@ public:
virtual void setArrangement(glui32 method, glui32 size, Window *keyWin);
int acceptScroll(glui32 arg);
virtual void getSize(glui32 *width, glui32 *height);
};
typedef Window *winid_t;