Changeset 588

Show
Ignore:
Timestamp:
09/29/07 15:15:16 (1 year ago)
Author:
takkaria
Message:

Clean up some of the code in the gtk port a bit.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/src/main-gtk.c

    r587 r588  
    375375        /* Set dimensions */ 
    376376        init_cairo_rect(&r, (td->actual.w * x), (td->actual.h * y),  (td->actual.w * n), (td->actual.h)); 
    377          
     377 
    378378        /* I can't count on at all the td fields names being the same for everything that uses cairo-utils, 
    379379            hence a lot of variables being passed. */ 
     
    564564        if ((td != NULL) && (td->window == widget)) 
    565565        { 
    566         strnfmt(item_name, 16+1,  "term_menu_item_%i", td->number); 
     566        strnfmt(item_name, sizeof(item_name),  "term_menu_item_%i", td->number); 
    567567        menu_item = glade_xml_get_widget(gtk_xml, item_name); 
    568568        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), FALSE); 
     
    604604        char buf[80]; 
    605605        int i, j = 0; 
    606          
     606 
    607607        my_strcpy(td->font.name, font_name, sizeof(td->font.name)); 
    608          
    609          
    610         for(i = 0; i < (strlen(font_name)); i++) 
     608 
     609 
     610        for (i = 0; i < strlen(font_name); i++) 
    611611        { 
    612612                if (font_name[i] == ' ') j = i; 
    613613        } 
    614614         
    615         for(i = j ; i < strlen(font_name); i++) 
    616         { 
     615        for (i = j ; i < strlen(font_name); i++) 
    617616                buf[i - j] = font_name[i]; 
    618         } 
     617 
    619618         
    620619        temp_font = pango_font_description_from_string(font_name); 
    621         my_strcpy(td->font.family, pango_font_description_get_family(temp_font), sizeof(td->font.name)); 
     620        my_strcpy(td->font.family, pango_font_description_get_family(temp_font), sizeof(td->font.family)); 
    622621        td->font.size = atof(buf); 
    623622        if (td->font.size == 0) td->font.size = 12; 
     
    637636        if ((old_font_height == 0) || (old_font_width == 0)) 
    638637        { 
    639                 td->size.w = td->cols * td->font.w; 
    640                 td->size.h = td->rows * td->font.h; 
    641         } 
    642                else 
     638                td->size.w = td->cols * td->font.w; 
     639                td->size.h = td->rows * td->font.h; 
     640        } 
     641        else 
    643642        { 
    644643                td->size.w = (double)td->size.w * (double)((double)td->font.w / (double)old_font_width); 
     
    650649        if (td->window != NULL)  
    651650        { 
    652                  
     651 
    653652 
    654653        gtk_widget_hide(td->window); 
     
    665664void set_term_font(GtkFontButton *widget, gpointer user_data)    
    666665{ 
    667         const char *font_name, *s; 
     666        term_data *td; 
     667 
     668        const char *font_name; 
     669        const char *s; 
    668670        int t; 
    669671         
    670         s = (char*)gtk_widget_get_name(GTK_WIDGET(widget)); 
     672        s = gtk_widget_get_name(GTK_WIDGET(widget)); 
    671673        sscanf(s, "term_font_%d", &t); 
    672          
    673         term_data *td=&data[t]; 
    674          
     674 
     675        td = &data[t]; 
     676 
    675677        font_name = gtk_font_button_get_font_name(widget); 
    676678        load_font_by_name(td, font_name); 
     
    709711 
    710712        /* Count out known non-savefiles */ 
    711         if (strcmp(name, "Makefile") == 0 || 
    712             strcmp(name, "delete.me") == 0
     713        if (!strcmp(name, "Makefile") || 
     714            !strcmp(name, "delete.me")
    713715        { 
    714716                return FALSE; 
     
    854856        { 
    855857                /* Build the macro trigger string */ 
    856                 strnfmt(msg, -1, "%cS_%X%c", 31, event->keyval, 13); 
    857                  
     858                strnfmt(msg, sizeof(msg), "%cS_%X%c", 31, event->keyval, 13); 
     859 
    858860                /* Enqueue the "macro trigger" string */ 
    859861                for (i = 0; msg[i]; i++) Term_keypress(msg[i]); 
     
    909911                        return (TRUE); 
    910912                } 
     913 
    911914                case GDK_Shift_L: 
    912915                case GDK_Shift_R: 
     
    961964        /* Open the settings file */ 
    962965        fff = file_open(settings, MODE_WRITE, FTYPE_TEXT); 
    963  
    964         /* Oops */ 
    965966        if (!fff) return; 
    966967 
     
    11971198         
    11981199                /* Set defaults if not initialized, or if funny values are there */ 
    1199                  
    1200                 if (td->size.w <=0) td->size.w = (td->rows * td->actual.h); 
    1201                 if (td->size.h <=0) td->size.h = (td->cols * td->actual.w); 
     1200                if (td->size.w <= 0) td->size.w = (td->rows * td->actual.h); 
     1201                if (td->size.h <= 0) td->size.h = (td->cols * td->actual.w); 
    12021202                if (td->tile.w <= 0) td->tile.w = td->font.w; 
    12031203                if (td->tile.h <= 0) td->tile.h = td->font.h; 
    1204                  
     1204 
    12051205                /* The main window should always be visible */ 
    12061206                if (i == 0) td->visible = 1; 
    1207                  
     1207 
    12081208                /* Discard the old cols & rows values, and recalculate. */ 
    12091209                set_row_and_cols(td); 
     
    12171217                if ((xd->font.name == "") || (strlen(xd->font.name)<2))  
    12181218                        my_strcpy(xd->font.name, "Monospace 10", sizeof(xd->font.name)); 
     1219 
    12191220                get_font_size(&xd->font); 
    12201221                 
     
    12381239{ 
    12391240        int z = 0; 
    1240         term_data *td = (term_data*)(Term->data)
    1241          
     1241        term_data *td = Term->data
     1242 
    12421243        /* Where is the mouse */ 
    12431244        int x = event->x; 
     
    12531254        /* The co-ordinates are only used in Angband format. */ 
    12541255        pixel_to_square(&x, &y, x, y); 
    1255          
    12561256        Term_mousepress(x, y, z); 
    1257         return(FALSE); 
     1257 
     1258        return FALSE; 
    12581259} 
    12591260 
     
    12661267         
    12671268        g_assert(td->drawing_area->window != 0); 
    1268          
    1269          
     1269 
    12701270        if (td->window) 
    12711271        { 
     
    13031303        return (TRUE); 
    13041304} 
     1305 
    13051306gboolean hide_options(GtkWidget *widget, GdkEvent *event, gpointer user_data) 
    13061307{ 
     
    13111312static void create_term_cairo(term_data *td) 
    13121313{        
    1313                 measurements size; 
    1314          
    1315                 size.w = max_win_width(td); 
    1316                 size.h = max_win_height(td); 
    1317                  
    1318                 td->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, size.w, size.h); 
    1319                 td->cr = cairo_create(td->surface); 
    1320          
    1321                 set_term_matrix(td); 
    1322                 term_data_redraw(td); 
    1323 
     1314        measurements size; 
     1315         
     1316        size.w = max_win_width(td); 
     1317        size.h = max_win_height(td); 
     1318                 
     1319        td->surface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, size.w, size.h); 
     1320        td->cr = cairo_create(td->surface); 
     1321         
     1322        set_term_matrix(td); 
     1323        term_data_redraw(td); 
     1324
     1325 
    13241326static void destroy_term_cairo(term_data *td) 
    13251327{ 
     
    13301332        } 
    13311333} 
     1334 
    13321335gboolean toggle_term_window(GtkWidget *widget, GdkEvent *event, gpointer user_data) 
    13331336{ 
     1337        term_data *td; 
     1338 
    13341339        int t; 
    13351340        bool window_is_visible; 
    1336         char* s; 
    1337          
    1338         s = (char*)gtk_widget_get_name(widget); 
     1341        const char *s; 
     1342 
     1343        s = gtk_widget_get_name(widget); 
    13391344        sscanf(s, "term_menu_item_%d", &t); 
    1340         term_data *td = &data[t]; 
    1341          
     1345        td = &data[t]; 
     1346 
    13421347        window_is_visible = (GTK_WIDGET_VISIBLE(GTK_WIDGET(td->window))); 
    1343          
     1348 
    13441349        /* I'm assuming this is only called by a menu item. I may want to put a check in for that. */ 
    13451350        td->visible = gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(widget)); 
    1346                          
     1351 
    13471352        if (td->visible) 
    13481353        { 
     
    13551360                destroy_term_cairo(td); 
    13561361        } 
    1357          
    1358         return(td->visible)
     1362 
     1363        return td->visible
    13591364} 
    13601365 
     
    14061411                        break; 
    14071412                } 
     1413 
    14081414                case GRAPHICS_ORIGINAL: 
    14091415                { 
     
    14171423                        break; 
    14181424                } 
     1425 
    14191426                case GRAPHICS_ADAM_BOLT: 
    14201427                { 
     
    14281435                        break; 
    14291436                } 
     1437 
    14301438                case GRAPHICS_DAVID_GERVAIS: 
    14311439                { 
     
    14391447                        break; 
    14401448                } 
    1441         }; 
     1449        } 
     1450 
    14421451        graphical_tiles = cairo_image_surface_create_from_png(buf); 
    14431452        tile_pattern = cairo_pattern_create_for_surface(graphical_tiles); 
     
    14651474}  
    14661475 
    1467 static void setup_graphics_menu() 
    1468 
    1469         int i = 0; 
    1470          
    1471         for(i=0;i < 4; i++) 
    1472         { 
    1473                 char s[12]; 
    1474                 GtkWidget *menu; 
     1476static void setup_graphics_menu(void) 
     1477
     1478        GtkWidget *menu; 
     1479                 
     1480        char s[12]; 
     1481        int i; 
     1482         
     1483        for (i = 0; i < 4; i++) 
     1484        { 
    14751485                bool checked = (i == arg_graphics); 
    1476                  
    1477                 strnfmt(s, 12, "graphics_%d", i); 
     1486 
     1487                strnfmt(s, sizeof(s), "graphics_%d", i); 
    14781488                menu = glade_xml_get_widget(gtk_xml, s); 
    1479                 if (checked) 
    1480                        if (!gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu))) 
    1481                                gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);  
     1489 
     1490                if (checked && !gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu))) 
     1491                        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu), TRUE);  
    14821492        } 
    14831493} 
     
    14871497{ 
    14881498        int g; 
    1489         char* s; 
    1490          
    1491         s = (char*)gtk_widget_get_name(widget); 
     1499        const char *s; 
     1500         
     1501        s = gtk_widget_get_name(widget); 
    14921502        sscanf(s, "graphics_%d", &g); 
    1493          
     1503 
    14941504        /* Free up old graphics */ 
    14951505        if (graphical_tiles != NULL) 
     
    14971507        if (tile_pattern != NULL) 
    14981508                cairo_pattern_destroy(tile_pattern); 
    1499          
     1509 
    15001510        init_graf(g); 
    1501         return(FALSE)
     1511        return FALSE
    15021512} 
    15031513 
     
    15071517static void white_on_black_textview(xtra_win_data *xd) 
    15081518{ 
    1509         GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; 
     1519        GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; 
    15101520        GdkColor white = { 0, 0xffff, 0xffff, 0xffff }; 
    15111521         
     
    15281538{ 
    15291539        int i = 0; 
    1530         term_data *main_term= &data[0]; 
     1540        term_data *main_term = &data[0]; 
    15311541        char temp[20]; 
    15321542        GtkWidget *temp_widget; 
     
    15361546                xtra_win_data *xd = &xdata[i]; 
    15371547                 
    1538                 strnfmt(temp, 14, "xtra_font_%d", i); 
     1548                strnfmt(temp, sizeof(temp), "xtra_font_%d", i); 
    15391549                temp_widget = glade_xml_get_widget(gtk_xml, temp); 
    15401550                gtk_font_button_set_font_name(GTK_FONT_BUTTON (temp_widget), xd->font.name); 
     
    15721582static void init_gtk_windows(void) 
    15731583{ 
     1584        GtkWidget *options, *temp_widget; 
     1585        GdkColor black = { 0, 0x0000, 0x0000, 0x0000 }; 
     1586 
    15741587        char buf[1024], logo[1024], temp[20]; 
    1575         GtkWidget *options, *temp_widget; 
    15761588        int i = 0; 
    15771589        bool err; 
     
    16231635                 
    16241636                /* Set title and name */ 
    1625                 strnfmt(temp, 14, "term_window_%d", i); 
     1637                strnfmt(temp, sizeof(temp), "term_window_%d", i); 
    16261638                gtk_widget_set_name(td->window, temp); 
    16271639                gtk_window_set_title(GTK_WINDOW(td->window), td->name); 
     
    16411653        { 
    16421654                term_data *td = &data[i]; 
    1643                 GdkColor black =  { 0, 0x0000, 0x0000, 0x0000 }; 
    1644                  
     1655 
    16451656                gtk_widget_realize(td->window); 
    16461657                gtk_widget_realize(td->drawing_area);  
     
    16481659                gtk_widget_modify_bg(td->window, GTK_STATE_NORMAL, &black); 
    16491660                gtk_widget_modify_bg(td->drawing_area, GTK_STATE_NORMAL, &black); 
    1650                  
    1651                 strnfmt(temp, 14, "term_font_%d", i); 
     1661 
     1662                strnfmt(temp, sizeof(temp), "term_font_%d", i); 
    16521663                temp_widget = glade_xml_get_widget(gtk_xml, temp); 
    16531664                gtk_widget_realize(temp_widget); 
    16541665                 
    1655                 err = gtk_font_button_set_font_name(GTK_FONT_BUTTON (temp_widget), td->font.name); 
    1656         } 
    1657 
    1658 static void show_windows() 
     1666                err = gtk_font_button_set_font_name(GTK_FONT_BUTTON(temp_widget), td->font.name); 
     1667        } 
     1668
     1669 
     1670static void show_windows(void) 
    16591671{ 
    16601672        int i; 
     1673 
    16611674        GtkWidget *menu_item; 
     1675        char item_name[20]; 
    16621676         
    16631677        /* Initialize the windows */ 
     
    16651679        { 
    16661680                term_data *td = &data[i]; 
    1667                 char item_name[20]; 
    16681681                 
    16691682                /* Activate the window screen */ 
     
    16721685                set_window_size(td); 
    16731686                 
    1674                 strnfmt(item_name, 16+1,  "term_menu_item_%i", i); 
     1687                strnfmt(item_name, sizeof(item_name),  "term_menu_item_%i", i); 
    16751688                menu_item = glade_xml_get_widget(gtk_xml, item_name); 
    16761689                 
    1677         if (td->visible) 
     1690               if (td->visible) 
    16781691                        create_term_cairo(td); 
    16791692                         
    16801693                if (i == 0) 
    1681                 { 
    16821694                        gtk_widget_show(td->window); 
    1683                 } 
    16841695                else if (gtk_check_menu_item_get_active(GTK_CHECK_MENU_ITEM(menu_item)) != td->visible) 
    16851696                        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(menu_item), td->visible); 
     
    16921703                xtra_win_data *xd = &xdata[i]; 
    16931704                 
    1694                        set_xtra_window_size(xd); 
    1695                  
    1696                        if (xd->visible)  
    1697                                gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(xd->menu), TRUE); 
     1705                set_xtra_window_size(xd); 
     1706 
     1707                if (xd->visible)  
     1708                        gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(xd->menu), TRUE); 
    16981709        } 
    16991710         
     
    17061717static void xtra_data_destroy(xtra_win_data *xd) 
    17071718{ 
    1708         if GTK_IS_WIDGET(xd->win
     1719        if (GTK_IS_WIDGET(xd->win)
    17091720                gtk_widget_destroy(xd->win); 
    1710         if GTK_IS_WIDGET(xd->text_view
     1721        if (GTK_IS_WIDGET(xd->text_view)
    17111722                gtk_widget_destroy(xd->text_view); 
    1712         if GTK_IS_WIDGET(xd->menu
     1723        if (GTK_IS_WIDGET(xd->menu)
    17131724                gtk_widget_destroy(xd->menu); 
    1714         if GTK_IS_WIDGET(xd->drawing_area
     1725        if (GTK_IS_WIDGET(xd->drawing_area)
    17151726                gtk_widget_destroy(xd->drawing_area); 
    17161727         
     
    17211732static void term_data_destroy(term_data *td) 
    17221733{        
    1723         if GTK_IS_WIDGET(td->window
     1734        if (GTK_IS_WIDGET(td->window)
    17241735                gtk_widget_destroy(td->window); 
    1725         if GTK_IS_WIDGET(td->drawing_area
     1736        if (GTK_IS_WIDGET(td->drawing_area)
    17261737                gtk_widget_destroy(td->drawing_area); 
    17271738         
     
    17411752        { 
    17421753                xtra_win_data *xd = &xdata[i]; 
    1743                  
     1754 
    17441755                xtra_data_destroy(xd); 
    17451756        } 
     
    17491760        { 
    17501761                term_data *td = &data[i]; 
    1751                  
     1762 
    17521763                term_data_destroy(td); 
    17531764        } 
     
    18291840{ 
    18301841        int i; 
    1831         char *c = NULL, colorname[10] = "color-00",str[10] = "#FFFFFF"; 
     1842        char colorname[10] = "color-00"; 
     1843        char str[10] = "#FFFFFF"; 
     1844 
    18321845        GtkTextTagTable *tags; 
    1833         c = str; 
     1846 
    18341847        tags = gtk_text_buffer_get_tag_table(xd->buf); 
    18351848         
    18361849        for (i = 0; i <= 15; i++) 
    18371850        { 
    1838                 strnfmt(colorname, 8 + 1,  "color-%d", i); 
    1839                 strnfmt(c, 14, "#%02x%02x%02x", angband_color_table[i][1], angband_color_table[i][2], angband_color_table[i][3]); 
    1840                  
     1851                strnfmt(colorname, sizeof(colorname),  "color-%d", i); 
     1852                strnfmt(str, sizeof(str), "#%02x%02x%02x", angband_color_table[i][1], angband_color_table[i][2], angband_color_table[i][3]); 
     1853 
    18411854                if (gtk_text_tag_table_lookup(tags, colorname) != NULL) 
    18421855                        gtk_text_tag_table_remove(tags, gtk_text_tag_table_lookup(tags, colorname)); 
    18431856                 
    18441857                if (gtk_text_tag_table_lookup(tags, colorname) == NULL) 
    1845                         gtk_text_buffer_create_tag(xd->buf, colorname, "foreground", c, NULL); 
     1858                        gtk_text_buffer_create_tag(xd->buf, colorname, "foreground", str, NULL); 
    18461859        } 
    18471860} 
     
    18531866         
    18541867        /* Get the color tag ready, and tack a line feed on the line we're printing */ 
    1855         strnfmt(colorname, 8 + 1,  "color-%d", color); 
     1868        strnfmt(colorname, sizeof(colorname),  "color-%d", color); 
    18561869         
    18571870        /* Print it at the end of the window */ 
     
    18611874 
    18621875static void text_view_print(xtra_win_data *xd, const char *str, byte color) 
    1863 {        
    1864         strnfmt((char *)str, strlen(str) + 2, "%s\n", str); 
     1876
    18651877        text_view_put(xd, str, color); 
     1878        text_view_put(xd, "\n", color); 
    18661879} 
    18671880 
     
    18701883        xtra_win_data *xd = &xdata[4]; 
    18711884         
    1872         char *res, str[80]; 
     1885        char str[80]; 
    18731886        va_list vp; 
    1874         int n; 
    18751887         
    18761888        if (GTK_IS_TEXT_VIEW(xd->text_view)) 
     
    18851897        } 
    18861898         
    1887         /* Begin the Varargs Stuff */ 
    18881899        va_start(vp, fmt); 
    1889  
    1890         /* Format the args */ 
    1891         res = vformat(fmt, vp); 
    1892  
    1893         /* End the Varargs Stuff */ 
     1900        (void)vstrnfmt(str, sizeof(str), fmt, vp); 
    18941901        va_end(vp); 
    18951902 
    1896         n = my_strcpy(str, res, strlen(res) + 1); 
    1897          
    18981903        #ifdef VERBOSE_DEBUG 
    18991904        if (GTK_IS_TEXT_VIEW(xd->text_view)) 
     
    19131918{ 
    19141919        xtra_win_data *xd = &xdata[0]; 
    1915          
     1920 
    19161921        u16b num; 
    1917         int i,c; 
    1918         char str[80]; 
    1919          
    1920         if (xd != NULL) 
    1921         { 
     1922        int i; 
     1923 
     1924        if (!xd) return; 
     1925 
    19221926        xd->buf = gtk_text_buffer_new(NULL); 
    19231927        gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf); 
     
    19281932         
    19291933        for (i = 0; i < num; i++) 
    1930         { 
    1931                 c = message_color(i); 
    1932  
    1933                 strnfmt(str, strlen(message_str(i)) + 1, "%s", message_str(i)); 
    1934                 text_view_print(xd, str, c); 
    1935         } 
    1936 
     1934                text_view_print(xd, message_str(i), message_color(i)); 
    19371935} 
    19381936 
     
    19601958} 
    19611959 
    1962 static void inv_slot(char *str, int i, bool equip) 
     1960static void inv_slot(char *str, size_t len, int i, bool equip) 
    19631961{ 
    19641962        object_type *o_ptr; 
     
    19711969 
    19721970        /* Is this item "acceptable"? */ 
    1973         if (item_tester_okay(o_ptr) || equip
     1971        if (item_tester_okay(o_ptr) || equip
    19741972        { 
    19751973                /* Obtain an item description */ 
     
    19781976                /* Obtain the length of the description */ 
    19791977                n = strlen(o_name); 
    1980                  
    1981                 strnfmt(label, 3 + 1, "%c) ",index_to_label(i)); 
     1978 
     1979                strnfmt(label, sizeof(label), "%c) ", index_to_label(i)); 
    19821980                 
    19831981                if (equip && show_labels) 
     
    19871985                if (o_ptr->weight)  
    19881986                { 
    1989                          
     1987                        int wgt = o_ptr->weight * o_ptr->number;                        
    19901988                        name_size = name_size - 4 - 9 - 9 - 5; 
    1991                         int wgt = o_ptr->weight * o_ptr->number; 
    19921989                         
    19931990                        if (equip && show_labels) 
    1994                                 strnfmt(str, 80, "%s%-*s %3d.%1d lb <-- %s", label, name_size, o_name, wgt / 10, wgt % 10, mention_use(i)); 
     1991                                strnfmt(str, len, "%s%-*s %3d.%1d lb <-- %s", label, name_size, o_name, wgt / 10, wgt % 10, mention_use(i)); 
    19951992                        else 
    1996                                 strnfmt(str, 80, "%s%-*s %3d.%1d lb", label, name_size, o_name, wgt / 10, wgt % 10); 
    1997                          
     1993                                strnfmt(str, len, "%s%-*s %3d.%1d lb", label, name_size, o_name, wgt / 10, wgt % 10); 
    19981994                } 
    19991995                else 
    20001996                { 
    20011997                        name_size = name_size - 4 - 9 - 5; 
     1998 
    20021999                        if (equip && show_labels) 
    2003                                 strnfmt(str, 80, "%s%-*s <-- %s", label, name_size, o_name, mention_use(i)); 
     2000                                strnfmt(str, len, "%s%-*s <-- %s", label, name_size, o_name, mention_use(i)); 
    20042001                        else 
    2005                                 strnfmt(str, 80, "%s%-*s", label, name_size, o_name); 
     2002                                strnfmt(str, len, "%s%-*s", label, name_size, o_name); 
    20062003                } 
    20072004        } 
     
    20112008{ 
    20122009        xtra_win_data *xd = &xdata[1]; 
    2013          
     2010 
     2011        char str[80]; 
     2012                 
    20142013        register int i, z; 
    20152014        byte attr; 
    2016         object_type *o_ptr; 
    2017          
    2018         if (xd != NULL) 
    2019         { 
     2015 
     2016 
     2017        if (!xd) return; 
     2018 
    20202019        xd->buf = gtk_text_buffer_new(NULL); 
    2021         gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf); 
     2020        gtk_text_view_set_buffer(GTK_TEXT_VIEW(xd->text_view), xd->buf); 
    20222021         
    20232022        init_color_tags(xd); 
     
    20282027        for (i = 0; i < z; i++) 
    20292028        { 
    2030                 char str[80]; 
    2031          
    20322029                /* Examine the item */ 
    2033                 o_ptr = &inventory[i]; 
     2030                object_type *o_ptr = &inventory[i]; 
    20342031 
    20352032                /* Is this item "acceptable"? */ 
     
    20392036                        attr = tval_to_attr[o_ptr->tval % N_ELEMENTS(tval_to_attr)]; 
    20402037                         
    2041                         inv_slot(str, i, FALSE); 
     2038                        inv_slot(str, sizeof(str), i, FALSE); 
    20422039                        text_view_print(xd, str, attr); 
    20432040                } 
    20442041        } 
    20452042} 
    2046 } 
    20472043 
    20482044static void handle_equip(game_event_type type, game_event_data *data, void *user) 
     
    20522048        register int i; 
    20532049        byte attr; 
    2054         object_type *o_ptr
    2055          
    2056         if (xd != NULL) 
    2057         { 
     2050               char str[80]
     2051         
     2052        if (!xd) return; 
     2053 
    20582054        xd->buf = gtk_text_buffer_new(NULL); 
    2059         gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf); 
     2055        gtk_text_view_set_buffer(GTK_TEXT_VIEW(xd->text_view), xd->buf); 
    20602056         
    20612057        init_color_tags(xd); 
     
    20642060        for (i = INVEN_WIELD; i < INVEN_TOTAL; i++) 
    20652061        { 
    2066                 char str[80]; 
    2067          
    2068                 /* Examine the item */ 
    2069                 o_ptr = &inventory[i]; 
    2070                  
    2071                 /* Is this item "acceptable"? */ 
     2062                object_type *o_ptr = &inventory[i]; 
     2063         
    20722064                attr = tval_to_attr[o_ptr->tval % N_ELEMENTS(tval_to_attr)]; 
    2073                  
    2074                 inv_slot(str, i, TRUE); 
     2065 
     2066                inv_slot(str, sizeof(str), i, TRUE); 
     2067 
    20752068                text_view_print(xd, str, attr); 
    20762069        } 
    2077        
    2078 
     2070
     2071 
    20792072static void handle_mons_list(game_event_type type, game_event_data *data, void *user) 
    20802073{ 
     
    20962089        u16b *race_count; 
    20972090         
    2098         if (xd != NULL) 
    2099         { 
     2091 
     2092        if (!xd) return; 
     2093 
     2094 
    21002095        xd->buf = gtk_text_buffer_new(NULL); 
    21012096        gtk_text_view_set_buffer(GTK_TEXT_VIEW (xd->text_view), xd->buf); 
     
    21222117        if (!total_count) 
    21232118        { 
    2124                 strnfmt(str, 20 + 1, "You see no monsters."); 
     2119                strnfmt(str, sizeof(str), "You see no monsters."); 
    21252120                text_view_print(xd, str, TERM_SLATE); 
    21262121 
     
    21322127        } 
    21332128         
    2134         strnfmt(str, 25 + 1, "You can see %d monster%s:", total_count, (total_count > 1 ? "s" : "")); 
     2129        strnfmt(str, sizeof(str), "You can see %d monster%s:", total_count, PLURAL(total_count)); 
    21352130        text_view_print(xd, str, 1); 
    21362131         
     
    21622157                else 
    21632158                        strnfmt(buf, sizeof(buf), "%s (x%d) ", m_name, race_count[i]); 
    2164                  
     2159 
    21652160                text_view_print(xd, buf, attr); 
    21662161                line++; 
     
    21692164        /* Free the race counters */ 
    21702165        FREE(race_count); 
    2171         } 
    2172 
    2173  
    2174 static byte monst_color(float percent) 
    2175 
    2176         int pct = percent * 100; 
     2166
     2167 
     2168static byte monst_color(const monster_type *m_ptr) 
     2169
    21772170        byte attr = TERM_WHITE; 
    2178         monster_type *m_ptr = &mon_list[p_ptr->health_who]; 
    2179          
     2171        int pct = 0; 
     2172 
     2173        if (m_ptr->maxhp) 
     2174                pct = (m_ptr->hp * 100) / m_ptr->maxhp; 
     2175 
     2176 
    21802177        /* Badly wounded */ 
    21812178        if (pct >= 10) attr = TERM_L_RED; 
     
    21892186        /* Healthy */ 
    21902187        if (pct >= 100) attr = TERM_L_GREEN; 
     2188 
    21912189 
    21922190        /* Afraid */ 
     
    22962294        char str[80], str2[80]; 
    22972295        byte color; 
    2298         float m_cur_hp, m_max_hp, percent; 
    22992296        cairo_rectangle_t r; 
    23002297         
     
    23922389                else 
    23932390                        color = TERM_RED; 
    2394                  
    2395                 percent = 0; 
    2396                 if (p_ptr->mhp > 0.0) 
    2397                         percent = (p_ptr->chp / p_ptr->mhp); 
    2398                  
     2391 
    23992392                cr_aligned_text_print(xd, 0, 16, str, TERM_WHITE, str2, color, sidebar_length); 
    24002393                xtra_drawn_progress_bar(xd, 0, 17, p_ptr->chp, p_ptr->mhp, color, 13); 
     
    24112404                cr_aligned_text_print(xd, 0, 18, str, TERM_WHITE, str2, color, sidebar_length); 
    24122405                 
    2413                 percent = 0; 
    2414                 if (p_ptr->msp > 0) 
    2415                         percent = p_ptr->csp/p_ptr->msp; 
    2416                  
    24172406                xtra_drawn_progress_bar(xd, 0, 19, p_ptr->csp, p_ptr->msp, color, 13); 
    24182407         
    24192408                /* 20 is blank */ 
    24202409         
    2421                 m_cur_hp = m_ptr->hp; 
    2422                 m_max_hp = m_ptr->maxhp; 
    2423                 if ((m_max_hp > 0.0) && (m_cur_hp > 0.0)) 
    2424                         percent = m_cur_hp / m_max_hp; 
    2425                 else 
    2426                         percent = 0; 
    2427                  
    2428                 xtra_drawn_progress_bar(xd, 0, 21, m_cur_hp, m_max_hp, monst_color(percent), 13); 
    2429                  
    2430                 /* 20 is blank */ 
    2431          
     2410                xtra_drawn_progress_bar(xd, 0, 21, m_ptr->hp, m_ptr->maxhp, monst_color(m_ptr), 13); 
     2411 
    24322412                /* Print the level */ 
    24332413                strnfmt(str, sizeof(str), "%d' (L%d)", p_ptr->depth * 50, p_ptr->depth);  
    2434                 strnfmt(str, sizeof(str), "%-*s", sidebar_length, str); 
    2435                 draw_xtra_cr_text(xd, 0, 22, TERM_WHITE, str); 
     2414                strnfmt(str2, sizeof(str2), "%-*s", sidebar_length, str); 
     2415                draw_xtra_cr_text(xd, 0, 22, TERM_WHITE, str2); 
    24362416                 
    24372417                invalidate_drawing_area(xd->drawing_area, r); 
     
    24802460        /* Set command hook */ 
    24812461        get_game_command = get_init_cmd; 
    2482          
     2462 
    24832463        /* I plan to put everything on the sidebar together, so... */ 
    24842464        event_add_handler_set(my_player_events, N_ELEMENTS(my_player_events), handle_sidebar, NULL); 
     
    26082588} 
    26092589 
    2610 #endif /*USE_GTK */ 
     2590#endif /* USE_GTK */ 
  • trunk/src/main-gtk.h

    r578 r588  
    377377 
    378378/* Return an inventory slot */ 
    379 static void inv_slot(char *str, int i, bool equip); 
     379static void inv_slot(char *str, size_t len, int i, bool equip); 
    380380 
    381381/* Print the inventory */ 
     
    389389 
    390390/* Return the color of the monster bar */ 
    391 static byte monst_color(float percent); 
     391static byte monst_color(const monster_type *m_ptr); 
    392392 
    393393/* Print the sidebar */