summaryrefslogtreecommitdiff
path: root/surface.h
blob: 4adc9861e31433e6e2109d8cef7e1a1410a292d4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#ifndef SURFACE_H
#define SURFACE_H

#include <X11/extensions/Xrender.h>
#include <X11/Xlib.h>

typedef enum _SurfaceFilter {
    SurfaceNone,
    SurfaceNearest,
    SurfaceBilinear,
    SurfaceConvolution
} SurfaceFilter;

typedef struct _XRenderSurf {
    int       w, h;
    int       depth;
    Visual   *vis;
    Drawable  draw;
    Picture   pic;
    int       allocated : 1;
} XRenderSurf;


XRenderSurf *xrender_surf_new(Display *disp, Drawable draw, int w, int h, int alpha, Bool ca);
XRenderSurf *xrender_surf_adopt(Display *disp, Drawable draw, int w, int h);
void         xrender_surf_free(Display *disp, XRenderSurf *rs);
void         xrender_surf_populate(Display *disp, XRenderSurf *rs, int w, int h, char *img_data);
void         xrender_surf_prepare(Display *disp, XRenderSurf *src, int w, int h,
                                  int transformations, SurfaceFilter filter);
void         xrender_surf_blend(Display *disp, int op, XRenderSurf *src, XRenderSurf *mask, XRenderSurf *dst,
                                int	    src_x,
                                int	    src_y,
                                int	    mask_x,
                                int	    mask_y,
                                int	    dst_x,
                                int	    dst_y,
                                unsigned int	width,
                                unsigned int	height);

#endif