openbox/render/render.h
2003-03-17 04:53:36 +00:00

166 lines
3.1 KiB
C

#ifndef __render_h
#define __render_h
#include <X11/Xlib.h>
#define _XFT_NO_COMPAT_ /* no Xft 1 API */
#include <X11/Xft/Xft.h>
#include <glib.h>
#include "color.h"
#ifdef HAVE_STDINT_H
# include <stdint.h>
#else
# ifdef HAVE_SYS_TYPES_H
# include <sys/types.h>
# endif
#endif
#ifdef HAVE_STDINT_H
typedef uint32_t pixel32;
typedef uint16_t pixel16;
#else
typedef u_int32_t pixel32;
typedef u_int16_t pixel16;
#endif /* HAVE_STDINT_H */
#if (G_ENDIAN == G_BIG_ENDIAN)
#define default_red_shift 0
#define default_green_shift 8
#define default_blue_shift 16
#define endian MSBFirst
#else
#define default_red_shift 16
#define default_green_shift 8
#define default_blue_shift 0
#define endian LSBFirst
#endif /* G_ENDIAN == G_BIG_ENDIAN */
typedef enum {
Surface_Planar,
Surface_Nonplanar
} SurfaceType;
typedef enum {
Flat,
Raised,
Sunken
} ReliefType;
typedef enum {
Bevel1,
Bevel2
} BevelType;
typedef enum {
Background_ParentRelative,
Background_Solid,
Background_Horizontal,
Background_Vertical,
Background_Diagonal,
Background_CrossDiagonal,
Background_PipeCross,
Background_Rectangle,
Background_Pyramid,
Background_Elliptic
} SurfaceColorType;
typedef enum {
Bitmask,
Text,
RGBA
} TextureType;
typedef struct PlanarSurface {
SurfaceColorType grad;
ReliefType relief;
BevelType bevel;
color_rgb *primary;
color_rgb *secondary;
color_rgb *border_color;
gboolean interlaced;
gboolean border;
pixel32 *pixel_data;
} PlanarSurface;
typedef struct NonplanarSurface {
int poo;
} NonplanarSurface;
typedef union {
PlanarSurface planar;
NonplanarSurface nonplanar;
} SurfaceData;
typedef struct Surface {
SurfaceType type;
SurfaceColorType colortype;
SurfaceData data;
} Surface;
typedef struct {
XftFont *xftfont;
} ObFont;
typedef enum {
Justify_Center,
Justify_Left,
Justify_Right
} Justify;
typedef struct TextureText {
ObFont *font;
Justify justify;
int shadow;
unsigned char tint;
unsigned char offset;
color_rgb *color;
char *string;
} TextureText;
typedef struct {
Pixmap mask;
guint w, h;
} pixmap_mask;
typedef struct TextureMask {
color_rgb *color;
pixmap_mask *mask;
} TextureMask;
typedef struct TextureRGBA {
int poo;
} TextureRGBA;
typedef union {
TextureRGBA rgba;
TextureText text;
TextureMask mask;
} TextureData;
typedef struct Texture {
TextureType type;
TextureData data;
} Texture;
typedef struct Appearance {
Surface surface;
int textures;
Texture *texture;
Pixmap pixmap;
XftDraw *xftdraw;
} Appearance;
extern Visual *render_visual;
extern int render_depth;
extern Colormap render_colormap;
void (*paint)(Window win, Appearance *l, int x, int y, int w, int h);
void render_startup(void);
void init_appearance(Appearance *l);
void x_paint(Window win, Appearance *l, int x, int y, int w, int h);
void render_shutdown(void);
Appearance *appearance_new(SurfaceType type, int numtex);
Appearance *appearance_copy(Appearance *a);
void appearance_free(Appearance *a);
#endif /*__render_h*/