File: mystyle.h

package info (click to toggle)
afterstep 2.2.12-18.1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 33,184 kB
  • sloc: ansic: 201,695; sh: 5,894; xml: 3,721; makefile: 2,094; perl: 1,558; cpp: 811
file content (218 lines) | stat: -rw-r--r-- 6,629 bytes parent folder | download | duplicates (6)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
#ifndef _MYSTYLE_
#define _MYSTYLE_

#include "../libAfterImage/afterimage.h"
#include "font.h"

#ifdef __cplusplus
extern "C" {
#endif

/***********************************************************************
 *
 * afterstep style include file
 *
 ***********************************************************************/

struct ScreenInfo;
struct ASImage;
struct ASGradient;

#include "myicon.h"

/*
 * see comment to style_config in mystyle.c before changing this structure
 *
 * text_type 0: normal text
 * text_type 1: 3d effect #1
 * text_type 2: 3d effect #2
 */

typedef struct MyStyle
{
	unsigned long magic;

	ASHashTable *owner;

	ASFlagType set_flags;		/* == (user_flags | inherit_flags) */
	ASFlagType user_flags;		/* options the user set */
	ASFlagType inherit_flags;		/* inherited options */

	ASFlagType flags;			/* options that consist of flags only */
	char *name;
	int text_style;
	MyFont font;
	ColorPair colors;
	ColorPair relief;
	int texture_type;
	icon_t back_icon;		/* background pixmap */
	ASGradient gradient;	/* background gradient */
	ARGB32 tint;
	int slice_x_start, slice_x_end, slice_y_start, slice_y_end;
	int blur_x, blur_y;
		
	struct MyStyle *overlay;
	int overlay_type;

}MyStyle;

/*
 * values < 16 are sequential control codes
 * values >= 16 are bit flags
 */
enum				/* MyStyle options */
{
	F_ERROR         = 0,        /* error condition */
	F_DONE          = 1,         /* done parsing body */
	F_INHERIT       = 2,      /* inherit from another style */
	F_FONT          = (1 << 4),
	F_FORECOLOR     = (1 << 5),
	F_BACKCOLOR     = (1 << 6),
	F_SLICE	     	= (1 << 7),
	F_BACKGRADIENT  = (1 << 8),
	F_BACKPIXMAP    = (1 << 9),
	F_TEXTSTYLE     = (1 << 10),
	F_DRAWTEXTBACKGROUND = (1 << 11),
	F_BACKMULTIGRADIENT  = (1 << 12),
	F_BACKTRANSPIXMAP    = (1 << 13),   /* should never be set unless F_BACKPIXMAP is set!! */
	F_EXTERNAL_BACKPIX   = (1 << 14),   /* indicates that pixmap has been created by some other application and should not be freed */
	F_EXTERNAL_BACKMASK  = (1 << 15),
	F_TRANSPARENT		 = (1 << 16),   /* if set MyStyle is transparent, and everything that is drawn with it,
										 * must be updated on background changes */
  
	F_OVERLAY		     = (1 << 17),           
	F_BLUR			     = (1 << 18)
};

#define TransparentMS(style)  (get_flags((style)->set_flags, F_TRANSPARENT))


enum				/* texture types */
{
	TEXTURE_SOLID = 0,

	TEXTURE_GRADIENT_START,
	TEXTURE_GRADIENT = TEXTURE_GRADIENT_START,
	TEXTURE_HGRADIENT,
	TEXTURE_HCGRADIENT,
	TEXTURE_VGRADIENT,
	TEXTURE_VCGRADIENT,
	TEXTURE_OLD_GRADIENT_END = TEXTURE_VCGRADIENT,
	TEXTURE_GRADIENT_TL2BR, /* 6 */
	TEXTURE_GRADIENT_BL2TR,
	TEXTURE_GRADIENT_T2B,
	TEXTURE_GRADIENT_L2R,  /* 9 */
	TEXTURE_GRADIENT_END = TEXTURE_GRADIENT_L2R,

	TEXTURE_TEXTURED_START = 125,
	TEXTURE_SHAPED_SCALED_PIXMAP = TEXTURE_TEXTURED_START,
	TEXTURE_SHAPED_PIXMAP,
	TEXTURE_SCALED_PIXMAP = 127,
	TEXTURE_PIXMAP,
	TEXTURE_TRANSPARENT = 129, /* tninted really */
	TEXTURE_TRANSPIXMAP = 130, /* 130-145 represent different
								  blending methods from libAfterImage */
	TEXTURE_TRANSPIXMAP_ALLANON = TEXTURE_TRANSPIXMAP,
	TEXTURE_TRANSPIXMAP_ALPHA,
	TEXTURE_TRANSPIXMAP_TINT,
	TEXTURE_TRANSPIXMAP_ADD,
	TEXTURE_TRANSPIXMAP_SUB,
	TEXTURE_TRANSPIXMAP_DIFF,
	TEXTURE_TRANSPIXMAP_DARKEN,
	TEXTURE_TRANSPIXMAP_LIGHTEN,
	TEXTURE_TRANSPIXMAP_SCREEN,
	TEXTURE_TRANSPIXMAP_OVERLAY,
	TEXTURE_TRANSPIXMAP_HUE,
	TEXTURE_TRANSPIXMAP_SATURATE,
	TEXTURE_TRANSPIXMAP_VALUE,
	TEXTURE_TRANSPIXMAP_COLORIZE,
	TEXTURE_TRANSPIXMAP_DISSIPATE,

	TEXTURE_TRANSPIXMAP_END = 148,

	TEXTURE_TRANSPARENT_TWOWAY = 149, /* tinted both ways - lightened or darkened */

	TEXTURE_SCALED_TRANSPIXMAP = 150,
	TEXTURE_SCALED_TPM_ALLANON = TEXTURE_SCALED_TRANSPIXMAP,
	TEXTURE_SCALED_TPM_ALPHA,
	TEXTURE_SCALED_TPM_TINT,
	TEXTURE_SCALED_TPM_ADD,
	TEXTURE_SCALED_TPM_SUB,
	TEXTURE_SCALED_TPM_DIFF,
	TEXTURE_SCALED_TPM_DARKEN,
	TEXTURE_SCALED_TPM_LIGHTEN,
	TEXTURE_SCALED_TPM_SCREEN,
	TEXTURE_SCALED_TPM_OVERLAY,
	TEXTURE_SCALED_TPM_HUE,
	TEXTURE_SCALED_TPM_SATURATE,
	TEXTURE_SCALED_TPM_VALUE,
	TEXTURE_SCALED_TPM_COLORIZE,
	TEXTURE_SCALED_TPM_DISSIPATE,
	TEXTURE_SCALED_TRANSPIXMAP_END = 168,
	TEXTURE_TEXTURED_END = TEXTURE_SCALED_TRANSPIXMAP_END,

	TEXTURE_BUILTIN = 255
  };


ARGB32 GetShadow (ARGB32);
ARGB32 GetHilite (ARGB32);
ARGB32 GetAverage (ARGB32 foreground, ARGB32 background);

/* serice functions */
GC CreateTintGC (Drawable d, unsigned long tintColor, int function);

/* just a nice error printing function */
void mystyle_error (char *format, char *name, char *text2);

merge_scanlines_func mystyle_translate_texture_type( int texture_type );

int mystyle_translate_grad_type( int type );
ASImage *mystyle_draw_text_image( MyStyle *style, const char *text, unsigned long encoding );
unsigned int mystyle_get_font_height( MyStyle *style );
void mystyle_get_text_size (MyStyle * style, const char *text, unsigned int *width, unsigned int *height );

void mystyle_list_fix_styles (ASHashTable *list);
void mystyle_fix_styles (void);


ASImage *mystyle_make_image( MyStyle * style, int root_x, int root_y, int width, int height, int flip );
ASImage *mystyle_crop_image(MyStyle * style, int root_x, int root_y, int crop_x, int crop_y, int width, int height, int scale_width, int scale_height, int flip );


MyStyle *mystyle_list_new (struct ASHashTable *list, char *name);
MyStyle *mystyle_new_with_name (char *name);

void mystyle_list_destroy_all( ASHashTable **plist );
void mystyle_destroy_all();

void mystyle_merge_font( MyStyle *style, MyFont *font, Bool override);
void mystyle_merge_styles (MyStyle * parent, MyStyle * child, Bool override, Bool copy);

MyStyle *mystyle_list_find (struct ASHashTable *list, const char *name);
MyStyle *mystyle_list_find_or_default (struct ASHashTable *list, const char *name);

MyStyle *mystyle_find (const char *name);
MyStyle *mystyle_find_or_default (const char *name);

void mystyle_free_back_icon( MyStyle *style );


void mystyle_parse_set_style (char *text, FILE * fd, char **style, int *junk2);
int mystyle_parse_old_gradient (int type, ARGB32 c1, ARGB32 c2, ASGradient *gradient);
void mystyle_inherit_font (MyStyle * style, struct MyFont * font);
void mystyle_merge_colors (MyStyle * style, int type, char *fore, char *back, char *gradient, char *pixmap);

void set_func_arg (char *text, FILE * fd, char **value, int *junk);
ASImageBevel *mystyle_make_bevel (MyStyle *style, ASImageBevel *bevel, int hilite, Bool reverse);

struct ASImage *grab_root_asimage( struct ScreenInfo *scr, Window target, Bool screenshot );

extern MyStyle *mystyle_first;

#ifdef __cplusplus
}
#endif


#endif /* _MYSTYLE_ */