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.253 by root, Sat Jul 24 11:58:27 2021 UTC vs.
Revision 1.259 by sf-exg, Sun Mar 5 06:11:32 2023 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"
529 THIS->perl.grabtime = 0; 536 THIS->perl.grabtime = 0;
530 } 537 }
531} 538}
532 539
533bool 540bool
534rxvt_perl_interp::invoke (rxvt_term *term, hook_type htype, ...) 541rxvt_perl_interp::invoke (rxvt_term *term, int htype, ...)
535{ 542{
536 if (!perl || !term->perl.self) 543 if (!perl || !term->perl.self)
537 return false; 544 return false;
538 545
539 localise_env set_environ (perl_environ); 546 localise_env set_environ (perl_environ);
847 const_iv (RS_Uline), 854 const_iv (RS_Uline),
848 855
849 // TODO: should support all colour constants, create colorinc.h &c 856 // TODO: should support all colour constants, create colorinc.h &c
850 const_iv (Color_fg), 857 const_iv (Color_fg),
851 const_iv (Color_bg), 858 const_iv (Color_bg),
852#if OFF_FOCUS_FADING 859# if OFF_FOCUS_FADING
853 const_iv (Color_fade), 860 const_iv (Color_fade),
854#endif 861# endif
855 const_iv (Color_pointer_fg), 862 const_iv (Color_pointer_fg),
856 const_iv (Color_pointer_bg), 863 const_iv (Color_pointer_bg),
857 const_iv (Color_border), 864 const_iv (Color_border),
858 const_iv (NRS_COLORS), 865 const_iv (NRS_COLORS),
859 const_iv (TOTAL_COLORS), 866 const_iv (TOTAL_COLORS),
860 867
868 const_iv (None),
861 const_iv (CurrentTime), 869 const_iv (CurrentTime),
862 const_iv (ShiftMask), 870 const_iv (ShiftMask),
863 const_iv (LockMask), 871 const_iv (LockMask),
864 const_iv (ControlMask), 872 const_iv (ControlMask),
865 const_iv (Mod1Mask), 873 const_iv (Mod1Mask),
936 const_iv (SelectionRequest), 944 const_iv (SelectionRequest),
937 const_iv (SelectionNotify), 945 const_iv (SelectionNotify),
938 const_iv (ColormapNotify), 946 const_iv (ColormapNotify),
939 const_iv (ClientMessage), 947 const_iv (ClientMessage),
940 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
941# if ENABLE_XIM_ONTHESPOT 962# if ENABLE_XIM_ONTHESPOT
942 const_iv (XIMReverse), 963 const_iv (XIMReverse),
943 const_iv (XIMUnderline), 964 const_iv (XIMUnderline),
944 const_iv (XIMHighlight), 965 const_iv (XIMHighlight),
945 const_iv (XIMPrimary), 966 const_iv (XIMPrimary),
946 const_iv (XIMSecondary), 967 const_iv (XIMSecondary),
947 const_iv (XIMTertiary), 968 const_iv (XIMTertiary),
948 const_iv (XIMVisibleToForward), 969 const_iv (XIMVisibleToForward),
949 const_iv (XIMVisibleToBackword), 970 const_iv (XIMVisibleToBackword),
950 const_iv (XIMVisibleToCenter), 971 const_iv (XIMVisibleToCenter),
972# endif
951#if XRENDER 973# if XRENDER
952 const_iv (PictStandardARGB32), 974 const_iv (PictStandardARGB32),
953 const_iv (PictStandardRGB24), 975 const_iv (PictStandardRGB24),
954 const_iv (PictStandardA8), 976 const_iv (PictStandardA8),
955 const_iv (PictStandardA4), 977 const_iv (PictStandardA4),
956 const_iv (PictStandardA1), 978 const_iv (PictStandardA1),
1012 const_iv (PictOpExclusion), 1034 const_iv (PictOpExclusion),
1013 const_iv (PictOpHSLHue), 1035 const_iv (PictOpHSLHue),
1014 const_iv (PictOpHSLSaturation), 1036 const_iv (PictOpHSLSaturation),
1015 const_iv (PictOpHSLColor), 1037 const_iv (PictOpHSLColor),
1016 const_iv (PictOpHSLLuminosity), 1038 const_iv (PictOpHSLLuminosity),
1017#endif 1039# endif
1018# if 0 1040# if 0
1019 const_iv (XIMForwardChar), 1041 const_iv (XIMForwardChar),
1020 const_iv (XIMBackwardChar), 1042 const_iv (XIMBackwardChar),
1021 const_iv (XIMForwardWord), 1043 const_iv (XIMForwardWord),
1022 const_iv (XIMBackwardWord), 1044 const_iv (XIMBackwardWord),
1026 const_iv (XIMPreviousLine), 1048 const_iv (XIMPreviousLine),
1027 const_iv (XIMLineStart), 1049 const_iv (XIMLineStart),
1028 const_iv (XIMLineEnd), 1050 const_iv (XIMLineEnd),
1029 const_iv (XIMAbsolutePosition), 1051 const_iv (XIMAbsolutePosition),
1030 const_iv (XIMDontChange), 1052 const_iv (XIMDontChange),
1031# endif
1032# endif 1053# endif
1033 1054
1034 /* DEC private modes */ 1055 /* DEC private modes */
1035 const_iv (PrivMode_132), 1056 const_iv (PrivMode_132),
1036 const_iv (PrivMode_132OK), 1057 const_iv (PrivMode_132OK),
1145int 1166int
1146SET_CUSTOM (int rend, int new_value) 1167SET_CUSTOM (int rend, int new_value)
1147 CODE: 1168 CODE:
1148{ 1169{
1149 if (!IN_RANGE_EXC (new_value, 0, RS_customCount)) 1170 if (!IN_RANGE_EXC (new_value, 0, RS_customCount))
1150 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);
1151 1172
1152 RETVAL = (rend & ~RS_customMask) 1173 RETVAL = (rend & ~RS_customMask)
1153 | ((new_value << RS_customShift) & RS_customMask); 1174 | ((new_value << RS_customShift) & RS_customMask);
1154} 1175}
1155 OUTPUT: 1176 OUTPUT:
1192 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)));
1193 1214
1194 av_pop (av); 1215 av_pop (av);
1195 1216
1196 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)
1197 1253
1198MODULE = urxvt PACKAGE = urxvt::term 1254MODULE = urxvt PACKAGE = urxvt::term
1199 1255
1200SV * 1256SV *
1201_new (AV *env, AV *arg) 1257_new (AV *env, AV *arg)
1374 1430
1375SV * 1431SV *
1376rxvt_term::locale_encode (SV *str) 1432rxvt_term::locale_encode (SV *str)
1377 CODE: 1433 CODE:
1378{ 1434{
1435 if (!SvOK (str))
1436 XSRETURN_UNDEF;
1437
1379 wchar_t *wstr = sv2wcs (str); 1438 wchar_t *wstr = sv2wcs (str);
1380 1439
1381 rxvt_push_locale (THIS->locale); 1440 rxvt_push_locale (THIS->locale);
1382 char *mbstr = rxvt_wcstombs (wstr); 1441 char *mbstr = rxvt_wcstombs (wstr);
1383 rxvt_pop_locale (); 1442 rxvt_pop_locale ();
1392 1451
1393SV * 1452SV *
1394rxvt_term::locale_decode (SV *octets) 1453rxvt_term::locale_decode (SV *octets)
1395 CODE: 1454 CODE:
1396{ 1455{
1456 if (!SvOK (octets))
1457 XSRETURN_UNDEF;
1458
1397 STRLEN len; 1459 STRLEN len;
1398 char *data = SvPVbyte (octets, len); 1460 char *data = SvPVbyte (octets, len);
1399 1461
1400 rxvt_push_locale (THIS->locale); 1462 rxvt_push_locale (THIS->locale);
1401 wchar_t *wstr = rxvt_mbstowcs (data, len); 1463 wchar_t *wstr = rxvt_mbstowcs (data, len);
2134 int count; 2196 int count;
2135 Atom *props = XListProperties (THIS->dpy, window, &count); 2197 Atom *props = XListProperties (THIS->dpy, window, &count);
2136 2198
2137 EXTEND (SP, count); 2199 EXTEND (SP, count);
2138 while (count--) 2200 while (count--)
2139 PUSHs (newSVuv ((U32)props [count])); 2201 PUSHs (sv_2mortal (newSVuv ((U32)props [count])));
2140 2202
2141 XFree (props); 2203 XFree (props);
2142} 2204}
2143 2205
2144void 2206void
2160 int elemsize = format == 16 ? sizeof (short) 2222 int elemsize = format == 16 ? sizeof (short)
2161 : format == 32 ? sizeof (long) 2223 : format == 32 ? sizeof (long)
2162 : 1; 2224 : 1;
2163 2225
2164 EXTEND (SP, 3); 2226 EXTEND (SP, 3);
2165 PUSHs (newSVuv ((U32)type)); 2227 PUSHs (sv_2mortal (newSVuv ((U32)type)));
2166 PUSHs (newSViv (format)); 2228 PUSHs (sv_2mortal (newSViv (format)));
2167 PUSHs (newSVpvn ((char *)prop, nitems * elemsize)); 2229 PUSHs (sv_2mortal (newSVpvn ((char *)prop, nitems * elemsize)));
2168 XFree (prop); 2230 XFree (prop);
2169 } 2231 }
2170} 2232}
2171 2233
2172void 2234void
2196 XFree (RETVAL); 2258 XFree (RETVAL);
2197 2259
2198void 2260void
2199XDeleteProperty (rxvt_term *term, Window window, Atom property) 2261XDeleteProperty (rxvt_term *term, Window window, Atom property)
2200 C_ARGS: term->dpy, window, property 2262 C_ARGS: term->dpy, window, property
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
2201 2286
2202Window 2287Window
2203rxvt_term::DefaultRootWindow () 2288rxvt_term::DefaultRootWindow ()
2204 CODE: 2289 CODE:
2205 RETVAL = THIS->display->root; 2290 RETVAL = THIS->display->root;
2250 Window child; 2335 Window child;
2251 2336
2252 if (XTranslateCoordinates (THIS->dpy, src, dst, x, y, &dx, &dy, &child)) 2337 if (XTranslateCoordinates (THIS->dpy, src, dst, x, y, &dx, &dy, &child))
2253 { 2338 {
2254 EXTEND (SP, 3); 2339 EXTEND (SP, 3);
2255 PUSHs (newSViv (dx)); 2340 PUSHs (sv_2mortal (newSViv (dx)));
2256 PUSHs (newSViv (dy)); 2341 PUSHs (sv_2mortal (newSViv (dy)));
2257 PUSHs (newSVuv (child)); 2342 PUSHs (sv_2mortal (newSVuv (child)));
2258 } 2343 }
2259} 2344}
2260 2345
2261############################################################################# 2346#############################################################################
2262# fancy bg bloatstuff (TODO: should be moved up somewhere) 2347# fancy bg bloatstuff (TODO: should be moved up somewhere)

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines