You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
113 lines
2.8 KiB
113 lines
2.8 KiB
12 years ago
|
diff --git a/splashutils-1.5.4.4/docs/theme_format b/splashutils-1.5.4.4/docs/theme_format
|
||
|
index 2cc629b..8932583 100644
|
||
|
--- a/splashutils-1.5.4.4/docs/theme_format
|
||
|
+++ b/splashutils-1.5.4.4/docs/theme_format
|
||
|
@@ -91,6 +91,9 @@ that they enclose.
|
||
|
* text_y=<n>
|
||
|
The y coordinate of the main system message.
|
||
|
|
||
|
+* text_align [left|middle|right] [top|middle|bottom]
|
||
|
+ Text align of the main system message.
|
||
|
+
|
||
|
* text_size=<n>
|
||
|
The size of the font used to render the main system message.
|
||
|
|
||
|
diff --git a/splashutils-1.5.4.4/src/parse.c b/splashutils-1.5.4.4/src/parse.c
|
||
|
index ad7676d..0728419 100644
|
||
|
--- a/splashutils-1.5.4.4/src/parse.c
|
||
|
+++ b/splashutils-1.5.4.4/src/parse.c
|
||
|
@@ -20,7 +20,7 @@
|
||
|
struct cfg_opt {
|
||
|
char *name;
|
||
|
enum {
|
||
|
- t_int, t_path, t_box, t_icon, t_rect, t_color, t_fontpath,
|
||
|
+ t_int, t_path, t_box, t_icon, t_rect, t_color, t_fontpath, t_align,
|
||
|
t_type_open, t_type_close, t_anim, t_text, t_textbox_open, t_textbox_close,
|
||
|
} type;
|
||
|
void *val;
|
||
|
@@ -28,6 +28,7 @@ struct cfg_opt {
|
||
|
|
||
|
int line = 0;
|
||
|
u16 text_x, text_y;
|
||
|
+u8 text_align = 0;
|
||
|
u16 text_size;
|
||
|
color text_color;
|
||
|
char *text_font;
|
||
|
@@ -147,6 +148,10 @@ struct cfg_opt opts[] =
|
||
|
.type = t_fontpath,
|
||
|
.val = &text_font },
|
||
|
|
||
|
+ { .name = "text_align",
|
||
|
+ .type = t_align,
|
||
|
+ .val = &text_align },
|
||
|
+
|
||
|
{ .name = "text",
|
||
|
.type = t_text,
|
||
|
.val = NULL },
|
||
|
@@ -216,6 +221,44 @@ static bool skip_nonwhitespace(char **buf, bool req)
|
||
|
return true;
|
||
|
}
|
||
|
|
||
|
+static void parse_align(char *t, struct cfg_opt opt)
|
||
|
+{
|
||
|
+ (*(u8*)opt.val) = 0;
|
||
|
+ /* Parse x position */
|
||
|
+
|
||
|
+ if (!strncmp(t, "left", 4)) {
|
||
|
+ (*(u8*)opt.val) |= F_HS_LEFT;
|
||
|
+ t += 4;
|
||
|
+ } else if (!strncmp(t, "right", 5)) {
|
||
|
+ (*(u8*)opt.val) |= F_HS_RIGHT;
|
||
|
+ t += 5;
|
||
|
+ } else if (!strncmp(t, "middle", 6)) {
|
||
|
+ (*(u8*)opt.val) |= F_HS_HMIDDLE;
|
||
|
+ t += 6;
|
||
|
+ } else {
|
||
|
+ parse_error("expected 'left', 'right' or 'middle' instead of '%s'", t);
|
||
|
+ return;
|
||
|
+ }
|
||
|
+
|
||
|
+ if (!skip_whitespace(&t, true))
|
||
|
+ return;
|
||
|
+ /* Parse y position */
|
||
|
+
|
||
|
+ if (!strncmp(t, "top", 3)) {
|
||
|
+ (*(u8*)opt.val) |= F_HS_TOP;
|
||
|
+ t += 3;
|
||
|
+ } else if (!strncmp(t, "bottom", 6)) {
|
||
|
+ (*(u8*)opt.val) |= F_HS_BOTTOM;
|
||
|
+ t += 6;
|
||
|
+ } else if (!strncmp(t, "middle", 6)) {
|
||
|
+ (*(u8*)opt.val) |= F_HS_VMIDDLE;
|
||
|
+ t += 6;
|
||
|
+ } else {
|
||
|
+ parse_error("expected 'top', 'bottom' or 'middle' instead of '%s'", t);
|
||
|
+ (*(u8*)opt.val) |= F_HS_TOP;
|
||
|
+ }
|
||
|
+}
|
||
|
+
|
||
|
static void parse_int(char *t, struct cfg_opt opt)
|
||
|
{
|
||
|
if (*t != '=') {
|
||
|
@@ -1115,7 +1160,7 @@ void add_main_msg()
|
||
|
return;
|
||
|
}
|
||
|
|
||
|
- ct->hotspot = F_HS_LEFT | F_HS_TOP;
|
||
|
+ ct->hotspot = text_align;
|
||
|
ct->style = TTF_STYLE_NORMAL;
|
||
|
ct->x = text_x;
|
||
|
ct->y = text_y;
|
||
|
@@ -1245,6 +1290,11 @@ int parse_cfg(char *cfgfile, stheme_t *theme)
|
||
|
parse_int(t, opts[i]);
|
||
|
break;
|
||
|
|
||
|
+ case t_align:
|
||
|
+ skip_whitespace(&t, false);
|
||
|
+ parse_align(t, opts[i]);
|
||
|
+ break;
|
||
|
+
|
||
|
case t_box:
|
||
|
{
|
||
|
box *tbox = parse_box(t);
|