git-svn-id: https://crawl-ref.svn.sourceforge.net/svnroot/crawl-ref/trunk@2629 c06c8d41-db1a-0410-9941-cceddc491573
FWVE7KM7BGEZUFQVM7H7UFGM3QMMPT7QHLNXSP62HG3SMBIPZBSQC
W7GNFYY2W7NCSNNNXIVZ5FN6F2MIZO2JUQXV2JBOLGUC2DXST7OQC
5Y4NFPALXJQZGM7RQZVXDAOZSYDWUA4VXFARYR5GKPMZBC27YR6AC
RPOZZWKG5GLPHVZZ7ZKMKS64ZMV2LDCQSARBJFJ6FZOTOKCQO7FAC
PL6I2CMSTHY5ZHWVMIQE5YTM5S5VPKBNZM6QJVHZSSKOJGIJ5W4AC
K2CS6TCX2NDVL2ASEHGP4J4K4IJ6FP3ANNKTSIWVG43HPYSBX6ZQC
SDLKLUNFGVKDS55DDJZCBAVIB7NL3RRYPTACAY65SCUQKV6APFSAC
JM6GKZ6VMX6FNVOZIDXIV22HGX7YESMIFZFE6EEQVCMFJIEA3FNAC
RC6L3CIBLJEH4GWRFD7UQNGI6PZT74FRUVOYHSAN2XCC74NZUASQC
TAHSTXR7ROOMDFUSBUU4ZAIEWQLAS5CIRCTARLD4Q2BGNLSL7E5QC
EOMCPVNQLX3IMLC46EAO67DPBH5KEG2FQTPBLGU62HIRWA3UQ7XQC
WT66JDIRTLLP37SHTV4GI3V64JFJ4D25LNRLGCHFG6CLEFKJ3QGQC
UPJVSMMMHGRDUIJG4MZX6IBLQ4ODBF5Z3PF3RHDYTSAEOCVDZM5AC
W6IY6LF3MREPXC23AAKA2BJNUCJYCSOWY55DIWJWFLUEE2Y3LGNQC
TOKBONNNPTP2CIEHMMR4QAJZTXYETS55OGGDA6FY6NIMNDYMWJDAC
SVY2PTCLXR3KNPQAWXVXTTGCC5DR334HOAKHYO3VDDRWM2BWMALAC
#ifdef USE_CURSES
// NOTE: This affects libunix.cc draw state; use this just before setting
// textcolour and drawing a character and call set_altcharset(false)
// after you're done drawing.
//
static int cset_adjust(int raw)
{
if (Options.char_set != CSET_ASCII && Options.char_set != CSET_UNICODE)
{
// switch to alternate char set for 8-bit characters:
set_altcharset( raw > 127 );
// shift the DEC line drawing set:
if (Options.char_set == CSET_DEC
&& raw >= 0xE0)
{
raw &= 0x7F;
}
}
return (raw);
}
#endif
// newline
if (screen_x == 0 && screen_y > 0)
gotoxy( 1, screen_y + top );
unsigned ch = buffer2[bufcount2 - 2];
#ifdef USE_CURSES
ch = cset_adjust( ch );
#endif
textattr( buffer2[bufcount2 - 1] );
putwch(ch);
bufcount = 0;
for (count_y = 0; count_y < crawl_view.viewsz.y; count_y++)
{
gotoxy( crawl_view.viewp.x, crawl_view.viewp.y + count_y );
for (count_x = 0; count_x < crawl_view.viewsz.x; count_x++)
{
#ifdef USE_CURSES
buffy[bufcount] = cset_adjust( buffy[bufcount] );
#endif
textattr( buffy[bufcount + 1] );
putwch( buffy[bufcount] );
bufcount += 2;
}
}
puttext(crawl_view.viewp.x, crawl_view.viewp.y,
crawl_view.viewp.x + crawl_view.viewsz.x - 1,
crawl_view.viewp.y + crawl_view.viewsz.y - 1,
buffy);
// crawl_view_buffer
crawl_view_buffer::crawl_view_buffer()
: buffer(NULL)
{
}
crawl_view_buffer::~crawl_view_buffer()
{
delete [] buffer;
}
void crawl_view_buffer::size(const coord_def &sz)
{
delete [] buffer;
buffer = new screen_buffer_t [ sz.x * sz.y * 2 ];
}
//////////////////////////////////////////////////////////////////////////////
}
// NOTE: This affects libunix.cc draw state; use this just before setting
// textcolour and drawing a character and call set_altcharset(false)
// after you're done drawing.
//
int cset_adjust(int raw)
{
if (Options.char_set != CSET_ASCII && Options.char_set != CSET_UNICODE)
{
// switch to alternate char set for 8-bit characters:
set_altcharset( raw > 127 );
// shift the DEC line drawing set:
if (Options.char_set == CSET_DEC
&& raw >= 0xE0)
{
raw &= 0x7F;
}
}
return (raw);
void puttext(int x1, int y1, int x2, int y2, const screen_buffer_t *buf)
{
for (int y = y1; y <= y2; ++y)
{
gotoxy(x1, y);
for (int x = x1; x <= x2; ++x)
{
const screen_buffer_t ch = cset_adjust( *buf );
textattr( buf[1] );
putwch( ch );
buf += 2;
}
}
set_altcharset(false);
update_screen();
}