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.257 by root, Fri Dec 30 16:51:59 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),
933 const_iv (SelectionRequest), 943 const_iv (SelectionRequest),
934 const_iv (SelectionNotify), 944 const_iv (SelectionNotify),
935 const_iv (ColormapNotify), 945 const_iv (ColormapNotify),
936 const_iv (ClientMessage), 946 const_iv (ClientMessage),
937 const_iv (MappingNotify), 947 const_iv (MappingNotify),
948
949 // shape extension
950 const_iv (ShapeSet),
951 const_iv (ShapeUnion),
952 const_iv (ShapeIntersect),
953 const_iv (ShapeSubtract),
954 const_iv (ShapeInvert),
955
956 const_iv (ShapeBounding),
957 const_iv (ShapeClip),
958 const_iv (ShapeInput),
959
960 // XIM
938# if ENABLE_XIM_ONTHESPOT 961# if ENABLE_XIM_ONTHESPOT
939 const_iv (XIMReverse), 962 const_iv (XIMReverse),
940 const_iv (XIMUnderline), 963 const_iv (XIMUnderline),
941 const_iv (XIMHighlight), 964 const_iv (XIMHighlight),
942 const_iv (XIMPrimary), 965 const_iv (XIMPrimary),
943 const_iv (XIMSecondary), 966 const_iv (XIMSecondary),
944 const_iv (XIMTertiary), 967 const_iv (XIMTertiary),
945 const_iv (XIMVisibleToForward), 968 const_iv (XIMVisibleToForward),
946 const_iv (XIMVisibleToBackword), 969 const_iv (XIMVisibleToBackword),
947 const_iv (XIMVisibleToCenter), 970 const_iv (XIMVisibleToCenter),
971# endif
948#if XRENDER 972# if XRENDER
949 const_iv (PictStandardARGB32), 973 const_iv (PictStandardARGB32),
950 const_iv (PictStandardRGB24), 974 const_iv (PictStandardRGB24),
951 const_iv (PictStandardA8), 975 const_iv (PictStandardA8),
952 const_iv (PictStandardA4), 976 const_iv (PictStandardA4),
953 const_iv (PictStandardA1), 977 const_iv (PictStandardA1),
1009 const_iv (PictOpExclusion), 1033 const_iv (PictOpExclusion),
1010 const_iv (PictOpHSLHue), 1034 const_iv (PictOpHSLHue),
1011 const_iv (PictOpHSLSaturation), 1035 const_iv (PictOpHSLSaturation),
1012 const_iv (PictOpHSLColor), 1036 const_iv (PictOpHSLColor),
1013 const_iv (PictOpHSLLuminosity), 1037 const_iv (PictOpHSLLuminosity),
1014#endif 1038# endif
1015# if 0 1039# if 0
1016 const_iv (XIMForwardChar), 1040 const_iv (XIMForwardChar),
1017 const_iv (XIMBackwardChar), 1041 const_iv (XIMBackwardChar),
1018 const_iv (XIMForwardWord), 1042 const_iv (XIMForwardWord),
1019 const_iv (XIMBackwardWord), 1043 const_iv (XIMBackwardWord),
1023 const_iv (XIMPreviousLine), 1047 const_iv (XIMPreviousLine),
1024 const_iv (XIMLineStart), 1048 const_iv (XIMLineStart),
1025 const_iv (XIMLineEnd), 1049 const_iv (XIMLineEnd),
1026 const_iv (XIMAbsolutePosition), 1050 const_iv (XIMAbsolutePosition),
1027 const_iv (XIMDontChange), 1051 const_iv (XIMDontChange),
1028# endif
1029# endif 1052# endif
1030 1053
1031 /* DEC private modes */ 1054 /* DEC private modes */
1032 const_iv (PrivMode_132), 1055 const_iv (PrivMode_132),
1033 const_iv (PrivMode_132OK), 1056 const_iv (PrivMode_132OK),
1142int 1165int
1143SET_CUSTOM (int rend, int new_value) 1166SET_CUSTOM (int rend, int new_value)
1144 CODE: 1167 CODE:
1145{ 1168{
1146 if (!IN_RANGE_EXC (new_value, 0, RS_customCount)) 1169 if (!IN_RANGE_EXC (new_value, 0, RS_customCount))
1147 croak ("custom value out of range, must be 0..%d", RS_customCount - 1); 1170 croak ("custom value out of range, must be 0..%lu", RS_customCount - 1);
1148 1171
1149 RETVAL = (rend & ~RS_customMask) 1172 RETVAL = (rend & ~RS_customMask)
1150 | ((new_value << RS_customShift) & RS_customMask); 1173 | ((new_value << RS_customShift) & RS_customMask);
1151} 1174}
1152 OUTPUT: 1175 OUTPUT:
1371 1394
1372SV * 1395SV *
1373rxvt_term::locale_encode (SV *str) 1396rxvt_term::locale_encode (SV *str)
1374 CODE: 1397 CODE:
1375{ 1398{
1399 if (!SvOK (str))
1400 XSRETURN_UNDEF;
1401
1376 wchar_t *wstr = sv2wcs (str); 1402 wchar_t *wstr = sv2wcs (str);
1377 1403
1378 rxvt_push_locale (THIS->locale); 1404 rxvt_push_locale (THIS->locale);
1379 char *mbstr = rxvt_wcstombs (wstr); 1405 char *mbstr = rxvt_wcstombs (wstr);
1380 rxvt_pop_locale (); 1406 rxvt_pop_locale ();
1389 1415
1390SV * 1416SV *
1391rxvt_term::locale_decode (SV *octets) 1417rxvt_term::locale_decode (SV *octets)
1392 CODE: 1418 CODE:
1393{ 1419{
1420 if (!SvOK (octets))
1421 XSRETURN_UNDEF;
1422
1394 STRLEN len; 1423 STRLEN len;
1395 char *data = SvPVbyte (octets, len); 1424 char *data = SvPVbyte (octets, len);
1396 1425
1397 rxvt_push_locale (THIS->locale); 1426 rxvt_push_locale (THIS->locale);
1398 wchar_t *wstr = rxvt_mbstowcs (data, len); 1427 wchar_t *wstr = rxvt_mbstowcs (data, len);
1561 THIS->rstyle = new_rstyle; 1590 THIS->rstyle = new_rstyle;
1562 OUTPUT: 1591 OUTPUT:
1563 RETVAL 1592 RETVAL
1564 1593
1565int 1594int
1566rxvt_term::view_start (int newval = 1) 1595rxvt_term::view_start (int newval = 0)
1567 PROTOTYPE: $;$ 1596 PROTOTYPE: $;$
1568 CODE: 1597 CODE:
1569{ 1598{
1570 RETVAL = THIS->view_start; 1599 RETVAL = THIS->view_start;
1571 1600 if (items > 1)
1572 if (newval <= 0)
1573 THIS->scr_changeview (max (newval, THIS->top_row)); 1601 THIS->scr_changeview (newval);
1574} 1602}
1575 OUTPUT: 1603 OUTPUT:
1576 RETVAL 1604 RETVAL
1577 1605
1578void 1606void
1788 // find length 1816 // find length
1789 for (wchar_t *s = wstr; *s; s++) 1817 for (wchar_t *s = wstr; *s; s++)
1790 if (*s == NOCHAR) 1818 if (*s == NOCHAR)
1791 ; 1819 ;
1792 else if (IS_COMPOSE (*s)) 1820 else if (IS_COMPOSE (*s))
1793 dlen += rxvt_composite.expand (*s, 0); 1821 dlen += rxvt_composite.expand (*s);
1794 else 1822 else
1795 dlen++; 1823 dlen++;
1796 1824
1797 wchar_t *rstr = rxvt_temp_buf<wchar_t> (dlen); 1825 wchar_t *rstr = rxvt_temp_buf<wchar_t> (dlen);
1798 1826
2195 2223
2196void 2224void
2197XDeleteProperty (rxvt_term *term, Window window, Atom property) 2225XDeleteProperty (rxvt_term *term, Window window, Atom property)
2198 C_ARGS: term->dpy, window, property 2226 C_ARGS: term->dpy, window, property
2199 2227
2228Region
2229XCreateRegion ()
2230
2231int
2232XUnionRectWithRegion (int x, int y, int w, int h, Region src, Region dst)
2233 CODE:
2234 XRectangle rect;
2235 rect.x = x;
2236 rect.y = y;
2237 rect.width = w;
2238 rect.height = h;
2239 RETVAL = XUnionRectWithRegion (&rect, src, dst);
2240 OUTPUT: RETVAL
2241
2242int
2243XIntersectRegion (Region src1, Region src2, Region res)
2244
2245int
2246XUnionRegion (Region src1, Region src2, Region res)
2247
2248int
2249XSubtractRegion (Region src1, Region src2, Region res)
2250
2251int
2252XXorRegion (Region src1, Region src2, Region res)
2253
2254int
2255XOffsetRegion (Region r, int dx, int dy)
2256
2257int
2258XShrinkRegion (Region r, int dx, int dy)
2259
2260int
2261XDestroyRegion (Region r)
2262
2263void
2264rxvt_term::XShapeQueryVersion ()
2265 PPCODE:
2266 int major, minor;
2267 EXTEND (SP, 2);
2268 if (XShapeQueryVersion (THIS->display->dpy, &major, &minor))
2269 {
2270 PUSHs (sv_2mortal (newSViv (major)));
2271 PUSHs (sv_2mortal (newSViv (minor)));
2272 }
2273
2274void
2275XShapeCombineRegion (rxvt_term *term, Window dest, int destKind, int xOff, int yOff, Region r, int op)
2276 C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, r, op
2277
2278void
2279XShapeCombineMask (rxvt_term *term, XID dest, int destKind, int xOff, int yOff, Pixmap src, int op)
2280 C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, src, op
2281
2282void
2283XShapeCombineShape (rxvt_term *term, XID dest, int destKind, int xOff, int yOff, Pixmap src, int srcKind, int op)
2284 C_ARGS: term->display->dpy, dest, destKind, xOff, yOff, src, srcKind, op
2285
2200Window 2286Window
2201rxvt_term::DefaultRootWindow () 2287rxvt_term::DefaultRootWindow ()
2202 CODE: 2288 CODE:
2203 RETVAL = THIS->display->root; 2289 RETVAL = THIS->display->root;
2204 OUTPUT: 2290 OUTPUT:

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines