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__ */
|