A bit mroe wps/skin engine cleanup so that the structs the wps uses can be static:
-add wrappers wps_data_load() and wps_data_init() so that other code doesn't need the structs for that
-change (and rename) gui_sync_wps_uses_albumart() to take points to be filled as parameter to get the AA size of a wps

git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22139 a1c6a512-1295-4272-9138-f99709370657
diff --git a/apps/filetree.c b/apps/filetree.c
index 8e97a0d..e6be09a 100644
--- a/apps/filetree.c
+++ b/apps/filetree.c
@@ -51,7 +51,7 @@
 #if CONFIG_TUNER
 #include "radio.h"
 #endif
-#include "skin_engine/skin_engine.h"
+#include "wps.h"
 #include "backdrop.h"
 
 static int compare_sort_dir; /* qsort key for sorting directories */
@@ -484,7 +484,7 @@
 #if LCD_DEPTH > 1
                 unload_wps_backdrop();
 #endif
-                skin_data_load(gui_wps[0].data, &screens[0], buf, true);
+                wps_data_load(SCREEN_MAIN, buf, true);
                 set_file(buf, (char *)global_settings.wps_file,
                          MAX_FILENAME);
                 break;
@@ -496,7 +496,7 @@
 #if defined(HAVE_REMOTE_LCD) && LCD_REMOTE_DEPTH > 1
                 unload_remote_wps_backdrop();
 #endif
-                skin_data_load(gui_wps[1].data, &screens[1], buf, true);
+                wps_data_load(SCREEN_REMOTE, buf, true);
                 set_file(buf, (char *)global_settings.rwps_file,
                          MAX_FILENAME);
                 break;
diff --git a/apps/gui/skin_engine/skin_engine.h b/apps/gui/skin_engine/skin_engine.h
index 00232a3..498444e 100644
--- a/apps/gui/skin_engine/skin_engine.h
+++ b/apps/gui/skin_engine/skin_engine.h
@@ -30,11 +30,6 @@
 int wps_get_touchaction(struct wps_data *data);
 #endif
 
-#ifdef HAVE_ALBUMART
-/* gives back if WPS contains an albumart tag */
-bool gui_sync_wps_uses_albumart(void);
-#endif
-
 /* setup and display a WPS for the first time */
 bool gui_wps_display(struct gui_wps *gwps);
  
@@ -52,8 +47,6 @@
                     bool isfile);
 
 
-
-
-
-
+/* initial setup of wps_data */
+void skin_data_init(struct wps_data *wps_data);
 #endif
diff --git a/apps/gui/skin_engine/wps_internals.h b/apps/gui/skin_engine/wps_internals.h
index 2dcaa50..c00a4f1 100644
--- a/apps/gui/skin_engine/wps_internals.h
+++ b/apps/gui/skin_engine/wps_internals.h
@@ -470,9 +470,6 @@
     unsigned int button_time_volume;
 };
 
-/* initial setup of wps_data */
-void wps_data_init(struct wps_data *wps_data);
-
 
 /* Redraw statusbars if necessary */
 void gwps_draw_statusbars(void);
@@ -536,10 +533,6 @@
 /* gui_wps end */
 
 
