Prima
view release on metacpan or search on metacpan
unix/render.c view on Meta::CPAN
/*****************************************/
/* */
/* XRender-based graphics */
/* */
/*****************************************/
#include "unix/guts.h"
#include "Image.h"
#ifdef HAVE_X11_EXTENSIONS_XRENDER_H
#define SORT(a,b) { int swp; if ((a) > (b)) { swp=(a); (a)=(b); (b)=swp; }}
#define REVERT(a) (XX-> size. y - (a) - 1)
#define SHIFT(a,b) { (a) += XX-> btransform. x; (b) += XX-> btransform. y; }
#define RANGE(a) { if ((a) < -16383) (a) = -16383; else if ((a) > 16383) a = 16383; }
#define RANGE2(a,b) RANGE(a) RANGE(b)
#define RANGE4(a,b,c,d) RANGE(a) RANGE(b) RANGE(c) RANGE(d)
/*
https://gitlab.freedesktop.org/xorg/lib/libxrender/-/issues/1:
tesselation in xrender is horribly broken, but for now I'll give it a go to at least not throw a coredump
source is from https://github.com/freedesktop/xorg-libXrender/blob/master/src/Poly.c, (c) Keith Packard
*/
int
my_XRenderCompositeDoublePoly (Display *dpy,
int op,
Picture src,
Picture dst,
_Xconst XRenderPictFormat *maskFormat,
int xSrc,
int ySrc,
int xDst,
int yDst,
_Xconst XPointDouble *fpoints,
int npoints,
int winding);
typedef struct {
Picture picture;
Pixmap pixmap;
GC gc;
XGCValues gcv;
} Pen;
static Pen pen;
#ifdef NEED_X11_EXTENSIONS_XRENDER_H
/* piece of Xrender guts */
typedef struct _XExtDisplayInfo {
struct _XExtDisplayInfo *next;
Display *display;
XExtCodes *codes;
XPointer data;
} XExtDisplayInfo;
extern XExtDisplayInfo *
XRenderFindDisplay (Display *dpy);
#endif
Bool
prima_init_xrender_subsystem(char * error_buf)
{
int i, count;
XRenderPictFormat *f;
XVisualInfo template, *list;
XRenderPictureAttributes xrp_attr;
{
int dummy;
if ( XRenderQueryExtension( DISP, &dummy, &dummy))
guts. render_extension = true;
}
if ( !guts. render_extension ) return true;
#ifdef NEED_X11_EXTENSIONS_XRENDER_H
{ /* snatch error code from xrender guts */
XExtDisplayInfo *info = XRenderFindDisplay( DISP);
if ( info && info-> codes)
guts. xft_xrender_major_opcode = info-> codes-> major_opcode;
( run in 1.209 second using v1.01-cache-2.11-cpan-39bf76dae61 )