--- deliantra/Deliantra-Client/Client.xs 2006/04/16 07:25:29 1.42 +++ deliantra/Deliantra-Client/Client.xs 2006/04/17 19:20:59 1.46 @@ -49,7 +49,14 @@ * reasonably well with bitstream vera */ PangoFontDescription *font = pango_context_get_font_description (context); - pango_font_description_set_absolute_size (font, self->base_height * (PANGO_SCALE * 8 / 10)); + + int height = self->base_height * (PANGO_SCALE * 8 / 10); + + if (pango_font_description_get_size (font) != height) + { + pango_font_description_set_absolute_size (font, height); + pango_layout_context_changed (self->pl); + } } static void @@ -393,6 +400,14 @@ pango_layout_set_markup (self->pl, text, textlen); } +SV * +get_text (CFClient::Layout self) + CODE: + RETVAL = newSVpv (pango_layout_get_text (self), 0); + SvUTF8_on (RETVAL); + OUTPUT: + RETVAL + void set_height (CFClient::Layout self, int base_height) CODE: @@ -580,6 +595,19 @@ tex->a = a; } +int +ox (CFClient::Map self) + ALIAS: + oy = 1 + CODE: + switch (ix) + { + case 0: RETVAL = self->ox; break; + case 1: RETVAL = self->oy; break; + } + OUTPUT: + RETVAL + void scroll (CFClient::Map self, int dx, int dy) CODE: @@ -594,8 +622,8 @@ else if (dy < 0) map_blank (self, self->x, self->y + self->h + dy + 1, self->w, 1 - dy); - self->x += dx; self->ox += dx; - self->y += dy; self->oy += dy; + self->ox += dx; self->x += dx; + self->oy += dy; self->y += dy; while (self->y < 0) { @@ -606,26 +634,13 @@ } } -int -ox (CFClient::Map self) - ALIAS: - oy = 1 - CODE: - switch (ix) - { - case 0: RETVAL = self->ox; break; - case 1: RETVAL = self->oy; break; - } - OUTPUT: - RETVAL - void map1a_update (CFClient::Map self, SV *data_) CODE: { uint8_t *data = (uint8_t *)SvPVbyte_nolen (data_); uint8_t *data_end = (uint8_t *)SvEND (data_); - + while (data < data_end) { int flags = (data [0] << 8) + data [1]; data += 2; @@ -637,14 +652,14 @@ if (flags & 15) { - if (cell->darkness < 0) // && x < self->w && y < self->h) + if (cell->darkness < 0) { cell->darkness = 0; cell->face [0] = 0; cell->face [1] = 0; cell->face [2] = 0; } - + cell->darkness = flags & 8 ? *data++ : 255; //TODO: don't trust server data to be in-range(!)