-/* currently only on wps_state is needed */
-extern struct wps_state wps_state;
-extern struct gui_wps gui_wps[NB_SCREENS];
-
 /***** wps_tokens.c ******/
 
 const char *get_token_value(struct gui_wps *gwps,
diff --git a/apps/gui/skin_engine/wps_parser.c b/apps/gui/skin_engine/wps_parser.c
index a3e5f68..2c6d5de 100644
--- a/apps/gui/skin_engine/wps_parser.c
+++ b/apps/gui/skin_engine/wps_parser.c
@@ -1552,7 +1552,7 @@
 #endif
 
 /* initial setup of wps_data */
-void wps_data_init(struct wps_data *wps_data)
+void skin_data_init(struct wps_data *wps_data)
 {
 #ifdef HAVE_LCD_BITMAP
     wps_images_clear(wps_data);
@@ -1581,7 +1581,7 @@
     bool rwps = data->remote_wps; /* remember whether the data is for a RWPS */
 #endif
     memset(data, 0, sizeof(*data));
-    wps_data_init(data);
+    skin_data_init(data);
 #ifdef HAVE_REMOTE_LCD
     data->remote_wps = rwps;
 #endif
@@ -1666,7 +1666,7 @@
 
 /* to setup up the wps-data from a format-buffer (isfile = false)
    from a (wps-)file (isfile = true)*/
-static bool wps_data_load(struct wps_data *wps_data,
+static bool _skin_data_load(struct wps_data *wps_data,
                    struct screen *display,
                    const char *buf,
                    bool isfile)
@@ -1820,7 +1820,7 @@
                     const char *buf,
                     bool isfile)
 {
-    bool loaded_ok = buf && wps_data_load(wps_data, display, buf, isfile);
+    bool loaded_ok = buf && _skin_data_load(wps_data, display, buf, isfile);
     if (!loaded_ok) /* load the hardcoded default */
     {
         /* set the default wps for the main-screen */
@@ -1829,7 +1829,7 @@
 #if LCD_DEPTH > 1
             unload_wps_backdrop();
 #endif
-            wps_data_load(wps_data,
+            _skin_data_load(wps_data,
                           display,
 #ifdef HAVE_LCD_BITMAP
                           "%s%?it<%?in<%in. |>%it|%fn>\n"
@@ -1852,7 +1852,7 @@
 #if LCD_REMOTE_DEPTH > 1
             unload_remote_wps_backdrop();
 #endif
-            wps_data_load(wps_data,
+            _skin_data_load(wps_data,
                           display,
                           "%s%?ia<%ia|%?d2<%d2|(root)>>\n"
                           "%s%?it<%?in<%in. |>%it|%fn>\n"
diff --git a/apps/gui/wps.c b/apps/gui/wps.c
index 4a7de87..447c1d6 100644
--- a/apps/gui/wps.c
+++ b/apps/gui/wps.c
@@ -75,8 +75,8 @@
 
 static int wpsbars;
 /* currently only one wps_state is needed */
-struct wps_state wps_state;
-struct gui_wps gui_wps[NB_SCREENS];
+static struct wps_state wps_state;
+static struct gui_wps gui_wps[NB_SCREENS];
 static struct wps_data wps_datas[NB_SCREENS];
 
 /* initial setup of wps_data  */
@@ -90,6 +90,19 @@
                                 /* 3% of 30min file == 54s step size */
 #define MIN_FF_REWIND_STEP 500
 
+void wps_data_load(enum screen_type screen, const char *buf, bool is_file)
+{
+    skin_data_load(gui_wps[screen].data, &screens[screen], buf, is_file);
+#ifdef HAVE_REMOVE_LCD
+    gui_wps[screen].data->remote_wps = !(screen == SCREEN_MAIN);
+#endif
+}
+
+void wps_data_init(enum screen_type screen)
+{
+    skin_data_init(gui_wps[screen].data);
+}
+
 bool wps_fading_out = false;
 void fade(bool fade_in, bool updatewps)
 {
@@ -165,6 +178,7 @@
     return false;
 }
 
+
 bool ffwd_rew(int button)
 {
     unsigned int step = 0;     /* current ff/rewind step */ 
@@ -1176,7 +1190,7 @@
     int i;
     FOR_NB_SCREENS(i)
     {
-        wps_data_init(&wps_datas[i]);
+        skin_data_init(&wps_datas[i]);
 #ifdef HAVE_ALBUMART
         wps_datas[i].wps_uses_albumart = 0;
 #endif
@@ -1201,15 +1215,19 @@
 }
 
 #ifdef HAVE_ALBUMART
-/* Returns true if at least one of the gui_wps screens has an album art
-   tag in its wps structure */
-bool gui_sync_wps_uses_albumart(void)
+bool wps_uses_albumart(int *width, int *height)
 {
     int  i;
     FOR_NB_SCREENS(i) {
         struct gui_wps *gwps = &gui_wps[i];
         if (gwps->data && (gwps->data->wps_uses_albumart != WPS_ALBUMART_NONE))
+        {
+            if (width)
+                *width = gui_wps[0].data->albumart_max_width;
+            if (height)
+                *height = gui_wps[0].data->albumart_max_height;
             return true;
+        }
     }
     return false;
 }
diff --git a/apps/gui/wps.h b/apps/gui/wps.h
index 90614cb..b8cb7d2 100644
--- a/apps/gui/wps.h
+++ b/apps/gui/wps.h
@@ -34,4 +34,17 @@
 void display_keylock_text(bool locked);
 
 bool is_wps_fading(void);
+
+/* wrapper for the wps to load the skin (.wps/.rwps) files */
+void wps_data_load(enum screen_type, const char *, bool);
+void wps_data_init(enum screen_type);
+
+#ifdef HAVE_ALBUMART
+/*
+ * Returns true if at least one of the gui_wps screens has an album art
+ * tag in its wps structure and writes the width and height into the passed
+ * pointers
+ */
+bool wps_uses_albumart(int*, int*);
+#endif
 #endif
diff --git a/apps/menus/main_menu.c b/apps/menus/main_menu.c
index b535662..781b6f4 100644
--- a/apps/menus/main_menu.c
+++ b/apps/menus/main_menu.c
@@ -50,7 +50,7 @@
 #endif
 #include "version.h"
 #include "time.h"
-#include "skin_engine/skin_engine.h"
+#include "wps.h"
 
 static const struct browse_folder_info config = {ROCKBOX_DIR, SHOW_CFG};
 
@@ -253,17 +253,19 @@
             break;
 #ifdef HAVE_ALBUMART
         case INFO_ALBUMART: /* album art dimenstions */
-            if (gui_sync_wps_uses_albumart())
+        {
+            int width = 0, height = 0;
+            if (wps_uses_albumart(&width, &height))
             {
                 snprintf(buffer, buffer_len, "%s %dx%d", str(LANG_ALBUMART),
-                         gui_wps[0].data->albumart_max_width, 
-                         gui_wps[0].data->albumart_max_height);
+                         width, height);
             }
             else
             {
                 snprintf(buffer, buffer_len, "%s %s", str(LANG_ALBUMART),
                          str(LANG_SET_BOOL_NO));
             }
+        } break;
 #endif
     }
     return buffer;
@@ -348,17 +350,20 @@
             break;
 #ifdef HAVE_ALBUMART
             case INFO_ALBUMART: /* album art dimenstions */
-                if (gui_sync_wps_uses_albumart())
+            {
+                int width = 0, height = 0;
+                if (wps_uses_albumart(&width, &height))
                 {
                     talk_id(LANG_ALBUMART, false);
-                    talk_value(gui_wps[0].data->albumart_max_width, UNIT_PIXEL, true);
-                    talk_value(gui_wps[0].data->albumart_max_height, UNIT_PIXEL, true);
+                    talk_value(width, UNIT_PIXEL, true);
+                    talk_value(height, UNIT_PIXEL, true);
                 }
                 else
                 {
                     talk_id(LANG_ALBUMART, false);
                     talk_id(LANG_SET_BOOL_NO, true);
                 }
+            } break;
 #endif
     }
     return 0;
diff --git a/apps/playback.c b/apps/playback.c
index 2a015da..16f4766 100644
--- a/apps/playback.c
+++ b/apps/playback.c
@@ -1872,9 +1872,10 @@
         }
     }
 #ifdef HAVE_ALBUMART
-    if (tracks[track_widx].aa_hid < 0 && gui_sync_wps_uses_albumart())
+    if (tracks[track_widx].aa_hid < 0)
     {
         char aa_path[MAX_PATH];
+        /* find_albumart will error out if the wps doesn't have AA */
         if (find_albumart(track_id3, aa_path, sizeof(aa_path)))
         {
             tracks[track_widx].aa_hid = bufopen(aa_path, 0, TYPE_BITMAP);
diff --git a/apps/playback.h b/apps/playback.h
index 3fcb454..378d5ef 100644
--- a/apps/playback.h
+++ b/apps/playback.h
@@ -49,7 +49,7 @@
 int audio_current_aa_hid(void);
 #endif
 
-#if CONFIG_CODEC == SWCODEC /* This #ifdef is better here than gui/gwps.c */
+#if CONFIG_CODEC == SWCODEC /* This #ifdef is better here than gui/wps.c */
 extern void audio_next_dir(void);
 extern void audio_prev_dir(void);
 #else
diff --git a/apps/recorder/albumart.c b/apps/recorder/albumart.c
index f1315da..4507923 100644
--- a/apps/recorder/albumart.c
+++ b/apps/recorder/albumart.c
@@ -28,6 +28,7 @@
 #include "dircache.h"
 #include "misc.h"
 #include "settings.h"
+#include "wps.h"
 
 /* Define LOGF_ENABLE to enable logf output in this file */
 /*#define LOGF_ENABLE*/
@@ -279,16 +280,16 @@
         return false;
 
     char size_string[9];
-    struct wps_data *data = gui_wps[0].data;
+    int width = 0, height = 0;
 
-    if (!data)
+    if (!wps_uses_albumart(&width, &height))
         return false;
 
     logf("Looking for album art for %s", id3->path);
 
     /* Write the size string, e.g. ".100x100". */
     snprintf(size_string, sizeof(size_string), ".%dx%d",
-             data->albumart_max_width, data->albumart_max_height);
+             width, height);
 
     /* First we look for a bitmap of the right size */
     if (search_albumart_files(id3, size_string, buf, buflen))
@@ -372,9 +373,14 @@
 void get_albumart_size(struct bitmap *bmp)
 {
     /* FIXME: What should we do with albumart on remote? */
-    struct wps_data *data = gui_wps[0].data;
+    int width, height;
 
-    bmp->width = data->albumart_max_width;
-    bmp->height = data->albumart_max_height;
+    if (!wps_uses_albumart(&width, &height))
+    {
+        width = 0; height = 0;
+    }
+
+    bmp->width = width;
+    bmp->height = height;
 }
 #endif /* PLUGIN */
diff --git a/apps/settings.c b/apps/settings.c
index 8835b95..423e6ed 100644
--- a/apps/settings.c
+++ b/apps/settings.c
@@ -69,7 +69,7 @@
 #if CONFIG_TUNER
 #include "radio.h"
 #endif
-#include "skin_engine/skin_engine.h"
+#include "wps.h"
 
 #if CONFIG_CODEC == MAS3507D
 void dac_line_in(bool enable);
@@ -848,15 +848,12 @@
             global_settings.wps_file[0] != 0xff ) {
             snprintf(buf, sizeof buf, WPS_DIR "/%s.wps",
                     global_settings.wps_file);
-            skin_data_load(gui_wps[0].data, &screens[0], buf, true);
+            wps_data_load(SCREEN_MAIN, buf, true);
         }
         else
         {
-            wps_data_init(gui_wps[0].data);
-            skin_data_load(gui_wps[0].data, &screens[0], NULL, true);
-#ifdef HAVE_REMOTE_LCD
-            gui_wps[0].data->remote_wps = false;
-#endif
+            wps_data_init(SCREEN_MAIN);
+            wps_data_load(SCREEN_MAIN, NULL, true);
         }
 
 #if LCD_DEPTH > 1
@@ -878,13 +875,12 @@
         if ( global_settings.rwps_file[0]) {
             snprintf(buf, sizeof buf, WPS_DIR "/%s.rwps",
                     global_settings.rwps_file);
-            skin_data_load(gui_wps[1].data, &screens[1], buf, true);
+            wps_data_load(SCREEN_REMOTE, buf, true);
         }
         else
         {
-            wps_data_init(gui_wps[1].data);
-            skin_data_load(gui_wps[1].data, &screens[1], NULL, true);
-            gui_wps[1].data->remote_wps = true;
+            wps_data_init(SCREEN_REMOTE);
+            wps_data_load(SCREEN_REMOTE, NULL, true);
         }
 #endif
         if ( global_settings.lang_file[0]) {