diff options
Diffstat (limited to 'apps')
| -rw-r--r-- | apps/gui/viewport.c | 106 | ||||
| -rw-r--r-- | apps/gui/viewport.h | 44 |
2 files changed, 81 insertions, 69 deletions
diff --git a/apps/gui/viewport.c b/apps/gui/viewport.c index 06caa23..ff3a110 100644 --- a/apps/gui/viewport.c +++ b/apps/gui/viewport.c @@ -24,18 +24,10 @@ #include "lcd.h" #include "lcd-remote.h" #include "font.h" -#include "sprintf.h" -#include "string.h" -#include "settings.h" -#include "kernel.h" -#include "system.h" -#include "misc.h" #include "viewport.h" -#include "statusbar.h" #include "screen_access.h" -#include "appevents.h" - - +#include "settings.h" +#include "misc.h" /*some short cuts for fg/bg/line selector handling */ #ifdef HAVE_LCD_COLOR @@ -54,6 +46,17 @@ #define BG_FALLBACK LCD_DEFAULT_BG #endif +/* all below isn't needed for pc tools (i.e. checkwps/wps editor) + * only viewport_parse_viewport() is */ +#ifndef __PCTOOL__ +#include "sprintf.h" +#include "string.h" +#include "kernel.h" +#include "system.h" +#include "statusbar.h" +#include "appevents.h" + + static int statusbar_enabled = 0; #ifdef HAVE_LCD_BITMAP @@ -295,12 +298,55 @@ bool viewport_ui_vp_get_state(enum screen_type screen) return ui_vp_info.active[screen]; } +/* + * (re)parse the UI vp from the settings + * - Returns + * 0 if no UI vp is used at all + * else the bit for the screen (1<<screen) is set + */ +static unsigned viewport_init_ui_vp(void) +{ + int screen; + unsigned ret = 0; + char *setting; + FOR_NB_SCREENS(screen) + { +#ifdef HAVE_REMOTE_LCD + if ((screen == SCREEN_REMOTE)) + setting = global_settings.remote_ui_vp_config; + else +#endif + setting = global_settings.ui_vp_config; + + + if (!(viewport_parse_viewport(&custom_vp[screen], screen, + setting, ','))) + viewport_set_fullscreen(&custom_vp[screen], screen); + else + ret |= BIT_N(screen); + } + return ret; +} + +#ifdef HAVE_TOUCHSCREEN +/* check if a point (x and y coordinates) are within a viewport */ +bool viewport_point_within_vp(const struct viewport *vp, int x, int y) +{ + bool is_x = (x >= vp->x && x < (vp->x + vp->width)); + bool is_y = (y >= vp->y && y < (vp->y + vp->height)); + return (is_x && is_y); +} +#endif /* HAVE_TOUCHSCREEN */ +#endif /* HAVE_LCD_BITMAP */ +#endif /* __PCTOOL__ */ + #ifdef HAVE_LCD_COLOR #define ARG_STRING(_depth) ((_depth) == 2 ? "dddddgg":"dddddcc") #else #define ARG_STRING(_depth) "dddddgg" #endif +#ifdef HAVE_LCD_BITMAP const char* viewport_parse_viewport(struct viewport *vp, enum screen_type screen, const char *bufptr, @@ -386,44 +432,4 @@ const char* viewport_parse_viewport(struct viewport *vp, return ptr; } - -/* - * (re)parse the UI vp from the settings - * - Returns - * 0 if no UI vp is used at all - * else the bit for the screen (1<<screen) is set - */ -static unsigned viewport_init_ui_vp(void) -{ - int screen; - unsigned ret = 0; - char *setting; - FOR_NB_SCREENS(screen) - { -#ifdef HAVE_REMOTE_LCD - if ((screen == SCREEN_REMOTE)) - setting = global_settings.remote_ui_vp_config; - else #endif - setting = global_settings.ui_vp_config; - - - if (!(viewport_parse_viewport(&custom_vp[screen], screen, - setting, ','))) - viewport_set_fullscreen(&custom_vp[screen], screen); - else - ret |= BIT_N(screen); - } - return ret; -} - -#ifdef HAVE_TOUCHSCREEN -/* check if a point (x and y coordinates) are within a viewport */ -bool viewport_point_within_vp(const struct viewport *vp, int x, int y) -{ - bool is_x = (x >= vp->x && x < (vp->x + vp->width)); - bool is_y = (y >= vp->y && y < (vp->y + vp->height)); - return (is_x && is_y); -} -#endif /* HAVE_TOUCHSCREEN */ -#endif /* HAVE_LCD_BITMAP */ diff --git a/apps/gui/viewport.h b/apps/gui/viewport.h index d431766..9cabc00 100644 --- a/apps/gui/viewport.h +++ b/apps/gui/viewport.h @@ -66,6 +66,7 @@ void viewport_set_defaults(struct viewport *vp, enum screen_type screen); #define VP_SB_IGNORE_SETTING(screen) BIT_N(4+screen) #define VP_SB_ALLSCREENS (VP_SB_ONSCREEN(0)|VP_SB_ONSCREEN(1)) +#ifndef __PCTOOL__ /* * Initialize the viewportmanager, which in turns initializes the UI vp and * statusbar stuff @@ -86,25 +87,6 @@ void viewport_set_fullscreen(struct viewport *vp, enum screen_type screen); #ifdef HAVE_LCD_BITMAP /* - * Parse a viewport definition (vp_def), which looks like: - * - * Screens with depth > 1: - * X|Y|width|height|font|foregorund color|background color - * Screens with depth = 1: - * X|Y|width|height|font - * - * | is a separator and can be specified via the parameter - * - * Returns the pointer to the char after the last character parsed - * if everything went OK or NULL if an error happened (some values - * not specified in the definition) - */ -const char* viewport_parse_viewport(struct viewport *vp, - enum screen_type screen, - const char *vp_def, - const char separator); - -/* * Returns a pointer to the current viewport * - That could be the UI vp, or a viewport passed to do_menu() or the like */ @@ -129,4 +111,28 @@ bool viewport_point_within_vp(const struct viewport *vp, int x, int y); #define viewport_set_current_vp(a) #define viewport_get_current_vp() NULL #endif + +#endif /* __PCTOOL__ */ + +#ifdef HAVE_LCD_BITMAP + +/* + * Parse a viewport definition (vp_def), which looks like: + * + * Screens with depth > 1: + * X|Y|width|height|font|foregorund color|background color + * Screens with depth = 1: + * X|Y|width|height|font + * + * | is a separator and can be specified via the parameter + * + * Returns the pointer to the char after the last character parsed + * if everything went OK or NULL if an error happened (some values + * not specified in the definition) + */ +const char* viewport_parse_viewport(struct viewport *vp, + enum screen_type screen, + const char *vp_def, + const char separator); +#endif /* HAVE_LCD_BITMAP */ #endif /* __VIEWPORT_H__ */ |