diff --git a/ChangeLog b/ChangeLog index c3873c4..17d87d8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -3431,3 +3431,50 @@ Wed Apr 5 21:48:39 PDT 2000 Michael Jennings Hopefully this will make more people happy. :-) ------------------------------------------------------------------------------- +Wed Apr 12 21:18:19 PDT 2000 Michael Jennings + + This is the initial commit with Imlib2 support. READ THIS CAREFULLY. + There is important information in this commit message that will keep + you from getting screwed. + + First off, support for Imlib 1.x is GONE. It is no longer supported + as of now. If you want to continue using it, do NOT install this + version. I tried to support both for awhile, but the code ended up + being way too ugly and hackish. Imlib2 is the future. And trust me, + when you see what we do with this future, you'll be happy for the + switch. + + The good news is that most of the basics work. Transparency still + works, and the basic image stuff works. Most users won't notice any + major problems, so long as your Imlib2 is 100% up-to-date. + + However, a few things still don't work: + + 1. Auto mode is a bit broken. You'll get X errors in XFree86 4.0. + Don't use it if you're running XFree 4. + + 2. Color modifiers for images don't work. At all. + + 3. Transparency shading/tinting will not work in 8bpp or lower. Life + blows sometimes. Sorry. Time for a real video card. :-) + + 4. The built-in icon is broken. + + 5. You WILL need to update your theme.cfg files. The borders on the + horizontal and vertical bar images were incorrect when combined with + the new anti-aliased scaling. The horizontal bars should have a right + border of 3. Vertical bars should have a bottom border of 3. The + menu images should have both right *and* bottom borders of 3. You can + either make those changes by hand, or use the --with-theme-update + option to autogen.sh. Your call. + + I think that covers everything I've run into. I will point out that + I don't really take advantage of a lot of the Imlib2 features just + yet. My first priority is to make all the stuff that worked before + work again (or at least the important stuff). Then I'll work on + new features. + + So there it is. If you're not ready for it, don't use it. But if you + are, I hope you like it. + +------------------------------------------------------------------------------- diff --git a/acconfig.h b/acconfig.h index 3eaa086..394e595 100644 --- a/acconfig.h +++ b/acconfig.h @@ -330,6 +330,7 @@ #undef KS_END #undef CONFIG_BUFF #undef PKGDATADIR +#undef HAVE_LIBIMLIB2 /* Leave that blank line there!! Autoheader needs it. diff --git a/configure.in b/configure.in index fac806c..cb745cc 100644 --- a/configure.in +++ b/configure.in @@ -278,26 +278,33 @@ AC_ARG_WITH(imlib, [ --with-imlib[=DIR] compile with Imlib support (Imlib residing in DIR/lib) (default)], if test "$withval" != "no"; then AC_MSG_RESULT(yes) - CFLAGS="$CFLAGS -I${withval}/include -L${withval}/lib" - GRLIBS="-lImlib" - AC_DEFINE(PIXMAP_SUPPORT) - AC_DEFINE(BACKING_STORE) + if test "$withval" != "yes"; then + CFLAGS="$CFLAGS -I${withval}/include" + LDFLAGS="$LDFLAGS -L${withval}/lib" + fi + USE_IMLIB=1 else AC_MSG_RESULT(no) GRLIBS="" + USE_IMLIB=0 fi, AC_MSG_RESULT(yes) - GRLIBS="-lImlib" - AC_DEFINE(PIXMAP_SUPPORT) - AC_DEFINE(BACKING_STORE) + USE_IMLIB=1 ) +if test $USE_IMLIB -eq 1 ; then + AC_CHECK_LIB(Imlib2, imlib_create_image, + GRLIBS="-lImlib2" + AC_CHECK_LIB(dl, dlopen, GRLIBS="$GRLIBS -ldl", , $SUBLIBS $X_LIBS) + AC_DEFINE(PIXMAP_SUPPORT) + AC_DEFINE(BACKING_STORE) + , + , $SUBLIBS $X_LIBS) + +fi + AC_MSG_CHECKING(for transparency support) AC_ARG_ENABLE(trans, -[ --enable-trans[=imlib] compile with transparency support (\"=imlib\" will use Imlib instead of Xlib for transparency)], - if test "$enableval" = "imlib"; then - AC_MSG_RESULT(yes, using Imlib) - AC_DEFINE(PIXMAP_OFFSET) - AC_DEFINE(IMLIB_TRANS) - elif test "$enableval" != "no"; then +[ --enable-trans compile with transparency support], + if test "$enableval" != "no"; then AC_MSG_RESULT(yes) AC_DEFINE(PIXMAP_OFFSET) else @@ -518,7 +525,8 @@ AC_ARG_ENABLE(greek, CONFIG_BUFF_SIZE=20480 AC_MSG_CHECKING(for the buffer size of the config file parser) AC_ARG_WITH(config-buffer-size, -[ --config-buffer-size specifies the size of the buffer Eterm uses for parsing the config file (default is 20 Kb)], +[ --with-config-buffer-size + specifies the size of the buffer Eterm uses for parsing the config file (default is 20 Kb)], if test "$withval" != "yes" -a "$withval" != "no"; then CONFIG_BUFF_SIZE=$withval fi) @@ -527,9 +535,7 @@ AC_DEFINE_UNQUOTED(CONFIG_BUFF, $CONFIG_BUFF_SIZE) AC_ARG_WITH(terminfo, [ --without-terminfo do not compile the Eterm terminfo file], - if test "$withval" = "yes"; then - : - else + if test "$withval" = "no"; then TIC=true fi) @@ -595,61 +601,6 @@ if test "$XIM" = "TRUE"; then AC_CHECK_LIB(X11, XRegisterIMInstantiateCallback, AC_DEFINE(USE_X11R6_XIM), , $X_LIBS $SUBLIBS) fi -if test -z "$PIXMAPSED"; then - - AC_CHECK_PROG(IMLIB_CONFIG, imlib-config, imlib-config, no) - - if test "$IMLIB_CONFIG" != "no"; then - - if test "$prefix" = "NONE"; then - AC_MSG_CHECKING(imlib-config for prefix) - prefix="`$IMLIB_CONFIG --prefix`" - AC_MSG_RESULT($prefix) - fi - - AC_MSG_CHECKING(imlib-config for the value of CFLAGS) - CFLAGS="$CFLAGS `$IMLIB_CONFIG --cflags`" - AC_MSG_RESULT($CFLAGS) - - AC_MSG_CHECKING(imlib-config for the value of GRLIBS) - GRLIBS="$GRLIBS `$IMLIB_CONFIG --libs`" - AC_MSG_RESULT($GRLIBS) - - SAVE_LIBS="$LIBS" - LIBS="$GRLIBS" - - AC_MSG_CHECKING(the sanity of new compile/link flags) - AC_TRY_LINK(, , echo "yes", echo "no" ; IMLIB_CONFIG="no" ; - AC_WARN(Compile/link failed. Reverting to manual method.) - ) - - LIBS="$SAVE_LIBS" - - fi - - if test "$IMLIB_CONFIG" = "no"; then - - AC_CHECK_LIB(png, png_get_valid, GRLIBS="$GRLIBS -lpng -lz -lm", , - $SUBLIBS $X_LIBS -lz -lm) - AC_CHECK_LIB(jpeg, jpeg_read_scanlines, GRLIBS="$GRLIBS -ljpeg", , - $SUBLIBS $X_LIBS) - AC_CHECK_LIB(tiff, TIFFOpen, GRLIBS="$GRLIBS -ltiff", , - $SUBLIBS $X_LIBS -lm) - AC_CHECK_LIB(gif, DGifOpenFileName, GRLIBS="$GRLIBS -lgif", , - $SUBLIBS $X_LIBS) - AC_CHECK_LIB(ungif, DGifOpenFileName, GRLIBS="$GRLIBS -lungif", , - $SUBLIBS $X_LIBS) - AC_CHECK_LIB(Imlib, Imlib_init, , [ - echo "WARNING: Imlib was not found or did not correctly link."; - echo " Please check config.log to see what the error was."; - echo " I will attempt to continue, but things may go wrong."; - AC_MSG_WARN([WARNING: libImlib not found. Attempting to continue anyway.])], - $GRLIBS $SUBLIBS $X_LIBS) - - fi - -fi - AC_PREFIX(Eterm) AC_PREFIX(gcc) if test "$prefix" = "NONE"; then diff --git a/src/buttons.c b/src/buttons.c index eb8e86d..28655a7 100644 --- a/src/buttons.c +++ b/src/buttons.c @@ -274,7 +274,7 @@ unsigned short bbar_calc_height(buttonbar_t *bbar) { button_t *b; - ImlibBorder *bbord = images[image_bbar].norm->iml->border, *bord = images[image_button].norm->iml->border; + Imlib_Border *bbord = images[image_bbar].norm->iml->border, *bord = images[image_button].norm->iml->border; D_BBAR(("bbar_calc_height(%8p): fascent == %d, fdescent == %d, h == %d\n", bbar, bbar->fascent, bbar->fdescent, bbar->h)); @@ -321,7 +321,7 @@ bbar_calc_positions(buttonbar_t *bbar) { button_t *b; unsigned short x, y; - ImlibBorder *border = images[image_bbar].norm->iml->border; + Imlib_Border *border = images[image_bbar].norm->iml->border; D_BBAR(("bbar == %8p\n", bbar)); @@ -351,7 +351,7 @@ bbar_calc_positions(buttonbar_t *bbar) void button_calc_size(buttonbar_t *bbar, button_t *button) { - ImlibBorder *bord = images[image_button].norm->iml->border; + Imlib_Border *bord = images[image_button].norm->iml->border; int ascent, descent, direction; XCharStruct chars; @@ -379,8 +379,9 @@ button_calc_size(buttonbar_t *bbar, button_t *button) if (bord) { b = button->h - bord->top - bord->bottom; } - button->icon_w = button->icon->iml->im->rgb_width; - button->icon_h = button->icon->iml->im->rgb_height; + imlib_context_set_image(button->icon->iml->im); + button->icon_w = imlib_image_get_width(); + button->icon_h = imlib_image_get_height(); D_BBAR((" -> Initial icon dimensions are %hux%hu\n", button->icon_w, button->icon_h)); if (button->icon_h > b) { button->icon_w = (unsigned short) ((float) button->icon_w / button->icon_h * b); @@ -398,7 +399,7 @@ button_calc_size(buttonbar_t *bbar, button_t *button) void button_calc_rel_coords(buttonbar_t *bbar, button_t *button) { - ImlibBorder *bord = images[image_button].norm->iml->border; + Imlib_Border *bord = images[image_button].norm->iml->border; D_BBAR(("bbar == %8p, button == %8p\n", bbar, button)); diff --git a/src/command.c b/src/command.c index c642213..b6c33da 100644 --- a/src/command.c +++ b/src/command.c @@ -132,6 +132,10 @@ static const char cvs_ident[] = "$Id$"; #endif #include "windows.h" +static RETSIGTYPE handle_child_signal(int); +static RETSIGTYPE handle_exit_signal(int); +static RETSIGTYPE handle_crash(int); + /* local variables */ int my_ruid, my_euid, my_rgid, my_egid; char initial_dir[PATH_MAX + 1]; @@ -247,11 +251,6 @@ privileges(int mode) char * sig_to_str(int sig) { - - /* NOTE: This can't be done with a switch because of possible conflicting - * conflicting signal types. -vendu - */ - #ifdef SIGHUP if (sig == SIGHUP) { return ("SIGHUP"); @@ -1012,8 +1011,8 @@ dump_stack_trace(void) /* * Catch a SIGCHLD signal and exit if the direct child has died */ -RETSIGTYPE -Child_signal(int sig) +static RETSIGTYPE +handle_child_signal(int sig) { int pid, save_errno = errno; @@ -1043,15 +1042,15 @@ Child_signal(int sig) } errno = save_errno; - D_CMD(("Child_signal: installing signal handler\n")); - signal(SIGCHLD, Child_signal); + D_CMD(("handle_child_signal: installing signal handler\n")); + signal(SIGCHLD, handle_child_signal); SIG_RETURN(0); } /* Handles signals usually sent by a user, like HUP, TERM, INT. */ -RETSIGTYPE -Exit_signal(int sig) +static RETSIGTYPE +handle_exit_signal(int sig) { print_error("Received terminal signal %s (%d)", sig_to_str(sig), sig); @@ -1070,7 +1069,7 @@ Exit_signal(int sig) /* Handles abnormal termination signals -- mej */ static RETSIGTYPE -SegvHandler(int sig) +handle_crash(int sig) { print_error("Received terminal signal %s (%d)", sig_to_str(sig), sig); @@ -1088,6 +1087,24 @@ SegvHandler(int sig) SIG_RETURN(0); } +void +install_handlers(void) +{ + signal(SIGHUP, handle_exit_signal); +#ifndef __svr4__ + signal(SIGINT, handle_exit_signal); +#endif + signal(SIGQUIT, handle_crash); + signal(SIGTERM, handle_exit_signal); + signal(SIGCHLD, handle_child_signal); + signal(SIGSEGV, handle_crash); + signal(SIGBUS, handle_crash); + signal(SIGABRT, handle_crash); + signal(SIGFPE, handle_crash); + signal(SIGILL, handle_crash); + signal(SIGSYS, handle_crash); +} + /* * Exit gracefully, clearing the utmp entry and restoring tty attributes * TODO: Also free up X resources, etc., if possible @@ -1116,6 +1133,7 @@ clean_exit(void) #endif privileges(REVERT); PABLO_STOP_TRACING(); + DPRINTF1(("Cleanup done. I am outta here!\n")); } /* Acquire a pseudo-teletype from the system. */ @@ -2062,24 +2080,6 @@ run_command(char *argv[]) } #endif - /* spin off the command interpreter */ - signal(SIGHUP, Exit_signal); -#ifndef __svr4__ - signal(SIGINT, Exit_signal); -#endif - signal(SIGQUIT, SegvHandler); - signal(SIGTERM, Exit_signal); - signal(SIGCHLD, Child_signal); - signal(SIGSEGV, SegvHandler); - signal(SIGBUS, SegvHandler); - signal(SIGABRT, SegvHandler); - signal(SIGFPE, SegvHandler); - signal(SIGILL, SegvHandler); - signal(SIGSYS, SegvHandler); - - /* need to trap SIGURG for SVR4 (Unixware) rlogin */ - /* signal (SIGURG, SIG_DFL); */ - D_CMD(("Forking\n")); cmd_pid = fork(); D_CMD(("After fork(), cmd_pid == %d\n", cmd_pid)); @@ -2343,7 +2343,8 @@ check_pixmap_change(int sig) D_PIXMAP(("now %lu >= %lu (last_update %lu + rs_anim_delay %lu) ?\n", now, last_update + rs_anim_delay, last_update, rs_anim_delay)); if (now >= last_update + rs_anim_delay || 1) { D_PIXMAP(("Time to update pixmap. now == %lu\n", now)); - Imlib_destroy_image(imlib_id, images[image_bg].current->iml->im); + imlib_context_set_image(images[image_bg].current->iml->im); + imlib_free_image_and_decache(); images[image_bg].current->iml->im = NULL; xterm_seq(XTerm_Pixmap, rs_anim_pixmaps[image_idx++]); last_update = now; diff --git a/src/command.h b/src/command.h index 4766061..d4d04a7 100644 --- a/src/command.h +++ b/src/command.h @@ -342,8 +342,7 @@ extern char *sig_to_str(int); extern const char *event_type_to_name(int); extern const char *request_code_to_name(int); extern void dump_stack_trace(void); -extern RETSIGTYPE Child_signal(int); -extern RETSIGTYPE Exit_signal(int); +extern void install_handlers(void); extern void clean_exit(void); extern int get_pty(void); extern int get_tty(void); diff --git a/src/debug.h b/src/debug.h index a0ce11c..2f92d2d 100644 --- a/src/debug.h +++ b/src/debug.h @@ -33,17 +33,28 @@ extern unsigned int debug_level; -/* Assert macros stolen from my work on Ebar. If these macros break with your cpp, let me know -- mej@eterm.org */ +/* A NOP. Does nothing. */ # define NOP ((void)0) +/* A macro and an #undef to FIXME-ize individual calls or entire code blocks. */ +# define FIXME_NOP(x) +# undef FIXME_BLOCK + +/* The basic debugging output leader. */ #if defined(__FILE__) && defined(__LINE__) # ifdef __GNUC__ # define __DEBUG() fprintf(stderr, "[%lu] %12s | %4d: %s(): ", (unsigned long) time(NULL), __FILE__, __LINE__, __FUNCTION__) # else # define __DEBUG() fprintf(stderr, "[%lu] %12s | %4d: ", (unsigned long) time(NULL), __FILE__, __LINE__) # endif +#else +# define __DEBUG() NOP #endif +/* A quick and dirty macro to say, "Hi! I got here without crashing!" */ +# define MOO() do { __DEBUG(); fprintf(stderr, "Moo.\n"); fflush(stderr); } while (0) + +/* Assertion/abort macros which are quite a bit more useful than assert() and abort(). */ #if defined(__FILE__) && defined(__LINE__) # ifdef __GNUC__ # define ASSERT(x) do {if (!(x)) {if (debug_level>=1) {fatal_error("ASSERT failed in %s() at %s:%d: %s", __FUNCTION__, __FILE__, __LINE__, #x);} \ @@ -82,10 +93,6 @@ extern unsigned int debug_level; # define ABORT() fatal_error("Aborting.") #endif -#ifndef __DEBUG -# define __DEBUG() NOP -#endif - #define REQUIRE(x) do {if (!(x)) {if (debug_level>=1) {__DEBUG(); real_dprintf("REQUIRE failed: %s\n", #x);} return;}} while (0) #define REQUIRE_RVAL(x, v) do {if (!(x)) {if (debug_level>=1) {__DEBUG(); real_dprintf("REQUIRE failed: %s\n", #x);} return (v);}} while (0) #define NONULL(x) ((x) ? (x) : ("")) diff --git a/src/icon.h b/src/icon.h deleted file mode 100644 index 6e39081..0000000 --- a/src/icon.h +++ /dev/null @@ -1,822 +0,0 @@ -/* XPM */ -static char * Eterm_xpm[] = { -"48 48 771 2", -" c None", -". c #282722", -"+ c #2E2C27", -"@ c #33332C", -"# c #3A382F", -"$ c #403E36", -"% c #44433B", -"& c #47463C", -"* c #515048", -"= c #58584E", -"- c #5B5B52", -"; c #757469", -"> c #918F83", -", c #8B897D", -"' c #7F7E70", -") c #807E6F", -"! c #878576", -"~ c #8C8C7A", -"{ c #010103", -"] c #020204", -"^ c #32322B", -"/ c #3B382E", -"( c #434035", -"_ c #48473D", -": c #505044", -"< c #565647", -"[ c #5A584A", -"} c #5B5B4A", -"| c #5C5B4D", -"1 c #5E5B50", -"2 c #5E5C50", -"3 c #6D6A5C", -"4 c #757362", -"5 c #787764", -"6 c #7D7B6B", -"7 c #81806F", -"8 c #848372", -"9 c #888675", -"0 c #949484", -"a c #A8A796", -"b c #B3B3A0", -"c c #B9B6A4", -"d c #B4B39F", -"e c #A6A592", -"f c #959482", -"g c #928F7E", -"h c #92917E", -"i c #928F7D", -"j c #3B3A32", -"k c #454337", -"l c #71705B", -"m c #706F5B", -"n c #6C6C5A", -"o c #727261", -"p c #757263", -"q c #757363", -"r c #757563", -"s c #787563", -"t c #787663", -"u c #787863", -"v c #797963", -"w c #7C7969", -"x c #7C7C69", -"y c #7D7C6B", -"z c #7D7D6B", -"A c #7E7D6B", -"B c #807D6B", -"C c #827F6C", -"D c #848270", -"E c #8F8B7D", -"F c #A7A693", -"G c #B2B1A0", -"H c #B6B3A2", -"I c #B6B6A2", -"J c #B3B1A0", -"K c #ADAA99", -"L c #9A9988", -"M c #8C8979", -"N c #8D8A7A", -"O c #8D8D7A", -"P c #8D8B7B", -"Q c #3E3E34", -"R c #34342C", -"S c #726E5C", -"T c #72705E", -"U c #6A6A56", -"V c #72705C", -"W c #71705C", -"X c #716F5E", -"Y c #6D6D5B", -"Z c #6C6B5B", -"` c #6A6758", -" . c #69695A", -".. c #656556", -"+. c #666656", -"@. c #615F53", -"#. c #5F5E4F", -"$. c #5E5D50", -"%. c #5C5950", -"&. c #5C5B4E", -"*. c #59574C", -"=. c #5A594C", -"-. c #5C5D50", -";. c #727166", -">. c #807D71", -",. c #818176", -"'. c #808078", -"). c #7D7D74", -"!. c #777770", -"~. c #6F6E66", -"{. c #5C5C56", -"]. c #717162", -"^. c #8A8874", -"/. c #8A8876", -"(. c #8A8A78", -"_. c #3B3B34", -":. c #706F5D", -"<. c #515044", -"[. c #30312A", -"}. c #2E2D26", -"|. c #2C2B26", -"1. c #2A2A24", -"2. c #282824", -"3. c #272926", -"4. c #252523", -"5. c #262421", -"6. c #232221", -"7. c #282625", -"8. c #232321", -"9. c #212420", -"0. c #1A1919", -"a. c #141411", -"b. c #111214", -"c. c #171616", -"d. c #2C2B2F", -"e. c #404040", -"f. c #484746", -"g. c #4C4C4C", -"h. c #494949", -"i. c #4A4A4A", -"j. c #414146", -"k. c #323235", -"l. c #31312E", -"m. c #62625A", -"n. c #868574", -"o. c #878574", -"p. c #878575", -"q. c #3D3D31", -"r. c #6E6D5B", -"s. c #706E5C", -"t. c #535045", -"u. c #161610", -"v. c #13140D", -"w. c #121519", -"x. c #0B0A0F", -"y. c #0F0F0E", -"z. c #0F0F0D", -"A. c #09090A", -"B. c #060606", -"C. c #060608", -"D. c #050507", -"E. c #07080B", -"F. c #090C14", -"G. c #070708", -"H. c #07080A", -"I. c #1F211F", -"J. c #2D2D2E", -"K. c #333535", -"L. c #323234", -"M. c #343436", -"N. c #353634", -"O. c #373735", -"P. c #373736", -"Q. c #30302F", -"R. c #2B2B29", -"S. c #615F56", -"T. c #82816F", -"U. c #82816D", -"V. c #838172", -"W. c #3C3B34", -"X. c #6C6A5B", -"Y. c #6F6E5C", -"Z. c #5D5D4D", -"`. c #202712", -" + c #1B2C0C", -".+ c #0A0B11", -"++ c #0E1117", -"@+ c #0C0C0D", -"#+ c #111013", -"$+ c #131314", -"%+ c #131310", -"&+ c #101011", -"*+ c #0F1419", -"=+ c #121419", -"-+ c #12110F", -";+ c #1A1B1B", -">+ c #363634", -",+ c #313130", -"'+ c #313131", -")+ c #2F2F31", -"!+ c #343334", -"~+ c #343534", -"{+ c #343433", -"]+ c #333434", -"^+ c #2B2C2C", -"/+ c #232324", -"(+ c #5F5E54", -"_+ c #807F6F", -":+ c #817F6C", -"<+ c #7F7E6C", -"[+ c #434138", -"}+ c #5E5E4E", -"|+ c #6D6A5B", -"1+ c #686554", -"2+ c #101911", -"3+ c #061307", -"4+ c #0B0C09", -"5+ c #0F111D", -"6+ c #0A0D0F", -"7+ c #0A0B09", -"8+ c #0A0A0B", -"9+ c #08080A", -"0+ c #050506", -"a+ c #040405", -"b+ c #040507", -"c+ c #070B11", -"d+ c #0B0C10", -"e+ c #16151A", -"f+ c #202021", -"g+ c #232323", -"h+ c #222625", -"i+ c #292A27", -"j+ c #2B2A2C", -"k+ c #2C2B2D", -"l+ c #2B2B2C", -"m+ c #292929", -"n+ c #242424", -"o+ c #131615", -"p+ c #54584C", -"q+ c #7E7B6C", -"r+ c #7E7E6C", -"s+ c #44443A", -"t+ c #424238", -"u+ c #6D6B5B", -"v+ c #171815", -"w+ c #030203", -"x+ c #040709", -"y+ c #07081E", -"z+ c #01030A", -"A+ c #02070C", -"B+ c #010204", -"C+ c #03030C", -"D+ c #03030B", -"E+ c #010107", -"F+ c #020213", -"G+ c #020208", -"H+ c #040715", -"I+ c #0E0F18", -"J+ c #141412", -"K+ c #1A1A1A", -"L+ c #1E1C21", -"M+ c #202022", -"N+ c #222224", -"O+ c #252524", -"P+ c #242422", -"Q+ c #222120", -"R+ c #1A1D1C", -"S+ c #0F100F", -"T+ c #55544A", -"U+ c #7A7964", -"V+ c #7A7968", -"W+ c #404038", -"X+ c #6A6A57", -"Y+ c #6C6B59", -"Z+ c #22241E", -"`+ c #040403", -" @ c #030506", -".@ c #04090C", -"+@ c #010303", -"@@ c #03060F", -"#@ c #03030D", -"$@ c #030314", -"%@ c #020306", -"&@ c #02030B", -"*@ c #0A1016", -"=@ c #131A1F", -"-@ c #141717", -";@ c #181814", -">@ c #1D1C18", -",@ c #1E1D20", -"'@ c #202020", -")@ c #202026", -"!@ c #1F1E1D", -"~@ c #1C1D1E", -"{@ c #151515", -"]@ c #0D0F0F", -"^@ c #54544C", -"/@ c #787668", -"(@ c #787664", -"_@ c #7A7664", -":@ c #434136", -"<@ c #6B6A57", -"[@ c #6D695B", -"}@ c #302F29", -"|@ c #020415", -"1@ c #010306", -"2@ c #06070E", -"3@ c #030608", -"4@ c #030609", -"5@ c #020307", -"6@ c #050714", -"7@ c #04030A", -"8@ c #0E0F20", -"9@ c #161834", -"0@ c #121418", -"a@ c #171816", -"b@ c #181A1B", -"c@ c #1B1B17", -"d@ c #1C1C1C", -"e@ c #1B1B1F", -"f@ c #1A191A", -"g@ c #171519", -"h@ c #100D0B", -"i@ c #07090D", -"j@ c #454945", -"k@ c #757564", -"l@ c #767668", -"m@ c #777664", -"n@ c #4A493E", -"o@ c #686753", -"p@ c #696955", -"q@ c #403F37", -"r@ c #080807", -"s@ c #050505", -"t@ c #040415", -"u@ c #05050E", -"v@ c #03060A", -"w@ c #04050D", -"x@ c #050708", -"y@ c #030305", -"z@ c #04060B", -"A@ c #02030A", -"B@ c #090916", -"C@ c #131327", -"D@ c #101012", -"E@ c #111113", -"F@ c #151213", -"G@ c #171618", -"H@ c #171714", -"I@ c #161614", -"J@ c #151614", -"K@ c #141413", -"L@ c #0F1012", -"M@ c #070707", -"N@ c #090808", -"O@ c #464339", -"P@ c #737060", -"Q@ c #727263", -"R@ c #727262", -"S@ c #47473F", -"T@ c #696958", -"U@ c #090907", -"V@ c #0D0E13", -"W@ c #0B0B09", -"X@ c #0E0E11", -"Y@ c #0B0B0C", -"Z@ c #090A0D", -"`@ c #09090E", -" # c #030504", -".# c #020205", -"+# c #060605", -"@# c #09090B", -"## c #0C0C0B", -"$# c #0E0E12", -"%# c #11120D", -"&# c #121212", -"*# c #121214", -"=# c #121311", -"-# c #0F0F12", -";# c #0B0C0A", -"># c #030304", -",# c #0C0D0D", -"'# c #4C4C42", -")# c #70705C", -"!# c #727162", -"~# c #47453D", -"{# c #545345", -"]# c #676658", -"^# c #535143", -"/# c #0C0C0A", -"(# c #121314", -"_# c #141517", -":# c #131312", -"<# c #080A08", -"[# c #060707", -"}# c #040506", -"|# c #080806", -"1# c #0A0A0A", -"2# c #0B0D0D", -"3# c #0E0E0C", -"4# c #0E0E0E", -"5# c #0A0A0C", -"6# c #060505", -"7# c #45443C", -"8# c #6F6C5A", -"9# c #726F5D", -"0# c #72715C", -"a# c #47463D", -"b# c #34342A", -"c# c #696858", -"d# c #585648", -"e# c #2E1911", -"f# c #290704", -"g# c #0E0F0C", -"h# c #090B0B", -"i# c #0C0C10", -"j# c #181919", -"k# c #0C0D0A", -"l# c #0B0D12", -"m# c #0A0D0D", -"n# c #010305", -"o# c #020304", -"p# c #0B0B0A", -"q# c #0D0B0C", -"r# c #0C0B0A", -"s# c #0A0B0E", -"t# c #0B0B0B", -"u# c #0C0C0C", -"v# c #0B0A0B", -"w# c #090905", -"x# c #050608", -"y# c #373733", -"z# c #696959", -"A# c #6E6D5C", -"B# c #4F4D43", -"C# c #323229", -"D# c #686553", -"E# c #5A594D", -"F# c #3D201B", -"G# c #480904", -"H# c #111012", -"I# c #111114", -"J# c #080A09", -"K# c #121515", -"L# c #0A0F10", -"M# c #0F1219", -"N# c #0B1217", -"O# c #010608", -"P# c #030605", -"Q# c #0E0E0F", -"R# c #111010", -"S# c #0C1011", -"T# c #090A0E", -"U# c #070706", -"V# c #060709", -"W# c #080608", -"X# c #050404", -"Y# c #030204", -"Z# c #666555", -"`# c #6E6B5C", -" $ c #6D6B5A", -".$ c #4D4D3F", -"+$ c #313129", -"@$ c #656553", -"#$ c #5E5D4D", -"$$ c #3B2B22", -"%$ c #510905", -"&$ c #181829", -"*$ c #101021", -"=$ c #161318", -"-$ c #0D0C15", -";$ c #070811", -">$ c #04040C", -",$ c #050611", -"'$ c #03040F", -")$ c #010105", -"!$ c #020103", -"~$ c #050504", -"{$ c #060604", -"]$ c #171817", -"^$ c #090908", -"/$ c #242420", -"($ c #626154", -"_$ c #6B6A5C", -":$ c #4E4B41", -"<$ c #272721", -"[$ c #605F4F", -"}$ c #616050", -"|$ c #343328", -"1$ c #300805", -"2$ c #170E0E", -"3$ c #110A0A", -"4$ c #0B0713", -"5$ c #0A0511", -"6$ c #090813", -"7$ c #0B0814", -"8$ c #0F0A1C", -"9$ c #09021C", -"0$ c #0B0320", -"a$ c #0A0329", -"b$ c #050337", -"c$ c #020240", -"d$ c #05054E", -"e$ c #0B0C4E", -"f$ c #0E0E30", -"g$ c #0D1022", -"h$ c #080B1A", -"i$ c #050812", -"j$ c #050810", -"k$ c #050711", -"l$ c #070716", -"m$ c #08080C", -"n$ c #61604F", -"o$ c #6A6A59", -"p$ c #4E4D3F", -"q$ c #1E1F1B", -"r$ c #5A5A4C", -"s$ c #646152", -"t$ c #3A392F", -"u$ c #200906", -"v$ c #150303", -"w$ c #0E0303", -"x$ c #0E0203", -"y$ c #210A03", -"z$ c #0D0203", -"A$ c #100403", -"B$ c #1B0603", -"C$ c #210503", -"D$ c #260703", -"E$ c #270803", -"F$ c #120605", -"G$ c #090909", -"H$ c #09093B", -"I$ c #020224", -"J$ c #03033A", -"K$ c #02023E", -"L$ c #030335", -"M$ c #04043A", -"N$ c #030336", -"O$ c #030324", -"P$ c #23231C", -"Q$ c #5F5F52", -"R$ c #6A6855", -"S$ c #6A6A58", -"T$ c #545348", -"U$ c #4E4D42", -"V$ c #636453", -"W$ c #424036", -"X$ c #190C09", -"Y$ c #110403", -"Z$ c #0B0103", -"`$ c #130103", -" % c #210603", -".% c #110203", -"+% c #070203", -"@% c #0B0203", -"#% c #1B0703", -"$% c #1F0603", -"%% c #0E0E10", -"&% c #04043F", -"*% c #020216", -"=% c #020229", -"-% c #020233", -";% c #020238", -">% c #020234", -",% c #020327", -"'% c #20201C", -")% c #5C5C4D", -"!% c #69685A", -"~% c #676756", -"{% c #545143", -"]% c #010102", -"^% c #4B493F", -"/% c #626454", -"(% c #4E4C3F", -"_% c #343128", -":% c #292921", -"<% c #27231D", -"[% c #281F19", -"}% c #221A13", -"|% c #1A1512", -"1% c #1A1311", -"2% c #13100F", -"3% c #17100E", -"4% c #1E100D", -"5% c #1E0C0B", -"6% c #110B09", -"7% c #080809", -"8% c #0C0D1A", -"9% c #060619", -"0% c #02020F", -"a% c #020212", -"b% c #020219", -"c% c #02021C", -"d% c #02021A", -"e% c #1B1B1A", -"f% c #59594A", -"g% c #676655", -"h% c #666657", -"i% c #000001", -"j% c #46453C", -"k% c #626254", -"l% c #5D5D4E", -"m% c #5C5C4E", -"n% c #5F5E50", -"o% c #5C5C4B", -"p% c #5A594B", -"q% c #585749", -"r% c #585447", -"s% c #515143", -"t% c #4E4C41", -"u% c #4B4B3F", -"v% c #4A453A", -"w% c #413F35", -"x% c #3D3D33", -"y% c #363442", -"z% c #312F41", -"A% c #2A293C", -"B% c #26263A", -"C% c #222238", -"D% c #1E1E2F", -"E% c #1A1A2B", -"F% c #18162A", -"G% c #161528", -"H% c #272636", -"I% c #59594F", -"J% c #686455", -"K% c #676556", -"L% c #555548", -"M% c #3A3930", -"N% c #625F4F", -"O% c #5E5E50", -"P% c #606052", -"Q% c #646254", -"R% c #636254", -"S% c #656454", -"T% c #656354", -"U% c #646454", -"V% c #636354", -"W% c #656254", -"X% c #636253", -"Y% c #605F51", -"Z% c #616051", -"`% c #5F6150", -" & c #605F50", -".& c #5D5D4F", -"+& c #5B5A53", -"@& c #595751", -"#& c #555550", -"$& c #514F4F", -"%& c #53504C", -"&& c #616052", -"*& c #636454", -"=& c #646455", -"-& c #585948", -";& c #20201D", -">& c #625F4E", -",& c #605D4D", -"'& c #626153", -")& c #626152", -"!& c #646354", -"~& c #626553", -"{& c #636553", -"]& c #595949", -"^& c #4B4941", -"/& c #524F44", -"(& c #5C5C4C", -"_& c #605E4E", -":& c #636153", -"<& c #626050", -"[& c #626051", -"}& c #5D6F4C", -"|& c #3D9F32", -"1& c #35A92D", -"2& c #59764B", -"3& c #59574B", -"4& c #4A483D", -"5& c #4F4C41", -"6& c #515043", -"7& c #565548", -"8& c #595846", -"9& c #5C5A4B", -"0& c #5F5E4E", -"a& c #5F6750", -"b& c #507F44", -"c& c #4B8640", -"d& c #5D6B4F", -"e& c #504F43", -"f& c #555546", -"g& c #535246", -"h& c #514F40", -"i& c #4F4D40", -"j& c #4C4C40", -"k& c #4D4A40", -"l& c #4A4A3F", -"m& c #49493E", -"n& c #49483E", -"o& c #4A483E", -"p& c #4A493C", -"q& c #505042", -"r& c #525242", -"s& c #555248", -"t& c #585748", -"u& c #5C5949", -"v& c #5C5B4C", -"w& c #5D5A4E", -"x& c #5E5D4E", -"y& c #5F5C4D", -"z& c #5F5E51", -"A& c #5F5F50", -"B& c #5F5E4C", -"C& c #5E5E4C", -"D& c #5D5A4A", -"E& c #5A5848", -"F& c #565445", -"G& c #535144", -"H& c #4F4E43", -"I& c #4D4D40", -"J& c #4A4A40", -"K& c #4B4A3C", -"L& c #4B4B3E", -"M& c #4E4E40", -"N& c #333329", -"O& c #2E2E27", -"P& c #303029", -"Q& c #4D4D44", -"R& c #575547", -"S& c #5C594C", -"T& c #605D4C", -"U& c #605E4C", -"V& c #5E5D4C", -"W& c #5F5D4C", -"X& c #5D5B4A", -"Y& c #5B5A4A", -"Z& c #585848", -"`& c #535345", -" * c #524F42", -".* c #3C3A34", -"+* c #414138", -"@* c #45453D", -"#* c #484638", -"$* c #464638", -"%* c #525248", -"&* c #595749", -"** c #5A584C", -"=* c #5D5D4C", -"-* c #5F5E4D", -";* c #5E5E4D", -">* c #000000", -",* c #21211D", -"'* c #23231F", -")* c #2D2D25", -"!* c #302E27", -"~* c #302E26", -"{* c #37352E", -"]* c #4C4B40", -"^* c #525144", -"/* c #5F5F5F", -"(* c #BFBFBF", -"_* c #8F8F8F", -":* c #FFFFFF", -"<* c #3F3F3F", -"[* c #6F6F6F", -"}* c #7F7F7F", -"|* c #1F1F1F", -"1* c #FEFEFE", -"2* c #2F2F2F", -"3* c #EFEFEF", -"4* c #DFDFDF", -"5* c #9F9F9F", -"6* c #0F0F0F", -" ", -" ", -" ", -" ", -" . + @ # $ % & * = - ; > , ' ) ! ~ @ { ] ", -" ^ / ( _ : < [ } | 1 2 2 3 4 5 6 7 8 9 0 a b c c d e f g h i j { ] ", -" k l m n o 4 p q r s t u v w x y z A B C D E F G H I J K L M N O P Q { ] ", -" R S T U V W X Y Z ` ...+.@.#.$.%.&.*.=.-.;.>.,.'.).!.~.{.].^./.(._.{ ] ", -" W :.<.[.}.|.1.2.3.4.5.6.7.8.9.0.a.b.c.d.e.f.g.h.i.j.k.l.m.n.o.p.q.{ ] ", -" r.s.t.u.v.w.x.y.z.A.B.C.D.E.F.C.G.H.I.J.K.L.M.N.O.P.Q.R.S.T.U.V.W.{ ] ", -" X.Y.Z.`. +.+++@+#+$+%+&+y.&+*+=+-+;+>+,+'+)+!+~+{+]+^+/+(+_+:+<+[+{ ] ", -" }+|+1+2+3+4+5+6+7+8+9+0+a+a+b+c+d+e+f+g+h+i+j+k+l+m+n+o+p+q+r+r+s+{ ] ", -" t+n u+v+w+x+y+z+A+B+C+D+E+F+G+H+I+J+K+L+M+N+/+O+P+Q+R+S+T+U+V+U+W+{ ] ", -" X+Y+Z+`+ @.@+@@@] #@$@%@@@&@*@=@-@;@>@,@'@'@)@!@~@{@]@^@/@(@_@:@{ ] ", -" <@[@}@0+`+|@1@2@] 3@4@5@6@7@8@9@0@$+a@b@c@d@e@f@g@h@i@j@k@l@m@n@{ ] ", -" o@p@q@r@s@t@u@v@w@C.x@y@z@A@B@C@D@E@F@G@H@I@J@K@L@M@N@O@P@Q@R@S@{ ] ", -" #.T@n@U@M@V@W@X@Y@Z@`@ #.#.#+#@###$#%#&#*#$+=#-#;#>#,#'#)#!#V ~#{ ] ", -" {#]#^#/#G.(#_#:#<#[#}#] { { >#|#1#2#3#z.-#4#3#5#6#] 8+7#8#9#0#a#{ ] ", -" b#c#d#e#f#g#h#i#j#k#l#m#n#o#p#q#r#s#@#t#u#v#w#x#] ] C.y#z#A#A#B#{ ] ", -" C#D#E#F#G#H#I#J#K#L#M#N#O#P#Q#R#S#T#U#r@V#W#X#Y#] ] ] . Z#`# $.${ ] ", -" +$@$#$$$%$&$*$=$-$;$>$,$'$)${ !$`+~$>#{$]$^$] ] ] ] ] /$($_$X.:${ ] ", -" <$[$}$|$1$2$3$4$5$6$7$8$9$0$a$b$c$d$e$f$g$h$i$j$k$l$m$. n$o$U p${ ] ", -" q$r$s$t$u$v$w$x$y$z$A$B$C$D$E$F$a+G$b.H$I$J$K$L$M$N$O$P$Q$R$S$T${ ] ", -" U$V$W$X$Y$Z$`$ %.%+%@%#%$%C$A${ D.%%&%*%=%-%;%;%>%,%'%)%!%~%{%{ ]% ", -" ^%/%(%_%:%<%[%}%|%1%2%3%4%5%6%7%E.8%9%0%a%b%b%c%d%F+e%f%g%h%^#{ i% ", -" j%k%l%m%n%Z.o%p%q%r%s%t%u%v%w%x%y#y%z%A%B%C%D%E%F%G%H%I%J%K%L%{ i% ", -" M%N%O%P%N%k%Q%R%Q%S%T%U%V%W%X%s$Y%Z%`% &#..&+&@&#&$&%&&&*&=&-&{ ", -" ;&>&,&n%'&'&k%'&)&'&W%W%k%Q%R%Q%*&W%R%R%W%W%S%!&Q%~&{&W%R%W%]&]% ", -" ^&: /&(&_&'&:&<&'&[&k%k%k%W%R%W%R%R%V%k%R%k%R%k%}&|&1&2&Q%3&]% ", -" 4&5&6&T$7&8&9&0&N%k%k%R%k%N%k%R%R%Q%R%k%a&b&c&d&Z%p%]% ", -" e&f&g&h&i&j&k&l&m&n&o&p&'#q&r&s&7&t&u&v&w&x&y&z&A&[$0& ", -" i&B&B&B&C&C&v&D&E&d#t&F&G&<.<.H&I&J&K&L&J&j&M&H&N&O&}@ ", -" P&Q&R&S&T&C&B&B&C&U&B&V&W&T&o%X&Y&&.p%Z&L%`& *U# ", -" .*W++*@*#*$*%*&***Y&=*-*B&;*;*C&]% ", -" >*>*>*>*>*>*>*>*>* ,*'*<$)*!*~*{*]*^* ", -" >*/*(*(*(*(*(*(*(*_*>* >*>* ", -" >*>*:*:*<*>*>*_*(*>*>*[*}*>* ", -" >*>*:*:*<*>*<*|*(*>*/*1*}*>* >*>*>*>* >*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>*>* ", -" >*>*:*:*<*>*}*<*2*/*3*:*4*(*>*>*_*(*(*2*>*/*(*(*/*_*(*/*>*(*(*(*(*(*(*>*/*(*_*>* ", -" >*>*:*:*[*[*:*<*>*>*(*:*}*>*>*}*:*>*}*:*2*>*(*:*4*(*:*}*>*<*:*:*>*}*:*3*/*(*:*}*>* ", -" >*>*:*:*5*5*:*<*>*>*(*:*}*>*|*(*:*>*}*:*(*>*(*:*}*>*}*<*>*<*:*:*>*}*:*(*>*(*:*}*>* ", -" >*>*:*:*<*6*5*<*>*>*(*:*}*>*<*:*:*(*4*:*(*>*(*:*}*>*>*>*>*<*:*:*>*}*:*(*>*(*:*}*>* ", -" >*>*:*:*<*>*/*2*6*|*(*:*}*>*<*:*:*>*>*>*>*>*(*:*}*>* >*<*:*:*>*}*:*(*>*(*:*}*>* ", -" >*>*:*:*<*>*>*>*<*}*(*:*}*>*<*:*:*/*>*>*/*>*(*:*}*>* >*<*:*:*>*}*:*(*>*(*:*}*>* ", -" >*>*:*:*<*>*>*_*5*|*(*:*}*_*6*5*:*3*(*(*2*>*(*:*}*>* >*<*:*:*>*}*:*(*>*(*:*}*>* ", -" >*/*(*(*(*(*(*(*(*_*>*>*(*(*2*>*>*_*(*(*2*>*/*(*(*(*2*>* >*(*(*(*(*(*(*(*(*(*(*(*2*>* ", -" >*>*>*>*>*>*>*>*>* >*>*>* >*>*>*>* >*>*>*>*>* >*>*>*>*>*>*>*>*>*>*>*>* ", -" "}; diff --git a/src/menus.h b/src/menus.h index b9933f9..e96f661 100644 --- a/src/menus.h +++ b/src/menus.h @@ -25,7 +25,7 @@ # define _MENUS_H # include -# include +# include # include "events.h" # include "pixmap.h" diff --git a/src/options.c b/src/options.c index 49ac160..649a7ed 100644 --- a/src/options.c +++ b/src/options.c @@ -499,11 +499,6 @@ version(void) #else printf(" -PIXMAP_OFFSET"); #endif -#ifdef IMLIB_TRANS - printf(" +IMLIB_TRANS"); -#else - printf(" -IMLIB_TRANS"); -#endif #ifdef BACKGROUND_CYCLING_SUPPORT printf(" +BACKGROUND_CYCLING_SUPPORT"); #else @@ -2742,7 +2737,7 @@ parse_image(char *buff, void *state) n = NumWords(mods); if (!BEG_STRCASECMP(color, "image ")) { - RESET_AND_ASSIGN(iml->mod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->mod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->mod->contrast = iml->mod->gamma = 0xff; iml->mod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { @@ -2752,7 +2747,7 @@ parse_image(char *buff, void *state) iml->mod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); } } else if (!BEG_STRCASECMP(color, "red ")) { - RESET_AND_ASSIGN(iml->rmod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->rmod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->rmod->contrast = iml->rmod->gamma = 0xff; iml->rmod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { @@ -2762,7 +2757,7 @@ parse_image(char *buff, void *state) iml->rmod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); } } else if (!BEG_STRCASECMP(color, "green ")) { - RESET_AND_ASSIGN(iml->gmod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->gmod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->gmod->contrast = iml->gmod->gamma = 0xff; iml->gmod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { @@ -2772,7 +2767,7 @@ parse_image(char *buff, void *state) iml->gmod->gamma = (int) strtol(PWord(3, mods), (char **) NULL, 0); } } else if (!BEG_STRCASECMP(color, "blue ")) { - RESET_AND_ASSIGN(iml->bmod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->bmod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->bmod->contrast = iml->bmod->gamma = 0xff; iml->bmod->brightness = (int) strtol(mods, (char **) NULL, 0); if (n > 1) { @@ -2795,7 +2790,7 @@ parse_image(char *buff, void *state) print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"border\"", file_peek_path(), file_peek_line()); return NULL; } - RESET_AND_ASSIGN(images[idx].current->iml->border, (ImlibBorder *) MALLOC(sizeof(ImlibBorder))); + RESET_AND_ASSIGN(images[idx].current->iml->border, (Imlib_Border *) MALLOC(sizeof(Imlib_Border))); images[idx].current->iml->border->left = (unsigned short) strtoul(PWord(2, buff), (char **) NULL, 0); images[idx].current->iml->border->right = (unsigned short) strtoul(PWord(3, buff), (char **) NULL, 0); @@ -2805,7 +2800,7 @@ parse_image(char *buff, void *state) if ((images[idx].current->iml->border->left == 0) && (images[idx].current->iml->border->right == 0) && (images[idx].current->iml->border->top == 0) && (images[idx].current->iml->border->bottom == 0)) { FREE(images[idx].current->iml->border); - images[idx].current->iml->border = (ImlibBorder *) NULL; /* No sense in wasting CPU time and memory if there are no borders */ + images[idx].current->iml->border = (Imlib_Border *) NULL; /* No sense in wasting CPU time and memory if there are no borders */ } } else if (!BEG_STRCASECMP(buff, "bevel ")) { if (idx < 0) { @@ -2825,7 +2820,7 @@ parse_image(char *buff, void *state) FREE(images[idx].current->iml->bevel); } images[idx].current->iml->bevel = (bevel_t *) MALLOC(sizeof(bevel_t)); - images[idx].current->iml->bevel->edges = (ImlibBorder *) MALLOC(sizeof(ImlibBorder)); + images[idx].current->iml->bevel->edges = (Imlib_Border *) MALLOC(sizeof(Imlib_Border)); if (!BEG_STRCASECMP(PWord(2, buff), "down")) { images[idx].current->iml->bevel->up = 0; @@ -2840,7 +2835,7 @@ parse_image(char *buff, void *state) if ((images[idx].current->iml->bevel->edges->left == 0) && (images[idx].current->iml->bevel->edges->right == 0) && (images[idx].current->iml->bevel->edges->top == 0) && (images[idx].current->iml->bevel->edges->bottom == 0)) { FREE(images[idx].current->iml->bevel->edges); - images[idx].current->iml->bevel->edges = (ImlibBorder *) NULL; + images[idx].current->iml->bevel->edges = (Imlib_Border *) NULL; FREE(images[idx].current->iml->bevel); images[idx].current->iml->bevel = (bevel_t *) NULL; } @@ -2857,7 +2852,7 @@ parse_image(char *buff, void *state) print_error("Parse error in file %s, line %lu: Invalid parameter list for attribute \"padding\"", file_peek_path(), file_peek_line()); return NULL; } - RESET_AND_ASSIGN(images[idx].current->iml->pad, (ImlibBorder *) MALLOC(sizeof(ImlibBorder))); + RESET_AND_ASSIGN(images[idx].current->iml->pad, (Imlib_Border *) MALLOC(sizeof(Imlib_Border))); images[idx].current->iml->pad->left = (unsigned short) strtoul(PWord(2, buff), (char **) NULL, 0); images[idx].current->iml->pad->right = (unsigned short) strtoul(PWord(3, buff), (char **) NULL, 0); @@ -2867,7 +2862,7 @@ parse_image(char *buff, void *state) if ((images[idx].current->iml->pad->left == 0) && (images[idx].current->iml->pad->right == 0) && (images[idx].current->iml->pad->top == 0) && (images[idx].current->iml->pad->bottom == 0)) { FREE(images[idx].current->iml->pad); - images[idx].current->iml->pad = (ImlibBorder *) NULL; + images[idx].current->iml->pad = (Imlib_Border *) NULL; } } else { print_error("Parse error in file %s, line %lu: Attribute \"%s\" is not valid " @@ -3850,7 +3845,7 @@ post_parse(void) unsigned char n = NumWords(rs_cmod_image); imlib_t *iml = images[image_bg].norm->iml; - RESET_AND_ASSIGN(iml->mod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->mod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->mod->contrast = iml->mod->gamma = 0xff; iml->mod->brightness = (int) strtol(rs_cmod_image, (char **) NULL, 0); if (n > 1) { @@ -3865,7 +3860,7 @@ post_parse(void) unsigned char n = NumWords(rs_cmod_red); imlib_t *iml = images[image_bg].norm->iml; - RESET_AND_ASSIGN(iml->rmod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->rmod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->rmod->contrast = iml->rmod->gamma = 0xff; iml->rmod->brightness = (int) strtol(rs_cmod_red, (char **) NULL, 0); if (n > 1) { @@ -3880,7 +3875,7 @@ post_parse(void) unsigned char n = NumWords(rs_cmod_green); imlib_t *iml = images[image_bg].norm->iml; - RESET_AND_ASSIGN(iml->gmod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->gmod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->gmod->contrast = iml->gmod->gamma = 0xff; iml->gmod->brightness = (int) strtol(rs_cmod_green, (char **) NULL, 0); if (n > 1) { @@ -3895,7 +3890,7 @@ post_parse(void) unsigned char n = NumWords(rs_cmod_blue); imlib_t *iml = images[image_bg].norm->iml; - RESET_AND_ASSIGN(iml->bmod, (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier))); + RESET_AND_ASSIGN(iml->bmod, (colormod_t *) MALLOC(sizeof(colormod_t))); iml->bmod->contrast = iml->bmod->gamma = 0xff; iml->bmod->brightness = (int) strtol(rs_cmod_blue, (char **) NULL, 0); if (n > 1) { @@ -4208,12 +4203,15 @@ save_config(char *path, unsigned char save_theme) /* Now save each state. */ simg = images[i].norm; + if (simg->iml->im) { + imlib_context_set_image(simg->iml->im); + } fprintf(fp, " state normal\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } if (simg->iml->im) { - fprintf(fp, " file %s\n", NONULL(simg->iml->im->filename)); + fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } fprintf(fp, " geom %hdx%hd+%hd+%hd", simg->pmap->w, simg->pmap->h, simg->pmap->x, simg->pmap->y); if (simg->pmap->op & OP_TILE) { @@ -4255,12 +4253,15 @@ save_config(char *path, unsigned char save_theme) /* Selected state */ if (images[i].selected != images[i].norm) { simg = images[i].selected; + if (simg->iml->im) { + imlib_context_set_image(simg->iml->im); + } fprintf(fp, " state selected\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } if (simg->iml->im) { - fprintf(fp, " file %s\n", NONULL(simg->iml->im->filename)); + fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } fprintf(fp, " geom %hdx%hd+%hd+%hd", simg->pmap->w, simg->pmap->h, simg->pmap->x, simg->pmap->y); if (simg->pmap->op & OP_TILE) { @@ -4303,12 +4304,15 @@ save_config(char *path, unsigned char save_theme) /* Clicked state */ if (images[i].clicked != images[i].norm) { simg = images[i].clicked; + if (simg->iml->im) { + imlib_context_set_image(simg->iml->im); + } fprintf(fp, " state clicked\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } if (simg->iml->im) { - fprintf(fp, " file %s\n", NONULL(simg->iml->im->filename)); + fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } fprintf(fp, " geom %hdx%hd+%hd+%hd", simg->pmap->w, simg->pmap->h, simg->pmap->x, simg->pmap->y); if (simg->pmap->op & OP_TILE) { @@ -4351,12 +4355,15 @@ save_config(char *path, unsigned char save_theme) /* Disabled state */ if (images[i].disabled != images[i].norm) { simg = images[i].disabled; + if (simg->iml->im) { + imlib_context_set_image(simg->iml->im); + } fprintf(fp, " state disabled\n"); if (simg->fg || simg->bg) { fprintf(fp, " color 0x%08x 0x%08x\n", (unsigned int) simg->fg, (unsigned int) simg->bg); } if (simg->iml->im) { - fprintf(fp, " file %s\n", NONULL(simg->iml->im->filename)); + fprintf(fp, " file %s\n", NONULL(imlib_image_get_filename())); } fprintf(fp, " geom %hdx%hd+%hd+%hd", simg->pmap->w, simg->pmap->h, simg->pmap->x, simg->pmap->y); if (simg->pmap->op & OP_TILE) { diff --git a/src/pixmap.c b/src/pixmap.c index aabb97a..92ef2b6 100644 --- a/src/pixmap.c +++ b/src/pixmap.c @@ -31,13 +31,17 @@ static const char cvs_ident[] = "$Id$"; #include #include #include -#include +#ifdef HAVE_X_SHAPE_EXT +# include +# include +# include +# include +#endif #include "../libmej/debug.h" #include "../libmej/mem.h" #include "../libmej/strings.h" #include "e.h" -#include "icon.h" #include "startup.h" #include "menus.h" #include "options.h" @@ -48,14 +52,13 @@ static const char cvs_ident[] = "$Id$"; #include "windows.h" #ifdef PIXMAP_SUPPORT -static ImlibBorder bord_none = { 0, 0, 0, 0 }; -static ImlibColorModifier cmod_none = { 256, 256, 256 }; +static Imlib_Border bord_none = { 0, 0, 0, 0 }; +static colormod_t cmod_none = { 256, 256, 256 }; Pixmap desktop_pixmap = None, viewport_pixmap = None; Pixmap buffer_pixmap = None; Window desktop_window = None; unsigned char desktop_pixmap_is_mine = 0; -ImlibData *imlib_id = NULL; image_t images[image_max] = { {None, 0, 0, NULL, NULL, NULL, NULL, NULL}, @@ -346,15 +349,13 @@ reset_simage(simage_t * simg, unsigned long mask) D_PIXMAP(("reset_simage(%8p, 0x%08x)\n", simg, mask)); if ((mask & RESET_IMLIB_IM) && simg->iml->im) { - Imlib_destroy_image(imlib_id, simg->iml->im); + imlib_context_set_image(simg->iml->im); + imlib_free_image_and_decache(); simg->iml->im = NULL; } - if ((mask & RESET_PMAP_PIXMAP) && simg->pmap->pixmap != None) { - Imlib_free_pixmap(imlib_id, simg->pmap->pixmap); + if (((mask & RESET_PMAP_PIXMAP) && simg->pmap->pixmap != None) || ((mask & RESET_PMAP_MASK) && simg->pmap->mask != None)) { + imlib_free_pixmap_and_mask(simg->pmap->pixmap); simg->pmap->pixmap = None; - } - if ((mask & RESET_PMAP_MASK) && simg->pmap->mask != None) { - Imlib_free_pixmap(imlib_id, simg->pmap->mask); simg->pmap->mask = None; } if ((mask & RESET_IMLIB_BORDER) && simg->iml->border) { @@ -495,7 +496,7 @@ create_trans_pixmap(simage_t *simg, unsigned char which, Drawable d, int x, int if (simg->iml->bevel != NULL) { D_PIXMAP(("Beveling pixmap 0x%08x with edges %d, %d, %d, %d\n", p, simg->iml->bevel->edges->left, simg->iml->bevel->edges->top, simg->iml->bevel->edges->right, simg->iml->bevel->edges->bottom)); - Imlib_bevel_pixmap(imlib_id, p, width, height, simg->iml->bevel->edges, simg->iml->bevel->up); + FIXME_NOP(Imlib_bevel_pixmap(imlib_id, p, width, height, simg->iml->bevel->edges, simg->iml->bevel->up);) /* Need to write this */ } } XFreeGC(Xdisplay, gc); @@ -509,7 +510,7 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short Window dummy; unsigned int pw, ph, pb, pd; int px, py; - Pixmap p = None; + Pixmap p = None, mask = None; GC gc; Screen *scr; @@ -528,13 +529,20 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short if (viewport_pixmap == None) { imlib_t *tmp_iml = images[image_bg].current->iml; - xsize = tmp_iml->im->rgb_width; - ysize = tmp_iml->im->rgb_height; + imlib_context_set_image(tmp_iml->im); + imlib_context_set_drawable(d); + imlib_image_set_has_alpha(0); + imlib_context_set_anti_alias(1); + imlib_context_set_dither(1); + imlib_context_set_blend(0); + xsize = imlib_image_get_width(); + ysize = imlib_image_get_height(); if (tmp_iml->border) { - Imlib_set_image_border(imlib_id, tmp_iml->im, tmp_iml->border); + imlib_image_set_border(tmp_iml->border); } else { - Imlib_set_image_border(imlib_id, tmp_iml->im, &bord_none); + imlib_image_set_border(&bord_none); } +#ifdef FIXME_BLOCK if (tmp_iml->mod) { Imlib_set_image_modifier(imlib_id, tmp_iml->im, tmp_iml->mod); } else { @@ -555,14 +563,14 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short } else { Imlib_set_image_blue_modifier(imlib_id, tmp_iml->im, &cmod_none); } +#endif if ((images[image_bg].current->pmap->w > 0) || (images[image_bg].current->pmap->op & OP_SCALE)) { D_PIXMAP(("Scaling image to %dx%d\n", scr->width, scr->height)); - Imlib_render(imlib_id, tmp_iml->im, scr->width, scr->height); + imlib_render_pixmaps_for_whole_image_at_size(&viewport_pixmap, &mask, 0, scr->width, scr->height); } else { D_PIXMAP(("Tiling image at %dx%d\n", xsize, ysize)); - Imlib_render(imlib_id, tmp_iml->im, xsize, ysize); + imlib_render_pixmaps_for_whole_image(&viewport_pixmap, &mask, 0); } - viewport_pixmap = Imlib_copy_image(imlib_id, tmp_iml->im); D_PIXMAP(("Created viewport_pixmap == 0x%08x\n", viewport_pixmap)); } else { XGetGeometry(Xdisplay, viewport_pixmap, &dummy, &px, &py, &pw, &ph, &pb, &pd); @@ -572,7 +580,7 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short if (simg->pmap->pixmap != None) { XGetGeometry(Xdisplay, simg->pmap->pixmap, &dummy, &px, &py, &pw, &ph, &pb, &pd); if (pw != width || ph != height) { - Imlib_free_pixmap(imlib_id, simg->pmap->pixmap); + imlib_free_pixmap_and_mask(simg->pmap->pixmap); simg->pmap->pixmap = None; } else { p = simg->pmap->pixmap; @@ -600,6 +608,8 @@ create_viewport_pixmap(simage_t *simg, Drawable d, int x, int y, unsigned short void paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, unsigned short y, unsigned short w, unsigned short h) { + Pixmap pmap = None, mask = None; + GC gc; ASSERT(simg != NULL); REQUIRE(d != None); @@ -610,7 +620,6 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, if (image_mode_is(which, MODE_AUTO) && image_mode_is(which, ALLOW_AUTO)) { char buff[255], *reply; const char *iclass, *state; - Pixmap pmap, mask; check_image_ipc(0); if (image_mode_is(which, MODE_AUTO)) { @@ -632,10 +641,6 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, image_mode_fallback(which); FREE(reply); } else { - GC gc; - XGCValues gcvalues; - - gc = XCreateGC(Xdisplay, d, 0, &gcvalues); pmap = (Pixmap) strtoul(reply, (char **) NULL, 0); mask = (Pixmap) strtoul(PWord(2, reply), (char **) NULL, 0); FREE(reply); @@ -644,6 +649,7 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, if (mask) { shaped_window_apply_mask(pmap, mask); } + gc = XCreateGC(Xdisplay, d, 0, NULL); XSetClipMask(Xdisplay, gc, mask); XSetClipOrigin(Xdisplay, gc, x, y); XCopyArea(Xdisplay, pmap, d, gc, 0, 0, w, h, x, y); @@ -661,35 +667,41 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, } } else if (image_mode_is(which, MODE_TRANS) && image_mode_is(which, ALLOW_TRANS)) { Pixmap p; - GC gc; gc = XCreateGC(Xdisplay, d, 0, NULL); p = create_trans_pixmap(simg, which, d, x, y, w, h); if (simg->iml->bevel != NULL) { - Imlib_bevel_pixmap(imlib_id, p, w, h, simg->iml->bevel->edges, simg->iml->bevel->up); + FIXME_NOP(Imlib_bevel_pixmap(imlib_id, p, w, h, simg->iml->bevel->edges, simg->iml->bevel->up);) } XCopyArea(Xdisplay, p, d, gc, 0, 0, w, h, x, y); XFreePixmap(Xdisplay, p); + XFreeGC(Xdisplay, gc); } else if (image_mode_is(which, MODE_VIEWPORT) && image_mode_is(which, ALLOW_VIEWPORT)) { Pixmap p; - GC gc; gc = XCreateGC(Xdisplay, d, 0, NULL); p = create_viewport_pixmap(simg, d, x, y, w, h); if (simg->iml->bevel != NULL) { - Imlib_bevel_pixmap(imlib_id, p, w, h, simg->iml->bevel->edges, simg->iml->bevel->up); + FIXME_NOP(Imlib_bevel_pixmap(imlib_id, p, w, h, simg->iml->bevel->edges, simg->iml->bevel->up);) } XCopyArea(Xdisplay, p, d, gc, 0, 0, w, h, x, y); XFreePixmap(Xdisplay, p); + XFreeGC(Xdisplay, gc); } } if ((which == image_max) || (image_mode_is(which, MODE_IMAGE) && image_mode_is(which, ALLOW_IMAGE))) { + imlib_context_set_image(simg->iml->im); + imlib_context_set_drawable(d); + imlib_context_set_anti_alias(1); + imlib_context_set_dither(1); + imlib_context_set_blend(0); if (simg->iml->border) { - Imlib_set_image_border(imlib_id, simg->iml->im, simg->iml->border); + imlib_image_set_border(simg->iml->border); } else { - Imlib_set_image_border(imlib_id, simg->iml->im, &bord_none); + imlib_image_set_border(&bord_none); } +#ifdef FIXME_BLOCK if (simg->iml->mod) { Imlib_set_image_modifier(imlib_id, simg->iml->im, simg->iml->mod); } else { @@ -710,7 +722,21 @@ paste_simage(simage_t *simg, unsigned char which, Drawable d, unsigned short x, } else { Imlib_set_image_blue_modifier(imlib_id, simg->iml->im, &cmod_none); } - Imlib_paste_image(imlib_id, simg->iml->im, (Window) d, x, y, w, h); +#endif + if (w == imlib_image_get_width() && h == imlib_image_get_height()) { + imlib_render_pixmaps_for_whole_image(&pmap, &mask, 0); + } else { + imlib_render_pixmaps_for_whole_image_at_size(&pmap, &mask, 0, w, h); + } + ASSERT(pmap != None); + gc = XCreateGC(Xdisplay, d, 0, NULL); + if (mask) { + XSetClipMask(Xdisplay, gc, mask); + XSetClipOrigin(Xdisplay, gc, x, y); + } + XCopyArea(Xdisplay, pmap, d, gc, 0, 0, w, h, x, y); + imlib_free_pixmap_and_mask(pmap); + XFreeGC(Xdisplay, gc); } } @@ -937,8 +963,13 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short int x = simg->pmap->x; int y = simg->pmap->y; - xsize = simg->iml->im->rgb_width; - ysize = simg->iml->im->rgb_height; + imlib_context_set_image(simg->iml->im); + imlib_context_set_drawable(win); + imlib_context_set_anti_alias(1); + imlib_context_set_dither(1); + imlib_context_set_blend(0); + xsize = imlib_image_get_width(); + ysize = imlib_image_get_height(); D_PIXMAP(("w == %d, h == %d, x == %d, y == %d, xsize == %d, ysize == %d\n", w, h, x, y, xsize, ysize)); if ((simg->pmap->op & OP_PROPSCALE)) { @@ -976,93 +1007,91 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short ypos = (short) ((height - yscaled) * ((float) y / 100.0)); D_PIXMAP(("Calculated scaled size as %hux%hu with origin at (%hd, %hd)\n", xscaled, yscaled, xpos, ypos)); - if (simg->iml->last_w != xscaled || simg->iml->last_h != yscaled || 1) { - - simg->iml->last_w = xscaled; - simg->iml->last_h = yscaled; - - if (simg->iml->border) { - D_PIXMAP(("Setting image border: { left [%d], right [%d], top [%d], bottom [%d] }\n", - simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom)); - Imlib_set_image_border(imlib_id, simg->iml->im, simg->iml->border); - } else { - Imlib_set_image_border(imlib_id, simg->iml->im, &bord_none); - } - if (simg->iml->mod) { - D_PIXMAP(("Setting image modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", - simg->iml->mod->gamma, simg->iml->mod->brightness, simg->iml->mod->contrast)); - Imlib_set_image_modifier(imlib_id, simg->iml->im, simg->iml->mod); - } else { - Imlib_set_image_modifier(imlib_id, simg->iml->im, &cmod_none); - } - if (simg->iml->rmod) { - D_PIXMAP(("Setting image red modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", - simg->iml->rmod->gamma, simg->iml->rmod->brightness, simg->iml->rmod->contrast)); - Imlib_set_image_red_modifier(imlib_id, simg->iml->im, simg->iml->rmod); - } else { - Imlib_set_image_red_modifier(imlib_id, simg->iml->im, &cmod_none); - } - if (simg->iml->gmod) { - D_PIXMAP(("Setting image green modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", - simg->iml->gmod->gamma, simg->iml->gmod->brightness, simg->iml->gmod->contrast)); - Imlib_set_image_green_modifier(imlib_id, simg->iml->im, simg->iml->gmod); - } else { - Imlib_set_image_green_modifier(imlib_id, simg->iml->im, &cmod_none); - } - if (simg->iml->bmod) { - D_PIXMAP(("Setting image blue modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", - simg->iml->bmod->gamma, simg->iml->bmod->brightness, simg->iml->bmod->contrast)); - Imlib_set_image_blue_modifier(imlib_id, simg->iml->im, simg->iml->bmod); - } else { - Imlib_set_image_blue_modifier(imlib_id, simg->iml->im, &cmod_none); - } - D_PIXMAP(("Rendering image simg->iml->im [%8p] to %hdx%hd pixmap\n", simg->iml->im, xscaled, yscaled)); - Imlib_render(imlib_id, simg->iml->im, xscaled, yscaled); - rendered = 1; + if (simg->iml->border) { + D_PIXMAP(("Setting image border: { left [%d], right [%d], top [%d], bottom [%d] }\n", + simg->iml->border->left, simg->iml->border->right, simg->iml->border->top, simg->iml->border->bottom)); + imlib_image_set_border(simg->iml->border); + } else { + imlib_image_set_border(&bord_none); } - simg->pmap->pixmap = Imlib_copy_image(imlib_id, simg->iml->im); - simg->pmap->mask = Imlib_copy_mask(imlib_id, simg->iml->im); +#ifdef FIXME_BLOCK + if (simg->iml->mod) { + D_PIXMAP(("Setting image modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", + simg->iml->mod->gamma, simg->iml->mod->brightness, simg->iml->mod->contrast)); + Imlib_set_image_modifier(imlib_id, simg->iml->im, simg->iml->mod); + } else { + Imlib_set_image_modifier(imlib_id, simg->iml->im, &cmod_none); + } + if (simg->iml->rmod) { + D_PIXMAP(("Setting image red modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", + simg->iml->rmod->gamma, simg->iml->rmod->brightness, simg->iml->rmod->contrast)); + Imlib_set_image_red_modifier(imlib_id, simg->iml->im, simg->iml->rmod); + } else { + Imlib_set_image_red_modifier(imlib_id, simg->iml->im, &cmod_none); + } + if (simg->iml->gmod) { + D_PIXMAP(("Setting image green modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", + simg->iml->gmod->gamma, simg->iml->gmod->brightness, simg->iml->gmod->contrast)); + Imlib_set_image_green_modifier(imlib_id, simg->iml->im, simg->iml->gmod); + } else { + Imlib_set_image_green_modifier(imlib_id, simg->iml->im, &cmod_none); + } + if (simg->iml->bmod) { + D_PIXMAP(("Setting image blue modifier: { gamma [0x%08x], brightness [0x%08x], contrast [0x%08x] }\n", + simg->iml->bmod->gamma, simg->iml->bmod->brightness, simg->iml->bmod->contrast)); + Imlib_set_image_blue_modifier(imlib_id, simg->iml->im, simg->iml->bmod); + } else { + Imlib_set_image_blue_modifier(imlib_id, simg->iml->im, &cmod_none); + } +#endif + D_PIXMAP(("Rendering image simg->iml->im [%8p] to %hdx%hd pixmap\n", simg->iml->im, xscaled, yscaled)); + imlib_render_pixmaps_for_whole_image_at_size(&simg->pmap->pixmap, &simg->pmap->mask, 0, xscaled, yscaled); + rendered = 1; if (simg->pmap->mask != None) { shaped_window_apply_mask(win, simg->pmap->mask); } + if (simg->pmap->pixmap != None) { + if (pixmap != None) { + imlib_free_pixmap_and_mask(pixmap); + } + if (xscaled != width || yscaled != height || xpos != 0 || ypos != 0) { + unsigned char single; + + /* This tells us if we have a single, non-tiled image which does not entirely fill the window */ + single = ((xscaled < width || yscaled < height) && !(simg->pmap->op & OP_TILE)) ? 1 : 0; + + pixmap = simg->pmap->pixmap; + simg->pmap->pixmap = XCreatePixmap(Xdisplay, win, width, height, Xdepth); + if (single) { + XFillRectangle(Xdisplay, simg->pmap->pixmap, gc, 0, 0, width, height); + } + XSetTile(Xdisplay, gc, pixmap); + XSetTSOrigin(Xdisplay, gc, xpos, ypos); + XSetFillStyle(Xdisplay, gc, FillTiled); + if (single) { + XCopyArea(Xdisplay, pixmap, simg->pmap->pixmap, gc, 0, 0, xscaled, yscaled, xpos, ypos); + } else { + XFillRectangle(Xdisplay, simg->pmap->pixmap, gc, 0, 0, width, height); + } + imlib_free_pixmap_and_mask(pixmap); + } + if (simg->iml->bevel != NULL) { + FIXME_NOP(Imlib_bevel_pixmap(imlib_id, simg->pmap->pixmap, width, height, simg->iml->bevel->edges, simg->iml->bevel->up);) + } + D_PIXMAP(("Setting background of window 0x%08x to 0x%08x\n", win, simg->pmap->pixmap)); + if ((which == image_bg) && (Options & Opt_double_buffer)) { + copy_buffer_pixmap(MODE_VIEWPORT, (unsigned long) simg->pmap->pixmap, width, height); + XSetWindowBackgroundPixmap(Xdisplay, win, buffer_pixmap); + } else { + /* FIXME: For efficiency, just fill the window with the pixmap + and handle exposes by copying from simg->pmap->pixmap. */ + XSetWindowBackgroundPixmap(Xdisplay, win, simg->pmap->pixmap); + } + } } else { image_set_mode(which, MODE_SOLID); reset_simage(simg, RESET_ALL_SIMG); } - if (simg->pmap->pixmap != None) { - if (pixmap != None) { - Imlib_free_pixmap(imlib_id, pixmap); - } - if (xscaled != width || yscaled != height || xpos != 0 || ypos != 0) { - unsigned char single; - - single = ((xscaled < width || yscaled < height) && !(simg->pmap->op & OP_TILE)) ? 1 : 0; - - pixmap = simg->pmap->pixmap; - simg->pmap->pixmap = XCreatePixmap(Xdisplay, win, width, height, Xdepth); - if (single) - XFillRectangle(Xdisplay, simg->pmap->pixmap, gc, 0, 0, width, height); - XSetTile(Xdisplay, gc, pixmap); - XSetTSOrigin(Xdisplay, gc, xpos, ypos); - XSetFillStyle(Xdisplay, gc, FillTiled); - if (single) { - XCopyArea(Xdisplay, pixmap, simg->pmap->pixmap, gc, 0, 0, xscaled, yscaled, xpos, ypos); - } else { - XFillRectangle(Xdisplay, simg->pmap->pixmap, gc, 0, 0, width, height); - } - Imlib_free_pixmap(imlib_id, pixmap); - } - if (simg->iml->bevel != NULL) { - Imlib_bevel_pixmap(imlib_id, simg->pmap->pixmap, width, height, simg->iml->bevel->edges, simg->iml->bevel->up); - } - D_PIXMAP(("Setting background of window 0x%08x to 0x%08x\n", win, simg->pmap->pixmap)); - if ((which == image_bg) && (Options & Opt_double_buffer)) { - copy_buffer_pixmap(MODE_VIEWPORT, (unsigned long) simg->pmap->pixmap, width, height); - XSetWindowBackgroundPixmap(Xdisplay, win, buffer_pixmap); - } else { - XSetWindowBackgroundPixmap(Xdisplay, win, simg->pmap->pixmap); - } - } } /* Fall back to solid mode if all else fails. */ @@ -1079,8 +1108,10 @@ render_simage(simage_t * simg, Window win, unsigned short width, unsigned short XSetForeground(Xdisplay, gc, ((which == image_bg) ? (PixColors[bgColor]) : (simg->bg))); XFillRectangle(Xdisplay, simg->pmap->pixmap, gc, 0, 0, width, height); if (simg->iml->bevel != NULL) { - Imlib_bevel_pixmap(imlib_id, simg->pmap->pixmap, width, height, simg->iml->bevel->edges, simg->iml->bevel->up); + FIXME_NOP(Imlib_bevel_pixmap(imlib_id, simg->pmap->pixmap, width, height, simg->iml->bevel->edges, simg->iml->bevel->up);) } + /* FIXME: For efficiency, just fill the window with the pixmap + and handle exposes by copying from simg->pmap->pixmap. */ XSetWindowBackgroundPixmap(Xdisplay, win, simg->pmap->pixmap); } else { XSetWindowBackground(Xdisplay, win, ((which == image_bg) ? (PixColors[bgColor]) : (simg->bg))); @@ -1202,7 +1233,7 @@ unsigned char load_image(const char *file, simage_t *simg) { const char *f; - ImlibImage *im; + Imlib_Image *im; char *geom; ASSERT_RVAL(file != NULL, 0); @@ -1223,7 +1254,7 @@ load_image(const char *file, simage_t *simg) f = search_path(getenv(PATH_ENV), file, PIXMAP_EXT); } if (f != NULL) { - im = Imlib_load_image(imlib_id, (char *) f); + im = imlib_load_image(f); if (im == NULL) { print_error("Unable to load image file \"%s\"", file); return 0; @@ -1260,9 +1291,11 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h XImage *ximg; register unsigned long v, i; unsigned long x, y; +#if 0 int r, g, b; +#endif unsigned short rm, gm, bm, shade; - ImlibColor ctab[256]; + Imlib_Color ctab[256]; int real_depth = 0; register int br, bg, bb; register unsigned int mr, mg, mb; @@ -1305,10 +1338,9 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h } XQueryColors(Xdisplay, cmap, cols, 1 << Xdepth); for (i = 0; i < (unsigned long) (1 << Xdepth); i++) { - ctab[i].r = cols[i].red >> 8; - ctab[i].g = cols[i].green >> 8; - ctab[i].b = cols[i].blue >> 8; - ctab[i].pixel = cols[i].pixel; + ctab[i].red = cols[i].red >> 8; + ctab[i].green = cols[i].green >> 8; + ctab[i].blue = cols[i].blue >> 8; } } else if (Xdepth == 16) { @@ -1329,6 +1361,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h } D_PIXMAP(("XGetImage(Xdisplay, 0x%08x, 0, 0, %d, %d, -1, ZPixmap) returned %8p.\n", p, w, h, ximg)); if (Xdepth <= 8) { +#ifdef FIXME_BLOCK D_PIXMAP(("Rendering low-depth image, depth == %d\n", (int) Xdepth)); for (y = 0; y < h; y++) { for (x = 0; x < w; x++) { @@ -1340,6 +1373,7 @@ colormod_trans(Pixmap p, imlib_t *iml, GC gc, unsigned short w, unsigned short h XPutPixel(ximg, x, y, v); } } +#endif } else { D_PIXMAP(("Rendering high-depth image, depth == %d\n", real_depth)); /* Determine bitshift and bitmask values */ @@ -1661,9 +1695,9 @@ shaped_window_apply_mask(Drawable d, Pixmap mask) void set_icon_pixmap(char *filename, XWMHints * pwm_hints) { - +#ifdef FIXME_BLOCK const char *icon_path; - ImlibImage *temp_im; + Imlib_Image temp_im; XWMHints *wm_hints; if (pwm_hints) { @@ -1680,7 +1714,7 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints) XIconSize *icon_sizes; int count, i, w = 8, h = 8; /* At least 8x8 */ - temp_im = Imlib_load_image(imlib_id, (char *) icon_path); + temp_im = imlib_load_image(icon_path); /* If we're going to render the image anyway, might as well be nice and give it to the WM in a size it likes. */ if (XGetIconSizes(Xdisplay, Xroot, &icon_sizes, &count)) { for (i = 0; i < count; i++) { @@ -1700,9 +1734,13 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints) } MIN_IT(w, 64); MIN_IT(h, 64); - Imlib_render(imlib_id, temp_im, w, h); - wm_hints->icon_pixmap = Imlib_copy_image(imlib_id, temp_im); - wm_hints->icon_mask = Imlib_copy_mask(imlib_id, temp_im); + imlib_context_set_image(temp_im); + imlib_context_set_drawable(TermWin.parent); + imlib_image_set_has_alpha(0); + imlib_context_set_anti_alias(1); + imlib_context_set_dither(1); + imlib_context_set_blend(0); + imlib_render_pixmaps_for_whole_image_at_size(&wm_hints->icon_pixmap, &wm_hints->icon_mask, 0, w, h); if (check_for_enlightenment()) { wm_hints->flags |= IconPixmapHint | IconMaskHint; } else { @@ -1711,7 +1749,7 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints) XSetWindowBackgroundPixmap(Xdisplay, wm_hints->icon_window, wm_hints->icon_pixmap); wm_hints->flags |= IconWindowHint; } - Imlib_destroy_image(imlib_id, temp_im); + imlib_free_image_and_decache(); } } else { /* Use the default. It's 48x48, so if the WM doesn't like it, tough cookies. Pixmap -> ImlibImage -> Render -> Pixmap would be @@ -1734,32 +1772,6 @@ set_icon_pixmap(char *filename, XWMHints * pwm_hints) XSetWMHints(Xdisplay, TermWin.parent, wm_hints); XFree(wm_hints); } +#endif } - -# ifdef USE_EFFECTS -int -fade_in(ImlibImage *img, int frames) -{ - - static int i = 0; - register int f = frames; - ImlibColorModifier mod; - double gamma, brightness, contrast; - - Imlib_get_image_modifier(imlib_id, img, &mod); - - if (i < f) { - i++; - gamma = (double) mod.gamma / i; - brightness = (double) mod.brightness / i; - contrast = (double) mod.contrast / i; - Imlib_set_image_modifier(imlib_id, img, &mod); - } else if (i == f) { - i = 0; - } - /* how many frames to go */ - return (f - i); -} -# endif /* USE_EFFECTS */ - #endif /* PIXMAP_SUPPORT */ diff --git a/src/pixmap.h b/src/pixmap.h index fe0eef6..0848868 100644 --- a/src/pixmap.h +++ b/src/pixmap.h @@ -25,7 +25,7 @@ # define _PIXMAP_H #include -#include +#include #include "misc.h" @@ -37,8 +37,9 @@ # define background_is_auto() (images[image_bg].mode & MODE_AUTO) # define background_is_pixmap() (background_is_image() || background_is_trans() || background_is_viewport() || background_is_auto()) # define delete_simage(simg) do { \ - Imlib_free_pixmap(imlib_id, (simg)->pmap->pixmap); \ - Imlib_destroy_image(imlib_id, (simg)->iml->im); \ + imlib_free_pixmap_and_mask((simg)->pmap->pixmap); \ + imlib_context_set_image((simg)->iml->im); \ + imlib_free_image_and_decache(); \ (simg)->pmap->pixmap = None; (simg)->iml->im = NULL; \ } while (0) # define CONVERT_SHADE(s) (0xff - (((s) * 0xff) / 100)) @@ -150,14 +151,18 @@ typedef struct { Pixmap mask; } pixmap_t; typedef struct { - ImlibBorder *edges; + Imlib_Border *edges; unsigned char up; } bevel_t; +typedef struct cmod_struct { + unsigned short gamma, brightness, contrast; +} colormod_t; typedef struct { - ImlibImage *im; - ImlibBorder *border, *pad; + Imlib_Image im; + Imlib_Border *border, *pad; bevel_t *bevel; - ImlibColorModifier *mod, *rmod, *gmod, *bmod; + colormod_t *mod, *rmod, *gmod, *bmod; + Imlib_Color_Modifier imod, cmod; short last_w, last_h; } imlib_t; typedef struct { @@ -174,7 +179,6 @@ typedef short renderop_t; /************ Variables ************/ extern image_t images[image_max]; -extern ImlibData *imlib_id; extern Pixmap desktop_pixmap, viewport_pixmap, buffer_pixmap; extern Window desktop_window; @@ -210,10 +214,6 @@ extern Pixmap get_desktop_pixmap(void); #endif extern void shaped_window_apply_mask(Drawable, Pixmap); extern void set_icon_pixmap(char *, XWMHints *); -#ifdef USE_EFFECTS -extern int fade_in(ImlibImage *, int); -extern int fade_out(ImlibImage *, int); -#endif _XFUNCPROTOEND diff --git a/src/screen.c b/src/screen.c index b14185c..1249fcf 100644 --- a/src/screen.c +++ b/src/screen.c @@ -10,6 +10,7 @@ static const char cvs_ident[] = "$Id$"; /* includes */ #include +#include #ifdef HAVE_SYS_TIME_H # include #endif @@ -21,6 +22,7 @@ static const char cvs_ident[] = "$Id$"; #ifdef HAVE_SYS_IOCTL_H # include #endif +#include #include #include #include /* CARD32 */ diff --git a/src/scrollbar.c b/src/scrollbar.c index b19d241..31779be 100644 --- a/src/scrollbar.c +++ b/src/scrollbar.c @@ -563,8 +563,9 @@ scrollbar_draw_anchor(unsigned char image_state, unsigned char force_modes) { imlib_t *iml = images[image_st].current->iml, *siml = images[image_sa].current->iml; if (image_mode_is(image_st, MODE_IMAGE) && iml->im) { - tw = iml->im->rgb_width; - th = iml->im->rgb_height; + imlib_context_set_image(iml->im); + tw = imlib_image_get_width(); + th = imlib_image_get_height(); } else if (siml->bevel) { tw = scrollbar_anchor_width() - (siml->bevel->edges->left + siml->bevel->edges->right); th = scrollbar_anchor_width() - (siml->bevel->edges->top + siml->bevel->edges->bottom); diff --git a/src/scrollbar.h b/src/scrollbar.h index 5852908..932bc2e 100644 --- a/src/scrollbar.h +++ b/src/scrollbar.h @@ -26,7 +26,7 @@ #include #include -#include +#include #include "events.h" /************ Macros and Definitions ************/ diff --git a/src/startup.c b/src/startup.c index 8021980..efef088 100644 --- a/src/startup.c +++ b/src/startup.c @@ -79,8 +79,6 @@ eterm_bootstrap(int argc, char *argv[]) int i; char *val; static char windowid_string[20], *display_string, *term_string; /* "WINDOWID=\0" = 10 chars, UINT_MAX = 10 chars */ - ImlibInitParams params; - orig_argv0 = argv[0]; /* Security enhancements -- mej */ @@ -90,6 +88,7 @@ eterm_bootstrap(int argc, char *argv[]) my_rgid = getgid(); my_egid = getegid(); privileges(REVERT); + install_handlers(); PABLO_START_TRACING(); getcwd(initial_dir, PATH_MAX); @@ -127,28 +126,12 @@ eterm_bootstrap(int argc, char *argv[]) if (Options & Opt_install) { cmap = XCreateColormap(Xdisplay, Xroot, Xvisual, AllocNone); XInstallColormap(Xdisplay, cmap); -#ifdef PIXMAP_SUPPORT - params.cmap = cmap; - params.flags = PARAMS_COLORMAP; -#endif } else { cmap = Xcmap; -#ifdef PIXMAP_SUPPORT - params.flags = 0; -#endif } - - /* Since we always use Imlib now, let's initialize it here. */ -#ifdef PIXMAP_SUPPORT - if (params.flags) { - imlib_id = Imlib_init_with_params(Xdisplay, ¶ms); - } else { - imlib_id = Imlib_init(Xdisplay); - } - if (!imlib_id) { - fatal_error("Unable to initialize Imlib. Aborting."); - } -#endif + imlib_context_set_display(Xdisplay); + imlib_context_set_visual(Xvisual); + imlib_context_set_colormap(cmap); get_modifiers(); /* Set up modifier masks before parsing config files. */ diff --git a/src/system.c b/src/system.c index d0b2978..3baa989 100644 --- a/src/system.c +++ b/src/system.c @@ -42,6 +42,17 @@ static const char cvs_ident[] = "$Id$"; #include "misc.h" #include "system.h" +static RETSIGTYPE dummy_handler(int); + +static sighandler_t old_handler = (sighandler_t) NULL; + +static RETSIGTYPE +dummy_handler(int sig) +{ + signal(SIGCHLD, old_handler); + SIG_RETURN(0); +} + int wait_for_chld(int system_pid) { @@ -88,6 +99,7 @@ system_wait(char *command) D_OPTIONS(("system_wait(%s) called.\n", command)); + old_handler = signal(SIGCHLD, dummy_handler); if (!(pid = fork())) { setreuid(my_ruid, my_ruid); setregid(my_rgid, my_rgid); @@ -108,6 +120,7 @@ system_no_wait(char *command) D_OPTIONS(("system_no_wait(%s) called.\n", command)); + old_handler = signal(SIGCHLD, dummy_handler); if (!(pid = fork())) { setreuid(my_ruid, my_ruid); setregid(my_rgid, my_rgid); diff --git a/src/term.c b/src/term.c index 25a75ad..5a3b4ac 100644 --- a/src/term.c +++ b/src/term.c @@ -1072,8 +1072,10 @@ process_csi_seq(void) unsigned short len; if (background_is_pixmap()) { - char *fname = images[image_bg].current->iml->im->filename; + const char *fname; + imlib_context_set_image(images[image_bg].current->iml->im); + fname = imlib_image_get_filename(); len = strlen(fname) + sizeof(APL_NAME) + sizeof(VERSION) + 5; tbuff = MALLOC(len); snprintf(tbuff, len, APL_NAME "-" VERSION ": %s", fname); @@ -1757,7 +1759,7 @@ xterm_seq(int op, const char *str) FOREACH_IMAGE(if (!image_mode_is(idx, MODE_TRANS) && image_mode_is(idx, ALLOW_TRANS)) { \ image_set_mode(idx, MODE_TRANS); \ if (images[idx].current->pmap->pixmap != None) { \ - Imlib_free_pixmap(imlib_id, images[idx].current->pmap->pixmap); \ + imlib_free_pixmap_and_mask(images[idx].current->pmap->pixmap); \ } \ images[idx].current->pmap->pixmap = None; \ }); @@ -1774,7 +1776,7 @@ xterm_seq(int op, const char *str) FOREACH_IMAGE(if (!image_mode_is(idx, MODE_TRANS) && image_mode_is(idx, ALLOW_TRANS)) { \ image_set_mode(idx, MODE_TRANS); \ if (images[idx].current->pmap->pixmap != None) { \ - Imlib_free_pixmap(imlib_id, images[idx].current->pmap->pixmap); \ + imlib_free_pixmap_and_mask(images[idx].current->pmap->pixmap); \ } \ images[idx].current->pmap->pixmap = None; \ } else if (image_mode_is(idx, MODE_TRANS)) {if (image_mode_is(idx, ALLOW_IMAGE)) {image_set_mode(idx, MODE_IMAGE);} \ @@ -1837,7 +1839,7 @@ xterm_seq(int op, const char *str) imlib_t *iml = images[which].current->iml; if (iml->mod == NULL) { - iml->mod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->mod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->mod->brightness = iml->mod->contrast = iml->mod->gamma = 0x100; } if (!BEG_STRCASECMP("brightness", mod)) { @@ -1852,7 +1854,7 @@ xterm_seq(int op, const char *str) imlib_t *iml = images[which].current->iml; if (iml->rmod == NULL) { - iml->rmod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->rmod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->rmod->brightness = iml->rmod->contrast = iml->rmod->gamma = 0x100; } if (!BEG_STRCASECMP("brightness", mod)) { @@ -1867,7 +1869,7 @@ xterm_seq(int op, const char *str) imlib_t *iml = images[which].current->iml; if (iml->gmod == NULL) { - iml->gmod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->gmod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->gmod->brightness = iml->gmod->contrast = iml->gmod->gamma = 0x100; } if (!BEG_STRCASECMP("brightness", mod)) { @@ -1882,7 +1884,7 @@ xterm_seq(int op, const char *str) imlib_t *iml = images[which].current->iml; if (iml->bmod == NULL) { - iml->bmod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->bmod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->bmod->brightness = iml->bmod->contrast = iml->bmod->gamma = 0x100; } if (!BEG_STRCASECMP("brightness", mod)) { @@ -1931,7 +1933,7 @@ xterm_seq(int op, const char *str) } } else { if (iml->mod == NULL) { - iml->mod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->mod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->mod->contrast = iml->mod->gamma = 0x100; } if (iml->mod->brightness != s) { @@ -1962,7 +1964,7 @@ xterm_seq(int op, const char *str) } } else { if (iml->rmod == NULL) { - iml->rmod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->rmod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->rmod->contrast = iml->rmod->gamma = 0x100; } if (iml->rmod->brightness != (int) r) { @@ -1983,7 +1985,7 @@ xterm_seq(int op, const char *str) } } else { if (iml->gmod == NULL) { - iml->gmod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->gmod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->gmod->contrast = iml->gmod->gamma = 0x100; } if (iml->gmod->brightness != (int) g) { @@ -2004,7 +2006,7 @@ xterm_seq(int op, const char *str) } } else { if (iml->bmod == NULL) { - iml->bmod = (ImlibColorModifier *) MALLOC(sizeof(ImlibColorModifier)); + iml->bmod = (colormod_t *) MALLOC(sizeof(colormod_t)); iml->bmod->contrast = iml->bmod->gamma = 0x100; } if (iml->bmod->brightness != (int) b) { diff --git a/src/windows.c b/src/windows.c index 655620b..da44e88 100644 --- a/src/windows.c +++ b/src/windows.c @@ -137,7 +137,6 @@ get_bottom_shadow_color(Pixel norm_color, const char *type) { XColor xcol; - int r, g, b; xcol.pixel = norm_color; XQueryColor(Xdisplay, cmap, &xcol); @@ -145,13 +144,9 @@ get_bottom_shadow_color(Pixel norm_color, const char *type) xcol.red /= 2; xcol.green /= 2; xcol.blue /= 2; - r = xcol.red; - g = xcol.green; - b = xcol.blue; - xcol.pixel = Imlib_best_color_match(imlib_id, &r, &g, &b); if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", type, xcol.pixel, r, g, b); + print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", type, xcol.pixel, xcol.red, xcol.green, xcol.blue); xcol.pixel = PixColors[minColor]; } return (xcol.pixel); @@ -162,11 +157,9 @@ get_top_shadow_color(Pixel norm_color, const char *type) { XColor xcol, white; - int r, g, b; # ifdef PREFER_24BIT white.red = white.green = white.blue = r = g = b = ~0; - white.pixel = Imlib_best_color_match(imlib_id, &r, &g, &b); XAllocColor(Xdisplay, cmap, &white); # else white.pixel = WhitePixel(Xdisplay, Xscreen); @@ -183,13 +176,9 @@ get_top_shadow_color(Pixel norm_color, const char *type) xcol.red = MIN(white.red, (xcol.red * 7) / 5); xcol.green = MIN(white.green, (xcol.green * 7) / 5); xcol.blue = MIN(white.blue, (xcol.blue * 7) / 5); - r = xcol.red; - g = xcol.green; - b = xcol.blue; - xcol.pixel = Imlib_best_color_match(imlib_id, &r, &g, &b); if (!XAllocColor(Xdisplay, cmap, &xcol)) { - print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", type, xcol.pixel, r, g, b); + print_error("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map.", type, xcol.pixel, xcol.red, xcol.green, xcol.blue); xcol.pixel = PixColors[WhiteColor]; } return (xcol.pixel); @@ -219,17 +208,6 @@ get_color_by_name(const char *name, const char *fallback) return ((Pixel) -1); } } - if (Xdepth < 24) { - int r, g, b; - - r = xcol.red; - g = xcol.green; - b = xcol.blue; - xcol.pixel = Imlib_best_color_match(imlib_id, &r, &g, &b); - xcol.red = r; - xcol.green = g; - xcol.blue = b; - } if (!XAllocColor(Xdisplay, cmap, &xcol)) { print_warning("Unable to allocate \"%s\" (0x%08x: 0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on \"%s\".", name, xcol.pixel, xcol.red, xcol.green, xcol.blue, NONULL(fallback)); @@ -260,17 +238,6 @@ get_color_by_pixel(Pixel pixel, Pixel fallback) return ((Pixel) 0); } } - if (Xdepth < 24) { - int r, g, b; - - r = xcol.red; - g = xcol.green; - b = xcol.blue; - xcol.pixel = Imlib_best_color_match(imlib_id, &r, &g, &b); - xcol.red = r; - xcol.green = g; - xcol.blue = b; - } if (!XAllocColor(Xdisplay, cmap, &xcol)) { print_warning("Unable to allocate 0x%08x (0x%04x, 0x%04x, 0x%04x) in the color map. Falling back on 0x%08x.", xcol.pixel, xcol.red, xcol.green, xcol.blue, fallback); xcol.pixel = fallback; @@ -643,12 +610,9 @@ stored_palette(char op) void set_window_color(int idx, const char *color) { - XColor xcol; int i; - unsigned int pixel, r, g, b; - printf("idx == %d, color == \"%s\"\n", idx, NONULL(color)); D_X11(("idx == %d, color == \"%s\"\n", idx, NONULL(color))); if (color == NULL || *color == '\0') @@ -673,11 +637,6 @@ set_window_color(int idx, const char *color) return; } } else if (XParseColor(Xdisplay, cmap, color, &xcol)) { - r = xcol.red; - g = xcol.green; - b = xcol.blue; - pixel = Imlib_best_color_match(imlib_id, &r, &g, &b); - xcol.pixel = pixel; if (!XAllocColor(Xdisplay, cmap, &xcol)) { print_warning("Unable to allocate \"%s\" in the color map.", color); return; diff --git a/themes/Eterm/theme.cfg.in b/themes/Eterm/theme.cfg.in index 9366d5b..c88c594 100644 --- a/themes/Eterm/theme.cfg.in +++ b/themes/Eterm/theme.cfg.in @@ -148,7 +148,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -157,11 +157,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -217,11 +217,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -250,11 +250,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -263,15 +263,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/active.tags b/themes/active.tags deleted file mode 100644 index 7c784f0..0000000 --- a/themes/active.tags +++ /dev/null @@ -1,187 +0,0 @@ -# active.tags.X -- X Window System tag configuration -# Nat Friedman - -# It's actually faster to split up the regexps in many cases. - -# URLs -{ -Env=X -Regexp=http+s?://[^\ "<>'()]+ -Binding=Button3 -Highlight=Blue -SearchLines=4 - -Action=export NS="`ps auxw |grep netscape |grep -v grep`"; if [ "$NS" = "" ]; then netscape "${}"& else netscape -remote "openURL(\"${}\")"; fi -} - -# URLs that don't begin with "http://" -{ -Env=X -Regexp=www\.+[^\ ,"]+/?[^\ ,"<>()]+ -Binding=Button3 -Highlight=Blue -SearchLines=2 - -Action=export NS="`ps auxw |grep netscape |grep -v grep`"; if [ "$NS" = "" ]; then netscape "${}"& else netscape -remote "openURL(\"${}\")"; fi -} - -# FTP URLs -{ -Env=X -Regexp=ftp://[^\ ,<>]+ -Binding=Button3 -Highlight=Blue -SearchLines=2 - -Action=Action=export NS="`ps -auxw |grep netscape |grep -v grep`"; if [ "$NS" = "" ]; then netscape "${}" & else netscape -remote 'openURL("${}")'; fi -} - -# Resolve an IP address and type the hostname into the shell -{ -Env=X -Regexp=[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]? -Output=loop -Binding=Button3 -Highlight=Green -Clue=Resolve this IP address and type the hostname into the shell - -Action=echo -n "`host ${} |grep Name |cut -d ' ' -f 2`" -} - -# Resolve an IP address and pop the hostname up -{ -Env=X -Regexp=[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]?\.[0-9][0-9]?[0-9]? -Binding=Button3&Shift -Highlight=Green -Clue=Resolve this IP address and pop up a window with the hostname - -Action=xmessage "`host ${} |grep Name |cut -d ' ' -f 2`" -nearmouse -} - -# Directory browser -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=([^\ ]+/) -Output=loop -Highlight=*Green -Binding=Button3 - -Action=echo -e 'clear;cd ${};ls -F;echo ".."' -} - -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=\.\.+ -Output=loop -Highlight=*Yellow -Binding=Button3 - -Action=echo -e 'clear;cd ${};ls -F;if [ "$PWD" = "/" ]; then echo -n ; else echo ".." ; fi;' -} - -# View images -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ ]+\.jpg+|[^\ ]+\.jpeg+|[^\ ]+\.gif+|[^\ ]+\.ppm+ -Highlight=Red -Binding=Button3 -Clue=View this image - -Action=xv -quit ${} -} - -# View HTML files -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ "<>]+\.html+ - -Highlight=Yellow -Clue=Send this HTML file to Netscape - -Action=netscape -remote "openURL(${})" -} - -# Uncompress and untar .tar.gz and .tgz files. -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ "'`=]+(tar\.gz|\.tgz|tar\.Z) -Output=Loop -Highlight=Magenta -Clue=Uncompress and untar this file - -Action=echo -n "tar -xvzf ${}" -} - -# Unzip .zip files. -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ "'`=]+\.zip -Output=Loop -Highlight=Magenta -Clue=Unzip this file - -Action=echo -n "unzip -v ${}" -} - -# Untar .tar files. -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ "'`=]+\.tar -Output=Loop -Highlight=Magenta -Clue=Untar this file - -Action=echo -n "tar -xvf ${}" -} - -# The following two tags will ghostview a .ps file if you right-click it, -# and print it if you shift-right-click it. -{ -Env=X -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ ]+\.ps -Binding=Button3 -Highlight=Underline -Clue=Send this file to ghostview - -Action=ghostview ${} -} - -{ -Modes=bash,-bash,sh,-sh,csh,-csh,tcsh,-tcsh,ksh,-ksh,zsh,-zsh -Regexp=[^\ ]+\.ps -Binding=Button3&Shift -Highlight=Underline -Clue=Print this file - -Action=lpr ${} -} - -#spell check a word -{ -Env=X -Regexp=[^\ ]+ -Latent=true -Binding=Button1&Meta -Highlight=Normal -Output=loop -Clue=Spell check this word - -Action=xmessage "`echo ${} |ispell -a |grep -v Ispell`" -} - -# End of file - - - - - - diff --git a/themes/auto/theme.cfg.in b/themes/auto/theme.cfg.in index 9636ff8..193f244 100644 --- a/themes/auto/theme.cfg.in +++ b/themes/auto/theme.cfg.in @@ -148,7 +148,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -157,11 +157,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -217,11 +217,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -250,11 +250,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -263,15 +263,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/cEterm/theme.cfg.in b/themes/cEterm/theme.cfg.in index 4b6991d..e92b54a 100644 --- a/themes/cEterm/theme.cfg.in +++ b/themes/cEterm/theme.cfg.in @@ -147,7 +147,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -156,11 +156,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -216,11 +216,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -249,11 +249,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -262,15 +262,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/chooser/theme.cfg.in b/themes/chooser/theme.cfg.in index 4176144..9ed3758 100644 --- a/themes/chooser/theme.cfg.in +++ b/themes/chooser/theme.cfg.in @@ -148,7 +148,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -157,11 +157,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -217,11 +217,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -250,11 +250,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -263,15 +263,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/emacs/theme.cfg.in b/themes/emacs/theme.cfg.in index 514bdb2..5fc3bec 100644 --- a/themes/emacs/theme.cfg.in +++ b/themes/emacs/theme.cfg.in @@ -148,7 +148,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -157,11 +157,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -217,11 +217,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -250,11 +250,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -263,15 +263,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/irc/theme.cfg.in b/themes/irc/theme.cfg.in index 12138c0..edda17d 100644 --- a/themes/irc/theme.cfg.in +++ b/themes/irc/theme.cfg.in @@ -150,7 +150,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -159,11 +159,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -219,11 +219,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -252,11 +252,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -265,15 +265,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/mutt/theme.cfg.in b/themes/mutt/theme.cfg.in index 02ad001..3a6c1df 100644 --- a/themes/mutt/theme.cfg.in +++ b/themes/mutt/theme.cfg.in @@ -147,7 +147,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -156,11 +156,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -216,11 +216,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -249,11 +249,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -262,15 +262,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/themes/trans/theme.cfg.in b/themes/trans/theme.cfg.in index 7a0631e..4d169fd 100644 --- a/themes/trans/theme.cfg.in +++ b/themes/trans/theme.cfg.in @@ -148,7 +148,7 @@ begin main file bar_vertical_3.png # Here is how you specify the geometry string separately. See the man page for its syntax. geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type anchor @@ -157,11 +157,11 @@ begin main color black #666666 file bar_vertical_1.png geom :scale - border 2 2 2 2 + border 2 2 2 3 state selected file bar_vertical_2.png geom :scale - border 2 2 2 2 + border 2 2 2 3 end image begin image type thumb @@ -217,11 +217,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 3 end image begin image type submenu @@ -250,11 +250,11 @@ begin main color black #999999 file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state disabled color white #333333 cmod image 0xc0 - border 2 2 2 2 + border 2 3 2 2 end image begin image type button @@ -263,15 +263,15 @@ begin main color black #cccccc file bar_horizontal_1.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state selected file bar_horizontal_2.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 state clicked file bar_horizontal_3.png geom 100x100+0+0:scale - border 2 2 2 2 + border 2 3 2 2 end image end diff --git a/utils/Esetroot.c b/utils/Esetroot.c index f51cb29..afbed25 100644 --- a/utils/Esetroot.c +++ b/utils/Esetroot.c @@ -21,7 +21,7 @@ static const char cvs_ident[] = "$Id$"; #include #include #include -#include +#include void set_pixmap_property(Pixmap p); @@ -96,9 +96,7 @@ main(int argc, char *argv[]) unsigned char scale = 0, center = 0, fit = 0; char *displayname = NULL; char *fname = NULL; - ImlibData *id; - ImlibImage *im; - ImlibInitParams params; + Imlib_Image im; Pixmap p, temp_pmap; register unsigned char i; GC gc; @@ -166,28 +164,22 @@ main(int argc, char *argv[]) fprintf(stderr, "%s:%d: Root window is 0x%08x\n", __FILE__, __LINE__, (unsigned int) Xroot); fprintf(stderr, "%s:%d: Found screen information at %8p\n", __FILE__, __LINE__, scr); } - params.flags = PARAMS_VISUALID; - params.visualid = (DefaultVisual(Xdisplay, screen))->visualid; - id = Imlib_init_with_params(Xdisplay, ¶ms); - if (id == NULL) { - fprintf(stderr, "%s: Unable to initialize Imlib.\n", *argv); - exit(1); - } else if (debug) { - fprintf(stderr, "%s:%d: The Imlib Data is at %8p\n", __FILE__, __LINE__, id); - } - im = Imlib_load_image(id, fname); + imlib_context_set_display(Xdisplay); + imlib_context_set_visual(DefaultVisual(Xdisplay, DefaultScreen(Xdisplay))); + im = imlib_load_image(fname); if (im == NULL) { fprintf(stderr, "%s: Unable to load image file \"%s\".\n", *argv, fname); exit(1); } else if (debug) { fprintf(stderr, "%s:%d: The Imlib Image is at %8p\n", __FILE__, __LINE__, im); } + imlib_context_set_image(im); if (scale) { w = scr->width; h = scr->height; } else { - w = im->rgb_width; - h = im->rgb_height; + w = imlib_image_get_width(); + h = imlib_image_get_height(); } if (fit) { double x_ratio, y_ratio; @@ -219,8 +211,10 @@ main(int argc, char *argv[]) fprintf(stderr, "%s:%d: Created %dx%d+%d+%d pixmap 0x%08x\n", __FILE__, __LINE__, scr->width, scr->height, x, y, (unsigned int) p); fprintf(stderr, "%s:%d: Applied Graphics Context %8p to pixmap.\n", __FILE__, __LINE__, gc); } - Imlib_render(id, im, w, h); - temp_pmap = Imlib_move_image(id, im); + imlib_context_set_anti_alias(1); + imlib_context_set_dither(1); + imlib_context_set_blend(0); + imlib_render_pixmaps_for_whole_image_at_size(&temp_pmap, NULL, 0, w, h); if (debug) { fprintf(stderr, "%s:%d: Rendered at %dx%d onto pixmap 0x%08x\n", __FILE__, __LINE__, w, h, (unsigned int) temp_pmap); }