File: splash.h

package info (click to toggle)
tuxonice-userui 1.1%2Bdfsg1.gc3bdd83-4
  • links: PTS, VCS
  • area: contrib
  • in suites: bookworm, bullseye, buster, stretch
  • size: 664 kB
  • ctags: 2,034
  • sloc: ansic: 5,786; makefile: 91; sh: 63; python: 46
file content (303 lines) | stat: -rw-r--r-- 6,816 bytes parent folder | download
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
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
#ifndef __SPLASH_H__
#define __SPLASH_H__

#include "config.h"
#include <stdio.h>
#include <linux/fb.h>
#include <linux/types.h>

#if defined(CONFIG_MNG) && !defined(TARGET_KERNEL)
	#include "mng_splash.h"
#endif

#if !defined(CONFIG_FBSPLASH)
	#define FB_SPLASH_IO_ORIG_USER 	 0
	#define FB_SPLASH_IO_ORIG_KERNEL 1
#endif

/* Adjustable settings */
#define MAX_RECTS 	32
#define MAX_BOXES 	256
#define MAX_ICONS 	512
#define PATH_DEV	"/dev"
#define PATH_PROC	"/proc"
#define PATH_SYS	"/sys"
#define SPLASH_DEV	PATH_DEV "/fbsplash"

#define TTY_SILENT 	8
#define TTY_VERBOSE 	1

#define DEFAULT_MESSAGE "Initializing the kernel..."
#define DEFAULT_FONT 	"luxisri.ttf"
#define DEFAULT_THEME	"tuxonice"
#define TTF_DEFAULT	THEME_DIR "/" DEFAULT_FONT

/* Settings that shouldn't be changed */
#define PROGRESS_MAX 	0xffff

#define u8 __u8
#define u16 __u16
#define u32 __u32

#define printerr(args...)	fprintf(stderr, ## args);
#define printwarn(args...)	fprintf(stderr, ## args);
#define min(a,b)		((a) < (b) ? (a) : (b))
#define max(a,b)		((a) > (b) ? (a) : (b))
#define CLAMP(x) 		((x) > 255 ? 255 : (x))
#define DEBUG(x...)
						    
/* ************************************************************************
 * 				Lists 
 * ************************************************************************ */
typedef struct item {
	void *p;
	struct item *next;
} item;

typedef struct {
	item *head, *tail; 
} list;

#define list_init(list)		{ list.head = list.tail = NULL; }

/* ************************************************************************
 * 				Enums 
 * ************************************************************************ */

enum ENDIANESS { little, big };
enum TASK { setpic, init, on, off, setcfg, getcfg, getstate, none, paint, 
	    setmode, getmode, repaint, start_daemon };
enum ESVC { e_display, e_svc_inact_start, e_svc_inact_stop, e_svc_start, 
	    e_svc_started, e_svc_stop, e_svc_stopped, e_svc_stop_failed, 
	    e_svc_start_failed };

/* ************************************************************************
 * 				Structures 
 * ************************************************************************ */

typedef struct {
	char *filename;
	int w, h;
	u8 *picbuf;
} icon_img;

typedef struct {
	int x, y;
	icon_img *img;
	char *svc;
	enum ESVC type;
	u8 status;
} icon;

typedef struct obj {
	enum { o_box, o_icon, o_text, o_anim } type;
	void *p;
} obj;

typedef struct color {
	u8 r, g, b, a;
} __attribute__ ((packed)) color;

struct colorf {
	float r, g, b, a;
};

typedef struct {
	int x1, x2, y1, y2;
} rect;

#if defined(CONFIG_MNG) && !defined(TARGET_KERNEL)
#define F_ANIM_SILENT		1
#define F_ANIM_VERBOSE		2

#define F_ANIM_METHOD_MASK	12
#define F_ANIM_ONCE		0
#define F_ANIM_LOOP		4
#define F_ANIM_PROPORTIONAL	8

#define F_ANIM_STATUS_DONE 1

typedef struct {
	int x, y;
	mng_handle mng;
	char *svc;
	enum ESVC type;
	u8 status;
	u8 flags;
} anim;
#endif	/* CONFIG_MNG */

#define F_TXT_SILENT  	1
#define F_TXT_VERBOSE	2
#define F_TXT_EXEC 	4
#define F_TXT_EVAL	8	

#define F_HS_HORIZ_MASK	7
#define F_HS_VERT_MASK	56

#define F_HS_TOP	8
#define F_HS_VMIDDLE	16
#define F_HS_BOTTOM	32

#define F_HS_LEFT	1
#define F_HS_HMIDDLE	2
#define F_HS_RIGHT	4

