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:
parent
541dd6fda5
commit
c0f1c49178
6 changed files with 83 additions and 192 deletions
|
@ -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 */
|
||||
|
|
|
@ -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__ */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue