X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Frender.h;h=7beef9c9f3cc12822099e2f429e7aedd2d0c5bf1;hb=0e9bd66b75725b4d6632eafcaeb34b9fe310e4ea;hp=c6bd35569930b23172edb3a0e7dfb277bf815a9c;hpb=3f32dfa87e08556d7f6a58efab9b7479e515be26;p=chaz%2Fopenbox diff --git a/render/render.h b/render/render.h index c6bd3556..7beef9c9 100644 --- a/render/render.h +++ b/render/render.h @@ -1,11 +1,35 @@ +/* -*- indent-tabs-mode: nil; tab-width: 4; c-basic-offset: 4; -*- + + render.h for the Openbox window manager + Copyright (c) 2006 Mikael Magnusson + Copyright (c) 2003-2007 Dana Jansens + Copyright (c) 2003 Derek Foreman + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + See the COPYING file for a copy of the GNU General Public License. +*/ + #ifndef __render_h #define __render_h -#define _XFT_NO_COMPAT_ /* no Xft 1 API */ -#include -#include +#include "geom.h" +#include "version.h" + +#include /* some platforms dont include this as needed for Xft */ +#include #include +G_BEGIN_DECLS + typedef union _RrTextureData RrTextureData; typedef struct _RrAppearance RrAppearance; typedef struct _RrSurface RrSurface; @@ -14,12 +38,14 @@ typedef struct _RrTexture RrTexture; typedef struct _RrTextureMask RrTextureMask; typedef struct _RrTextureRGBA RrTextureRGBA; typedef struct _RrTextureText RrTextureText; +typedef struct _RrTextureLineArt RrTextureLineArt; typedef struct _RrPixmapMask RrPixmapMask; typedef struct _RrInstance RrInstance; -typedef struct _RrColor color_rgb; /* XXX ugly */ +typedef struct _RrColor RrColor; -typedef guint32 pixel32; /* XXX prefix */ -typedef guint16 pixel16; +typedef guint32 RrPixel32; +typedef guint16 RrPixel16; +typedef guchar RrPixel8; typedef enum { RR_RELIEF_FLAT, @@ -36,19 +62,20 @@ typedef enum { RR_SURFACE_NONE, RR_SURFACE_PARENTREL, RR_SURFACE_SOLID, + RR_SURFACE_SPLIT_VERTICAL, RR_SURFACE_HORIZONTAL, RR_SURFACE_VERTICAL, RR_SURFACE_DIAGONAL, RR_SURFACE_CROSS_DIAGONAL, - RR_SURFACE_PIPECROSS, - RR_SURFACE_RECTANGLE, - RR_SURFACE_PYRAMID + RR_SURFACE_PYRAMID, + RR_SURFACE_MIRROR_HORIZONTAL } RrSurfaceColorType; typedef enum { RR_TEXTURE_NONE, RR_TEXTURE_MASK, RR_TEXTURE_TEXT, + RR_TEXTURE_LINE_ART, RR_TEXTURE_RGBA } RrTextureType; @@ -58,31 +85,47 @@ typedef enum { RR_JUSTIFY_RIGHT } RrJustify; +typedef enum { + RR_FONTWEIGHT_LIGHT, + RR_FONTWEIGHT_NORMAL, + RR_FONTWEIGHT_SEMIBOLD, + RR_FONTWEIGHT_BOLD, + RR_FONTWEIGHT_ULTRABOLD +} RrFontWeight; + +typedef enum { + RR_FONTSLANT_NORMAL, + RR_FONTSLANT_ITALIC, + RR_FONTSLANT_OBLIQUE +} RrFontSlant; + struct _RrSurface { RrSurfaceColorType grad; RrReliefType relief; RrBevelType bevel; - color_rgb *primary; - color_rgb *secondary; - color_rgb *border_color; - color_rgb *bevel_dark; - color_rgb *bevel_light; + RrColor *primary; + RrColor *secondary; + RrColor *border_color; + RrColor *bevel_dark; + RrColor *bevel_light; + RrColor *interlace_color; gboolean interlaced; gboolean border; RrAppearance *parent; gint parentx; gint parenty; - pixel32 *pixel_data; + RrPixel32 *pixel_data; }; struct _RrTextureText { RrFont *font; RrJustify justify; - gint shadow; - gchar tint; - guchar offset; - color_rgb *color; - gchar *string; + RrColor *color; + const gchar *string; + gint shadow_offset_x; + gint shadow_offset_y; + RrColor *shadow_color; + gchar shadow_alpha; }; struct _RrPixmapMask { @@ -94,24 +137,33 @@ struct _RrPixmapMask { }; struct _RrTextureMask { - color_rgb *color; + RrColor *color; RrPixmapMask *mask; }; struct _RrTextureRGBA { gint width; gint height; - pixel32 *data; + RrPixel32 *data; /* cached scaled so we don't have to scale often */ gint cwidth; gint cheight; - pixel32 *cache; + RrPixel32 *cache; +}; + +struct _RrTextureLineArt { + RrColor *color; + gint x1; + gint y1; + gint x2; + gint y2; }; union _RrTextureData { RrTextureRGBA rgba; RrTextureText text; RrTextureMask mask; + RrTextureLineArt lineart; }; struct _RrTexture { @@ -132,6 +184,18 @@ struct _RrAppearance { gint w, h; }; +/* these are the same on all endian machines because it seems to be dependant + on the endianness of the gfx card, not the cpu. */ +#define RrDefaultAlphaOffset 24 +#define RrDefaultRedOffset 16 +#define RrDefaultGreenOffset 8 +#define RrDefaultBlueOffset 0 + +#define RrDefaultFontFamily "arial,sans" +#define RrDefaultFontSize 8 +#define RrDefaultFontWeight RR_FONTWEIGHT_NORMAL +#define RrDefaultFontSlant RR_FONTSLANT_NORMAL + RrInstance* RrInstanceNew (Display *display, gint screen); void RrInstanceFree (RrInstance *inst); @@ -150,22 +214,42 @@ gint RrBlueShift (const RrInstance *inst); gint RrRedMask (const RrInstance *inst); gint RrGreenMask (const RrInstance *inst); gint RrBlueMask (const RrInstance *inst); -guint RrPseudoBPC (const RrInstance *inst); -XColor* RrPseudoColors (const RrInstance *inst); -color_rgb *RrColorNew (const RrInstance *inst, gint r, gint g, gint b); -color_rgb *RrColorParse (const RrInstance *inst, gchar *colorname); -void RrColorFree (color_rgb *in); +RrColor *RrColorNew (const RrInstance *inst, gint r, gint g, gint b); +RrColor *RrColorParse (const RrInstance *inst, gchar *colorname); +void RrColorFree (RrColor *in); + +gint RrColorRed (const RrColor *c); +gint RrColorGreen (const RrColor *c); +gint RrColorBlue (const RrColor *c); +gulong RrColorPixel (const RrColor *c); +GC RrColorGC (RrColor *c); RrAppearance *RrAppearanceNew (const RrInstance *inst, gint numtex); RrAppearance *RrAppearanceCopy (RrAppearance *a); void RrAppearanceFree (RrAppearance *a); -void RrPaint (RrAppearance *l, Window win, gint w, gint h); -void RrMinsize (RrAppearance *l, gint *w, gint *h); +RrFont *RrFontOpen (const RrInstance *inst, const gchar *name, gint size, + RrFontWeight weight, RrFontSlant slant); +RrFont *RrFontOpenDefault (const RrInstance *inst); +void RrFontClose (RrFont *f); +RrSize *RrFontMeasureString (const RrFont *f, const gchar *str, + gint shadow_offset_x, gint shadow_offset_y); +gint RrFontHeight (const RrFont *f, gint shadow_offset_y); +gint RrFontMaxCharWidth (const RrFont *f); + +/* Paint into the appearance. The old pixmap is returned (if there was one). It + is the responsibility of the caller to call XFreePixmap on the return when + it is non-null. */ +Pixmap RrPaintPixmap (RrAppearance *a, gint w, gint h); +void RrPaint (RrAppearance *a, Window win, gint w, gint h); +void RrMinsize (RrAppearance *a, gint *w, gint *h); +void RrMargins (RrAppearance *a, gint *l, gint *t, gint *r, gint *b); gboolean RrPixmapToRGBA(const RrInstance *inst, Pixmap pmap, Pixmap mask, - gint *w, gint *h, pixel32 **data); + gint *w, gint *h, RrPixel32 **data); + +G_END_DECLS #endif /*__render_h*/