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.256 by sf-exg, Wed Nov 24 18:17:20 2021 UTC vs.
Revision 1.261 by root, Tue Jul 25 18:06:07 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"
372 379
373static PerlInterpreter *perl; 380static PerlInterpreter *perl;
374 381
375#if 0 /* we are not a library anymore, so doing this is just not worth it */ 382#if 0 /* we are not a library anymore, so doing this is just not worth it */
376/*THINK/TODO: this has the side effect of, of course, not calling destructors. */ 383/*THINK/TODO: this has the side effect of, of course, not calling destructors. */
377/* but therse are not guaranteed anyway... */ 384/* but these 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 {
382 localise_env set_environ (perl_environ); 389 localise_env set_environ (perl_environ);
390void 397void
391rxvt_perl_interp::init () 398rxvt_perl_interp::init ()
392{ 399{
393 if (!perl) 400 if (!perl)
394 { 401 {
395 rxvt_push_locale (""); // perl init destroys current locale 402 rxvt_push_locale ("C"); // perl init destroys current locale
396 403
397 { 404 {
398 perl_environ = rxvt_environ; 405 perl_environ = rxvt_environ;
399 localise_env set_environ (perl_environ); 406 localise_env set_environ (perl_environ);
400 407
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),
1193 1214
1194 av_pop (av); 1215 av_pop (av);
1195 1216
1196 delete req; 1217 delete req;
1197 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)
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)
1202 CODE: 1258 CODE:
2140 int count; 2196 int count;
2141 Atom *props = XListProperties (THIS->dpy, window, &count); 2197 Atom *props = XListProperties (THIS->dpy, window, &count);
2142 2198
2143 EXTEND (SP, count); 2199 EXTEND (SP, count);
2144 while (count--) 2200 while (count--)
2145 PUSHs (newSVuv ((U32)props [count])); 2201 PUSHs (sv_2mortal (newSVuv ((U32)props [count])));
2146 2202
2147 XFree (props); 2203 XFree (props);
2148} 2204}
2149 2205
2150void 2206void
2166 int elemsize = format == 16 ? sizeof (short) 2222 int elemsize = format == 16 ? sizeof (short)
2167 : format == 32 ? sizeof (long) 2223 : format == 32 ? sizeof (long)
2168 : 1; 2224 : 1;
2169 2225
2170 EXTEND (SP, 3); 2226 EXTEND (SP, 3);
2171 PUSHs (newSVuv ((U32)type)); 2227 PUSHs (sv_2mortal (newSVuv ((U32)type)));
2172 PUSHs (newSViv (format)); 2228 PUSHs (sv_2mortal (newSViv (format)));
2173 PUSHs (newSVpvn ((char *)prop, nitems * elemsize)); 2229 PUSHs (sv_2mortal (newSVpvn ((char *)prop, nitems * elemsize)));
2174 XFree (prop); 2230 XFree (prop);
2175 } 2231 }
2176} 2232}
2177 2233
2178void 2234void
2202 XFree (RETVAL); 2258 XFree (RETVAL);
2203 2259
2204void 2260void
2205XDeleteProperty (rxvt_term *term, Window window, Atom property) 2261XDeleteProperty (rxvt_term *term, Window window, Atom property)
2206 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
2207 2286
2208Window 2287Window
2209rxvt_term::DefaultRootWindow () 2288rxvt_term::DefaultRootWindow ()
2210 CODE: 2289 CODE:
2211 RETVAL = THIS->display->root; 2290 RETVAL = THIS->display->root;
2256 Window child; 2335 Window child;
2257 2336
2258 if (XTranslateCoordinates (THIS->dpy, src, dst, x, y, &dx, &dy, &child)) 2337 if (XTranslateCoordinates (THIS->dpy, src, dst, x, y, &dx, &dy, &child))
2259 { 2338 {
2260 EXTEND (SP, 3); 2339 EXTEND (SP, 3);
2261 PUSHs (newSViv (dx)); 2340 PUSHs (sv_2mortal (newSViv (dx)));
2262 PUSHs (newSViv (dy)); 2341 PUSHs (sv_2mortal (newSViv (dy)));
2263 PUSHs (newSVuv (child)); 2342 PUSHs (sv_2mortal (newSVuv (child)));
2264 } 2343 }
2265} 2344}
2266 2345
2267############################################################################# 2346#############################################################################
2268# 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