#ifndef CLEARLOOKS_TYPES_H #define CLEARLOOKS_TYPES_H #include typedef unsigned char boolean; typedef unsigned char uint8; typedef struct _ClearlooksStyleFunctions ClearlooksStyleFunctions; typedef enum { CL_STYLE_CLASSIC = 0, CL_STYLE_GLOSSY = 1, CL_STYLE_INVERTED = 2, CL_STYLE_GUMMY = 3, CL_NUM_STYLES = 4 } ClearlooksStyles; typedef enum { CL_STATE_NORMAL, CL_STATE_ACTIVE, CL_STATE_SELECTED, CL_STATE_INSENSITIVE } ClearlooksStateType; typedef enum { CL_JUNCTION_NONE = 0, CL_JUNCTION_BEGIN = 1, CL_JUNCTION_END = 2 } ClearlooksJunction; typedef enum { CL_STEPPER_UNKNOWN = 0, CL_STEPPER_A = 1, CL_STEPPER_B = 2, CL_STEPPER_C = 4, CL_STEPPER_D = 8 } ClearlooksStepper; typedef enum { CL_ORDER_FIRST, CL_ORDER_MIDDLE, CL_ORDER_LAST } ClearlooksOrder; typedef enum { CL_ORIENTATION_LEFT_TO_RIGHT, CL_ORIENTATION_RIGHT_TO_LEFT, CL_ORIENTATION_BOTTOM_TO_TOP, CL_ORIENTATION_TOP_TO_BOTTOM } ClearlooksOrientation; typedef enum { CL_GAP_LEFT, CL_GAP_RIGHT, CL_GAP_TOP, CL_GAP_BOTTOM } ClearlooksGapSide; typedef enum { CL_SHADOW_NONE, CL_SHADOW_IN, CL_SHADOW_OUT, CL_SHADOW_ETCHED_IN, CL_SHADOW_ETCHED_OUT } ClearlooksShadowType; typedef enum { CL_HANDLE_TOOLBAR, CL_HANDLE_SPLITTER } ClearlooksHandleType; typedef enum { CL_ARROW_NORMAL, CL_ARROW_COMBO } ClearlooksArrowType; typedef enum { CL_DIRECTION_UP, CL_DIRECTION_DOWN, CL_DIRECTION_LEFT, CL_DIRECTION_RIGHT } ClearlooksDirection; typedef enum { CL_PROGRESSBAR_CONTINUOUS, CL_PROGRESSBAR_DISCRETE } ClearlooksProgressBarStyle; typedef enum { CL_WINDOW_EDGE_NORTH_WEST, CL_WINDOW_EDGE_NORTH, CL_WINDOW_EDGE_NORTH_EAST, CL_WINDOW_EDGE_WEST, CL_WINDOW_EDGE_EAST, CL_WINDOW_EDGE_SOUTH_WEST, CL_WINDOW_EDGE_SOUTH, CL_WINDOW_EDGE_SOUTH_EAST } ClearlooksWindowEdge; typedef struct { double x; double y; double width; double height; } ClearlooksRectangle; typedef struct { CairoColor fg[5]; CairoColor bg[5]; CairoColor base[5]; CairoColor text[5]; CairoColor shade[9]; CairoColor spot[3]; } ClearlooksColors; typedef struct { boolean active; boolean prelight; boolean disabled; boolean focus; boolean is_default; boolean ltr; boolean enable_glow; gfloat radius; ClearlooksStateType state_type; uint8 corners; uint8 xthickness; uint8 ythickness; CairoColor parentbg; ClearlooksStyleFunctions *style_functions; } WidgetParameters; typedef struct { boolean lower; boolean horizontal; boolean fill_level; } SliderParameters; typedef struct { ClearlooksOrientation orientation; boolean pulsing; float value; } ProgressBarParameters; typedef struct { int linepos; } OptionMenuParameters; typedef struct { ClearlooksShadowType shadow; ClearlooksGapSide gap_side; int gap_x; int gap_width; const CairoColor *border; /* maybe changes this to some other hint ... */ } FrameParameters; typedef struct { ClearlooksGapSide gap_side; } TabParameters; typedef struct { CairoCorners corners; ClearlooksShadowType shadow; } ShadowParameters; typedef struct { boolean horizontal; } SeparatorParameters; typedef struct { ClearlooksOrder order; /* XXX: rename to position */ boolean resizable; } ListViewHeaderParameters; typedef struct { CairoColor color; ClearlooksJunction junction; /* On which sides the slider junctions */ boolean horizontal; boolean has_color; } ScrollBarParameters; typedef struct { ClearlooksHandleType type; boolean horizontal; } HandleParameters; typedef struct { ClearlooksStepper stepper; /* Which stepper to draw */ } ScrollBarStepperParameters; typedef struct { ClearlooksWindowEdge edge; } ResizeGripParameters; typedef struct { int style; } MenuBarParameters; typedef struct { ClearlooksShadowType shadow_type; boolean in_cell; boolean in_menu; } CheckboxParameters; typedef struct { ClearlooksArrowType type; ClearlooksDirection direction; } ArrowParameters; typedef struct { int style; boolean topmost; } ToolbarParameters; struct _ClearlooksStyleFunctions { void (*draw_button) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_scale_trough) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const SliderParameters *slider, int x, int y, int width, int height); void (*draw_progressbar_trough) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_progressbar_fill) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ProgressBarParameters *progressbar, int x, int y, int width, int height, gint offset); void (*draw_slider_button) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const SliderParameters *slider, int x, int y, int width, int height); void (*draw_entry) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_spinbutton) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_spinbutton_down) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_optionmenu) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const OptionMenuParameters *optionmenu, int x, int y, int width, int height); void (*draw_inset) (cairo_t *cr, const CairoColor *bg_color, double x, double y, double w, double h, double radius, uint8 corners); void (*draw_menubar) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const MenuBarParameters *menubar, int x, int y, int width, int height); void (*draw_tab) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const TabParameters *tab, int x, int y, int width, int height); void (*draw_frame) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const FrameParameters *frame, int x, int y, int width, int height); void (*draw_separator) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const SeparatorParameters *separator, int x, int y, int width, int height); void (*draw_menu_item_separator) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const SeparatorParameters *separator, int x, int y, int width, int height); void (*draw_list_view_header) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ListViewHeaderParameters *header, int x, int y, int width, int height); void (*draw_toolbar) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ToolbarParameters *toolbar, int x, int y, int width, int height); void (*draw_menuitem) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_menubaritem) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_selected_cell) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_scrollbar_stepper) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ScrollBarParameters *scrollbar, const ScrollBarStepperParameters *stepper, int x, int y, int width, int height); void (*draw_scrollbar_slider) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ScrollBarParameters *scrollbar, int x, int y, int width, int height); void (*draw_scrollbar_trough) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ScrollBarParameters *scrollbar, int x, int y, int width, int height); void (*draw_statusbar) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_menu_frame) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_tooltip) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_handle) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const HandleParameters *handle, int x, int y, int width, int height); void (*draw_resize_grip) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ResizeGripParameters *grip, int x, int y, int width, int height); void (*draw_arrow) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const ArrowParameters *arrow, int x, int y, int width, int height); void (*draw_checkbox) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const CheckboxParameters *checkbox, int x, int y, int width, int height); void (*draw_radiobutton) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, const CheckboxParameters *checkbox, int x, int y, int width, int height); /* Style internal functions */ /* XXX: Only used by slider_button, inline it? */ void (*draw_shadow) (cairo_t *cr, const ClearlooksColors *colors, gfloat radius, int width, int height); void (*draw_slider) (cairo_t *cr, const ClearlooksColors *colors, const WidgetParameters *widget, int x, int y, int width, int height); void (*draw_gripdots) (cairo_t *cr, const ClearlooksColors *colors, int x, int y, int width, int height, int xr, int yr, float contrast); }; #define CLEARLOOKS_RECTANGLE_SET(rect, _x, _y, _w, _h) rect.x = _x; \ rect.y = _y; \ rect.width = _w; \ rect.height = _h; #endif /* CLEARLOOKS_TYPES_H */