X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Frender.h;h=c13894aab9573f666b1185051cf9ecadcc2cc79e;hb=47d63718c664f2ef58f5dfde42ebfc5cc57e123c;hp=88590713e87f14e7d7d9e9b10b64c7f6350c4d9d;hpb=e91814e99f8e71fdf2d930acf43988110969547d;p=chaz%2Fopenbox diff --git a/render/render.h b/render/render.h index 88590713..c13894aa 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 +#include "geom.h" +#include "version.h" + #include /* some platforms dont include this as needed for Xft */ -#define _XFT_NO_COMPAT_ /* no Xft 1 API */ -#include +#include #include +G_BEGIN_DECLS + typedef union _RrTextureData RrTextureData; typedef struct _RrAppearance RrAppearance; typedef struct _RrSurface RrSurface; @@ -21,6 +45,7 @@ typedef struct _RrColor RrColor; typedef guint32 RrPixel32; typedef guint16 RrPixel16; +typedef guchar RrPixel8; typedef enum { RR_RELIEF_FLAT, @@ -37,11 +62,13 @@ 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_PYRAMID + RR_SURFACE_PYRAMID, + RR_SURFACE_MIRROR_HORIZONTAL } RrSurfaceColorType; typedef enum { @@ -58,6 +85,20 @@ 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; @@ -80,7 +121,13 @@ struct _RrTextureText { RrFont *font; RrJustify justify; RrColor *color; - gchar *string; + const gchar *string; + gint shadow_offset_x; + gint shadow_offset_y; + RrColor *shadow_color; + guchar shadow_alpha; + gboolean shortcut; /*!< Underline a character */ + guint shortcut_pos; /*!< Position in bytes of the character to underline */ }; struct _RrPixmapMask { @@ -99,6 +146,7 @@ struct _RrTextureMask { struct _RrTextureRGBA { gint width; gint height; + gint alpha; RrPixel32 *data; /* cached scaled so we don't have to scale often */ gint cwidth; @@ -146,6 +194,11 @@ struct _RrAppearance { #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); @@ -164,8 +217,6 @@ 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); RrColor *RrColorNew (const RrInstance *inst, gint r, gint g, gint b); RrColor *RrColorParse (const RrInstance *inst, gchar *colorname); @@ -180,16 +231,31 @@ GC RrColorGC (RrColor *c); RrAppearance *RrAppearanceNew (const RrInstance *inst, gint numtex); RrAppearance *RrAppearanceCopy (RrAppearance *a); void RrAppearanceFree (RrAppearance *a); +void RrAppearanceAddTextures(RrAppearance *a, gint numtex); -int RrFontMeasureString (const RrFont *f, const gchar *str); -int RrFontHeight (const RrFont *f); -int RrFontMaxCharWidth (const RrFont *f); +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); -void RrPaint (RrAppearance *l, Window win, gint w, gint h); -void RrMinsize (RrAppearance *l, gint *w, gint *h); +/* 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); +gint RrMinWidth (RrAppearance *a); +gint RrMinHeight (RrAppearance *a); +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, RrPixel32 **data); +G_END_DECLS + #endif /*__render_h*/