rofi/include/theme.h

100 lines
2.4 KiB
C
Raw Normal View History

2016-12-09 18:49:49 +00:00
#ifndef THEME_H
#define THEME_H
#include <glib.h>
2016-12-11 11:19:46 +00:00
#include <cairo.h>
2016-12-31 21:47:22 +00:00
typedef enum {
PW_PX,
PW_EM,
} PixelWidth;
typedef struct {
2016-12-31 22:27:17 +00:00
double distance;
2016-12-31 21:47:22 +00:00
PixelWidth type;
} Distance;
2016-12-09 18:49:49 +00:00
typedef enum {
P_INTEGER,
2016-12-09 21:16:31 +00:00
P_DOUBLE,
2016-12-09 18:49:49 +00:00
P_STRING,
P_BOOLEAN,
P_COLOR,
// Used in padding.
P_PADDING,
2016-12-09 18:49:49 +00:00
} PropertyType;
2016-12-10 18:48:44 +00:00
typedef struct
{
/** red channel */
double red;
/** green channel */
double green;
/** blue channel */
double blue;
/** alpha channel */
double alpha;
} ThemeColor;
2016-12-27 21:19:15 +00:00
typedef struct
{
2016-12-31 21:47:22 +00:00
Distance top;
Distance right;
2016-12-31 21:47:22 +00:00
Distance bottom;
Distance left;
2016-12-27 21:19:15 +00:00
} Padding;
2016-12-09 18:49:49 +00:00
typedef struct {
char *name;
PropertyType type;
union {
int i;
double f;
char *s;
int b;
2016-12-10 18:48:44 +00:00
ThemeColor color;
Padding padding;
2016-12-09 18:49:49 +00:00
} value;
} Property;
typedef struct _Widget {
int set;
2016-12-09 18:49:49 +00:00
char *name;
unsigned int num_widgets;
struct _Widget **widgets;
GHashTable *properties;
struct _Widget *parent;
} Widget;
2016-12-10 18:48:44 +00:00
2016-12-09 18:49:49 +00:00
extern Widget *rofi_theme;
Widget *rofi_theme_find_or_create_class ( Widget *base, const char *class );
void rofi_theme_print ( Widget *widget );
Property *rofi_theme_property_create ( PropertyType type );
void rofi_theme_property_free ( Property *p );
void rofi_theme_free ( Widget * );
void rofi_theme_parse_file ( const char *file );
void rofi_theme_widget_add_properties ( Widget *widget, GHashTable *table );
2016-12-09 21:16:31 +00:00
/**
* Public API
*/
2016-12-31 22:27:17 +00:00
Distance rofi_theme_get_distance ( const char *wclass, const char *name, const char *state, const char *property, int def );
int rofi_theme_get_integer ( const char *wclass, const char *name, const char *state, const char *property, int def );
int rofi_theme_get_boolean ( const char *wclass, const char *name, const char *state, const char *property, int def );
char *rofi_theme_get_string ( const char *wclass, const char *name, const char *state, const char *property, char *def );
double rofi_theme_get_double ( const char *wclass, const char *name, const char *state, const char *property, double def );
void rofi_theme_get_color ( const char *wclass, const char *name, const char *state, const char *property, cairo_t *d);
2016-12-27 21:19:15 +00:00
Padding rofi_theme_get_padding ( const char *wclass, const char *name, const char *state, const char *property, Padding pad );
2016-12-31 22:27:17 +00:00
int distance_get_pixel ( Distance d );
void rofi_theme_convert_old_theme ( void );
2016-12-09 18:49:49 +00:00
#endif