2002-05-26 This is a quick hack to make grabber use AGUP. It expects AGUP headers to be located in a subdirectory of `tools' called `agup'. Once you apply this patch, rebuild grabber. You will have to make grabber link with the AGUP library somehow, e.g. by editing the appropriate makefile, or doing it manually on the command-line. For example, for Linux: cd allegro/tools patch -p0 < grabber-agup.diff cd .. make tools/grabber # (linker error here) gcc -L/usr/X11/lib -s -Wl,-export-dynamic -o tools/grabber \ obj/unix/grabber.o lib/unix/libaldat.a -Llib/unix -lalleg-4.0.2 \ -lalleg_unsharable -lm -lm -lpthread -lXxf86dga -lXxf86vm -lXext -lX11 \ -ldl tools/agup/agup.a The last line was copy-pasted from the make output, and I tacked on "tools/agup/agup.a", which is where the AGUP library was placed. --- grabber.c.~1.26.2.1.~ Sun May 12 23:00:04 2002 +++ grabber.c Sun May 26 23:45:31 2002 @@ -22,6 +22,10 @@ #include "allegro.h" #include "allegro/internal/aintern.h" #include "datedit.h" +#include "agup/agup.h" +#include "agup/agtk.h" +#include "agup/awin95.h" +#include "agup/aphoton.h" #if (defined ALLEGRO_DJGPP) && (!defined SCAN_DEPEND) #include @@ -65,6 +69,8 @@ static int entered_password = FALSE; static int no_sound = FALSE; +static AL_CONST struct agup_theme *current_agup_theme; + static int view_proc(int, DIALOG *, int); static int list_proc(int, DIALOG *, int); @@ -191,7 +197,7 @@ { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ { d_clear_proc, 0, 0, 640, 480, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, - { d_menu_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, menu, NULL, NULL }, + { d_agup_menu_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, menu, NULL, NULL }, { d_text_proc, 20, 30, 0, 0, 0, 0, 0, 0, 0, 0, "Editing:", NULL, NULL }, { edit_mod_proc, 100, 30, 320, 8, 0, 0, 0, 0, 255, 0, data_file, NULL, NULL }, { d_text_proc, 20, 42, 0, 0, 0, 0, 0, 0, 0, 0, "Header:", NULL, NULL }, @@ -201,10 +207,10 @@ { d_text_proc, 20, 66, 0, 0, 0, 0, 0, 0, 0, 0, "Password:", NULL, NULL }, { edit_mod_proc, 100, 66, 320, 8, 0, 0, 0, 0, 255, 0, password, NULL, NULL }, { d_text_proc, 200, 10, 0, 0, 0, 0, 0, 0, 0, 0, "X-grid:", NULL, NULL }, - { d_edit_proc, 264, 10, 40, 8, 0, 0, 0, 0, 4, 0, xgrid_string, NULL, NULL }, + { d_agup_edit_proc, 264, 10, 40, 8, 0, 0, 0, 0, 4, 0, xgrid_string, NULL, NULL }, { d_text_proc, 315, 10, 0, 0, 0, 0, 0, 0, 0, 0, "Y-grid:", NULL, NULL }, - { d_edit_proc, 379, 10, 40, 8, 0, 0, 0, 0, 4, 0, ygrid_string, NULL, NULL }, - { d_check_proc, 430, 8, 83, 13, 0, 0, 0, 0, 0, 0, "Backups:", NULL, NULL }, + { d_agup_edit_proc, 379, 10, 40, 8, 0, 0, 0, 0, 4, 0, ygrid_string, NULL, NULL }, + { d_agup_check_proc, 430, 8, 83, 13, 0, 0, 0, 0, 0, 0, "Backups:", NULL, NULL }, { colorconv_proc, 550, 8, 75, 13, 0, 0, 0, 0, 0, 0, "Dither:", NULL, NULL }, { colorconv_proc, 430, 24, 195, 13, 0, 0, 0, 0, 0, 1, "Preserve transparency:", NULL, NULL}, { droplist_mod_proc, 430, 48, 195, 28, 0, 0, 0, 0, 0, 0, pack_getter, NULL, NULL }, @@ -308,7 +314,7 @@ /* standard edit proc, enhanced with possible modification detection */ static int edit_mod_proc(int msg, DIALOG *d, int c) { - int ret = d_edit_proc(msg, d, c); + int ret = d_agup_edit_proc(msg, d, c); if ((msg == MSG_CHAR) || (msg == MSG_UCHAR)) modified(1); @@ -334,12 +340,16 @@ /* starts outputting a progress message */ static void box_start(void) { +#define TITLE_MARGIN 20 + DIALOG d = { + d_agup_window_proc, + BOX_L, BOX_T-TITLE_MARGIN, BOX_R-BOX_L+1, BOX_B-BOX_T+TITLE_MARGIN+1, + 0, 0, 0, 0, 0, 0, "Progress", NULL, NULL + }; + show_mouse(NULL); - rectfill(screen, BOX_L, BOX_T, BOX_R, BOX_B, gui_bg_color); - rect(screen, BOX_L-1, BOX_T-1, BOX_R+1, BOX_B+1, gui_fg_color); - hline(screen, BOX_L, BOX_B+2, BOX_R+1, gui_fg_color); - vline(screen, BOX_R+2, BOX_T, BOX_B+2, gui_fg_color); + d_agup_window_proc(MSG_DRAW, &d, 0); show_mouse(screen); @@ -833,9 +843,12 @@ memcpy(datedit_current_palette, pal, sizeof(PALETTE)); set_palette(datedit_current_palette); - gui_fg_color = makecol(0, 0, 0); - gui_mg_color = makecol(0x80, 0x80, 0x80); - gui_bg_color = makecol(0xFF, 0xFF, 0xFF); + agup_shutdown(); + agup_init(current_agup_theme); + + gui_fg_color = agup_fg_color; + gui_mg_color = agup_bg_color; + gui_bg_color = agup_bg_color; proc = main_dlg[DLG_FIRSTWHITE].proc; main_dlg[DLG_FIRSTWHITE].proc = NULL; @@ -994,7 +1007,7 @@ vline(screen, d->x+d->w, d->y+1, d->y+d->h, d->fg); } - return d_list_proc(msg, d, c); + return d_agup_list_proc(msg, d, c); } @@ -1005,7 +1018,7 @@ static int current[2] = {-1, -1}; int ret, mode, wanted[2]; - ret = d_check_proc(msg, d, c); + ret = d_agup_check_proc(msg, d, c); if (d->flags & D_SELECTED) wanted[d->d2] = 1; @@ -1291,14 +1304,14 @@ static DIALOG prop_dlg[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ - { d_shadow_box_proc, 0, 0, 401, 113, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, + { d_agup_shadow_box_proc, 0, 0, 401, 113, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { d_ctext_proc, 200, 8, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { d_text_proc, 16, 32, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, - { d_edit_proc, 72, 32, 40, 8, 0, 0, 0, 0, 4, 0, prop_type_string, NULL, NULL }, + { d_agup_edit_proc, 72, 32, 40, 8, 0, 0, 0, 0, 4, 0, prop_type_string, NULL, NULL }, { d_text_proc, 16, 48, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, - { d_edit_proc, 72, 48, 320, 8, 0, 0, 0, 0, 255, 0, prop_value_string, NULL, NULL }, - { d_button_proc, 112, 80, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, - { d_button_proc, 208, 80, 81, 17, 0, 0, 27, D_EXIT, 0, 0, "Cancel", NULL, NULL }, + { d_agup_edit_proc, 72, 48, 320, 8, 0, 0, 0, 0, 255, 0, prop_value_string, NULL, NULL }, + { d_agup_button_proc, 112, 80, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, + { d_agup_button_proc, 208, 80, 81, 17, 0, 0, 27, D_EXIT, 0, 0, "Cancel", NULL, NULL }, { d_yield_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -1344,7 +1357,7 @@ set_dialog_color(prop_dlg, gui_fg_color, gui_bg_color); if (change_type) - prop_dlg[PROP_DLG_TYPE].proc = d_edit_proc; + prop_dlg[PROP_DLG_TYPE].proc = d_agup_edit_proc; else prop_dlg[PROP_DLG_TYPE].proc = d_text_proc; @@ -1844,11 +1857,11 @@ static DIALOG strip_dlg[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ - { d_shadow_box_proc, 0, 0, 301, 113, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, + { d_agup_shadow_box_proc, 0, 0, 301, 113, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { d_ctext_proc, 150, 8, 0, 0, 0, 0, 0, 0, 0, 0, "Save Stripped", NULL, NULL }, - { d_list_proc, 22, 32, 257, 28, 0, 0, 0, D_EXIT, 0, 0, striplist_getter, NULL, NULL }, - { d_button_proc, 62, 80, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, - { d_button_proc, 158, 80, 81, 17, 0, 0, 27, D_EXIT, 0, 0, "Cancel", NULL, NULL }, + { d_agup_list_proc, 22, 32, 257, 28, 0, 0, 0, D_EXIT, 0, 0, striplist_getter, NULL, NULL }, + { d_agup_button_proc, 62, 80, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, + { d_agup_button_proc, 158, 80, 81, 17, 0, 0, 27, D_EXIT, 0, 0, "Cancel", NULL, NULL }, { d_yield_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -2459,7 +2472,7 @@ return D_O_K; } else - return d_textbox_proc(msg, d, c); + return d_agup_textbox_proc(msg, d, c); }; @@ -2469,7 +2482,7 @@ /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ { d_clear_proc, 0, 0, 0, 0, 8, 8, 0, 0, 0, 0, NULL, NULL, NULL }, { d_text_proc, 0, 4, 0, 0, 255, 8, 0, 0, 0, 0, "Help viewer by Doug Eleveld", NULL, NULL }, - { d_menu_proc, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, grabber_help_topic, NULL, NULL }, + { d_agup_menu_proc, 0, 0, 0, 0, 255, 0, 0, 0, 0, 0, grabber_help_topic, NULL, NULL }, { d_helptext_proc, 0, 20, 0, 0, 255, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -2570,9 +2583,9 @@ static DIALOG sys_dlg[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ - { d_shadow_box_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, - { d_textbox_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, - { d_button_proc, 0, 0, 0, 0, 0, 0, 0, D_EXIT, 0, 0, "Exit", NULL, NULL }, + { d_agup_shadow_box_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, + { d_agup_textbox_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, + { d_agup_button_proc, 0, 0, 0, 0, 0, 0, 0, D_EXIT, 0, 0, "Exit", NULL, NULL }, { d_yield_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -3181,6 +3194,28 @@ set_window_close_hook(close_hook); + switch (get_config_int("grabber", "theme", 0)) { + case 0: + default: + current_agup_theme = agtk_theme; + break; + case 1: + current_agup_theme = awin95_theme; + break; + case 2: + current_agup_theme = aphoton_theme; + break; + } + + agup_init(current_agup_theme); + gui_fg_color = agup_fg_color; + gui_mg_color = agup_bg_color; + gui_bg_color = agup_bg_color; + gui_shadow_box_proc = d_agup_shadow_box_proc; + gui_button_proc = d_agup_button_proc; + gui_edit_proc = d_agup_edit_proc; + gui_text_list_proc = d_agup_text_list_proc; + if (no_sound) { install_sound(DIGI_NONE, MIDI_NONE, NULL); } @@ -3392,6 +3427,8 @@ set_config_string("grabber", "transparency", "y"); else set_config_string("grabber", "transparency", "n"); + + agup_shutdown(); return 0; } --- plugins/datfont.c.~1.15.~ Sun May 12 23:00:04 2002 +++ plugins/datfont.c Sun May 26 19:21:04 2002 @@ -24,6 +24,7 @@ #include "allegro.h" #include "allegro/internal/aintern.h" #include "../datedit.h" +#include "../agup/agup.h" @@ -910,10 +911,10 @@ static DIALOG char_dlg[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ - { d_shadow_box_proc, 0, 0, 225, 73, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, + { d_agup_shadow_box_proc, 0, 0, 225, 73, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { d_text_proc, 16, 16, 0, 0, 0, 0, 0, 0, 0, 0, "Base character:", NULL, NULL }, - { d_edit_proc, 144, 16, 56, 8, 0, 0, 0, 0, 6, 0, char_string, NULL, NULL }, - { d_button_proc, 72, 44, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, + { d_agup_edit_proc, 144, 16, 56, 8, 0, 0, 0, 0, 6, 0, char_string, NULL, NULL }, + { d_agup_button_proc, 72, 44, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -924,10 +925,10 @@ /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ { d_clear_proc, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { font_view_proc, 0, 100, 0, 0, 0, 0, 0, D_EXIT, 0, 0, NULL, NULL, NULL }, - { d_list_proc, 0, 0, 161, 100, 0, 0, 0, D_EXIT, 0, 0, range_getter, NULL, NULL }, + { d_agup_list_proc, 0, 0, 161, 100, 0, 0, 0, D_EXIT, 0, 0, range_getter, NULL, NULL }, { import_proc, 180, 8, 113, 17, 0, 0, 'i', D_EXIT, 0, 0, "&Import Range", NULL, NULL }, { delete_proc, 180, 40, 113, 17, 0, 0, 'd', D_EXIT, 0, 0, "&Delete Range", NULL, NULL }, - { d_button_proc, 180, 72, 113, 17, 0, 0, 27, D_EXIT, 0, 0, "Exit", NULL, NULL }, + { d_agup_button_proc, 180, 72, 113, 17, 0, 0, 27, D_EXIT, 0, 0, "Exit", NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -991,7 +992,7 @@ static int import_proc(int msg, DIALOG *d, int c) { char name[80*6]; /* 80 chars * max UTF8 char width */ - int ret = d_button_proc(msg, d, c); + int ret = d_agup_button_proc(msg, d, c); FONT *fnt, *f; long size; int base; @@ -1107,7 +1108,7 @@ /* deletes a font range */ static int delete_proc(int msg, DIALOG *d, int c) { - int ret = d_button_proc(msg, d, c); + int ret = d_agup_button_proc(msg, d, c); FONT *fnt; int i; --- plugins/datgrid.c.~1.10.~ Sun May 12 23:00:04 2002 +++ plugins/datgrid.c Sun May 26 19:21:47 2002 @@ -21,6 +21,7 @@ #include "allegro.h" #include "../datedit.h" +#include "../agup/agup.h" @@ -350,24 +351,24 @@ static DIALOG griddle_dlg[] = { /* (dialog proc) (x) (y) (w) (h) (fg) (bg) (key) (flags) (d1) (d2) (dp) (dp2) (dp3) */ - { d_shadow_box_proc, 0, 0, 277, 305, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, + { d_agup_shadow_box_proc, 0, 0, 277, 305, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL }, { d_ctext_proc, 138, 8, 0, 0, 0, 0, 0, 0, 0, 0, "Grab from Grid", NULL, NULL }, - { d_radio_proc, 16, 32, 121, 13, 0, 0, 0, D_SELECTED, 0, 0, "Use col #255", NULL, NULL }, - { d_radio_proc, 16, 56, 121, 13, 0, 0, 0, 0, 0, 0, "Regular grid", NULL, NULL }, + { d_agup_radio_proc, 16, 32, 121, 13, 0, 0, 0, D_SELECTED, 0, 0, "Use col #255", NULL, NULL }, + { d_agup_radio_proc, 16, 56, 121, 13, 0, 0, 0, 0, 0, 0, "Regular grid", NULL, NULL }, { gg_text_proc, 160, 58, 0, 0, 0, 0, 0, 0, 0, 0, "X-grid:", NULL, NULL }, { gg_edit_proc, 224, 58, 40, 8, 0, 0, 0, 0, 4, 0, griddle_xgrid, NULL, NULL }, { gg_text_proc, 160, 80, 0, 0, 0, 0, 0, 0, 0, 0, "Y-grid:", NULL, NULL }, { gg_edit_proc, 224, 82, 40, 8, 0, 0, 0, 0, 4, 0, griddle_ygrid, NULL, NULL }, - { d_check_proc, 16, 82, 123, 13, 0, 0, 0, 0, 0, 0, "Skip empties:", NULL, NULL }, - { d_check_proc, 16, 106, 91, 13, 0, 0, 0, 0, 0, 0, "Autocrop:", NULL, NULL }, + { d_agup_check_proc, 16, 82, 123, 13, 0, 0, 0, 0, 0, 0, "Skip empties:", NULL, NULL }, + { d_agup_check_proc, 16, 106, 91, 13, 0, 0, 0, 0, 0, 0, "Autocrop:", NULL, NULL }, { d_text_proc, 16, 138, 0, 0, 0, 0, 0, 0, 0, 0, "Name:", NULL, NULL }, - { d_edit_proc, 64, 138, 204, 8, 0, 0, 0, 0, 255, 0, griddle_name, NULL, NULL }, + { d_agup_edit_proc, 64, 138, 204, 8, 0, 0, 0, 0, 255, 0, griddle_name, NULL, NULL }, { d_text_proc, 16, 160, 0, 0, 0, 0, 0, 0, 0, 0, "Type:", NULL, NULL }, - { d_list_proc, 64, 160, 197, 36, 0, 0, 0, 0, 0, 0, (void*)typelist_getter, NULL, NULL }, + { d_agup_list_proc, 64, 160, 197, 36, 0, 0, 0, 0, 0, 0, (void*)typelist_getter, NULL, NULL }, { d_text_proc, 16, 208, 0, 0, 0, 0, 0, 0, 0, 0, "Cols:", NULL, NULL }, - { d_list_proc, 64, 208, 197, 44, 0, 0, 0, 0, 0, 0, (void*)depthlist_getter, NULL, NULL }, - { d_button_proc, 50, 272, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, - { d_button_proc, 146, 272, 81, 17, 0, 0, 27, D_EXIT, 0, 0, "Cancel", NULL, NULL }, + { d_agup_list_proc, 64, 208, 197, 44, 0, 0, 0, 0, 0, 0, (void*)depthlist_getter, NULL, NULL }, + { d_agup_button_proc, 50, 272, 81, 17, 0, 0, 13, D_EXIT, 0, 0, "OK", NULL, NULL }, + { d_agup_button_proc, 146, 272, 81, 17, 0, 0, 27, D_EXIT, 0, 0, "Cancel", NULL, NULL }, { NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL } }; @@ -412,7 +413,7 @@ -/* wrapper for d_edit_proc, that greys out when invalid */ +/* wrapper for d_agup_edit_proc, that greys out when invalid */ static int gg_edit_proc(int msg, DIALOG *d, int c) { if (msg == MSG_IDLE) { @@ -433,7 +434,7 @@ return D_O_K; } else - return d_edit_proc(msg, d, c); + return d_agup_edit_proc(msg, d, c); }