]> granicus.if.org Git - nethack/commitdiff
X11 map - no more column 0
authorPatR <rankin@nethack.org>
Mon, 6 Apr 2020 20:55:48 +0000 (13:55 -0700)
committerPatR <rankin@nethack.org>
Mon, 6 Apr 2020 20:55:48 +0000 (13:55 -0700)
The extra column that the core sometimes uses for bookkeeping and
that was drawn as stone until recently when changed to blank space
(an unintentional left margin) is now gone for both the tiles map
and the text map.  It's still part of the internal data but the map
window width and the map rendering exclude it.

This was too easy.  There are bound to be bugs lurking....

doc/fixes37.0
win/X11/winmap.c

index efd030bb6c929127fd5413c78f70c2761a5e82e4..49b7bd2db66580892ef8e98794a353c244eda5f0 100644 (file)
@@ -173,6 +173,7 @@ windows: update for new status condition fields
 X11: substantial overhaul of status display, both 'fancy' and 'tty-style'
 X11: extend fancy status one-turn inverse video status-change highlighting to
        hunger, encumbrance, and conditions
+X11: stop including unused column 0 in the map
 
 
 General New Features
index 6fd4fb7cf542f05bff0948ae8c4252d2463cc9b7..74cfb4643f4785068588f239650e03da87852dd3 100644 (file)
@@ -55,6 +55,8 @@ extern int total_tiles_used;
 
 #define USE_WHITE /* almost always use white as a tile cursor border */
 
+#define COL0_OFFSET 1 /* change to 0 to revert to displaying unused column 0 */
+
 static boolean FDECL(init_tiles, (struct xwindow *));
 static void FDECL(set_button_values, (Widget, int, int, unsigned));
 static void FDECL(map_check_size_change, (struct xwindow *));
@@ -1148,6 +1150,7 @@ unsigned int button;
         click_x = x / map_info->text_map.square_width;
         click_y = y / map_info->text_map.square_height;
     }
+    click_x += COL0_OFFSET; /* note: reverse of usual adjustment */
 
     /* The values can be out of range if the map window has been resized
        to be larger than the max size. */
@@ -1288,7 +1291,7 @@ boolean inverted;
                 int glyph = tile_map->glyphs[row][cur_col].glyph;
                 int tile = glyph2tile[glyph];
                 int src_x, src_y;
-                int dest_x = cur_col * tile_map->square_width;
+                int dest_x = (cur_col - COL0_OFFSET) * tile_map->square_width;
                 int dest_y = row * tile_map->square_height;
 
                 src_x = (tile % TILES_PER_ROW) * tile_width;
@@ -1343,7 +1346,7 @@ boolean inverted;
 #else
                            tile_map->white_gc,
 #endif
-                           start_col * tile_map->square_width,
+                           (start_col - COL0_OFFSET) * tile_map->square_width,
                            start_row * tile_map->square_height,
                            tile_map->square_width - 1,
                            tile_map->square_height - 1);
@@ -1387,7 +1390,8 @@ boolean inverted;
                                            ? text_map->inv_copy_gc
                                            : text_map->copy_gc),
                                      text_map->square_lbearing
-                                         + (text_map->square_width * cur_col),
+                                         + (text_map->square_width
+                                            * (cur_col - COL0_OFFSET)),
                                      win_ystart, t_ptr, count);
 
                     /* move text pointer and column count */
@@ -1403,7 +1407,8 @@ boolean inverted;
             /* We always start at the same x window position and have
                the same character count. */
             win_xstart = text_map->square_lbearing
-                         + (win_start_col * text_map->square_width);
+                         + ((win_start_col - COL0_OFFSET)
+                            * text_map->square_width);
             count = stop_col - start_col + 1;
 
             for (row = start_row, win_row = win_start_row; row <= stop_row;
@@ -1431,6 +1436,7 @@ Dimension cols, rows;
     Arg args[4];
     Cardinal num_args;
 
+    cols -= COL0_OFFSET;
     if (wp->map_information->is_tile) {
         wp->pixel_width = wp->map_information->tile_map.square_width * cols;
         wp->pixel_height = wp->map_information->tile_map.square_height * rows;