-/* NetHack 3.6 winmap.c $NHDT-Date: 1454977918 2016/02/09 00:31:58 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.27 $ */
+/* NetHack 3.6 winmap.c $NHDT-Date: 1454986883 2016/02/09 03:01:23 $ $NHDT-Branch: NetHack-3.6.0 $:$NHDT-Revision: 1.28 $ */
/* Copyright (c) Dean Luick, 1992 */
/* NetHack may be freely redistributed. See license for details. */
int color, och;
unsigned special;
#ifdef TEXTCOLOR
+ int colordif;
register unsigned char *co_ptr;
#endif
/* Only update if we need to. */
ch_ptr = &map_info->text_map.text[y][x];
-
-#ifdef TEXTCOLOR
- co_ptr = &map_info->text_map.colors[y][x];
- if (*ch_ptr != ch || *co_ptr != color)
-#else
- if (*ch_ptr != ch)
-#endif
- {
+ if (*ch_ptr != ch) {
*ch_ptr = ch;
+ if (!map_info->is_tile)
+ update_bbox = TRUE;
+ }
#ifdef TEXTCOLOR
- if ((special & MG_PET) && iflags.hilite_pet)
- color += CLR_MAX;
- if ((special & MG_OBJPILE) && iflags.hilite_pile)
- *co_ptr = color;
-#endif
+ co_ptr = &map_info->text_map.colors[y][x];
+ colordif = (((special & MG_PET) && iflags.hilite_pet)
+ || ((special & MG_OBJPILE) && iflags.hilite_pile))
+ ? CLR_MAX : 0;
+ if (*co_ptr != (uchar) (color + colordif)) {
+ *co_ptr = (uchar) (color + colordif);
if (!map_info->is_tile)
update_bbox = TRUE;
}
+#endif
}
if (update_bbox) { /* update row bbox */
set_color_gc(CLR_BRIGHT_CYAN, XtNbright_cyan);
set_color_gc(CLR_WHITE, XtNwhite);
#else
- set_gc(wp->w, font, XtNforeground, bgpixel, &map_info->text_map.copy_gc,
+ set_gc(wp->w, font, XtNforeground, bgpixel,
+ &map_info->text_map.copy_gc,
&map_info->text_map.inv_copy_gc);
#endif
}
map_all_stone(map_info);
(void) memset((genericptr_t) map_info->text_map.text, ' ',
- sizeof(map_info->text_map.text));
+ sizeof map_info->text_map.text);
#ifdef TEXTCOLOR
(void) memset((genericptr_t) map_info->text_map.colors, NO_COLOR,
- sizeof(map_info->text_map.colors));
+ sizeof map_info->text_map.colors);
#endif
/* force a full update */
(void) memset((genericptr_t) map_info->t_start, (char) 0,
- sizeof(map_info->t_start));
+ sizeof map_info->t_start);
(void) memset((genericptr_t) map_info->t_stop, (char) COLNO - 1,
- sizeof(map_info->t_stop));
+ sizeof map_info->t_stop);
display_map_window(wp);
}
#ifdef VERBOSE
printf("Font information:\n");
printf("fid = %ld, direction = %d\n", fs->fid, fs->direction);
- printf("first = %d, last = %d\n", fs->min_char_or_byte2,
- fs->max_char_or_byte2);
+ printf("first = %d, last = %d\n",
+ fs->min_char_or_byte2, fs->max_char_or_byte2);
printf("all chars exist? %s\n", fs->all_chars_exist ? "yes" : "no");
printf("min_bounds:lb=%d rb=%d width=%d asc=%d des=%d attr=%d\n",
fs->min_bounds.lbearing, fs->min_bounds.rbearing,
fs->max_bounds.width, fs->max_bounds.ascent,
fs->max_bounds.descent, fs->max_bounds.attributes);
printf("per_char = 0x%lx\n", (unsigned long) fs->per_char);
- printf("Text: (max) width = %d, height = %d\n", text_map->square_width,
- text_map->square_height);
+ printf("Text: (max) width = %d, height = %d\n",
+ text_map->square_width, text_map->square_height);
#endif
if (fs->min_bounds.width != fs->max_bounds.width)
* keyhit buffer
*/
#define INBUF_SIZE 64
-int inbuf[INBUF_SIZE];
-int incount = 0;
-int inptr = 0; /* points to valid data */
+static int inbuf[INBUF_SIZE];
+static int incount = 0;
+static int inptr = 0; /* points to valid data */
/*
* Keyboard and button event handler for map window.
}
#ifdef VERBOSE_UPDATE
- printf("update: [0x%x] %d %d %d %d\n", (int) wp->w, start_row, stop_row,
- start_col, stop_col);
+ printf("update: [0x%x] %d %d %d %d\n",
+ (int) wp->w, start_row, stop_row, start_col, stop_col);
#endif
win_start_row = start_row;
win_start_col = start_col;
src_y = (tile / TILES_PER_ROW) * tile_height;
XCopyArea(dpy, tile_pixmap, XtWindow(wp->w),
tile_map->black_gc, /* no grapics_expose */
- src_x, src_y, tile_width, tile_height, dest_x,
- dest_y);
+ src_x, src_y, tile_width, tile_height,
+ dest_x, dest_y);
if (glyph_is_pet(glyph) && iflags.hilite_pet) {
/* draw pet annotation (a heart) */
}
num_args = 0;
- XtSetArg(args[num_args], XtNwidth, wp->pixel_width);
- num_args++;
- XtSetArg(args[num_args], XtNheight, wp->pixel_height);
- num_args++;
+ XtSetArg(args[num_args], XtNwidth, wp->pixel_width); num_args++;
+ XtSetArg(args[num_args], XtNheight, wp->pixel_height); num_args++;
XtSetValues(wp->w, args, num_args);
}
struct map_info_t *map_info = wp->map_information;
struct text_map_info_t *text_map = &map_info->text_map;
- (void) memset((genericptr_t) text_map->text, ' ', sizeof(text_map->text));
+ (void) memset((genericptr_t) text_map->text, ' ', sizeof text_map->text);
#ifdef TEXTCOLOR
(void) memset((genericptr_t) text_map->colors, NO_COLOR,
- sizeof(text_map->colors));
+ sizeof text_map->colors);
#endif
get_char_info(wp);