11 /*! Returns a struct to be used when calling members of the library.
12 If the library fails to initialize, NULL is returned.
13 @param display The X Display to use.
14 @param screen The number of the screen to use.
16 struct RrInstance *RrInit(Display *display,
19 /*! Destroys an instance of the library. The instance should not be used after
20 calling this function.
21 @param inst The instance to destroy.
23 void RrDestroy(struct RrInstance *inst);
28 /*! A Color (including alpha component) for the Render library. This should be
29 treated as an opaque data type, and be accessed only via the available
32 /*! The red component. */
34 /*! The green component. */
36 /*! The blue component. */
38 /*! The alpha component. */
42 /*! Returns the red component for an RrColor */
43 #define RrColorRed(c) (c).r
44 /*! Returns the green component for an RrColor */
45 #define RrColorGreen(c) (c).g
46 /*! Returns the blue component for an RrColor */
47 #define RrColorBlue(c) (c).b
48 /*! Returns the alpha component for an RrColor */
49 #define RrColorAlpha(c) (c).a
50 /*! Returns if an RrColor is non-opaque */
51 #define RrColorHasAlpha(c) ((c).a > 0.0000001)
53 /*! Sets the values of all components for an RrColor */
54 #define RrColorSet(c, w, x, y, z) (c)->r = (w), (c)->g = (x), \
55 (c)->b = (y), (c)->a = z
58 /*! Gets color values from a colorname.
59 @param inst An instance of the library
60 @param colorname The name of the color.
61 @param ret The RrColor to set the colorvalues in.
62 @return nonzero if the colorname could be parsed; on error, it returns zero.
64 int RrColorParse(struct RrInstance *inst, const char *colorname,
71 struct RrFont *RrFontOpen(struct RrInstance *inst, const char *fontstring);
72 void RrFontClose(struct RrFont *font);
74 int RrFontMeasureString(struct RrFont *font, const char *string);
75 int RrFontHeight(struct RrFont *font);
76 int RrFontMaxCharWidth(struct RrFont *font);
87 /*! The options available for the background of an RrSurface */
88 enum RrSurfaceColorType {
89 /*! No rendering on the surface background, its contents will be
92 /*! Solid color fill. */
94 /*! Horizontal gradient. */
95 RR_SURFACE_HORIZONTAL,
96 /*! Vertical gradient. */
98 /*! Diagonal (TL->BR) gradient. */
100 /*! Cross-Diagonal (TR->BL) gradient. */
101 RR_SURFACE_CROSSDIAGONAL,
102 /*! Pipecross gradient. */
103 RR_SURFACE_PIPECROSS,
104 /*! Rectangle gradient. */
105 RR_SURFACE_RECTANGLE,
106 /*! Pyramid gradient. */
110 /*! Create a new RrSurface prototype that can't render. A prototype can be
111 copied to a new RrSurface that can render. */
112 struct RrSurface *RrSurfaceNewProto(enum RrSurfaceType type,
114 /*! Create a new top-level RrSurface for a Window. */
115 struct RrSurface *RrSurfaceNew(struct RrInstance *inst,
116 enum RrSurfaceType type,
119 /*! Create a new RrSurface which is a child of another. */
120 struct RrSurface *RrSurfaceNewChild(enum RrSurfaceType type,
121 struct RrSurface *parent,
123 /*! Copy an RrSurface, creating a new top-level RrSurface for a Window. */
124 struct RrSurface *RrSurfaceCopy(struct RrInstance *inst,
125 struct RrSurface *sur,
127 /*! Copy an RrSurface, creating a nwe RrSurface which is a child of another. */
128 struct RrSurface *RrSurfaceCopyChild(struct RrSurface *sur,
129 struct RrSurface *parent);
130 void RrSurfaceFree(struct RrSurface *sur);
132 void RrSurfaceSetArea(struct RrSurface *sur,
138 Window RrSurfaceWindow(struct RrSurface *sur);
155 typedef long RrData32;
157 typedef int RrData32;
160 void RrTextureSetRGBA(struct RrSurface *sur,
167 void RrTextureSetText(struct RrSurface *sur,
170 enum RrLayout layout,
175 /*! Paints the surface, and all its children */
176 void RrSurfacePaint(struct RrSurface *sur);
177 /*! Paints the surface, and all its children, but only in the given area. */
178 void RrSurfacePaintArea(struct RrSurface *sur,