1
0
Fork 0
forked from len0rd/rockbox

Get rid of some of the code duplication from checkwps, it still duplicates a lot though.

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22695 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
Thomas Martitz 2009-09-13 13:40:58 +00:00
parent 541dd6fda5
commit c0f1c49178
6 changed files with 83 additions and 192 deletions

View file

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

View file

@ -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
@ -85,25 +86,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__ */