--- rxvt-unicode/src/rxvtperl.xs 2012/04/11 10:20:00 1.153 +++ rxvt-unicode/src/rxvtperl.xs 2012/06/04 15:43:22 1.161 @@ -51,6 +51,23 @@ ///////////////////////////////////////////////////////////////////////////// +typedef char * octet_string; +typedef char * utf8_string; + +typedef GdkPixbuf * urxvt__pixbuf; +typedef rxvt_img * urxvt__img; + +///////////////////////////////////////////////////////////////////////////// + +static void +parse_color (rxvt_screen *s, rxvt_color &c, SV *sv) +{ + //TODO: support component stuff + c.set (s, SvPVbyte_nolen (sv)); +} + +///////////////////////////////////////////////////////////////////////////// + static wchar_t * sv2wcs (SV *sv) { @@ -785,6 +802,17 @@ const_iv (XIMVisibleToForward), const_iv (XIMVisibleToBackword), const_iv (XIMVisibleToCenter), +#if HAVE_XRENDER + const_iv (PictStandardARGB32), + const_iv (PictStandardRGB24), + const_iv (PictStandardA8), + const_iv (PictStandardA4), + const_iv (PictStandardA1), + const_iv (RepeatNone), + const_iv (RepeatNormal), + const_iv (RepeatPad), + const_iv (RepeatReflect), +#endif # if 0 const_iv (XIMForwardChar), const_iv (XIMBackwardChar), @@ -1556,7 +1584,6 @@ THIS->want_refresh = 1; THIS->refresh_check (); break; - #ifdef CURSOR_BLINK case Opt_cursorBlink: THIS->cursor_blink_reset (); @@ -1709,6 +1736,9 @@ rxvt_term::scr_bell () void +rxvt_term::scr_recolour (bool refresh = true); + +void rxvt_term::scr_change_screen (int screen) void @@ -1831,7 +1861,7 @@ } Atom -XInternAtom (rxvt_term *term, char *atom_name, int only_if_exists = FALSE) +XInternAtom (rxvt_term *term, octet_string atom_name, int only_if_exists = FALSE) C_ARGS: term->dpy, atom_name, only_if_exists char * @@ -1842,7 +1872,7 @@ void XDeleteProperty (rxvt_term *term, Window window, Atom property) - C_ARGS: term->dpy, window, property + C_ARGS: term->dpy, window, property Window rxvt_term::DefaultRootWindow () @@ -1904,6 +1934,61 @@ } ############################################################################# +# fancy bg bloatstuff (TODO: should be moved up somewhere) + +#if ENABLE_TRANSPARENCY + +#if 0 + +rxvt_img * +rxvt_term::new_img_from_root () + CODE: + RETVAL = rxvt_img::new_from_root (THIS); + OUTPUT: + RETVAL + +#endif + +#endif + +#if HAVE_PIXBUF + +rxvt_img * +rxvt_term::new_img_from_file (octet_string filename) + CODE: + try + { + RETVAL = rxvt_img::new_from_file (THIS, filename); + } + catch (const class rxvt_failure_exception &e) + { + croak ("new_img_from_file failed"); + } + OUTPUT: + RETVAL + +#endif + +#if HAVE_BG_PIXMAP + +void +rxvt_term::set_background (rxvt_img *img) + CODE: + THIS->bg_destroy (); + THIS->bg_pixmap = None; + THIS->bg_flags &= ~rxvt_term::BG_NEEDS_REFRESH; + + if (img) // TODO: cannot be false + { + img->unshare (); + THIS->bg_pixmap = img->steal (); + THIS->bg_flags |= rxvt_term::BG_NEEDS_REFRESH; + THIS->bg_valid_since = ev::now (); // TODO: extra bloat + } + +#endif + +############################################################################# # urxvt::overlay ############################################################################# @@ -1923,3 +2008,66 @@ INCLUDE: $PERL s, rc, c); + C_ARGS: rc + +void +rxvt_img::DESTROY () + CODE: + delete THIS; + +void +rxvt_img::blur (int rh, int rv) + +void +rxvt_img::brightness (NV r, NV g, NV b, NV a = 1.) + +void +rxvt_img::contrast (NV r, NV g, NV b, NV a = 1.) + +void +rxvt_img::unshare () + +rxvt_img * +rxvt_img::clone () + +rxvt_img * +rxvt_img::scale (int new_width, int new_height) + +rxvt_img * +rxvt_img::transform (int new_width, int new_height, int repeat, NV p11, NV p12, NV p13, NV p21, NV p22, NV p23, NV p31, NV p32, NV p33) + INIT: + double matrix[9] = { + p11, p12, p13, + p21, p22, p23, + p31, p32, p33 + }; + C_ARGS: new_width, new_height, repeat, matrix + +#endif +