#if (defined(CONFIG_TTY_KERNEL) && defined(TARGET_KERNEL)) || defined(CONFIG_TTF)
#include "ttf.h"
typedef struct {
	char *file;
	int size;
	TTF_Font *font;
} font_e;

typedef struct {
	int x, y;
	u8 hotspot;
	color col;
	u8 flags;
	u8 style;
	char *val;
	font_e *font;
} text;
#endif /* TTF */

typedef struct {
	int x1, x2, y1, y2;
	struct color c_ul, c_ur, c_ll, c_lr; 	/* upper left, upper right, 
						   lower left, lower right */
	u8 attr;
} box;

typedef struct truecolor {
	u8 r, g, b, a;
} __attribute__ ((packed)) truecolor;

#define BOX_NOOVER 0x01
#define BOX_INTER 0x02
#define BOX_SILENT 0x04

struct splash_config {
	u8 bg_color;
	u16 tx;
	u16 ty;
	u16 tw;
	u16 th;
	u16 text_x, text_y;
	u16 text_size;
	color text_color;
	char *text_font;
} __attribute__ ((packed));

/* ************************************************************************
 * 				Functions 
 * ************************************************************************ */

/* common.c */
void detect_endianess(void);
int get_fb_settings(int fb_num);
char *get_cfg_file(char *theme);
int do_getpic(unsigned char, unsigned char, char);
int do_config(unsigned char);
char *get_filepath(char *path);
void vt_cursor_enable(int fd);
void vt_cursor_disable(int fd);
int open_fb();
int open_tty(int);
int tty_unset_silent(int fd);
int tty_set_silent(int tty, int fd);

/* parse.c */
int parse_cfg(char *cfgfile);
int parse_svc_state(char *t, enum ESVC *state);

/* dev.c */
int create_dev(char *fn, char *sys, int flag);
int remove_dev(char *fn, int flag);

#define open_cr(fd, dev, sysfs, outlabel, flag)	\
	create_dev(dev, sysfs, flag);		\
	fd = open(dev, O_RDWR);			\
	if (fd == -1) {				\
		remove_dev(dev, flag);		\
		goto outlabel;			\
	}					

#define close_del(fd, dev, flag)		\
	close(fd);				\
	remove_dev(dev, flag);

/* render.c */
void render_objs(u8 *target, u8 *bgnd, char mode, unsigned char origin, int progress_only);
void put_pixel (u8 a, u8 r, u8 g, u8 b, u8 *src, u8 *dst, u8 add);

/* image.c */
int load_images(char mode);
void truecolor2fb (truecolor* data, u8* out, int len, int y, u8 alpha);

/* cmd.c */
void cmd_setstate(unsigned int state, unsigned char origin);
void cmd_setpic(struct fb_image *img, unsigned char origin);
void cmd_setcfg(unsigned char origin);
void cmd_getcfg();

/* daemon.c */
void daemon_start();
void do_paint(u8 *dst, u8 *src);
void do_repaint(u8 *dst, u8 *src);
	
/* list.c */
void list_add(list *l, void *obj);

/* effects.c */
void put_img(u8 *dst, u8 *src);
void fade_in(u8 *dst, u8 *image, struct fb_cmap cmap, u8 bgnd, int fd);
void set_directcolor_cmap(int fd);

extern char *cf_pic;
extern char *cf_silentpic;
extern char *cf_pic256;
extern char *cf_silentpic256;

extern struct fb_var_screeninfo   fb_var;
extern struct fb_fix_screeninfo   fb_fix;

extern enum ENDIANESS endianess;
extern enum TASK arg_task;
extern int arg_fb;
extern char *arg_theme;
extern char arg_mode;
extern u16 arg_progress;
extern u8 arg_kdmode;

#ifndef TARGET_KERNEL
extern char *arg_export;
extern u8 theme_loaded;
#endif 

extern char *config_file;

extern list icons;
extern list objs;
extern list rects;
extern list fonts;

extern u8 *bg_buffer;
extern int bytespp;

extern struct fb_image verbose_img;
extern struct fb_image silent_img;

extern struct splash_config cf;

/* common.c */
extern u8 fb_opt;
extern u8 fb_ro, fb_go, fb_bo;
extern u8 fb_rlen, fb_glen, fb_blen;

extern int fb_fd, fbsplash_fd;
extern char *progress_text;

/* Added for use in dynamically loaded functions */
//void (*png_sig_cmp)(png_bytep sig, png_size_t start, png_size_t num_to_check);
#endif /* __SPLASH_H__ */