static Pen doGetTile_default(int x, int y, bool map) { auto dim = Screen::getWindowSize(); if (x < 0 || x >= dim.x || y < 0 || y >= dim.y) return Pen(0,0,0,-1); int index = x*dim.y + y; auto screen = gps->screen + index*4; if (screen[3] & 0x80) return Pen(0,0,0,-1); Pen pen( screen[0], screen[1], screen[2], screen[3]?true:false, gps->screentexpos[index] ); if (pen.tile) { if (gps->screentexpos_grayscale[index]) { pen.tile_mode = Screen::Pen::TileColor; pen.tile_fg = gps->screentexpos_cf[index]; pen.tile_bg = gps->screentexpos_cbr[index]; } else if (gps->screentexpos_addcolor[index]) { pen.tile_mode = Screen::Pen::CharColor; } } return pen; }
bool Screen::clear() { if (!gps) return false; auto dim = getWindowSize(); return fillRect(Pen(' ',0,0,false), 0, 0, dim.x-1, dim.y-1); }
Pen PenArray::get_tile(unsigned int x, unsigned int y) { if (x < dimx && y < dimy) return buffer[(y * dimx) + x]; return Pen(0, 0, 0, 0, false); }
Pen Screen::readTile(int x, int y, bool map) { if (!gps) return Pen(0,0,0,-1); return doGetTile(x, y, map); }