X-Git-Url: https://git.dogcows.com/gitweb?a=blobdiff_plain;f=render%2Ftheme.h;h=23eead317678e071da0d8c1c0608b5a167486bce;hb=3a607fad9df628ab16e0f7436dfbfc9b22634003;hp=5d5bac10378fbf8e96d1f7393205a1b185cd4a45;hpb=5cf61ee02354c1c9f80c11f3796afc4b948055d6;p=chaz%2Fopenbox diff --git a/render/theme.h b/render/theme.h index 5d5bac10..23eead31 100644 --- a/render/theme.h +++ b/render/theme.h @@ -2,83 +2,170 @@ #define __theme_h #include "render.h" -#include "color.h" -#include "font.h" -#include "mask.h" - -extern int theme_bevel; -extern int theme_handle_height; -extern int theme_bwidth; -extern int theme_cbwidth; - -#define theme_label_height (theme_winfont_height + 2) -#define theme_title_height (theme_label_height + theme_bevel * 2) -#define theme_button_size (theme_label_height - 2) -#define theme_grip_width (theme_button_size * 2) - -extern color_rgb *theme_b_color; -extern color_rgb *theme_cb_focused_color; -extern color_rgb *theme_cb_unfocused_color; -extern color_rgb *theme_title_focused_color; -extern color_rgb *theme_title_unfocused_color; -extern color_rgb *theme_titlebut_focused_color; -extern color_rgb *theme_titlebut_unfocused_color; - -extern int theme_winfont_height; -extern ObFont *theme_winfont; -extern char *theme_title_layout; - -extern pixmap_mask *theme_max_set_mask; -extern pixmap_mask *theme_max_unset_mask; -extern pixmap_mask *theme_iconify_mask; -extern pixmap_mask *theme_desk_set_mask; -extern pixmap_mask *theme_desk_unset_mask; -extern pixmap_mask *theme_shade_set_mask; -extern pixmap_mask *theme_shade_unset_mask; -extern pixmap_mask *theme_close_mask; - -extern Appearance *theme_a_focused_unpressed_max; -extern Appearance *theme_a_focused_pressed_max; -extern Appearance *theme_a_focused_pressed_set_max; -extern Appearance *theme_a_unfocused_unpressed_max; -extern Appearance *theme_a_unfocused_pressed_max; -extern Appearance *theme_a_unfocused_pressed_set_max; -extern Appearance *theme_a_focused_unpressed_close; -extern Appearance *theme_a_focused_pressed_close; -extern Appearance *theme_a_unfocused_unpressed_close; -extern Appearance *theme_a_unfocused_pressed_close; -extern Appearance *theme_a_focused_unpressed_desk; -extern Appearance *theme_a_focused_pressed_desk; -extern Appearance *theme_a_focused_pressed_set_desk; -extern Appearance *theme_a_unfocused_unpressed_desk; -extern Appearance *theme_a_unfocused_pressed_desk; -extern Appearance *theme_a_unfocused_pressed_set_desk; -extern Appearance *theme_a_focused_unpressed_shade; -extern Appearance *theme_a_focused_pressed_shade; -extern Appearance *theme_a_focused_pressed_set_shade; -extern Appearance *theme_a_unfocused_unpressed_shade; -extern Appearance *theme_a_unfocused_pressed_shade; -extern Appearance *theme_a_unfocused_pressed_set_shade; -extern Appearance *theme_a_focused_unpressed_iconify; -extern Appearance *theme_a_focused_pressed_iconify; -extern Appearance *theme_a_unfocused_unpressed_iconify; -extern Appearance *theme_a_unfocused_pressed_iconify; -extern Appearance *theme_a_focused_grip; -extern Appearance *theme_a_unfocused_grip; -extern Appearance *theme_a_focused_title; -extern Appearance *theme_a_unfocused_title; -extern Appearance *theme_a_focused_label; -extern Appearance *theme_a_unfocused_label; -extern Appearance *theme_a_icon; -extern Appearance *theme_a_focused_handle; -extern Appearance *theme_a_unfocused_handle; - -extern Appearance *theme_app_hilite_label; -extern Appearance *theme_app_unhilite_label; - -void theme_startup(); -void theme_shutdown(); - -char *theme_load(char *theme); + +typedef struct _RrTheme RrTheme; + +struct _RrTheme { + gchar *path; + gchar *name; + + const RrInstance *inst; + + /* style settings - optional decor */ + gboolean show_handle; + + /* style settings - geometry */ + gint padding; + gint handle_height; + gint bwidth; + gint cbwidth; + gint label_height; + gint title_height; + gint button_size; + gint grip_width; + gint menu_overlap; + + /* style settings - colors */ + RrColor *b_color; + RrColor *cb_focused_color; + RrColor *cb_unfocused_color; + RrColor *title_focused_color; + RrColor *title_unfocused_color; + RrColor *titlebut_disabled_focused_color; + RrColor *titlebut_disabled_unfocused_color; + RrColor *titlebut_hover_focused_color; + RrColor *titlebut_hover_unfocused_color; + RrColor *titlebut_toggled_focused_color; + RrColor *titlebut_toggled_unfocused_color; + RrColor *titlebut_focused_pressed_color; + RrColor *titlebut_unfocused_pressed_color; + RrColor *titlebut_focused_unpressed_color; + RrColor *titlebut_unfocused_unpressed_color; + RrColor *menu_title_color; + RrColor *menu_color; + RrColor *menu_disabled_color; + RrColor *menu_selected_color; + + /* style settings - fonts */ + gint winfont_height; + RrFont *winfont_focused; + RrFont *winfont_unfocused; + gint mtitlefont_height; + RrFont *mtitlefont; + gint mfont_height; + RrFont *mfont; + + /* style settings - pics */ + RrPixel32 *def_win_icon; /* 48x48 RGBA */ + + /* style settings - masks */ + RrPixmapMask *max_mask; + RrPixmapMask *max_toggled_mask; + RrPixmapMask *max_hover_mask; + RrPixmapMask *max_disabled_mask; + RrPixmapMask *max_pressed_mask; + RrPixmapMask *iconify_mask; + RrPixmapMask *iconify_hover_mask; + RrPixmapMask *iconify_disabled_mask; + RrPixmapMask *iconify_pressed_mask; + RrPixmapMask *desk_mask; + RrPixmapMask *desk_toggled_mask; + RrPixmapMask *desk_hover_mask; + RrPixmapMask *desk_disabled_mask; + RrPixmapMask *desk_pressed_mask; + RrPixmapMask *shade_mask; + RrPixmapMask *shade_toggled_mask; + RrPixmapMask *shade_hover_mask; + RrPixmapMask *shade_disabled_mask; + RrPixmapMask *shade_pressed_mask; + RrPixmapMask *close_mask; + RrPixmapMask *close_hover_mask; + RrPixmapMask *close_disabled_mask; + RrPixmapMask *close_pressed_mask; + + RrPixmapMask *menu_bullet_mask; /* submenu pointer */ + RrPixmapMask *menu_toggle_mask; /* menu boolean */ + + /* global appearances */ + RrAppearance *a_disabled_focused_max; + RrAppearance *a_disabled_unfocused_max; + RrAppearance *a_hover_focused_max; + RrAppearance *a_hover_unfocused_max; + RrAppearance *a_toggled_focused_max; + RrAppearance *a_toggled_unfocused_max; + RrAppearance *a_focused_unpressed_max; + RrAppearance *a_focused_pressed_max; + RrAppearance *a_unfocused_unpressed_max; + RrAppearance *a_unfocused_pressed_max; + RrAppearance *a_disabled_focused_close; + RrAppearance *a_disabled_unfocused_close; + RrAppearance *a_hover_focused_close; + RrAppearance *a_hover_unfocused_close; + RrAppearance *a_focused_unpressed_close; + RrAppearance *a_focused_pressed_close; + RrAppearance *a_unfocused_unpressed_close; + RrAppearance *a_unfocused_pressed_close; + RrAppearance *a_disabled_focused_desk; + RrAppearance *a_disabled_unfocused_desk; + RrAppearance *a_hover_focused_desk; + RrAppearance *a_hover_unfocused_desk; + RrAppearance *a_toggled_focused_desk; + RrAppearance *a_toggled_unfocused_desk; + RrAppearance *a_focused_unpressed_desk; + RrAppearance *a_focused_pressed_desk; + RrAppearance *a_unfocused_unpressed_desk; + RrAppearance *a_unfocused_pressed_desk; + RrAppearance *a_disabled_focused_shade; + RrAppearance *a_disabled_unfocused_shade; + RrAppearance *a_hover_focused_shade; + RrAppearance *a_hover_unfocused_shade; + RrAppearance *a_toggled_focused_shade; + RrAppearance *a_toggled_unfocused_shade; + RrAppearance *a_focused_unpressed_shade; + RrAppearance *a_focused_pressed_shade; + RrAppearance *a_unfocused_unpressed_shade; + RrAppearance *a_unfocused_pressed_shade; + RrAppearance *a_disabled_focused_iconify; + RrAppearance *a_disabled_unfocused_iconify; + RrAppearance *a_hover_focused_iconify; + RrAppearance *a_hover_unfocused_iconify; + RrAppearance *a_focused_unpressed_iconify; + RrAppearance *a_focused_pressed_iconify; + RrAppearance *a_unfocused_unpressed_iconify; + RrAppearance *a_unfocused_pressed_iconify; + RrAppearance *a_focused_grip; + RrAppearance *a_unfocused_grip; + RrAppearance *a_focused_title; + RrAppearance *a_unfocused_title; + RrAppearance *a_focused_label; + RrAppearance *a_unfocused_label; + /* always parentrelative, so no focused/unfocused */ + RrAppearance *a_icon; + RrAppearance *a_focused_handle; + RrAppearance *a_unfocused_handle; + RrAppearance *a_menu_title; + RrAppearance *a_menu; + RrAppearance *a_menu_normal; + RrAppearance *a_menu_disabled; + RrAppearance *a_menu_selected; + RrAppearance *a_menu_text_normal; + RrAppearance *a_menu_text_disabled; + RrAppearance *a_menu_text_selected; + RrAppearance *a_menu_bullet_normal; + RrAppearance *a_menu_bullet_selected; + RrAppearance *a_clear; /* clear with no texture */ + RrAppearance *a_clear_tex; /* clear with a texture */ + + RrAppearance *app_hilite_bg; + RrAppearance *app_unhilite_bg; + RrAppearance *app_hilite_fg; /* never parent relative */ + RrAppearance *app_unhilite_fg; /* never parent relative */ + RrAppearance *app_hilite_label; /* can be parent relative */ + RrAppearance *app_unhilite_label; /* can be parent relative */ + +}; + +RrTheme* RrThemeNew(const RrInstance *inst, gchar *theme); +void RrThemeFree(RrTheme *theme); #endif