From 5d22e3cbdd251819a4d2d07b9a12994d5aef778d Mon Sep 17 00:00:00 2001 From: Frank Gevaerts Date: Fri, 29 Aug 2008 21:08:38 +0000 Subject: Add wpseditor, the Google Summer of Code 2008 project of Rostislav Chekan. Closes FS#9327 git-svn-id: svn://svn.rockbox.org/rockbox/trunk@18362 a1c6a512-1295-4272-9138-f99709370657 --- utils/wpseditor/libwps/src/api.c | 268 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 268 insertions(+) create mode 100644 utils/wpseditor/libwps/src/api.c (limited to 'utils/wpseditor/libwps/src/api.c') diff --git a/utils/wpseditor/libwps/src/api.c b/utils/wpseditor/libwps/src/api.c new file mode 100644 index 0000000000..485efa8e00 --- /dev/null +++ b/utils/wpseditor/libwps/src/api.c @@ -0,0 +1,268 @@ +#include +#include +#include "sound.h" +#include "api.h" +#include "proxy.h" +#include "dummies.h" +#include "scroll_engine.h" +#include "wpsstate.h" +#include + +struct proxy_api *xapi; + +void get_current_vp(struct viewport_api *avp); +/************************************************************* + +*************************************************************/ +#ifdef HAVE_LCD_BITMAP +void screen_clear_area(struct screen * display, int xstart, int ystart, + int width, int height) { + display->set_drawmode(DRMODE_SOLID|DRMODE_INVERSEVID); + display->fillrect(xstart, ystart, width, height); + display->set_drawmode(DRMODE_SOLID); +} +#endif + +bool load_wps_backdrop(char* filename) { + return xapi->load_wps_backdrop(filename); +} + +bool load_remote_wps_backdrop(char* filename) { + return xapi->load_remote_wps_backdrop(filename); +} + +int read_bmp_file(const char* filename,struct bitmap *bm, int maxsize,int format) { + if (!xapi->read_bmp_file) + { + DEBUGF1("can't read bmp file! NULL api!\n"); + return -1; + } + bm->format = 3;//FORMAT_ANY? + bm->data = (unsigned char*)malloc(255); + memset(bm->data,0,255); + strcpy((char*)bm->data,filename); + //bm->data[strlen(filename)] = '\0'; + xapi->read_bmp_file(filename,&bm->width, &bm->height); + return 1; +} + +bool load_wps_backdrop2(char* filename) { + DEBUGF1("load_wps_backdrop(char* filename='%s')",filename); + return true; +} + +bool load_remote_wps_backdrop2(char* filename) { + DEBUGF1("load_remote_wps_backdrop2(char* filename='%s')",filename); + return true; +} + +void stop_scroll() { + DEBUGF3("stop_scroll\n"); + return; +} + +void puts_scroll(int x, int y, const unsigned char *string) { + DEBUGF2("puts_scroll(int x=%d, int y=%d, const unsigned char *string='%s'\n",x,y,string); +} + +void putsxy(int x, int y, const unsigned char *str) { + DEBUGF2("putsxy(int =%d, int y=%d, const unsigned char *str='%s')\n",x,y,str); +} + +void lcd_update() { + DEBUGF3("update\n"); +} + +void clear_viewport(int x, int y, int w, int h, int color) { + DEBUGF3("clear_viewport(int x=%d, int y=%d, int w=%d, int h=%d, int color=%d)\n", x, y, w, h, color); +}; + +int getstringsize(const unsigned char *str, int *w, int *h) { + //DEBUGF1("getstringsize(const unsigned char *str=\"%s\", int *w=%d, int *h=%d \n",str,*w,*h); + *w=strlen((char*)str)*sysfont.maxwidth; + *h=sysfont.height; + return 1; +} + +void set_wpsstate(struct wpsstate state){ + sysfont.height = state.fontheight; + sysfont.maxwidth = state.fontwidth; + global_settings.volume = state.volume; + battery_percent = state.battery_level; + _audio_status = state.audio_status; +} + +void set_trackstate(struct trackstate state){ + gui_wps[0].state->id3->title = state.title; + gui_wps[0].state->id3->artist = state.artist; + gui_wps[0].state->id3->album = state.album; + gui_wps[0].state->id3->elapsed = state.elapsed; + gui_wps[0].state->id3->length = state.length; +} + +void set_next_trackstate(struct trackstate state) +{ + gui_wps[0].state->nid3->title = state.title; + gui_wps[0].state->nid3->artist = state.artist; + gui_wps[0].state->nid3->album = state.album; + gui_wps[0].state->nid3->elapsed = state.elapsed; + gui_wps[0].state->nid3->length = state.length; +} + +enum api_playmode playmodes[PLAYMODES_NUM] = { + API_STATUS_PLAY, + API_STATUS_STOP, + API_STATUS_PAUSE, + API_STATUS_FASTFORWARD, + API_STATUS_FASTBACKWARD +}; + +const char *playmodeNames[] = { + "Play", "Stop", "Pause", "FastForward", "FastBackward" +}; + + +void set_audio_status(int status){ + DEBUGF1("%s",playmodeNames[status]); + switch(status){ + case API_STATUS_PLAY: + _audio_status = AUDIO_STATUS_PLAY; + status_set_ffmode(STATUS_PLAY); + break; + case API_STATUS_STOP: + _audio_status = 0; + status_set_ffmode(STATUS_STOP); + break; + case API_STATUS_PAUSE: + _audio_status = AUDIO_STATUS_PAUSE; + status_set_ffmode(STATUS_PLAY); + break; + case API_STATUS_FASTFORWARD: + status_set_ffmode(STATUS_FASTFORWARD); + break; + case API_STATUS_FASTBACKWARD: + status_set_ffmode(STATUS_FASTBACKWARD); + break; + default: + DEBUGF1("ERR: Unknown status"); + } +} + +void test_api(struct proxy_api *api) { + if (!api->stop_scroll) + api->stop_scroll=stop_scroll; + if (!api->set_viewport) + api->set_viewport=lcd_set_viewport; + if (!api->clear_viewport) + api->clear_viewport=clear_viewport; + if (!api->getstringsize) + api->getstringsize=getstringsize; + if (!api->getwidth) + api->getwidth=lcd_getwidth; + if (!api->getheight) + api->getheight=lcd_getheight; + if (!api->set_drawmode) + api->set_drawmode=lcd_set_drawmode; + if (!api->puts_scroll) + api->puts_scroll=puts_scroll; + if (!api->update) + api->update=lcd_update; + if (!api->clear_display) + api->clear_display=lcd_clear_display; + if (!api->getfont) + api->getfont=lcd_getfont; + if (!api->putsxy) + api->putsxy=putsxy; + +#if LCD_DEPTH > 1 + if (!api->get_foreground) + api->get_foreground=lcd_get_foreground; + if (!api->get_background) + api->get_background=lcd_get_background; +#endif + if (!api->load_remote_wps_backdrop) + api->load_remote_wps_backdrop = load_remote_wps_backdrop2; + if (!api->load_wps_backdrop) + api->load_wps_backdrop = load_wps_backdrop2; + //dbgf = printf; +} + +/************************************************************** + +**************************************************************/ + +int set_api(struct proxy_api* api) { + if (api->debugf) + dbgf = api->debugf; + screens[0].screen_type=SCREEN_MAIN; + screens[0].lcdwidth=LCD_WIDTH; + screens[0].lcdheight=LCD_HEIGHT; + screens[0].depth=LCD_DEPTH; +#ifdef HAVE_LCD_COLOR + screens[0].is_color=true; +#else + screens[0].is_color=false; +#endif + if (api->getwidth) + screens[0].getwidth = api->getwidth; + if (api->stop_scroll) + screens[0].stop_scroll=api->stop_scroll; + screens[0].scroll_stop = lcd_scroll_stop; + if (api->set_viewport) + screens[0].set_viewport=api->set_viewport; + if (api->clear_viewport) + screens[0].clear_viewport=lcd_clear_viewport; + if (api->getstringsize) + screens[0].getstringsize=api->getstringsize; + if (api->getwidth) + screens[0].getwidth=api->getwidth; + if (api->getheight) + screens[0].getheight=api->getheight; + if (api->set_drawmode) + screens[0].set_drawmode=api->set_drawmode; + if (api->fillrect) + screens[0].fillrect=api->fillrect; + if (api->puts_scroll) + screens[0].puts_scroll=api->puts_scroll; + if (api->transparent_bitmap_part) + screens[0].transparent_bitmap_part=api->transparent_bitmap_part; + if (api->update) + screens[0].update=api->update; + if (api->clear_display) + screens[0].clear_display=api->clear_display; + if (api->getfont) + screens[0].getfont=api->getfont; + if (api->hline) + screens[0].hline=api->hline; + if (api->vline) + screens[0].vline=api->vline; + if (api->drawpixel) + screens[0].drawpixel=api->drawpixel; + if (api->putsxy) + screens[0].putsxy=api->putsxy; +#if LCD_DEPTH > 1 + if (api->get_foreground) + screens[0].get_foreground=api->get_foreground; + if (api->get_background) + screens[0].get_background=api->get_background; +#endif + + screens[0].bitmap_part = api->bitmap_part; + /************************** + * OUT * + **************************/ + api->get_model_name = get_model_name; + api->get_current_vp = get_current_vp; + api->set_wpsstate = set_wpsstate; + api->set_trackstate = set_trackstate; + api->set_next_trackstate= set_next_trackstate; + api->set_audio_status= set_audio_status; + xapi = api; + return 0; +} + + + + + + -- cgit v1.2.3