ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtperl.xs
(Generate patch)

Comparing rxvt-unicode/src/rxvtperl.xs (file contents):
Revision 1.248 by sf-exg, Sat May 8 06:16:21 2021 UTC vs.
Revision 1.258 by root, Fri Dec 30 21:07:27 2022 UTC

30#include "../config.h" 30#include "../config.h"
31 31
32#include <stddef.h> 32#include <stddef.h>
33#include <stdarg.h> 33#include <stdarg.h>
34 34
35#include "unistd.h" 35#include <unistd.h>
36
37#include <X11/extensions/shape.h>
38
39// support old includes (https://bugs.freedesktop.org/show_bug.cgi?id=2799, https://lists.x.org/archives/xorg-arch/2005-March/000004.html)
40#ifndef ShapeInput
41# define ShapeInput 2
42#endif
36 43
37#include "ev_cpp.h" 44#include "ev_cpp.h"
38#include "rxvt.h" 45#include "rxvt.h"
39#include "keyboard.h" 46#include "keyboard.h"
40#include "rxvtutil.h" 47#include "rxvtutil.h"
377/* but therse are not guaranteed anyway... */ 384/* but therse are not guaranteed anyway... */
378rxvt_perl_interp::~rxvt_perl_interp () 385rxvt_perl_interp::~rxvt_perl_interp ()
379{ 386{
380 if (perl) 387 if (perl)
381 { 388 {
389 localise_env set_environ (perl_environ);
382 perl_destruct (perl); 390 perl_destruct (perl);
383 perl_free (perl); 391 perl_free (perl);
384 PERL_SYS_TERM (); 392 PERL_SYS_TERM ();
385 } 393 }
386} 394}
528 THIS->perl.grabtime = 0; 536 THIS->perl.grabtime = 0;
529 } 537 }
530} 538}
531 539
532bool 540bool
533rxvt_perl_interp::invoke (rxvt_term *term, hook_type htype, ...) 541rxvt_perl_interp::invoke (rxvt_term *term, int htype, ...)
534{ 542{
535 if (!perl || !term->perl.self) 543 if (!perl || !term->perl.self)
536 return false; 544 return false;
537 545
538 localise_env set_environ (perl_environ); 546 localise_env set_environ (perl_environ);
820 } *civ, const_iv[] = { 828 } *civ, const_iv[] = {
821# define const_iv(name) { # name, (IV)name } 829# define const_iv(name) { # name, (IV)name }
822 const_iv (HOOK_INIT), 830 const_iv (HOOK_INIT),
823 const_iv (HOOK_DESTROY), 831 const_iv (HOOK_DESTROY),
824 const_iv (HOOK_ACTION), 832 const_iv (HOOK_ACTION),
833 const_iv (HOOK_OSC_SEQ),
834 const_iv (HOOK_OSC_SEQ_PERL),
825 835
826 const_iv (NUM_RESOURCES), 836 const_iv (NUM_RESOURCES),
827 const_iv (DEFAULT_RSTYLE), 837 const_iv (DEFAULT_RSTYLE),
828 const_iv (OVERLAY_RSTYLE), 838 const_iv (OVERLAY_RSTYLE),
829 const_iv (Color_Bits), 839 const_iv (Color_Bits),
844 const_iv (RS_Uline), 854 const_iv (RS_Uline),
845 855
846 // TODO: should support all colour constants, create colorinc.h &c 856 // TODO: should support all colour constants, create colorinc.h &c
847 const_iv (Color_fg), 857 const_iv (Color_fg),
848 const_iv (Color_bg), 858 const_iv (Color_bg),
849#if OFF_FOCUS_FADING 859# if OFF_FOCUS_FADING
850 const_iv (Color_fade), 860 const_iv (Color_fade),
851#endif 861# endif
852 const_iv (Color_pointer_fg), 862 const_iv (Color_pointer_fg),
853 const_iv (Color_pointer_bg), 863 const_iv (Color_pointer_bg),
854 const_iv (Color_border), 864 const_iv (Color_border),
855 const_iv (NRS_COLORS), 865 const_iv (NRS_COLORS),
856 const_iv (TOTAL_COLORS), 866 const_iv (TOTAL_COLORS),
857 867
868 const_iv (None),
858 const_iv (CurrentTime), 869 const_iv (CurrentTime),
859 const_iv (ShiftMask), 870 const_iv (ShiftMask),
860 const_iv (LockMask), 871 const_iv (LockMask),
861 const_iv (ControlMask), 872 const_iv (ControlMask),
862 const_iv (Mod1Mask), 873 const_iv (Mod1Mask),
933 const_iv (SelectionRequest), 944 const_iv (SelectionRequest),
934 const_iv (SelectionNotify), 945 const_iv (SelectionNotify),
935 const_iv (ColormapNotify), 946 const_iv (ColormapNotify),
936 const_iv (ClientMessage), 947 const_iv (ClientMessage),
937 const_iv (MappingNotify), 948 const_iv (MappingNotify),
949
950 // shape extension
951 const_iv (ShapeSet),
952 const_iv (ShapeUnion),
953 const_iv (ShapeIntersect),
954 const_iv (ShapeSubtract),
955 const_iv (ShapeInvert),
956
957 const_iv (ShapeBounding),
958 const_iv (ShapeClip),
959 const_iv (ShapeInput),
960
961 // XIM
938# if ENABLE_XIM_ONTHESPOT 962# if ENABLE_XIM_ONTHESPOT
939 const_iv (XIMReverse), 963 const_iv (XIMReverse),
940 const_iv (XIMUnderline), 964 const_iv (XIMUnderline),
941 const_iv (XIMHighlight), 965 const_iv (XIMHighlight),
942 const_iv (XIMPrimary), 966 const_iv (XIMPrimary),
943 const_iv (XIMSecondary), 967 const_iv (XIMSecondary),
944 const_iv (XIMTertiary), 968 const_iv (XIMTertiary),
945 const_iv (XIMVisibleToForward), 969 const_iv (XIMVisibleToForward),
946 const_iv (XIMVisibleToBackword), 970 const_iv (XIMVisibleToBackword),
947 const_iv (XIMVisibleToCenter), 971 const_iv (XIMVisibleToCenter),
972# endif
948#if XRENDER 973# if XRENDER
949 const_iv (PictStandardARGB32), 974 const_iv (PictStandardARGB32),
950 const_iv (PictStandardRGB24), 975 const_iv (PictStandardRGB24),
951 const_iv (PictStandardA8), 976 const_iv (PictStandardA8),
952 const_iv (PictStandardA4), 977 const_iv (PictStandardA4),
953 const_iv (PictStandardA1), 978 const_iv (PictStandardA1),
1009 const_iv (PictOpExclusion), 1034 const_iv (PictOpExclusion),
1010 const_iv (PictOpHSLHue), 1035 const_iv (PictOpHSLHue),
1011 const_iv (PictOpHSLSaturation), 1036 const_iv (PictOpHSLSaturation),
1012 const_iv (PictOpHSLColor), 1037 const_iv (PictOpHSLColor),
1013 const_iv (PictOpHSLLuminosity), 1038 const_iv (PictOpHSLLuminosity),
1014#endif 1039# endif
1015# if 0 1040# if 0
1016 const_iv (XIMForwardChar), 1041 const_iv (XIMForwardChar),
1017 const_iv (XIMBackwardChar), 1042 const_iv (XIMBackwardChar),
1018 const_iv (XIMForwardWord), 1043 const_iv (XIMForwardWord),
1019 const_iv (XIMBackwardWord), 1044 const_iv (XIMBackwardWord),
1023 const_iv (XIMPreviousLine), 1048 const_iv (XIMPreviousLine),
1024 const_iv (XIMLineStart), 1049 const_iv (XIMLineStart),
1025 const_iv (XIMLineEnd), 1050 const_iv (XIMLineEnd),
1026 const_iv (XIMAbsolutePosition), 1051 const_iv (XIMAbsolutePosition),
1027 const_iv (XIMDontChange), 1052 const_iv (XIMDontChange),
1028# endif
1029# endif 1053# endif
1030 1054
1031 /* DEC private modes */ 1055 /* DEC private modes */
1032 const_iv (PrivMode_132), 1056 const_iv (PrivMode_132),
1033 const_iv (PrivMode_132OK), 1057 const_iv (PrivMode_132OK),
1142int 1166int
1143SET_CUSTOM (int rend, int new_value) 1167SET_CUSTOM (int rend, int new_value)
1144 CODE: 1168 CODE:
1145{ 1169{
1146 if (!IN_RANGE_EXC (new_value, 0, RS_customCount)) 1170 if (!IN_RANGE_EXC (new_value, 0, RS_customCount))
1147 croak ("custom value out of range, must be 0..%d", RS_customCount - 1); 1171 croak ("custom value out of range, must be 0..%lu", RS_customCount - 1);
1148 1172
1149 RETVAL = (rend & ~RS_customMask) 1173 RETVAL = (rend & ~RS_customMask)
1150 | ((new_value << RS_customShift) & RS_customMask); 1174 | ((new_value << RS_customShift) & RS_customMask);
1151} 1175}
1152 OUTPUT: 1176 OUTPUT:
1189 av_store (av, i, SvREFCNT_inc (*av_fetch (av, i + 1, 0))); 1213 av_store (av, i, SvREFCNT_inc (*av_fetch (av, i + 1, 0)));
1190 1214
1191 av_pop (av); 1215 av_pop (av);
1192 1216
1193 delete req; 1217 delete req;
1218
1219Region
1220XCreateRegion ()
1221
1222int
1223XUnionRectWithRegion (int x, int y, int w, int h, Region src, Region dst)
1224 CODE:
1225 XRectangle rect;
1226 rect.x = x;
1227 rect.y = y;
1228 rect.width = w;
1229 rect.height = h;
1230 RETVAL = XUnionRectWithRegion (&rect, src, dst);
1231 OUTPUT: RETVAL
1232
1233int
1234XIntersectRegion (Region src1, Region src2, Region res)
1235
1236int
1237XUnionRegion (Region src1, Region src2, Region res)
1238
1239int
1240XSubtractRegion (Region src1, Region src2, Region res)
1241
1242int
1243XXorRegion (Region src1, Region src2, Region res)
1244
1245int
1246XOffsetRegion (Region r, int dx, int dy)
1247
1248int
1249XShrinkRegion (Region r, int dx, int dy)
1250
1251int
1252XDestroyRegion (Region r)
1194 1253
1195MODULE = urxvt PACKAGE = urxvt::term 1254MODULE = urxvt PACKAGE = urxvt::term
1196 1255
1197SV * 1256SV *
1198_new (AV *env, AV *arg) 1257_new (AV *env, AV *arg)
1371 1430
1372SV * 1431SV *
1373rxvt_term::locale_encode (SV *str) 1432rxvt_term::locale_encode (SV *str)
1374 CODE: 1433 CODE:
1375{ 1434{
1435 if (!SvOK (str))
1436 XSRETURN_UNDEF;
1437
1376 wchar_t *wstr = sv2wcs (str); 1438 wchar_t *wstr = sv2wcs (str);
1377 1439
1378 rxvt_push_locale (THIS->locale); 1440 rxvt_push_locale (THIS->locale);
1379 char *mbstr = rxvt_wcstombs (wstr); 1441 char *mbstr = rxvt_wcstombs (wstr);
1380 rxvt_pop_locale (); 1442 rxvt_pop_locale ();
1389 1451
1390SV * 1452SV *
1391rxvt_term::locale_decode (SV *octets) 1453rxvt_term::locale_decode (SV *octets)
1392 CODE: 1454 CODE:
1393{ 1455{
1456 if (!SvOK (octets))
1457 XSRETURN_UNDEF;
1458
1394 STRLEN len; 1459 STRLEN len;
1395 char *data = SvPVbyte (octets, len); 1460 char *data = SvPVbyte (octets, len);
1396 1461
1397 rxvt_push_locale (THIS->locale); 1462 rxvt_push_locale (THIS->locale);
1398 wchar_t *wstr = rxvt_mbstowcs (data, len); 1463 wchar_t *wstr = rxvt_mbstowcs (data, len);
1561 THIS->rstyle = new_rstyle; 1626 THIS->rstyle = new_rstyle;
1562 OUTPUT: 1627 OUTPUT:
1563 RETVAL 1628 RETVAL
1564 1629
1565int 1630int
1566rxvt_term::view_start (int newval = 1) 1631rxvt_term::view_start (int newval = 0)
1567 PROTOTYPE: $;$ 1632 PROTOTYPE: $;$
1568 CODE: 1633 CODE:
1569{ 1634{
1570 RETVAL = THIS->view_start; 1635 RETVAL = THIS->view_start;
1571 1636 if (items > 1)
1572 if (newval <= 0)
1573 THIS->scr_changeview (max (newval, THIS->top_row)); 1637 THIS->scr_changeview (newval);
1574} 1638}
1575 OUTPUT: 1639 OUTPUT:
1576 RETVAL 1640 RETVAL
1577 1641
1578void 1642void
1788 // find length 1852 // find length
1789 for (wchar_t *s = wstr; *s; s++) 1853 for (wchar_t *s = wstr; *s; s++)
1790 if (*s == NOCHAR) 1854 if (*s == NOCHAR)
1791 ; 1855 ;
1792 else if (IS_COMPOSE (*s)) 1856 else if (IS_COMPOSE (*s))
1793 dlen += rxvt_composite.expand (*s, 0); 1857 dlen += rxvt_composite.expand (*s);
1794 else 1858 else
1795 dlen++; 1859 dlen++;
1796 1860
1797 wchar_t *rstr = rxvt_temp_buf<wchar_t> (dlen); 1861 wchar_t *rstr = rxvt_temp_buf<wchar_t> (dlen);
1798 1862
2195 2259
2196void 2260void
2197XDeleteProperty (rxvt_term *term, Window window, Atom property) 2261XDeleteProperty (rxvt_term *term, Window window, Atom property)
2198 C_ARGS: term->dpy, window, property 2262 C_ARGS: term->dpy, window, property
2199 2263
2264void
2265rxvt_term::XShapeQueryVersion ()
2266 PPCODE:
2267 int major, minor;
2268 EXTEND (SP, 2);
2269 if (XShapeQueryVersion (THIS->display->dpy, &major, &minor))
2270 {
2271 PUSHs (sv_2mortal (newSViv (major)));
2272 PUSHs (sv_2mortal (newSViv (minor)));
2273 }
2274
2275void
2276XShapeCombineRegion (rxvt_term *term, Window dest, int destKind, int xOff, int yOff, Region r, int op)
2277 C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, r, op
2278
2279void
2280XShapeCombineMask (rxvt_term *term, XID dest, int destKind, int xOff, int yOff, Pixmap src, int op)
2281 C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, src, op
2282
2283void
2284XShapeCombineShape (rxvt_term *term, XID dest, int destKind, int xOff, int yOff, Pixmap src, int srcKind, int op)
2285 C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, src, srcKind, op
2286
2200Window 2287Window
2201rxvt_term::DefaultRootWindow () 2288rxvt_term::DefaultRootWindow ()
2202 CODE: 2289 CODE:
2203 RETVAL = THIS->display->root; 2290 RETVAL = THIS->display->root;
2204 OUTPUT: 2291 OUTPUT:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines