netsurf: branch mono/atari_treeview_rework updated. release/3.0-574-g3a5d8cf
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/3a5d8cf6c1bbecfaa23e2...
...commit http://git.netsurf-browser.org/netsurf.git/commit/3a5d8cf6c1bbecfaa23e28a...
...tree http://git.netsurf-browser.org/netsurf.git/tree/3a5d8cf6c1bbecfaa23e28a8b...
The branch, mono/atari_treeview_rework has been updated
via 3a5d8cf6c1bbecfaa23e28a8b4b25f380091db30 (commit)
from 559c9196858297862be6d5fc44ade73fcd9a0fe4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=3a5d8cf6c1bbecfaa23...
commit 3a5d8cf6c1bbecfaa23e28a8b4b25f380091db30
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Hotlist and History and Cookies Manager implemented.
(The Cookie Manager window is a new one)
diff --git a/atari/Makefile.target b/atari/Makefile.target
index fee4963..e47eb5d 100644
--- a/atari/Makefile.target
+++ b/atari/Makefile.target
@@ -78,6 +78,7 @@ S_ATARI := \
bitmap.c \
clipboard.c \
ctxmenu.c \
+ cookies.c \
deskmenu.c \
download.c \
encoding.c \
@@ -85,18 +86,20 @@ S_ATARI := \
filetype.c \
font.c \
gui.c \
+ hotlist.c \
+ history.c \
login.c \
misc.c \
osspec.c \
+ redrawslots.c \
+ rootwin.c \
schedule.c \
search.c \
statusbar.c \
+ settings.c \
+ toolbar.c \
thumbnail.c \
treeview.c \
- redrawslots.c \
- rootwin.c \
- toolbar.c \
- settings.c \
plot/plot.c \
plot/fontplot.c \
plot/eddi.s \
@@ -110,9 +113,6 @@ S_ATARI := \
gemtk/utils.c \
gemtk/objc.c
-# cookies.c \
-# hotlist.c \
-# history.c\
S_ATARI := $(addprefix atari/,$(S_ATARI))
diff --git a/atari/cookies.c b/atari/cookies.c
index dfed6d0..9ac1890 100644
--- a/atari/cookies.c
+++ b/atari/cookies.c
@@ -15,3 +15,242 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/cookie_manager.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "desktop/core_window.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/cookies.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_cookie_manager_s atari_cookie_manager;
+
+
+/* Setup Atari Treeview Callbacks: */
+static nserror atari_cookie_manager_init_phase2(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+static void atari_cookie_manager_finish(struct core_window *cw);
+static void atari_cookie_manager_keypress(struct core_window *cw,
+ uint32_t ucs4);
+static void atari_cookie_manager_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+static void atari_cookie_manager_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx);
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]);
+
+static struct atari_treeview_callbacks atari_cookie_manager_treeview_callbacks = {
+ .init_phase2 = atari_cookie_manager_init_phase2,
+ .finish = atari_cookie_manager_finish,
+ .draw = atari_cookie_manager_draw,
+ .keypress = atari_cookie_manager_keypress,
+ .mouse_action = atari_cookie_manager_mouse_action,
+ .gemtk_user_func = handle_event
+};
+
+
+static nserror atari_cookie_manager_init_phase2(struct core_window *cw,
+ struct core_window_callback_table *cb_t)
+{
+ LOG((""));
+ return(cookie_manager_init(cb_t, cw));
+}
+
+static void atari_cookie_manager_finish(struct core_window *cw)
+{
+ LOG((""));
+ cookie_manager_fini();
+}
+
+static void atari_cookie_manager_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ cookie_manager_redraw(x, y, clip, ctx);
+}
+
+static void atari_cookie_manager_keypress(struct core_window *cw, uint32_t ucs4)
+{
+ LOG(("ucs4: %lu\n", ucs4));
+ cookie_manager_keypress(ucs4);
+}
+
+static void atari_cookie_manager_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y)
+{
+ if((mouse & BROWSER_MOUSE_HOVER) && cookie_manager_has_selection()){
+ cookie_manager_mouse_action(mouse, x, y);
+ } else {
+ cookie_manager_mouse_action(mouse, x, y);
+ }
+
+}
+
+
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ struct atari_treeview_window *tv=NULL;
+ GRECT tb_area;
+ GUIWIN * gemtk_win;
+ struct gui_window * gw;
+ char *cur_url = NULL;
+ char *cur_title = NULL;
+
+ LOG((""));
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+ case WM_TOOLBAR:
+ LOG(("WM_TOOLBAR"));
+ /*
+ tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
+ assert(tv);
+ switch (msg[4]) {
+
+ case TOOLBAR_HOTLIST_EDIT:
+ hotlist_edit_selection();
+ break;
+ }
+
+ gemtk_win = atari_treeview_get_gemtk_window(tv);
+ assert(gemtk_win);
+ gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
+ evnt_timer(150);
+ gemtk_wm_exec_redraw(gemtk_win, &tb_area);
+ */
+ break;
+
+ case WM_CLOSED:
+ atari_cookie_manager_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+void atari_cookie_manager_init(void)
+{
+ if (atari_cookie_manager.init == false) {
+
+ if (atari_cookie_manager.window == NULL) {
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_COOKIES);
+ assert( tree );
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ atari_cookie_manager.window = gemtk_wm_add(handle,
+ GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( atari_cookie_manager.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate Treeview:\nCookies");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("Cookies"));
+ gemtk_wm_set_toolbar(atari_cookie_manager.window, tree, 0, 0);
+ gemtk_wm_unlink(atari_cookie_manager.window);
+
+ atari_cookie_manager.tv = atari_treeview_create(
+ atari_cookie_manager.window,
+ &atari_cookie_manager_treeview_callbacks,
+ flags);
+
+ if (atari_cookie_manager.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ atari_cookie_manager.init = true;
+}
+void atari_cookie_manager_open(void)
+{
+ assert(atari_cookie_manager.init);
+
+ if (atari_cookie_manager.init == false) {
+ // TODO
+ return;
+ }
+
+ if (atari_treeview_is_open(atari_cookie_manager.tv) == false) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ atari_treeview_open(atari_cookie_manager.tv, &pos);
+ } else {
+ wind_set(gemtk_wm_get_handle(atari_cookie_manager.window), WF_TOP, 1, 0,
+ 0, 0);
+ }
+}
+
+
+void atari_cookie_manager_close(void)
+{
+ atari_treeview_close(atari_cookie_manager.tv);
+}
+
+
+void atari_cookie_manager_destroy(void)
+{
+ if( atari_cookie_manager.init == false) {
+ return;
+ }
+ if( atari_cookie_manager.window != NULL ) {
+ if (atari_treeview_is_open(atari_cookie_manager.tv))
+ atari_cookie_manager_close();
+ wind_delete(gemtk_wm_get_handle(atari_cookie_manager.window));
+ gemtk_wm_remove(atari_cookie_manager.window);
+ atari_cookie_manager.window = NULL;
+ atari_treeview_delete(atari_cookie_manager.tv);
+ atari_cookie_manager.init = false;
+ }
+ LOG(("done"));
+
+}
+
+
+void atari_cookie_manager_redraw(void)
+{
+ atari_treeview_redraw(atari_cookie_manager.tv);
+}
diff --git a/atari/cookies.h b/atari/cookies.h
index e69de29..1ef03b7 100644
--- a/atari/cookies.h
+++ b/atari/cookies.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #ifndef NS_ATARI_COOKIE_MANAGER_H
+ #define NS_ATARI_COOKIE_MANAGER_H
+
+struct core_window;
+
+struct atari_cookie_manager_s {
+ GUIWIN * window;
+ struct atari_treeview_window * tv;/*< The hotlist treeview handle. */
+ bool init;
+};
+
+extern struct atari_cookie_manager_s atari_cookie_manager;
+
+void atari_cookie_manager_init(void);
+void atari_cookie_manager_open(void);
+void atari_cookie_manager_close(void);
+void atari_cookie_manager_destroy(void);
+void atari_cookie_manager_redraw(void);
+
+#endif
diff --git a/atari/deskmenu.c b/atari/deskmenu.c
index 0de2cc1..4084d83 100644
--- a/atari/deskmenu.c
+++ b/atari/deskmenu.c
@@ -12,6 +12,7 @@
#include "atari/deskmenu.h"
#include "atari/hotlist.h"
#include "atari/history.h"
+#include "atari/cookies.h"
#include "atari/toolbar.h"
#include "atari/settings.h"
#include "atari/search.h"
@@ -92,6 +93,7 @@ static void __CDECL menu_lhistory(short item, short title, void *data);
static void __CDECL menu_ghistory(short item, short title, void *data);
static void __CDECL menu_add_bookmark(short item, short title, void *data);
static void __CDECL menu_bookmarks(short item, short title, void *data);
+static void __CDECL menu_cookies(short item, short title, void *data);
static void __CDECL menu_vlog(short item, short title, void *data);
static void __CDECL menu_help_content(short item, short title, void *data);
@@ -121,7 +123,8 @@ struct s_menu_item_evnt menu_evnt_tbl[] =
{T_UTIL, MAINMENU_M_LHISTORY,menu_lhistory, {0,NK_F7,0}, NULL},
{T_UTIL, MAINMENU_M_GHISTORY, menu_ghistory, {0,NK_F7,K_CTRL}, NULL},
{T_UTIL, MAINMENU_M_ADD_BOOKMARK, menu_add_bookmark, {'D',0,K_CTRL}, NULL},
- {T_UTIL, MAINMENU_M_BOOKMARKS, menu_bookmarks, {0,NK_F6,0}, NULL},
+ {T_UTIL, MAINMENU_M_BOOKMARKS, menu_bookmarks, {0,NK_F6,0}, NULL},
+ {T_UTIL, MAINMENU_M_COOKIES, menu_cookies, {0,0,0}, NULL},
{T_UTIL, MAINMENU_M_CHOICES, menu_choices, {0,0,0}, NULL},
{T_UTIL, MAINMENU_M_VLOG, menu_vlog, {'V',0,K_ALT}, NULL},
{T_HELP, MAINMENU_M_HELP_CONTENT, menu_help_content, {0,NK_F1,0}, NULL},
@@ -459,7 +462,7 @@ static void __CDECL menu_lhistory(short item, short title, void *data)
static void __CDECL menu_ghistory(short item, short title, void *data)
{
LOG(("%s", __FUNCTION__));
- atari_global_history_open();
+ //atari_global_history_open();
}
static void __CDECL menu_add_bookmark(short item, short title, void *data)
@@ -479,6 +482,12 @@ static void __CDECL menu_bookmarks(short item, short title, void *data)
{
LOG(("%s", __FUNCTION__));
atari_hotlist_open();
+}
+
+static void __CDECL menu_cookies(short item, short title, void *data)
+{
+ LOG(("%s", __FUNCTION__));
+ atari_cookie_manager_open();
}
static void __CDECL menu_vlog(short item, short title, void *data)
diff --git a/atari/gemtk/gemtk.h b/atari/gemtk/gemtk.h
index 3e406b5..88ad0cc 100644
--- a/atari/gemtk/gemtk.h
+++ b/atari/gemtk/gemtk.h
@@ -33,6 +33,17 @@
extern unsigned short _systype_v;
unsigned short _systype (void);
+/* GEMTK Utils API: */
+
+#define GEMTK_DBG_GRECT(s,g) \
+ printf("%s", s); \
+ printf("\tx0: %d, \n", (g)->g_x); \
+ printf("\ty0: %d, \n", (g)->g_y); \
+ printf("\tx1: %d, \n", (g)->g_x+(g)->g_w); \
+ printf("\ty1: %d, \n", (g)->g_y+(g)->g_h); \
+ printf("\tw: %d, \n", (g)->g_w); \
+ printf("\th: %d \n", (g)->g_h); \
+
/*
* Chech for GRECT intersection without modifiend the src rectangles
* return true when the GRECT's intersect, fals otherwise.
@@ -47,6 +58,9 @@ int gemtk_keybd2ascii( int keybd, int shift);
/** set VDI clip area by passing an GRECT */
void gemtk_clip_grect(VdiHdl vh, GRECT *rect);
+void gemtk_wind_get_str(short aes_handle, short mode, char *str, int len);
+
+
#ifndef POINT_WITHIN
# define POINT_WITHIN(_x,_y, r) ((_x >= r.g_x) && (_x <= r.g_x + r.g_w ) \
&& (_y >= r.g_y) && (_y <= r.g_y + r.g_h))
@@ -180,6 +194,8 @@ GUIWIN * gemtk_wm_add(short handle, uint32_t flags,
GUIWIN * gemtk_wm_find(short handle);
+void gemtk_wm_dump_window_info(GUIWIN *win);
+
short gemtk_wm_remove(GUIWIN *win);
GUIWIN * gemtk_wm_validate_ptr(GUIWIN *win);
@@ -192,6 +208,8 @@ short gemtk_wm_dispatch_event(EVMULT_IN *ev_in, EVMULT_OUT *ev_out, short msg[8]
void gemtk_wm_get_grect(GUIWIN *win, enum guwin_area_e mode, GRECT *dest);
+short gemtk_wm_get_toolbar_edit_obj(GUIWIN *win);
+
short gemtk_wm_get_handle(GUIWIN *win);
uint32_t gemtk_wm_get_state(GUIWIN *win);
diff --git a/atari/gemtk/guiwin.c b/atari/gemtk/guiwin.c
index 01f5483..4ad3561 100644
--- a/atari/gemtk/guiwin.c
+++ b/atari/gemtk/guiwin.c
@@ -701,13 +701,13 @@ GUIWIN * gemtk_wm_add(short handle, uint32_t flags, gemtk_wm_event_handler_f cb)
}
/**
-* Returns an GUIWIN* for AES handle, when that AES window is managed by guiwin
+* Returns an GUIWIN* for AES handle, when that AES window is managed by gemtk_wm
*/
GUIWIN *gemtk_wm_find(short handle)
{
GUIWIN *g;
DEBUG_PRINT(("guiwin search handle: %d\n", handle));
- for( g = winlist; g != NULL; g=g->next ) {
+ for (g = winlist; g != NULL; g=g->next) {
if(g->handle == handle) {
DEBUG_PRINT(("guiwin found handle: %p\n", g));
return(g);
@@ -716,6 +716,48 @@ GUIWIN *gemtk_wm_find(short handle)
return(NULL);
}
+void gemtk_wm_dump_window_info(GUIWIN *win)
+{
+
+
+
+ char title[255];
+ GRECT work_area;
+ GRECT curr_area;
+ GRECT gemtk_work_area;
+ GRECT gemtk_toolbar_area;
+ GRECT gemtk_free_area;
+ short handle;
+ struct gemtk_wm_scroll_info_s *slid;
+
+ handle = gemtk_wm_get_handle(win);
+
+ assert(handle);
+
+ gemtk_wind_get_str(handle, WF_NAME, title, 255);
+ wind_get_grect(handle, WF_WORKXYWH, &work_area);
+ wind_get_grect(handle, WF_CURRXYWH, &curr_area);
+ gemtk_wm_get_grect(win, GEMTK_WM_AREA_CONTENT, &gemtk_free_area);
+ gemtk_wm_get_grect(win, GEMTK_WM_AREA_WORK, &gemtk_work_area);
+ gemtk_wm_get_grect(win, GEMTK_WM_AREA_TOOLBAR, &gemtk_toolbar_area);
+ slid = gemtk_wm_get_scroll_info(win);
+
+ printf ("GEMTK Window: %p (AES handle: %d)\n", win, win->handle);
+ printf ("Title: %s\n", title);
+ GEMTK_DBG_GRECT ("WF_WORKXYWH: \n", &work_area)
+ GEMTK_DBG_GRECT ("WF_CURRXYWH: \n", &curr_area)
+ GEMTK_DBG_GRECT ("GEMTK_WM_AREA_CONTENT:\n", &gemtk_free_area)
+ GEMTK_DBG_GRECT ("GEMTK_WM_AREA_WORK:\n", &gemtk_work_area)
+ GEMTK_DBG_GRECT ("GEMTK_WM_AREA_TOOLBAR:\n", &gemtk_toolbar_area)
+ printf ("Slider X pos: %d\n", slid->x_pos);
+ printf ("Slider Y pos: %d\n", slid->y_pos);
+ printf ("Slider X units: %d\n", slid->x_unit_px);
+ printf ("Slider Y units: %d\n", slid->y_unit_px);
+
+
+#undef DBG_GRECT
+};
+
/**
* Check's if the pointer is managed by the guiwin API.
*/
@@ -1024,7 +1066,6 @@ uint32_t gemtk_wm_get_state(GUIWIN *win)
return(win->state);
}
-
/**
* Set and new event handler function.
*/
@@ -1066,7 +1107,7 @@ void gemtk_wm_set_toolbar_size(GUIWIN *win, uint16_t s)
win->toolbar_size = s;
}
-short getm_wm_get_toolbar_edit_obj(GUIWIN *win)
+short gemtk_wm_get_toolbar_edit_obj(GUIWIN *win)
{
return(win->toolbar_edit_obj);
}
diff --git a/atari/gemtk/utils.c b/atari/gemtk/utils.c
index f080e30..20fe5d4 100644
--- a/atari/gemtk/utils.c
+++ b/atari/gemtk/utils.c
@@ -95,4 +95,23 @@ void gemtk_clip_grect(VdiHdl vh, GRECT *rect)
vs_clip_pxy(vh, pxy);
}
+void gemtk_wind_get_str(short aes_handle, short mode, char *str, int len)
+{
+ char tmp_str[255];
+
+ if(len>255) {
+ len = 255;
+ }
+
+ memset(str, 0, len);
+ return;
+ /*
+
+ wind_get(aes_handle, mode, (short)(((unsigned long)tmp_str)>>16),
+ (short)(((unsigned long)tmp_str) & 0xffff), 0, 0);
+
+ strncpy(str, tmp_str, len);
+ */
+}
+
diff --git a/atari/gui.c b/atari/gui.c
index 3f056a1..33d63b4 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -63,6 +63,7 @@
#include "atari/statusbar.h"
#include "atari/toolbar.h"
#include "atari/hotlist.h"
+#include "atari/cookies.h"
#include "atari/history.h"
#include "atari/login.h"
#include "atari/encoding.h"
@@ -171,12 +172,14 @@ void gui_poll(bool active)
tmp = tmp->next;
}
- // TODO: reenable treeview redraws
-/*
- if(hl.tv->redraw){
- atari_treeview_redraw(hl.tv);
- }
+ // TODO: implement generic treeview redraw function
+ // TODO: rename hl to atari_hotlist or create getter for it...
+ //atari_treeview_redraw(hl.tv);
+ atari_hotlist_redraw();
+ atari_cookie_manager_redraw();
+ atari_global_history_redraw();
+/* // TODO: reenable history redraws
if(gl_history.tv->redraw){
atari_treeview_redraw(gl_history.tv);
}
@@ -541,6 +544,27 @@ void gui_window_set_url(struct gui_window *w, const char *url)
}
}
+struct gui_window * gui_window_get_input_window(void)
+{
+ return(input_window);
+}
+
+char * gui_window_get_url(struct gui_window *gw)
+{
+ if (gw == NULL) {
+ return(NULL);
+ }
+ return(gw->url);
+}
+
+char * gui_window_get_title(struct gui_window *gw)
+{
+ if (gw == NULL) {
+ return(NULL);
+ }
+ return(gw->title);
+}
+
static void throbber_advance( void * data )
{
@@ -809,15 +833,16 @@ void gui_quit(void)
struct gui_window * tmp = window_list;
/* Destroy all remaining browser windows: */
- while( gw ) {
+ while (gw) {
tmp = gw->next;
browser_window_destroy(gw->browser->bw);
gw = tmp;
}
/* destroy the treeview windows: */
- atari_global_history_destroy();
+ //atari_global_history_destroy();
atari_hotlist_destroy();
+ atari_cookie_manager_destroy();
/* shutdown netsurf treeview framework: */
treeview_fini();
@@ -1036,8 +1061,9 @@ static void gui_init2(int argc, char** argv)
treeview_init(0);
/* Initialize the specific treeview windows: */
- atari_global_history_init();
+ //atari_global_history_init();
atari_hotlist_init();
+ atari_cookie_manager_init();
/* Initialize the toolbar framework: */
toolbar_init();
@@ -1084,7 +1110,7 @@ int main(int argc, char** argv)
/* user options setup */
ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
if (ret != NSERROR_OK) {
- die("Options failed to initialise");
+ die("Options failed to initialise");
}
nsoption_read(options, NULL);
nsoption_commandline(&argc, argv, NULL);
diff --git a/atari/gui.h b/atari/gui.h
index 2146a26..c582d66 100755
--- a/atari/gui.h
+++ b/atari/gui.h
@@ -142,7 +142,7 @@ struct s_browser
*/
struct gui_window {
struct s_gui_win_root * root;
- CMP_BROWSER browser;
+ struct s_browser * browser;
MFORM_EX *cursor;
/* icon to be drawn when iconified, or NULL for default resource. */
char * status;
@@ -157,8 +157,10 @@ struct gui_window {
extern struct gui_window *window_list;
/* -------------------------------------------------------------------------- */
-/* Public - non standard gui window functions */
+/* Public - non core gui window functions */
/* -------------------------------------------------------------------------- */
void gui_set_input_gui_window(struct gui_window *gw);
+char *gui_window_get_url(struct gui_window *gw);
+char * gui_window_get_title(struct gui_window *gw);
#endif
diff --git a/atari/history.c b/atari/history.c
index dfed6d0..c43b829 100644
--- a/atari/history.c
+++ b/atari/history.c
@@ -15,3 +15,263 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/global_history.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "desktop/core_window.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/history.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_global_history_s atari_global_history;
+
+/* Setup Atari Treeview Callbacks: */
+static nserror atari_global_history_init_phase2(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+static void atari_global_history_finish(struct core_window *cw);
+static void atari_global_history_keypress(struct core_window *cw,
+ uint32_t ucs4);
+static void atari_global_history_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+static void atari_global_history_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx);
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]);
+
+static struct atari_treeview_callbacks atari_global_history_treeview_callbacks = {
+ .init_phase2 = atari_global_history_init_phase2,
+ .finish = atari_global_history_finish,
+ .draw = atari_global_history_draw,
+ .keypress = atari_global_history_keypress,
+ .mouse_action = atari_global_history_mouse_action,
+ .gemtk_user_func = handle_event
+};
+
+static nserror atari_global_history_init_phase2(struct core_window *cw,
+ struct core_window_callback_table *cb_t)
+{
+ LOG((""));
+ return(global_history_init(cb_t, cw));
+}
+
+static void atari_global_history_finish(struct core_window *cw)
+{
+ LOG((""));
+ global_history_fini();
+}
+
+static void atari_global_history_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ global_history_redraw(x, y, clip, ctx);
+}
+
+static void atari_global_history_keypress(struct core_window *cw, uint32_t ucs4)
+{
+ LOG(("ucs4: %lu\n", ucs4));
+ global_history_keypress(ucs4);
+}
+
+static void atari_global_history_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y)
+{
+ LOG(("x: %d, y: %d\n", x, y));
+ if((mouse & BROWSER_MOUSE_HOVER) && global_history_has_selection()){
+ global_history_mouse_action(mouse, x, y);
+ } else {
+ global_history_mouse_action(mouse, x, y);
+ }
+
+}
+
+
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ struct atari_treeview_window *tv=NULL;
+ GRECT tb_area;
+ GUIWIN * gemtk_win;
+ struct gui_window * gw;
+ char *cur_url = NULL;
+ char *cur_title = NULL;
+
+ LOG((""));
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+// case WM_TOOLBAR:
+// LOG(("WM_TOOLBAR"));
+// tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
+// assert(tv);
+// switch (msg[4]) {
+// case TOOLBAR_HOTLIST_CREATE_FOLDER:
+// hotlist_add_folder(NULL, 0, 0);
+// break;
+//
+// case TOOLBAR_HOTLIST_ADD:
+// gw = gui_window_get_input_window();
+// if(gw && gw->browser){
+// cur_url = gui_window_get_url(gw);
+// cur_title = gui_window_get_title(gw);
+// // TODO: read language string.
+// cur_title = (cur_title ? cur_title : "New bookmark");
+// } else {
+// cur_url = "http://www";
+// }
+// atari_global_history_add_page(cur_url, cur_title);
+// break;
+//
+// case TOOLBAR_HOTLIST_DELETE:
+// hotlist_keypress(KEY_DELETE_LEFT);
+// // TODO: check if redraw is really required,
+// // - implement treeview getter for the gemtk
+// // handle.
+// break;
+//
+// case TOOLBAR_HOTLIST_EDIT:
+// hotlist_edit_selection();
+// break;
+// }
+//
+// gemtk_win = atari_treeview_get_gemtk_window(tv);
+// assert(gemtk_win);
+// gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+// atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
+// evnt_timer(150);
+// gemtk_wm_exec_redraw(gemtk_win, &tb_area);
+//
+// break;
+
+ case WM_CLOSED:
+ atari_global_history_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+
+
+void atari_global_history_init(void)
+{
+ if (atari_global_history.init == false) {
+
+
+ if( atari_global_history.window == NULL ){
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HISTORY);
+ assert( tree );
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ atari_global_history.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( atari_global_history.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate History");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("History"));
+ gemtk_wm_set_toolbar(atari_global_history.window, tree, 0, 0);
+ gemtk_wm_unlink(atari_global_history.window);
+
+ atari_global_history.tv = atari_treeview_create(
+ atari_global_history.window,
+ &atari_global_history_treeview_callbacks,
+ flags);
+
+ if (atari_global_history.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ atari_global_history.init = true;
+}
+
+void atari_global_history_open(void)
+{
+ assert(atari_global_history.init);
+
+ if (atari_global_history.init == false) {
+ return;
+ }
+
+ if (atari_treeview_is_open(atari_global_history.tv) == false) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ atari_treeview_open(atari_global_history.tv, &pos);
+ } else {
+ wind_set(gemtk_wm_get_handle(atari_global_history.window), WF_TOP, 1, 0, 0, 0);
+ }
+}
+
+void atari_global_history_close(void)
+{
+ atari_treeview_close(atari_global_history.tv);
+}
+
+void atari_global_history_destroy(void)
+{
+
+ if( atari_global_history.init == false) {
+ return;
+ }
+ if( atari_global_history.window != NULL ) {
+ if (atari_treeview_is_open(atari_global_history.tv))
+ atari_global_history_close();
+ wind_delete(gemtk_wm_get_handle(atari_global_history.window));
+ gemtk_wm_remove(atari_global_history.window);
+ atari_global_history.window = NULL;
+ atari_treeview_delete(atari_global_history.tv);
+ atari_global_history.init = false;
+ }
+ LOG(("done"));
+}
+
+void atari_global_history_redraw(void)
+{
+ atari_treeview_redraw(atari_global_history.tv);
+}
diff --git a/atari/history.h b/atari/history.h
index e69de29..c6b821f 100644
--- a/atari/history.h
+++ b/atari/history.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NS_ATARI_HISTORY_H
+#define NS_ATARI_HISTORY_H
+
+struct core_window;
+
+struct atari_global_history_s {
+ GUIWIN * window;
+ struct atari_treeview_window * tv;/*< The hotlist treeview handle. */
+ bool init;
+};
+
+extern struct atari_global_history_s atari_global_history;
+
+void atari_global_history_init(void);
+void atari_global_history_open(void);
+void atari_global_history_close(void);
+void atari_global_history_destroy(void);
+void atari_global_history_redraw(void);
+
+#endif
diff --git a/atari/hotlist.c b/atari/hotlist.c
index e44ce7d..016cbc4 100644
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -32,6 +32,7 @@
#include "desktop/hotlist.h"
#include "desktop/tree.h"
#include "desktop/gui.h"
+#include "desktop/core_window.h"
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
@@ -48,30 +49,111 @@ extern GRECT desk_area;
struct atari_hotlist hl;
+/* Setup Atari Treeview Callbacks: */
+static nserror atari_hotlist_init_phase2(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+static void atari_hotlist_finish(struct core_window *cw);
+static void atari_hotlist_keypress(struct core_window *cw,
+ uint32_t ucs4);
+static void atari_hotlist_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+static void atari_hotlist_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx);
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]);
+
+static struct atari_treeview_callbacks atari_hotlist_treeview_callbacks = {
+ .init_phase2 = atari_hotlist_init_phase2,
+ .finish = atari_hotlist_finish,
+ .draw = atari_hotlist_draw,
+ .keypress = atari_hotlist_keypress,
+ .mouse_action = atari_hotlist_mouse_action,
+ .gemtk_user_func = handle_event
+};
+
+static nserror atari_hotlist_init_phase2(struct core_window *cw,
+ struct core_window_callback_table *cb_t)
+{
+ LOG((""));
+ return(hotlist_init(cb_t, cw, hl.path));
+}
+
+static void atari_hotlist_finish(struct core_window *cw)
+{
+ LOG((""));
+ hotlist_fini(hl.path);
+}
+
+static void atari_hotlist_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ hotlist_redraw(x, y, clip, ctx);
+}
+
+static void atari_hotlist_keypress(struct core_window *cw, uint32_t ucs4)
+{
+ LOG(("ucs4: %lu\n", ucs4));
+ hotlist_keypress(ucs4);
+}
+
+static void atari_hotlist_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y)
+{
+ LOG(("x: %d, y: %d\n", x, y));
+ if((mouse & BROWSER_MOUSE_HOVER) && hotlist_has_selection()){
+ hotlist_mouse_action(mouse, x, y);
+ } else {
+ hotlist_mouse_action(mouse, x, y);
+ }
+
+}
+
+
+
static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
- NSTREEVIEW tv=NULL;
+ struct atari_treeview_window *tv=NULL;
GRECT tb_area;
+ GUIWIN * gemtk_win;
+ struct gui_window * gw;
+ char *cur_url = NULL;
+ char *cur_title = NULL;
+
+ LOG((""));
if(ev_out->emo_events & MU_MESAG){
switch (msg[0]) {
case WM_TOOLBAR:
-
- tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
-
+ LOG(("WM_TOOLBAR"));
+ tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
+ assert(tv);
switch (msg[4]) {
case TOOLBAR_HOTLIST_CREATE_FOLDER:
- hotlist_add_folder(NULL, false, 0);
+ hotlist_add_folder(NULL, 0, 0);
break;
case TOOLBAR_HOTLIST_ADD:
- atari_hotlist_add_page(NULL, NULL);
+ gw = gui_window_get_input_window();
+ if(gw && gw->browser){
+ cur_url = gui_window_get_url(gw);
+ cur_title = gui_window_get_title(gw);
+ // TODO: read language string.
+ cur_title = (cur_title ? cur_title : "New bookmark");
+ } else {
+ cur_url = "http://www";
+ }
+ atari_hotlist_add_page(cur_url, cur_title);
break;
case TOOLBAR_HOTLIST_DELETE:
hotlist_keypress(KEY_DELETE_LEFT);
- gemtk_wm_exec_redraw(tv->window, NULL);
+ // TODO: check if redraw is really required,
+ // - implement treeview getter for the gemtk
+ // handle.
break;
case TOOLBAR_HOTLIST_EDIT:
@@ -79,10 +161,12 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
break;
}
+ gemtk_win = atari_treeview_get_gemtk_window(tv);
+ assert(gemtk_win);
gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
evnt_timer(150);
- gemtk_wm_exec_redraw(tv->window, &tb_area);
+ gemtk_wm_exec_redraw(gemtk_win, &tb_area);
break;
case WM_CLOSED:
@@ -116,7 +200,6 @@ void atari_hotlist_init(void)
GRECT desk;
OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
assert( tree );
- hl.open = false;
handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
@@ -129,11 +212,10 @@ void atari_hotlist_init(void)
gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
gemtk_wm_unlink(hl.window);
tree_hotlist_path = (const char*)&hl.path;
- hl.tv = atari_treeview_create(
- TREE_HOTLIST,
- hl.window,
- handle_event
- );
+
+ hl.tv = atari_treeview_create(hl.window, &atari_hotlist_treeview_callbacks,
+ flags);
+
if (hl.tv == NULL) {
/* handle it properly, clean up previous allocs */
LOG(("Failed to allocate treeview"));
@@ -147,14 +229,14 @@ void atari_hotlist_init(void)
hl.init = true;
}
-
void atari_hotlist_open(void)
{
- if( hl.init == false ) {
+ assert(hl.init);
+ if (hl.init == false) {
return;
}
- if( hl.open == false ) {
+ if (atari_treeview_is_open(hl.tv) == false) {
GRECT pos;
pos.g_x = desk_area.g_w - desk_area.g_w / 4;
@@ -162,9 +244,7 @@ void atari_hotlist_open(void)
pos.g_w = desk_area.g_w / 4;
pos.g_h = desk_area.g_h;
- wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
- hl.open = true;
- atari_treeview_open( hl.tv );
+ atari_treeview_open(hl.tv, &pos);
} else {
wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
}
@@ -172,8 +252,6 @@ void atari_hotlist_open(void)
void atari_hotlist_close(void)
{
- wind_close(gemtk_wm_get_handle(hl.window));
- hl.open = false;
atari_treeview_close(hl.tv);
}
@@ -184,12 +262,12 @@ void atari_hotlist_destroy(void)
return;
}
if( hl.window != NULL ) {
- if (hl.open)
+ if (atari_treeview_is_open(hl.tv))
atari_hotlist_close();
wind_delete(gemtk_wm_get_handle(hl.window));
gemtk_wm_remove(hl.window);
hl.window = NULL;
- atari_treeview_destroy(hl.tv);
+ atari_treeview_delete(hl.tv);
hl.init = false;
}
LOG(("done"));
@@ -197,7 +275,6 @@ void atari_hotlist_destroy(void)
void atari_hotlist_redraw(void)
{
- int i = 01;
atari_treeview_redraw(hl.tv);
}
@@ -209,7 +286,7 @@ void atari_hotlist_add_page( const char * url, const char * title )
struct node * selected = NULL;
struct node * folder = NULL;
nsurl *nsurl;
- NSTREEVIEW tv = hl.tv;
+ ATARI_TREEVIEW_PTR tv = hl.tv;
if(hl.tv == NULL )
return;
@@ -218,11 +295,14 @@ void atari_hotlist_add_page( const char * url, const char * title )
if (nsurl_create(url, &nsurl) != NSERROR_OK)
return;
+ /* doesn't look nice:
if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
} else {
- hotlist_add_url( nsurl );
- }
+
+ }*/
+ //hotlist_add_url(nsurl);
+ hotlist_add_entry(nsurl, title, 0, 0);
nsurl_unref(nsurl);
}
diff --git a/atari/hotlist.h b/atari/hotlist.h
index c6fc464..2bcda5f 100644
--- a/atari/hotlist.h
+++ b/atari/hotlist.h
@@ -26,8 +26,7 @@
struct atari_hotlist {
GUIWIN * window;
- NSTREEVIEW tv; /*< The hotlist treeview handle. */
- bool open;
+ ATARI_TREEVIEW_PTR tv;/*< The hotlist treeview handle. */
bool init;
char path[PATH_MAX];
};
@@ -39,7 +38,6 @@ void atari_hotlist_open( void );
void atari_hotlist_close( void );
void atari_hotlist_destroy( void );
void atari_hotlist_add_page( const char * url, const char * title );
-
void atari_hotlist_redraw( void );
diff --git a/atari/res/netsurf.rsc b/atari/res/netsurf.rsc
index 64a8e35..2137328 100755
Binary files a/atari/res/netsurf.rsc and b/atari/res/netsurf.rsc differ
diff --git a/atari/res/netsurf.rsh b/atari/res/netsurf.rsh
index 268aff5..6797c05 100755
--- a/atari/res/netsurf.rsh
+++ b/atari/res/netsurf.rsh
@@ -36,9 +36,10 @@
#define MAINMENU_M_GHISTORY 53 /* STRING in tree MAINMENU */
#define MAINMENU_M_ADD_BOOKMARK 55 /* STRING in tree MAINMENU */
#define MAINMENU_M_BOOKMARKS 56 /* STRING in tree MAINMENU */
-#define MAINMENU_M_CHOICES 58 /* STRING in tree MAINMENU */
-#define MAINMENU_M_VLOG 59 /* STRING in tree MAINMENU */
-#define MAINMENU_M_HELP_CONTENT 61 /* STRING in tree MAINMENU */
+#define MAINMENU_M_COOKIES 58 /* STRING in tree MAINMENU */
+#define MAINMENU_M_CHOICES 60 /* STRING in tree MAINMENU */
+#define MAINMENU_M_VLOG 61 /* STRING in tree MAINMENU */
+#define MAINMENU_M_HELP_CONTENT 63 /* STRING in tree MAINMENU */
#define TOOLBAR 1 /* form/dial */
#define TOOLBAR_AREA_SEARCH 1 /* BOX in tree TOOLBAR */
@@ -209,3 +210,7 @@
#define POP_FONT_RENDERER 15 /* form/dial */
#define POP_FONT_RENDERER_INTERNAL 1 /* STRING in tree POP_FONT_RENDERER */
#define POP_FONT_RENDERER_FREETYPE 2 /* STRING in tree POP_FONT_RENDERER */
+
+#define TOOLBAR_COOKIES 16 /* form/dial */
+
+#define TOOLBAR_HISTORY 17 /* form/dial */
diff --git a/atari/res/netsurf.rsm b/atari/res/netsurf.rsm
index 2ede405..27df3d7 100755
--- a/atari/res/netsurf.rsm
+++ b/atari/res/netsurf.rsm
@@ -1,10 +1,10 @@
ResourceMaster v3.65
-#C 16@0@0@0@
+#C 18@0@0@0@
#N 99@32@AZAaza___ _@AZAaza090___ _@@_@
#FoC-Header@rsm2out@C-Header@rsh@@@[C-Header@0@
#R 0@0@1@1@2@1@
-#M 20010100@0@7728@641@
-#T 0@1@MAINMENU@@62@@
+#M 20010100@0@7728@643@
+#T 0@1@MAINMENU@@64@@
#O 4@32@T_FILE@@
#O 5@32@T_EDIT@@
#O 6@32@T_VIEW@@
@@ -40,9 +40,10 @@ ResourceMaster v3.65
#O 53@28@M_GHISTORY@@
#O 55@28@M_ADD_BOOKMARK@@
#O 56@28@M_BOOKMARKS@@
-#O 58@28@M_CHOICES@@
-#O 59@28@M_VLOG@@
-#O 61@28@M_HELP_CONTENT@@
+#O 58@28@M_COOKIES@@
+#O 60@28@M_CHOICES@@
+#O 61@28@M_VLOG@@
+#O 63@28@M_HELP_CONTENT@@
#T 1@2@TOOLBAR@@19@@
#O 1@20@AREA_SEARCH@@
#O 2@26@BT_SEARCH_FWD@@
@@ -196,4 +197,6 @@ ResourceMaster v3.65
#T 15@2@POP_FONT_RENDERER@@3@@
#O 1@28@INTERNAL@@
#O 2@28@FREETYPE@@
-#c 22411@
+#T 16@2@TOOLBAR_COOKIES@@1@@
+#T 17@2@TOOLBAR_HISTORY@@1@@
+#c 24594@
diff --git a/atari/toolbar.c b/atari/toolbar.c
index e190c96..6c08428 100644
--- a/atari/toolbar.c
+++ b/atari/toolbar.c
@@ -444,6 +444,7 @@ void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
//dbg_grect("toolbar redraw clip", clip);
+ /* Redraw the AES objects: */
objc_draw_grect(tb->form,0,8,clip);
objc_draw_grect(&throbber_form[tb->throbber.index], 0, 1, clip);
@@ -461,6 +462,7 @@ void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
};
//dbg_rect("tb textarea clip: ", &r);
// TODO: let this be handled by an userdef object redraw function:
+ /* Redraw the url input: */
textarea_redraw(tb->url.textarea, 0, 0, 0xffffff, 1.0, &r, &toolbar_rdrw_ctx);
}
}
@@ -594,7 +596,7 @@ void toolbar_set_url(struct s_toolbar *tb, const char * text)
LOG((""));
textarea_set_text(tb->url.textarea, text);
- if (tb->attached) {
+ if (tb->attached && tb->visible) {
GRECT area;
toolbar_get_grect(tb, TOOLBAR_AREA_URL, &area);
window_schedule_redraw_grect(tb->owner, &area);
diff --git a/atari/treeview.c b/atari/treeview.c
index 6dd43d3..99711c0 100644
--- a/atari/treeview.c
+++ b/atari/treeview.c
@@ -68,6 +68,7 @@ struct atari_treeview_window {
GUIWIN * window;
bool disposing;
bool redraw;
+ bool is_open;
GRECT rdw_area;
POINT extent;
POINT click;
@@ -75,20 +76,16 @@ struct atari_treeview_window {
struct atari_treeview_callbacks *io;
};
-enum treeview_area_e {
- TREEVIEW_AREA_WORK = 0,
- TREEVIEW_AREA_TOOLBAR,
- TREEVIEW_AREA_CONTENT
-};
-
/* native GUI event handlers: */
-static void __CDECL on_mbutton_event(struct atari_treeview_window *tvw,
+static void on_mbutton_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_keybd_event(struct atari_treeview_window *tvw,
+static void on_keybd_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_redraw_event(struct atari_treeview_window *tvw,
+static void on_redraw_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
+/* static utils: */
+static void atari_treeview_dump_info(struct atari_treeview_window *tv, char *s);
/**
* Schedule a redraw of the treeview content
@@ -116,12 +113,12 @@ static void atari_treeview_redraw_grect_request(struct core_window *cw,
tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
}
- // dbg_grect("atari_treeview_request_redraw", &tv->rdw_area);
+ //dbg_grect("atari_treeview_request_redraw_grect", &tv->rdw_area);
}
}
-static void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
+void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
GRECT *dest)
{
@@ -135,40 +132,33 @@ static void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area
}
}
-
-void atari_treeview_redraw(struct atari_treeview_window *tv)
+GUIWIN * atari_treeview_get_gemtk_window(struct atari_treeview_window *tv)
{
- static FONT_PLOTTER vdi_txt_plotter = NULL;
- FONT_PLOTTER old_txt_plotter;
+ return(tv->window);
+}
- VdiHdl plot_vdi_handle = 0;
- long atari_plot_flags = 0;
+static void atari_treeview_dump_info(struct atari_treeview_window *tv,
+ char * title)
+{
+ printf("Treeview Dump (%s)\n", title);
+ printf("=================================\n");
+ gemtk_wm_dump_window_info(atari_treeview_get_gemtk_window(tv));
+ GEMTK_DBG_GRECT("Redraw Area: \n", &tv->rdw_area)
+ dbg_grect("Redraw Area2: \n", &tv->rdw_area);
+ printf("Extent: x: %d, y: %d\n", tv->extent, tv->extent);
+}
- /* TODO: do not use the global vdi handle for plot actions! */
- /* TODO: implement getter/setter for the vdi handle */
- if (tv != NULL) {
- if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
+void atari_treeview_redraw(struct atari_treeview_window *tv)
+{
+ if (tv != NULL && tv->is_open) {
+ if( tv->redraw && ((plot_get_flags() & PLOT_FLAG_OFFSCREEN) == 0) ) {
- plot_vdi_handle = plot_get_vdi_handle();
- long atari_plot_flags = plot_get_flags();
short todo[4];
GRECT work;
short handle = gemtk_wm_get_handle(tv->window);
struct gemtk_wm_scroll_info_s *slid;
-/*
- if (vdi_txt_plotter == NULL) {
- int err = 0;
- VdiHdl vdih = plot_get_vdi_handle();
- vdi_txt_plotter = new_font_plotter(vdih, (char*)"vdi", PLOT_FLAG_TRANS,
- &err);
- if(err) {
- const char * desc = plot_err_str(err);
- die(("Unable to load vdi font plotter %s -> %s", "vdi", desc ));
- }
- }
-*/
gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
slid = gemtk_wm_get_scroll_info(tv->window);
@@ -180,26 +170,37 @@ void atari_treeview_redraw(struct atari_treeview_window *tv)
plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
if (plot_lock() == false)
return;
-/*
- if(vdi_txt_plotter != NULL){
- old_txt_plotter = plot_get_text_plotter();
- plot_set_text_plotter(vdi_txt_plotter);
- }
-*/
+
if( wind_get(handle, WF_FIRSTXYWH,
&todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
while (todo[2] && todo[3]) {
short pxy[4];
+
+ if(!rc_intersect(&work, (GRECT*)&todo)){
+ if (wind_get(handle, WF_NEXTXYWH,
+ &todo[0], &todo[1], &todo[2], &todo[3])==0) {
+ break;
+ }
+ continue;
+ }
pxy[0] = todo[0];
pxy[1] = todo[1];
pxy[2] = todo[0] + todo[2]-1;
pxy[3] = todo[1] + todo[3]-1;
- vs_clip(plot_vdi_handle, 1, (short*)&pxy);
+ vs_clip(plot_get_vdi_handle(), 1, (short*)&pxy);
+
+ // Debug code: this 3 lines help to inspect the redraw
+ // areas...
+ /*
+ vsf_color(plot_get_vdi_handle(), 3);
+ v_bar(plot_get_vdi_handle(), (short*)&pxy);
+ evnt_timer(500);
+ */
/* convert screen to treeview coords: */
- todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
- todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
+ todo[0] = todo[0] - work.g_x ;//+ slid->x_pos*slid->x_unit_px;
+ todo[1] = todo[1] - work.g_y ;//+ slid->y_pos*slid->y_unit_px;
if( todo[0] < 0 ){
todo[2] = todo[2] + todo[0];
todo[0] = 0;
@@ -209,27 +210,29 @@ void atari_treeview_redraw(struct atari_treeview_window *tv)
todo[1] = 0;
}
+ // TODO: get slider values
if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
- tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
+ struct rect clip;
+
+ clip.x0 = todo[0]+(slid->x_pos*slid->x_unit_px);
+ clip.y0 = todo[1]+(slid->y_pos*slid->y_unit_px);
+ clip.x1 = clip.x0 + todo[2]+(slid->x_pos*slid->x_unit_px);
+ clip.y1 = clip.y0 + todo[3]+(slid->y_pos*slid->y_unit_px);
+
+ tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
-(slid->y_pos*slid->y_unit_px),
- todo[0], todo[1], todo[2], todo[3], &ctx);
+ &clip, &ctx);
}
- vs_clip(plot_vdi_handle, 0, (short*)&pxy);
+ vs_clip(plot_get_vdi_handle(), 0, (short*)&pxy);
if (wind_get(handle, WF_NEXTXYWH,
&todo[0], &todo[1], &todo[2], &todo[3])==0) {
break;
}
}
} else {
- /*
- plot_set_text_plotter(old_txt_plotter);
- */
plot_unlock();
return;
}
- /*
- plot_set_text_plotter(old_txt_plotter);
- */
plot_unlock();
tv->redraw = false;
tv->rdw_area.g_x = 65000;
@@ -242,6 +245,137 @@ void atari_treeview_redraw(struct atari_treeview_window *tv)
}
}
+//
+//// TODO: rename to atari_treeview_draw_content
+//void atari_treeview_redraw(struct atari_treeview_window *tv)
+//{
+// static FONT_PLOTTER vdi_txt_plotter = NULL;
+// FONT_PLOTTER old_txt_plotter;
+//
+// VdiHdl plot_vdi_handle = 0;
+// long atari_plot_flags = 0;
+// short pxy[4];
+// struct rect clip;
+//
+// /* TODO: do not use the global vdi handle for plot actions! */
+// /* TODO: implement getter/setter for the vdi handle */
+//
+// if (tv != NULL && tv->is_open) {
+// if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
+//
+// atari_treeview_dump_info(tv, "atari_treeview_redraw");
+//
+// plot_vdi_handle = plot_get_vdi_handle();
+// long atari_plot_flags = plot_get_flags();
+// short todo[4];
+// GRECT work;
+// short handle = gemtk_wm_get_handle(tv->window);
+// struct gemtk_wm_scroll_info_s *slid;
+//
+///*
+// if (vdi_txt_plotter == NULL) {
+// int err = 0;
+// VdiHdl vdih = plot_get_vdi_handle();
+// vdi_txt_plotter = new_font_plotter(vdih, (char*)"vdi", PLOT_FLAG_TRANS,
+// &err);
+// if(err) {
+// const char * desc = plot_err_str(err);
+// die(("Unable to load vdi font plotter %s -> %s", "vdi", desc ));
+// }
+// }
+//*/
+// gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+// slid = gemtk_wm_get_scroll_info(tv->window);
+//
+// struct redraw_context ctx = {
+// .interactive = true,
+// .background_images = true,
+// .plot = &atari_plotters
+// };
+// plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
+// if (plot_lock() == false)
+// return;
+///*
+// if(vdi_txt_plotter != NULL){
+// old_txt_plotter = plot_get_text_plotter();
+// plot_set_text_plotter(vdi_txt_plotter);
+// }
+//*/
+// if( wind_get(handle, WF_FIRSTXYWH,
+// &todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
+// while (todo[2] && todo[3]) {
+//
+// pxy[0] = todo[0];
+// pxy[1] = todo[1];
+// pxy[2] = todo[0] + todo[2]-1;
+// pxy[3] = todo[1] + todo[3]-1;
+// //vs_clip(plot_vdi_handle, 1, (short*)&pxy);
+//
+// /* convert screen to treeview coords: */
+// todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
+// todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
+// if( todo[0] < 0 ){
+// todo[2] = todo[2] + todo[0];
+// todo[0] = 0;
+// }
+// if( todo[1] < 0 ){
+// todo[3] = todo[3] + todo[1];
+// todo[1] = 0;
+// }
+//
+// clip.x0 = todo[0];
+// clip.y0 = todo[1];
+// clip.x1 = clip.x0 + todo[2];
+// clip.y1 = clip.y0 + todo[3];
+//
+// clip.x0 = todo[0];
+// clip.y0 = todo[1];
+// clip.x1 = clip.x0 + todo[2] ;
+// clip.y1 = clip.y0 + todo[3] ;
+///*
+// clip.x0 = 0;
+// clip.y0 = 0;
+// clip.x1 = work.g_w;//MAX(tv->extent.x, work.g_w);
+// clip.y1 = MAX(tv->extent.y, work.g_h)+200;
+//*/
+// dbg_rect("treeview redraw clip", &clip);
+//
+// if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
+// tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
+// -(slid->y_pos*slid->y_unit_px), &clip,
+// &ctx);
+//
+// /*tv->io->draw(tv, 0,0, &clip,
+// &ctx);*/
+// }
+// //vs_clip(plot_vdi_handle, 0, (short*)&pxy);
+// if (wind_get(handle, WF_NEXTXYWH,
+// &todo[0], &todo[1], &todo[2], &todo[3])==0) {
+// break;
+// }
+// }
+// } else {
+// /*
+// plot_set_text_plotter(old_txt_plotter);
+// */
+// plot_unlock();
+// return;
+// }
+// /*
+// plot_set_text_plotter(old_txt_plotter);
+// */
+// plot_unlock();
+// tv->redraw = false;
+// tv->rdw_area.g_x = 65000;
+// tv->rdw_area.g_y = 65000;
+// tv->rdw_area.g_w = -1;
+// tv->rdw_area.g_h = -1;
+// } else {
+// /* just copy stuff from the offscreen buffer */
+// }
+// }
+//}
+
/**
* GEMTK event sink
@@ -272,14 +406,10 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
on_mbutton_event(tv, ev_out, msg);
}
- if (tv) {
-
- }
-/*
- if(tv != NULL && tv->user_func != NULL){
- tv->user_func(win, ev_out, msg);
+ if(tv != NULL && tv->io->gemtk_user_func != NULL){
+ tv->io->gemtk_user_func(win, ev_out, msg);
}
-*/
+
return(0);
}
@@ -325,12 +455,24 @@ static void __CDECL on_redraw_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
return;
gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ //dbg_grect("treeview work: ", &work);
+
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &work);
+ //dbg_grect("treeview work: ", &work);
slid = gemtk_wm_get_scroll_info(tv->window);
clip = work;
- if ( !rc_intersect( (GRECT*)&msg[4], &clip ) ) return;
+
+ /* check if the redraw area intersects with the content area: */
+ if ( !rc_intersect( (GRECT*)&msg[4], &clip)) {
+ return;
+ }
+
+ /* make redraw coords relative to content viewport */
clip.g_x -= work.g_x;
clip.g_y -= work.g_y;
+
+ /* normalize the redraw coords: */
if( clip.g_x < 0 ) {
clip.g_w = work.g_w + clip.g_x;
clip.g_x = 0;
@@ -339,15 +481,19 @@ static void __CDECL on_redraw_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
clip.g_h = work.g_h + clip.g_y;
clip.g_y = 0;
}
+
+ /* Merge redraw coords: */
if( clip.g_h > 0 && clip.g_w > 0 ) {
GRECT rdrw_area;
- rdrw_area.g_x = (slid->x_pos*slid->x_unit_px) + clip.g_x;
- rdrw_area.g_y =(slid->y_pos*slid->y_unit_px) + clip.g_y;
+ rdrw_area.g_x = clip.g_x;
+ rdrw_area.g_y = clip.g_y;
rdrw_area.g_w = clip.g_w;
rdrw_area.g_h = clip.g_h;
+ //dbg_grect("treeview on_redraw_event ", &rdrw_area);
+
atari_treeview_redraw_grect_request(tptr, &rdrw_area);
}
}
@@ -410,7 +556,10 @@ static void __CDECL on_mbutton_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out
tv->startdrag.x = origin_rel_x;
tv->startdrag.y = origin_rel_y;
-
+ /* First, report mouse press, to trigger entry selection */
+ tv->io->mouse_action(tv, BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1, cur_rel_x,
+ cur_rel_y);
+ atari_treeview_redraw(tv);
tv->io->mouse_action(tv, BROWSER_MOUSE_DRAG_1 | BROWSER_MOUSE_DRAG_ON,
cur_rel_x, cur_rel_y);
do{
@@ -477,9 +626,15 @@ atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
slid->x_unit_px = 16;
assert(cw->io);
- assert(cw->io->init);
-
- nserror err = cw->io->init(cw, &cw_t);
+ assert(cw->io->init_phase2);
+
+ /* Now that the window is configured for treeview content, */
+ /* call init_phase2 which must create the treeview */
+ /* descriptor, and at least setup the the default */
+ /* event handlers of the treeview: */
+ /* It would be more simple to not pass around the callbacks */
+ /* but the treeview constructor requires them for initialization... */
+ nserror err = cw->io->init_phase2(cw, &cw_t);
if (err != NSERROR_OK) {
free(cw);
cw = NULL;
@@ -491,14 +646,37 @@ atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
void atari_treeview_delete(struct atari_treeview_window * cw)
{
assert(cw);
- assert(cw->io->fini);
+ assert(cw->io->finish);
- cw->io->fini(cw);
+ cw->io->finish(cw);
free(cw);
}
+void atari_treeview_open(struct atari_treeview_window *cw, GRECT *pos)
+{
+ if (cw->window != NULL) {
+ cw->is_open = true;
+ wind_open_grect(gemtk_wm_get_handle(cw->window), pos);
+ gemtk_wm_link(cw->window);
+ }
+}
+
+bool atari_treeview_is_open(struct atari_treeview_window *cw)
+{
+ return(cw->is_open);
+}
+
+void atari_treeview_close(struct atari_treeview_window *cw)
+{
+ if (cw->window != NULL) {
+ cw->is_open = false;
+ wind_close(gemtk_wm_get_handle(cw->window));
+ gemtk_wm_unlink(cw->window);
+ }
+}
+
/**
* Core Window Callbacks:
@@ -513,9 +691,21 @@ void atari_treeview_delete(struct atari_treeview_window * cw)
void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
{
GRECT area;
+ struct gemtk_wm_scroll_info_s * slid;
+ struct atari_treeview_window * tv = (cw);
RECT_TO_GRECT(r, &area)
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ //dbg_rect("redraw rect request", r);
+
+ // treeview redraw is always full window width:
+ area.g_x = 0;
+ area.g_w = area.g_w;
+ // but vertical redraw region is clipped:
+ area.g_y = r->y0 - (slid->y_pos*slid->y_unit_px);
+ area.g_h = r->y1 - r->y0;
atari_treeview_redraw_grect_request(cw, &area);
}
@@ -528,7 +718,40 @@ void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
*/
void atari_treeview_update_size(struct core_window *cw, int width, int height)
{
+ GRECT area;
+ struct gemtk_wm_scroll_info_s *slid;
+ struct atari_treeview_window *tv = (struct atari_treeview_window *)cw;
+ if (tv != NULL) {
+
+ if (tv->disposing)
+ return;
+
+ /* Get acces to the gemtk window slider settings: */
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ /* recalculate and refresh sliders: */
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &area);
+ if (width > -1) {
+ slid->x_units = (width/slid->x_unit_px);
+ } else {
+ slid->x_units = 1;
+ }
+
+ if (height > -1) {
+ slid->y_units = (height/slid->y_unit_px);
+ } else {
+ slid->y_units = 1;
+ }
+
+ tv->extent.x = width;
+ tv->extent.y = height;
+
+
+ /*printf("units content: %d, units viewport: %d\n", (height/slid->y_unit_px),
+ (area.g_h/slid->y_unit_px));*/
+ gemtk_wm_update_slider(tv->window, GEMTK_WM_VH_SLIDER);
+ }
}
@@ -540,7 +763,8 @@ void atari_treeview_update_size(struct core_window *cw, int width, int height)
*/
void atari_treeview_scroll_visible(struct core_window *cw, const struct rect *r)
{
-
+ /* atari frontend doesn't support dragging outside the treeview */
+ /* so there is no need to implement this? */
}
@@ -554,7 +778,13 @@ void atari_treeview_scroll_visible(struct core_window *cw, const struct rect *r)
void atari_treeview_get_window_dimensions(struct core_window *cw,
int *width, int *height)
{
-
+ if (cw != NULL && (width != NULL || height != NULL)) {
+ GRECT work;
+ struct atari_treeview_window *tv = (struct atari_treeview_window *)cw;
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &work);
+ *width = work.g_w;
+ *height = work.g_h;
+ }
}
diff --git a/atari/treeview.h b/atari/treeview.h
index ee01bf2..bab20c4 100644
--- a/atari/treeview.h
+++ b/atari/treeview.h
@@ -27,25 +27,33 @@
SMALLER | VSLIDE | HSLIDE | UPARROW | DNARROW \
| LFARROW | RTARROW)
+enum treeview_area_e {
+ TREEVIEW_AREA_WORK = 0,
+ TREEVIEW_AREA_TOOLBAR,
+ TREEVIEW_AREA_CONTENT
+};
struct core_window;
struct atari_treeview_window;
+
typedef struct atari_treeview_window *ATARI_TREEVIEW_PTR;
+// TODO: add drag_status callback!!
+typedef nserror (*atari_treeview_init2_callback)(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+typedef void (*atari_treeview_finish_callback)(struct core_window *cw);
typedef void (*atari_treeview_keypress_callback)(struct core_window *cw,
- long ucs4);
+ uint32_t ucs4);
typedef void (*atari_treeview_mouse_action_callback)(struct core_window *cw,
browser_mouse_state mouse,
int x, int y);
typedef void (*atari_treeview_draw_callback)(struct core_window *cw, int x,
- int y, int clip_x, int clip_y,
- int clip_width, int clip_height,
+ int y, struct rect *clip,
const struct redraw_context *ctx);
struct atari_treeview_callbacks {
- nserror (*init)(struct core_window *cw,
- struct core_window_callback_table * default_callbacks);
- void (*fini)(struct core_window *cw);
+ atari_treeview_init2_callback init_phase2;
+ atari_treeview_finish_callback finish;
atari_treeview_draw_callback draw;
atari_treeview_keypress_callback keypress;
atari_treeview_mouse_action_callback mouse_action;
@@ -56,6 +64,12 @@ struct atari_treeview_window *
atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
uint32_t flags);
void atari_treeview_delete(struct atari_treeview_window * cw);
-
+void atari_treeview_open(struct atari_treeview_window * cw, GRECT *pos);
+bool atari_treeview_is_open(struct atari_treeview_window *cw);
+void atari_treeview_close(struct atari_treeview_window * cw);
+GUIWIN * atari_treeview_get_gemtk_window(struct atari_treeview_window *tv);
+void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
+ GRECT *dest);
+void atari_treeview_redraw(struct atari_treeview_window *tv);
#endif //NSATARI_TREEVIEW_H
-----------------------------------------------------------------------
Summary of changes:
atari/Makefile.target | 14 +-
atari/cookies.c | 239 +++++++++++++++++++++++++++++++
atari/cookies.h | 38 +++++
atari/deskmenu.c | 13 ++-
atari/gemtk/gemtk.h | 18 +++
atari/gemtk/guiwin.c | 49 ++++++-
atari/gemtk/utils.c | 19 +++
atari/gui.c | 44 +++++--
atari/gui.h | 6 +-
atari/history.c | 260 ++++++++++++++++++++++++++++++++++
atari/history.h | 38 +++++
atari/hotlist.c | 138 ++++++++++++++----
atari/hotlist.h | 4 +-
atari/res/netsurf.rsc | Bin 34578 -> 34722 bytes
atari/res/netsurf.rsh | 11 +-
atari/res/netsurf.rsm | 17 ++-
atari/toolbar.c | 4 +-
atari/treeview.c | 372 +++++++++++++++++++++++++++++++++++++++----------
atari/treeview.h | 28 +++-
19 files changed, 1167 insertions(+), 145 deletions(-)
diff --git a/atari/Makefile.target b/atari/Makefile.target
index fee4963..e47eb5d 100644
--- a/atari/Makefile.target
+++ b/atari/Makefile.target
@@ -78,6 +78,7 @@ S_ATARI := \
bitmap.c \
clipboard.c \
ctxmenu.c \
+ cookies.c \
deskmenu.c \
download.c \
encoding.c \
@@ -85,18 +86,20 @@ S_ATARI := \
filetype.c \
font.c \
gui.c \
+ hotlist.c \
+ history.c \
login.c \
misc.c \
osspec.c \
+ redrawslots.c \
+ rootwin.c \
schedule.c \
search.c \
statusbar.c \
+ settings.c \
+ toolbar.c \
thumbnail.c \
treeview.c \
- redrawslots.c \
- rootwin.c \
- toolbar.c \
- settings.c \
plot/plot.c \
plot/fontplot.c \
plot/eddi.s \
@@ -110,9 +113,6 @@ S_ATARI := \
gemtk/utils.c \
gemtk/objc.c
-# cookies.c \
-# hotlist.c \
-# history.c\
S_ATARI := $(addprefix atari/,$(S_ATARI))
diff --git a/atari/cookies.c b/atari/cookies.c
index dfed6d0..9ac1890 100644
--- a/atari/cookies.c
+++ b/atari/cookies.c
@@ -15,3 +15,242 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/cookie_manager.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "desktop/core_window.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/cookies.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_cookie_manager_s atari_cookie_manager;
+
+
+/* Setup Atari Treeview Callbacks: */
+static nserror atari_cookie_manager_init_phase2(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+static void atari_cookie_manager_finish(struct core_window *cw);
+static void atari_cookie_manager_keypress(struct core_window *cw,
+ uint32_t ucs4);
+static void atari_cookie_manager_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+static void atari_cookie_manager_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx);
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]);
+
+static struct atari_treeview_callbacks atari_cookie_manager_treeview_callbacks = {
+ .init_phase2 = atari_cookie_manager_init_phase2,
+ .finish = atari_cookie_manager_finish,
+ .draw = atari_cookie_manager_draw,
+ .keypress = atari_cookie_manager_keypress,
+ .mouse_action = atari_cookie_manager_mouse_action,
+ .gemtk_user_func = handle_event
+};
+
+
+static nserror atari_cookie_manager_init_phase2(struct core_window *cw,
+ struct core_window_callback_table *cb_t)
+{
+ LOG((""));
+ return(cookie_manager_init(cb_t, cw));
+}
+
+static void atari_cookie_manager_finish(struct core_window *cw)
+{
+ LOG((""));
+ cookie_manager_fini();
+}
+
+static void atari_cookie_manager_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ cookie_manager_redraw(x, y, clip, ctx);
+}
+
+static void atari_cookie_manager_keypress(struct core_window *cw, uint32_t ucs4)
+{
+ LOG(("ucs4: %lu\n", ucs4));
+ cookie_manager_keypress(ucs4);
+}
+
+static void atari_cookie_manager_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y)
+{
+ if((mouse & BROWSER_MOUSE_HOVER) && cookie_manager_has_selection()){
+ cookie_manager_mouse_action(mouse, x, y);
+ } else {
+ cookie_manager_mouse_action(mouse, x, y);
+ }
+
+}
+
+
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ struct atari_treeview_window *tv=NULL;
+ GRECT tb_area;
+ GUIWIN * gemtk_win;
+ struct gui_window * gw;
+ char *cur_url = NULL;
+ char *cur_title = NULL;
+
+ LOG((""));
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+ case WM_TOOLBAR:
+ LOG(("WM_TOOLBAR"));
+ /*
+ tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
+ assert(tv);
+ switch (msg[4]) {
+
+ case TOOLBAR_HOTLIST_EDIT:
+ hotlist_edit_selection();
+ break;
+ }
+
+ gemtk_win = atari_treeview_get_gemtk_window(tv);
+ assert(gemtk_win);
+ gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
+ evnt_timer(150);
+ gemtk_wm_exec_redraw(gemtk_win, &tb_area);
+ */
+ break;
+
+ case WM_CLOSED:
+ atari_cookie_manager_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+void atari_cookie_manager_init(void)
+{
+ if (atari_cookie_manager.init == false) {
+
+ if (atari_cookie_manager.window == NULL) {
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_COOKIES);
+ assert( tree );
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ atari_cookie_manager.window = gemtk_wm_add(handle,
+ GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( atari_cookie_manager.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate Treeview:\nCookies");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("Cookies"));
+ gemtk_wm_set_toolbar(atari_cookie_manager.window, tree, 0, 0);
+ gemtk_wm_unlink(atari_cookie_manager.window);
+
+ atari_cookie_manager.tv = atari_treeview_create(
+ atari_cookie_manager.window,
+ &atari_cookie_manager_treeview_callbacks,
+ flags);
+
+ if (atari_cookie_manager.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ atari_cookie_manager.init = true;
+}
+void atari_cookie_manager_open(void)
+{
+ assert(atari_cookie_manager.init);
+
+ if (atari_cookie_manager.init == false) {
+ // TODO
+ return;
+ }
+
+ if (atari_treeview_is_open(atari_cookie_manager.tv) == false) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ atari_treeview_open(atari_cookie_manager.tv, &pos);
+ } else {
+ wind_set(gemtk_wm_get_handle(atari_cookie_manager.window), WF_TOP, 1, 0,
+ 0, 0);
+ }
+}
+
+
+void atari_cookie_manager_close(void)
+{
+ atari_treeview_close(atari_cookie_manager.tv);
+}
+
+
+void atari_cookie_manager_destroy(void)
+{
+ if( atari_cookie_manager.init == false) {
+ return;
+ }
+ if( atari_cookie_manager.window != NULL ) {
+ if (atari_treeview_is_open(atari_cookie_manager.tv))
+ atari_cookie_manager_close();
+ wind_delete(gemtk_wm_get_handle(atari_cookie_manager.window));
+ gemtk_wm_remove(atari_cookie_manager.window);
+ atari_cookie_manager.window = NULL;
+ atari_treeview_delete(atari_cookie_manager.tv);
+ atari_cookie_manager.init = false;
+ }
+ LOG(("done"));
+
+}
+
+
+void atari_cookie_manager_redraw(void)
+{
+ atari_treeview_redraw(atari_cookie_manager.tv);
+}
diff --git a/atari/cookies.h b/atari/cookies.h
index e69de29..1ef03b7 100644
--- a/atari/cookies.h
+++ b/atari/cookies.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+ #ifndef NS_ATARI_COOKIE_MANAGER_H
+ #define NS_ATARI_COOKIE_MANAGER_H
+
+struct core_window;
+
+struct atari_cookie_manager_s {
+ GUIWIN * window;
+ struct atari_treeview_window * tv;/*< The hotlist treeview handle. */
+ bool init;
+};
+
+extern struct atari_cookie_manager_s atari_cookie_manager;
+
+void atari_cookie_manager_init(void);
+void atari_cookie_manager_open(void);
+void atari_cookie_manager_close(void);
+void atari_cookie_manager_destroy(void);
+void atari_cookie_manager_redraw(void);
+
+#endif
diff --git a/atari/deskmenu.c b/atari/deskmenu.c
index 0de2cc1..4084d83 100644
--- a/atari/deskmenu.c
+++ b/atari/deskmenu.c
@@ -12,6 +12,7 @@
#include "atari/deskmenu.h"
#include "atari/hotlist.h"
#include "atari/history.h"
+#include "atari/cookies.h"
#include "atari/toolbar.h"
#include "atari/settings.h"
#include "atari/search.h"
@@ -92,6 +93,7 @@ static void __CDECL menu_lhistory(short item, short title, void *data);
static void __CDECL menu_ghistory(short item, short title, void *data);
static void __CDECL menu_add_bookmark(short item, short title, void *data);
static void __CDECL menu_bookmarks(short item, short title, void *data);
+static void __CDECL menu_cookies(short item, short title, void *data);
static void __CDECL menu_vlog(short item, short title, void *data);
static void __CDECL menu_help_content(short item, short title, void *data);
@@ -121,7 +123,8 @@ struct s_menu_item_evnt menu_evnt_tbl[] =
{T_UTIL, MAINMENU_M_LHISTORY,menu_lhistory, {0,NK_F7,0}, NULL},
{T_UTIL, MAINMENU_M_GHISTORY, menu_ghistory, {0,NK_F7,K_CTRL}, NULL},
{T_UTIL, MAINMENU_M_ADD_BOOKMARK, menu_add_bookmark, {'D',0,K_CTRL}, NULL},
- {T_UTIL, MAINMENU_M_BOOKMARKS, menu_bookmarks, {0,NK_F6,0}, NULL},
+ {T_UTIL, MAINMENU_M_BOOKMARKS, menu_bookmarks, {0,NK_F6,0}, NULL},
+ {T_UTIL, MAINMENU_M_COOKIES, menu_cookies, {0,0,0}, NULL},
{T_UTIL, MAINMENU_M_CHOICES, menu_choices, {0,0,0}, NULL},
{T_UTIL, MAINMENU_M_VLOG, menu_vlog, {'V',0,K_ALT}, NULL},
{T_HELP, MAINMENU_M_HELP_CONTENT, menu_help_content, {0,NK_F1,0}, NULL},
@@ -459,7 +462,7 @@ static void __CDECL menu_lhistory(short item, short title, void *data)
static void __CDECL menu_ghistory(short item, short title, void *data)
{
LOG(("%s", __FUNCTION__));
- atari_global_history_open();
+ //atari_global_history_open();
}
static void __CDECL menu_add_bookmark(short item, short title, void *data)
@@ -479,6 +482,12 @@ static void __CDECL menu_bookmarks(short item, short title, void *data)
{
LOG(("%s", __FUNCTION__));
atari_hotlist_open();
+}
+
+static void __CDECL menu_cookies(short item, short title, void *data)
+{
+ LOG(("%s", __FUNCTION__));
+ atari_cookie_manager_open();
}
static void __CDECL menu_vlog(short item, short title, void *data)
diff --git a/atari/gemtk/gemtk.h b/atari/gemtk/gemtk.h
index 3e406b5..88ad0cc 100644
--- a/atari/gemtk/gemtk.h
+++ b/atari/gemtk/gemtk.h
@@ -33,6 +33,17 @@
extern unsigned short _systype_v;
unsigned short _systype (void);
+/* GEMTK Utils API: */
+
+#define GEMTK_DBG_GRECT(s,g) \
+ printf("%s", s); \
+ printf("\tx0: %d, \n", (g)->g_x); \
+ printf("\ty0: %d, \n", (g)->g_y); \
+ printf("\tx1: %d, \n", (g)->g_x+(g)->g_w); \
+ printf("\ty1: %d, \n", (g)->g_y+(g)->g_h); \
+ printf("\tw: %d, \n", (g)->g_w); \
+ printf("\th: %d \n", (g)->g_h); \
+
/*
* Chech for GRECT intersection without modifiend the src rectangles
* return true when the GRECT's intersect, fals otherwise.
@@ -47,6 +58,9 @@ int gemtk_keybd2ascii( int keybd, int shift);
/** set VDI clip area by passing an GRECT */
void gemtk_clip_grect(VdiHdl vh, GRECT *rect);
+void gemtk_wind_get_str(short aes_handle, short mode, char *str, int len);
+
+
#ifndef POINT_WITHIN
# define POINT_WITHIN(_x,_y, r) ((_x >= r.g_x) && (_x <= r.g_x + r.g_w ) \
&& (_y >= r.g_y) && (_y <= r.g_y + r.g_h))
@@ -180,6 +194,8 @@ GUIWIN * gemtk_wm_add(short handle, uint32_t flags,
GUIWIN * gemtk_wm_find(short handle);
+void gemtk_wm_dump_window_info(GUIWIN *win);
+
short gemtk_wm_remove(GUIWIN *win);
GUIWIN * gemtk_wm_validate_ptr(GUIWIN *win);
@@ -192,6 +208,8 @@ short gemtk_wm_dispatch_event(EVMULT_IN *ev_in, EVMULT_OUT *ev_out, short msg[8]
void gemtk_wm_get_grect(GUIWIN *win, enum guwin_area_e mode, GRECT *dest);
+short gemtk_wm_get_toolbar_edit_obj(GUIWIN *win);
+
short gemtk_wm_get_handle(GUIWIN *win);
uint32_t gemtk_wm_get_state(GUIWIN *win);
diff --git a/atari/gemtk/guiwin.c b/atari/gemtk/guiwin.c
index 01f5483..4ad3561 100644
--- a/atari/gemtk/guiwin.c
+++ b/atari/gemtk/guiwin.c
@@ -701,13 +701,13 @@ GUIWIN * gemtk_wm_add(short handle, uint32_t flags, gemtk_wm_event_handler_f cb)
}
/**
-* Returns an GUIWIN* for AES handle, when that AES window is managed by guiwin
+* Returns an GUIWIN* for AES handle, when that AES window is managed by gemtk_wm
*/
GUIWIN *gemtk_wm_find(short handle)
{
GUIWIN *g;
DEBUG_PRINT(("guiwin search handle: %d\n", handle));
- for( g = winlist; g != NULL; g=g->next ) {
+ for (g = winlist; g != NULL; g=g->next) {
if(g->handle == handle) {
DEBUG_PRINT(("guiwin found handle: %p\n", g));
return(g);
@@ -716,6 +716,48 @@ GUIWIN *gemtk_wm_find(short handle)
return(NULL);
}
+void gemtk_wm_dump_window_info(GUIWIN *win)
+{
+
+
+
+ char title[255];
+ GRECT work_area;
+ GRECT curr_area;
+ GRECT gemtk_work_area;
+ GRECT gemtk_toolbar_area;
+ GRECT gemtk_free_area;
+ short handle;
+ struct gemtk_wm_scroll_info_s *slid;
+
+ handle = gemtk_wm_get_handle(win);
+
+ assert(handle);
+
+ gemtk_wind_get_str(handle, WF_NAME, title, 255);
+ wind_get_grect(handle, WF_WORKXYWH, &work_area);
+ wind_get_grect(handle, WF_CURRXYWH, &curr_area);
+ gemtk_wm_get_grect(win, GEMTK_WM_AREA_CONTENT, &gemtk_free_area);
+ gemtk_wm_get_grect(win, GEMTK_WM_AREA_WORK, &gemtk_work_area);
+ gemtk_wm_get_grect(win, GEMTK_WM_AREA_TOOLBAR, &gemtk_toolbar_area);
+ slid = gemtk_wm_get_scroll_info(win);
+
+ printf ("GEMTK Window: %p (AES handle: %d)\n", win, win->handle);
+ printf ("Title: %s\n", title);
+ GEMTK_DBG_GRECT ("WF_WORKXYWH: \n", &work_area)
+ GEMTK_DBG_GRECT ("WF_CURRXYWH: \n", &curr_area)
+ GEMTK_DBG_GRECT ("GEMTK_WM_AREA_CONTENT:\n", &gemtk_free_area)
+ GEMTK_DBG_GRECT ("GEMTK_WM_AREA_WORK:\n", &gemtk_work_area)
+ GEMTK_DBG_GRECT ("GEMTK_WM_AREA_TOOLBAR:\n", &gemtk_toolbar_area)
+ printf ("Slider X pos: %d\n", slid->x_pos);
+ printf ("Slider Y pos: %d\n", slid->y_pos);
+ printf ("Slider X units: %d\n", slid->x_unit_px);
+ printf ("Slider Y units: %d\n", slid->y_unit_px);
+
+
+#undef DBG_GRECT
+};
+
/**
* Check's if the pointer is managed by the guiwin API.
*/
@@ -1024,7 +1066,6 @@ uint32_t gemtk_wm_get_state(GUIWIN *win)
return(win->state);
}
-
/**
* Set and new event handler function.
*/
@@ -1066,7 +1107,7 @@ void gemtk_wm_set_toolbar_size(GUIWIN *win, uint16_t s)
win->toolbar_size = s;
}
-short getm_wm_get_toolbar_edit_obj(GUIWIN *win)
+short gemtk_wm_get_toolbar_edit_obj(GUIWIN *win)
{
return(win->toolbar_edit_obj);
}
diff --git a/atari/gemtk/utils.c b/atari/gemtk/utils.c
index f080e30..20fe5d4 100644
--- a/atari/gemtk/utils.c
+++ b/atari/gemtk/utils.c
@@ -95,4 +95,23 @@ void gemtk_clip_grect(VdiHdl vh, GRECT *rect)
vs_clip_pxy(vh, pxy);
}
+void gemtk_wind_get_str(short aes_handle, short mode, char *str, int len)
+{
+ char tmp_str[255];
+
+ if(len>255) {
+ len = 255;
+ }
+
+ memset(str, 0, len);
+ return;
+ /*
+
+ wind_get(aes_handle, mode, (short)(((unsigned long)tmp_str)>>16),
+ (short)(((unsigned long)tmp_str) & 0xffff), 0, 0);
+
+ strncpy(str, tmp_str, len);
+ */
+}
+
diff --git a/atari/gui.c b/atari/gui.c
index 3f056a1..33d63b4 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -63,6 +63,7 @@
#include "atari/statusbar.h"
#include "atari/toolbar.h"
#include "atari/hotlist.h"
+#include "atari/cookies.h"
#include "atari/history.h"
#include "atari/login.h"
#include "atari/encoding.h"
@@ -171,12 +172,14 @@ void gui_poll(bool active)
tmp = tmp->next;
}
- // TODO: reenable treeview redraws
-/*
- if(hl.tv->redraw){
- atari_treeview_redraw(hl.tv);
- }
+ // TODO: implement generic treeview redraw function
+ // TODO: rename hl to atari_hotlist or create getter for it...
+ //atari_treeview_redraw(hl.tv);
+ atari_hotlist_redraw();
+ atari_cookie_manager_redraw();
+ atari_global_history_redraw();
+/* // TODO: reenable history redraws
if(gl_history.tv->redraw){
atari_treeview_redraw(gl_history.tv);
}
@@ -541,6 +544,27 @@ void gui_window_set_url(struct gui_window *w, const char *url)
}
}
+struct gui_window * gui_window_get_input_window(void)
+{
+ return(input_window);
+}
+
+char * gui_window_get_url(struct gui_window *gw)
+{
+ if (gw == NULL) {
+ return(NULL);
+ }
+ return(gw->url);
+}
+
+char * gui_window_get_title(struct gui_window *gw)
+{
+ if (gw == NULL) {
+ return(NULL);
+ }
+ return(gw->title);
+}
+
static void throbber_advance( void * data )
{
@@ -809,15 +833,16 @@ void gui_quit(void)
struct gui_window * tmp = window_list;
/* Destroy all remaining browser windows: */
- while( gw ) {
+ while (gw) {
tmp = gw->next;
browser_window_destroy(gw->browser->bw);
gw = tmp;
}
/* destroy the treeview windows: */
- atari_global_history_destroy();
+ //atari_global_history_destroy();
atari_hotlist_destroy();
+ atari_cookie_manager_destroy();
/* shutdown netsurf treeview framework: */
treeview_fini();
@@ -1036,8 +1061,9 @@ static void gui_init2(int argc, char** argv)
treeview_init(0);
/* Initialize the specific treeview windows: */
- atari_global_history_init();
+ //atari_global_history_init();
atari_hotlist_init();
+ atari_cookie_manager_init();
/* Initialize the toolbar framework: */
toolbar_init();
@@ -1084,7 +1110,7 @@ int main(int argc, char** argv)
/* user options setup */
ret = nsoption_init(set_defaults, &nsoptions, &nsoptions_default);
if (ret != NSERROR_OK) {
- die("Options failed to initialise");
+ die("Options failed to initialise");
}
nsoption_read(options, NULL);
nsoption_commandline(&argc, argv, NULL);
diff --git a/atari/gui.h b/atari/gui.h
index 2146a26..c582d66 100755
--- a/atari/gui.h
+++ b/atari/gui.h
@@ -142,7 +142,7 @@ struct s_browser
*/
struct gui_window {
struct s_gui_win_root * root;
- CMP_BROWSER browser;
+ struct s_browser * browser;
MFORM_EX *cursor;
/* icon to be drawn when iconified, or NULL for default resource. */
char * status;
@@ -157,8 +157,10 @@ struct gui_window {
extern struct gui_window *window_list;
/* -------------------------------------------------------------------------- */
-/* Public - non standard gui window functions */
+/* Public - non core gui window functions */
/* -------------------------------------------------------------------------- */
void gui_set_input_gui_window(struct gui_window *gw);
+char *gui_window_get_url(struct gui_window *gw);
+char * gui_window_get_title(struct gui_window *gw);
#endif
diff --git a/atari/history.c b/atari/history.c
index dfed6d0..c43b829 100644
--- a/atari/history.c
+++ b/atari/history.c
@@ -15,3 +15,263 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/global_history.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "desktop/core_window.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/history.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_global_history_s atari_global_history;
+
+/* Setup Atari Treeview Callbacks: */
+static nserror atari_global_history_init_phase2(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+static void atari_global_history_finish(struct core_window *cw);
+static void atari_global_history_keypress(struct core_window *cw,
+ uint32_t ucs4);
+static void atari_global_history_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+static void atari_global_history_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx);
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]);
+
+static struct atari_treeview_callbacks atari_global_history_treeview_callbacks = {
+ .init_phase2 = atari_global_history_init_phase2,
+ .finish = atari_global_history_finish,
+ .draw = atari_global_history_draw,
+ .keypress = atari_global_history_keypress,
+ .mouse_action = atari_global_history_mouse_action,
+ .gemtk_user_func = handle_event
+};
+
+static nserror atari_global_history_init_phase2(struct core_window *cw,
+ struct core_window_callback_table *cb_t)
+{
+ LOG((""));
+ return(global_history_init(cb_t, cw));
+}
+
+static void atari_global_history_finish(struct core_window *cw)
+{
+ LOG((""));
+ global_history_fini();
+}
+
+static void atari_global_history_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ global_history_redraw(x, y, clip, ctx);
+}
+
+static void atari_global_history_keypress(struct core_window *cw, uint32_t ucs4)
+{
+ LOG(("ucs4: %lu\n", ucs4));
+ global_history_keypress(ucs4);
+}
+
+static void atari_global_history_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y)
+{
+ LOG(("x: %d, y: %d\n", x, y));
+ if((mouse & BROWSER_MOUSE_HOVER) && global_history_has_selection()){
+ global_history_mouse_action(mouse, x, y);
+ } else {
+ global_history_mouse_action(mouse, x, y);
+ }
+
+}
+
+
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ struct atari_treeview_window *tv=NULL;
+ GRECT tb_area;
+ GUIWIN * gemtk_win;
+ struct gui_window * gw;
+ char *cur_url = NULL;
+ char *cur_title = NULL;
+
+ LOG((""));
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+// case WM_TOOLBAR:
+// LOG(("WM_TOOLBAR"));
+// tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
+// assert(tv);
+// switch (msg[4]) {
+// case TOOLBAR_HOTLIST_CREATE_FOLDER:
+// hotlist_add_folder(NULL, 0, 0);
+// break;
+//
+// case TOOLBAR_HOTLIST_ADD:
+// gw = gui_window_get_input_window();
+// if(gw && gw->browser){
+// cur_url = gui_window_get_url(gw);
+// cur_title = gui_window_get_title(gw);
+// // TODO: read language string.
+// cur_title = (cur_title ? cur_title : "New bookmark");
+// } else {
+// cur_url = "http://www";
+// }
+// atari_global_history_add_page(cur_url, cur_title);
+// break;
+//
+// case TOOLBAR_HOTLIST_DELETE:
+// hotlist_keypress(KEY_DELETE_LEFT);
+// // TODO: check if redraw is really required,
+// // - implement treeview getter for the gemtk
+// // handle.
+// break;
+//
+// case TOOLBAR_HOTLIST_EDIT:
+// hotlist_edit_selection();
+// break;
+// }
+//
+// gemtk_win = atari_treeview_get_gemtk_window(tv);
+// assert(gemtk_win);
+// gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+// atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
+// evnt_timer(150);
+// gemtk_wm_exec_redraw(gemtk_win, &tb_area);
+//
+// break;
+
+ case WM_CLOSED:
+ atari_global_history_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+
+
+void atari_global_history_init(void)
+{
+ if (atari_global_history.init == false) {
+
+
+ if( atari_global_history.window == NULL ){
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HISTORY);
+ assert( tree );
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ atari_global_history.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( atari_global_history.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate History");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("History"));
+ gemtk_wm_set_toolbar(atari_global_history.window, tree, 0, 0);
+ gemtk_wm_unlink(atari_global_history.window);
+
+ atari_global_history.tv = atari_treeview_create(
+ atari_global_history.window,
+ &atari_global_history_treeview_callbacks,
+ flags);
+
+ if (atari_global_history.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ atari_global_history.init = true;
+}
+
+void atari_global_history_open(void)
+{
+ assert(atari_global_history.init);
+
+ if (atari_global_history.init == false) {
+ return;
+ }
+
+ if (atari_treeview_is_open(atari_global_history.tv) == false) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ atari_treeview_open(atari_global_history.tv, &pos);
+ } else {
+ wind_set(gemtk_wm_get_handle(atari_global_history.window), WF_TOP, 1, 0, 0, 0);
+ }
+}
+
+void atari_global_history_close(void)
+{
+ atari_treeview_close(atari_global_history.tv);
+}
+
+void atari_global_history_destroy(void)
+{
+
+ if( atari_global_history.init == false) {
+ return;
+ }
+ if( atari_global_history.window != NULL ) {
+ if (atari_treeview_is_open(atari_global_history.tv))
+ atari_global_history_close();
+ wind_delete(gemtk_wm_get_handle(atari_global_history.window));
+ gemtk_wm_remove(atari_global_history.window);
+ atari_global_history.window = NULL;
+ atari_treeview_delete(atari_global_history.tv);
+ atari_global_history.init = false;
+ }
+ LOG(("done"));
+}
+
+void atari_global_history_redraw(void)
+{
+ atari_treeview_redraw(atari_global_history.tv);
+}
diff --git a/atari/history.h b/atari/history.h
index e69de29..c6b821f 100644
--- a/atari/history.h
+++ b/atari/history.h
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NS_ATARI_HISTORY_H
+#define NS_ATARI_HISTORY_H
+
+struct core_window;
+
+struct atari_global_history_s {
+ GUIWIN * window;
+ struct atari_treeview_window * tv;/*< The hotlist treeview handle. */
+ bool init;
+};
+
+extern struct atari_global_history_s atari_global_history;
+
+void atari_global_history_init(void);
+void atari_global_history_open(void);
+void atari_global_history_close(void);
+void atari_global_history_destroy(void);
+void atari_global_history_redraw(void);
+
+#endif
diff --git a/atari/hotlist.c b/atari/hotlist.c
index e44ce7d..016cbc4 100644
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -32,6 +32,7 @@
#include "desktop/hotlist.h"
#include "desktop/tree.h"
#include "desktop/gui.h"
+#include "desktop/core_window.h"
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
@@ -48,30 +49,111 @@ extern GRECT desk_area;
struct atari_hotlist hl;
+/* Setup Atari Treeview Callbacks: */
+static nserror atari_hotlist_init_phase2(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+static void atari_hotlist_finish(struct core_window *cw);
+static void atari_hotlist_keypress(struct core_window *cw,
+ uint32_t ucs4);
+static void atari_hotlist_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+static void atari_hotlist_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx);
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8]);
+
+static struct atari_treeview_callbacks atari_hotlist_treeview_callbacks = {
+ .init_phase2 = atari_hotlist_init_phase2,
+ .finish = atari_hotlist_finish,
+ .draw = atari_hotlist_draw,
+ .keypress = atari_hotlist_keypress,
+ .mouse_action = atari_hotlist_mouse_action,
+ .gemtk_user_func = handle_event
+};
+
+static nserror atari_hotlist_init_phase2(struct core_window *cw,
+ struct core_window_callback_table *cb_t)
+{
+ LOG((""));
+ return(hotlist_init(cb_t, cw, hl.path));
+}
+
+static void atari_hotlist_finish(struct core_window *cw)
+{
+ LOG((""));
+ hotlist_fini(hl.path);
+}
+
+static void atari_hotlist_draw(struct core_window *cw, int x,
+ int y, struct rect *clip,
+ const struct redraw_context *ctx)
+{
+ hotlist_redraw(x, y, clip, ctx);
+}
+
+static void atari_hotlist_keypress(struct core_window *cw, uint32_t ucs4)
+{
+ LOG(("ucs4: %lu\n", ucs4));
+ hotlist_keypress(ucs4);
+}
+
+static void atari_hotlist_mouse_action(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y)
+{
+ LOG(("x: %d, y: %d\n", x, y));
+ if((mouse & BROWSER_MOUSE_HOVER) && hotlist_has_selection()){
+ hotlist_mouse_action(mouse, x, y);
+ } else {
+ hotlist_mouse_action(mouse, x, y);
+ }
+
+}
+
+
+
static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
- NSTREEVIEW tv=NULL;
+ struct atari_treeview_window *tv=NULL;
GRECT tb_area;
+ GUIWIN * gemtk_win;
+ struct gui_window * gw;
+ char *cur_url = NULL;
+ char *cur_title = NULL;
+
+ LOG((""));
if(ev_out->emo_events & MU_MESAG){
switch (msg[0]) {
case WM_TOOLBAR:
-
- tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
-
+ LOG(("WM_TOOLBAR"));
+ tv = (struct atari_treeview_window*) gemtk_wm_get_user_data(win);
+ assert(tv);
switch (msg[4]) {
case TOOLBAR_HOTLIST_CREATE_FOLDER:
- hotlist_add_folder(NULL, false, 0);
+ hotlist_add_folder(NULL, 0, 0);
break;
case TOOLBAR_HOTLIST_ADD:
- atari_hotlist_add_page(NULL, NULL);
+ gw = gui_window_get_input_window();
+ if(gw && gw->browser){
+ cur_url = gui_window_get_url(gw);
+ cur_title = gui_window_get_title(gw);
+ // TODO: read language string.
+ cur_title = (cur_title ? cur_title : "New bookmark");
+ } else {
+ cur_url = "http://www";
+ }
+ atari_hotlist_add_page(cur_url, cur_title);
break;
case TOOLBAR_HOTLIST_DELETE:
hotlist_keypress(KEY_DELETE_LEFT);
- gemtk_wm_exec_redraw(tv->window, NULL);
+ // TODO: check if redraw is really required,
+ // - implement treeview getter for the gemtk
+ // handle.
break;
case TOOLBAR_HOTLIST_EDIT:
@@ -79,10 +161,12 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
break;
}
+ gemtk_win = atari_treeview_get_gemtk_window(tv);
+ assert(gemtk_win);
gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_TOOLBAR, &tb_area);
evnt_timer(150);
- gemtk_wm_exec_redraw(tv->window, &tb_area);
+ gemtk_wm_exec_redraw(gemtk_win, &tb_area);
break;
case WM_CLOSED:
@@ -116,7 +200,6 @@ void atari_hotlist_init(void)
GRECT desk;
OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
assert( tree );
- hl.open = false;
handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
@@ -129,11 +212,10 @@ void atari_hotlist_init(void)
gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
gemtk_wm_unlink(hl.window);
tree_hotlist_path = (const char*)&hl.path;
- hl.tv = atari_treeview_create(
- TREE_HOTLIST,
- hl.window,
- handle_event
- );
+
+ hl.tv = atari_treeview_create(hl.window, &atari_hotlist_treeview_callbacks,
+ flags);
+
if (hl.tv == NULL) {
/* handle it properly, clean up previous allocs */
LOG(("Failed to allocate treeview"));
@@ -147,14 +229,14 @@ void atari_hotlist_init(void)
hl.init = true;
}
-
void atari_hotlist_open(void)
{
- if( hl.init == false ) {
+ assert(hl.init);
+ if (hl.init == false) {
return;
}
- if( hl.open == false ) {
+ if (atari_treeview_is_open(hl.tv) == false) {
GRECT pos;
pos.g_x = desk_area.g_w - desk_area.g_w / 4;
@@ -162,9 +244,7 @@ void atari_hotlist_open(void)
pos.g_w = desk_area.g_w / 4;
pos.g_h = desk_area.g_h;
- wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
- hl.open = true;
- atari_treeview_open( hl.tv );
+ atari_treeview_open(hl.tv, &pos);
} else {
wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
}
@@ -172,8 +252,6 @@ void atari_hotlist_open(void)
void atari_hotlist_close(void)
{
- wind_close(gemtk_wm_get_handle(hl.window));
- hl.open = false;
atari_treeview_close(hl.tv);
}
@@ -184,12 +262,12 @@ void atari_hotlist_destroy(void)
return;
}
if( hl.window != NULL ) {
- if (hl.open)
+ if (atari_treeview_is_open(hl.tv))
atari_hotlist_close();
wind_delete(gemtk_wm_get_handle(hl.window));
gemtk_wm_remove(hl.window);
hl.window = NULL;
- atari_treeview_destroy(hl.tv);
+ atari_treeview_delete(hl.tv);
hl.init = false;
}
LOG(("done"));
@@ -197,7 +275,6 @@ void atari_hotlist_destroy(void)
void atari_hotlist_redraw(void)
{
- int i = 01;
atari_treeview_redraw(hl.tv);
}
@@ -209,7 +286,7 @@ void atari_hotlist_add_page( const char * url, const char * title )
struct node * selected = NULL;
struct node * folder = NULL;
nsurl *nsurl;
- NSTREEVIEW tv = hl.tv;
+ ATARI_TREEVIEW_PTR tv = hl.tv;
if(hl.tv == NULL )
return;
@@ -218,11 +295,14 @@ void atari_hotlist_add_page( const char * url, const char * title )
if (nsurl_create(url, &nsurl) != NSERROR_OK)
return;
+ /* doesn't look nice:
if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
} else {
- hotlist_add_url( nsurl );
- }
+
+ }*/
+ //hotlist_add_url(nsurl);
+ hotlist_add_entry(nsurl, title, 0, 0);
nsurl_unref(nsurl);
}
diff --git a/atari/hotlist.h b/atari/hotlist.h
index c6fc464..2bcda5f 100644
--- a/atari/hotlist.h
+++ b/atari/hotlist.h
@@ -26,8 +26,7 @@
struct atari_hotlist {
GUIWIN * window;
- NSTREEVIEW tv; /*< The hotlist treeview handle. */
- bool open;
+ ATARI_TREEVIEW_PTR tv;/*< The hotlist treeview handle. */
bool init;
char path[PATH_MAX];
};
@@ -39,7 +38,6 @@ void atari_hotlist_open( void );
void atari_hotlist_close( void );
void atari_hotlist_destroy( void );
void atari_hotlist_add_page( const char * url, const char * title );
-
void atari_hotlist_redraw( void );
diff --git a/atari/res/netsurf.rsc b/atari/res/netsurf.rsc
index 64a8e35..2137328 100755
Binary files a/atari/res/netsurf.rsc and b/atari/res/netsurf.rsc differ
diff --git a/atari/res/netsurf.rsh b/atari/res/netsurf.rsh
index 268aff5..6797c05 100755
--- a/atari/res/netsurf.rsh
+++ b/atari/res/netsurf.rsh
@@ -36,9 +36,10 @@
#define MAINMENU_M_GHISTORY 53 /* STRING in tree MAINMENU */
#define MAINMENU_M_ADD_BOOKMARK 55 /* STRING in tree MAINMENU */
#define MAINMENU_M_BOOKMARKS 56 /* STRING in tree MAINMENU */
-#define MAINMENU_M_CHOICES 58 /* STRING in tree MAINMENU */
-#define MAINMENU_M_VLOG 59 /* STRING in tree MAINMENU */
-#define MAINMENU_M_HELP_CONTENT 61 /* STRING in tree MAINMENU */
+#define MAINMENU_M_COOKIES 58 /* STRING in tree MAINMENU */
+#define MAINMENU_M_CHOICES 60 /* STRING in tree MAINMENU */
+#define MAINMENU_M_VLOG 61 /* STRING in tree MAINMENU */
+#define MAINMENU_M_HELP_CONTENT 63 /* STRING in tree MAINMENU */
#define TOOLBAR 1 /* form/dial */
#define TOOLBAR_AREA_SEARCH 1 /* BOX in tree TOOLBAR */
@@ -209,3 +210,7 @@
#define POP_FONT_RENDERER 15 /* form/dial */
#define POP_FONT_RENDERER_INTERNAL 1 /* STRING in tree POP_FONT_RENDERER */
#define POP_FONT_RENDERER_FREETYPE 2 /* STRING in tree POP_FONT_RENDERER */
+
+#define TOOLBAR_COOKIES 16 /* form/dial */
+
+#define TOOLBAR_HISTORY 17 /* form/dial */
diff --git a/atari/res/netsurf.rsm b/atari/res/netsurf.rsm
index 2ede405..27df3d7 100755
--- a/atari/res/netsurf.rsm
+++ b/atari/res/netsurf.rsm
@@ -1,10 +1,10 @@
ResourceMaster v3.65
-#C 16@0@0@0@
+#C 18@0@0@0@
#N 99@32@AZAaza___ _@AZAaza090___ _@@_@
#FoC-Header@rsm2out@C-Header@rsh@@@[C-Header@0@
#R 0@0@1@1@2@1@
-#M 20010100@0@7728@641@
-#T 0@1@MAINMENU@@62@@
+#M 20010100@0@7728@643@
+#T 0@1@MAINMENU@@64@@
#O 4@32@T_FILE@@
#O 5@32@T_EDIT@@
#O 6@32@T_VIEW@@
@@ -40,9 +40,10 @@ ResourceMaster v3.65
#O 53@28@M_GHISTORY@@
#O 55@28@M_ADD_BOOKMARK@@
#O 56@28@M_BOOKMARKS@@
-#O 58@28@M_CHOICES@@
-#O 59@28@M_VLOG@@
-#O 61@28@M_HELP_CONTENT@@
+#O 58@28@M_COOKIES@@
+#O 60@28@M_CHOICES@@
+#O 61@28@M_VLOG@@
+#O 63@28@M_HELP_CONTENT@@
#T 1@2@TOOLBAR@@19@@
#O 1@20@AREA_SEARCH@@
#O 2@26@BT_SEARCH_FWD@@
@@ -196,4 +197,6 @@ ResourceMaster v3.65
#T 15@2@POP_FONT_RENDERER@@3@@
#O 1@28@INTERNAL@@
#O 2@28@FREETYPE@@
-#c 22411@
+#T 16@2@TOOLBAR_COOKIES@@1@@
+#T 17@2@TOOLBAR_HISTORY@@1@@
+#c 24594@
diff --git a/atari/toolbar.c b/atari/toolbar.c
index e190c96..6c08428 100644
--- a/atari/toolbar.c
+++ b/atari/toolbar.c
@@ -444,6 +444,7 @@ void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
//dbg_grect("toolbar redraw clip", clip);
+ /* Redraw the AES objects: */
objc_draw_grect(tb->form,0,8,clip);
objc_draw_grect(&throbber_form[tb->throbber.index], 0, 1, clip);
@@ -461,6 +462,7 @@ void toolbar_redraw(struct s_toolbar *tb, GRECT *clip)
};
//dbg_rect("tb textarea clip: ", &r);
// TODO: let this be handled by an userdef object redraw function:
+ /* Redraw the url input: */
textarea_redraw(tb->url.textarea, 0, 0, 0xffffff, 1.0, &r, &toolbar_rdrw_ctx);
}
}
@@ -594,7 +596,7 @@ void toolbar_set_url(struct s_toolbar *tb, const char * text)
LOG((""));
textarea_set_text(tb->url.textarea, text);
- if (tb->attached) {
+ if (tb->attached && tb->visible) {
GRECT area;
toolbar_get_grect(tb, TOOLBAR_AREA_URL, &area);
window_schedule_redraw_grect(tb->owner, &area);
diff --git a/atari/treeview.c b/atari/treeview.c
index 6dd43d3..99711c0 100644
--- a/atari/treeview.c
+++ b/atari/treeview.c
@@ -68,6 +68,7 @@ struct atari_treeview_window {
GUIWIN * window;
bool disposing;
bool redraw;
+ bool is_open;
GRECT rdw_area;
POINT extent;
POINT click;
@@ -75,20 +76,16 @@ struct atari_treeview_window {
struct atari_treeview_callbacks *io;
};
-enum treeview_area_e {
- TREEVIEW_AREA_WORK = 0,
- TREEVIEW_AREA_TOOLBAR,
- TREEVIEW_AREA_CONTENT
-};
-
/* native GUI event handlers: */
-static void __CDECL on_mbutton_event(struct atari_treeview_window *tvw,
+static void on_mbutton_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_keybd_event(struct atari_treeview_window *tvw,
+static void on_keybd_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_redraw_event(struct atari_treeview_window *tvw,
+static void on_redraw_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
+/* static utils: */
+static void atari_treeview_dump_info(struct atari_treeview_window *tv, char *s);
/**
* Schedule a redraw of the treeview content
@@ -116,12 +113,12 @@ static void atari_treeview_redraw_grect_request(struct core_window *cw,
tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
}
- // dbg_grect("atari_treeview_request_redraw", &tv->rdw_area);
+ //dbg_grect("atari_treeview_request_redraw_grect", &tv->rdw_area);
}
}
-static void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
+void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
GRECT *dest)
{
@@ -135,40 +132,33 @@ static void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area
}
}
-
-void atari_treeview_redraw(struct atari_treeview_window *tv)
+GUIWIN * atari_treeview_get_gemtk_window(struct atari_treeview_window *tv)
{
- static FONT_PLOTTER vdi_txt_plotter = NULL;
- FONT_PLOTTER old_txt_plotter;
+ return(tv->window);
+}
- VdiHdl plot_vdi_handle = 0;
- long atari_plot_flags = 0;
+static void atari_treeview_dump_info(struct atari_treeview_window *tv,
+ char * title)
+{
+ printf("Treeview Dump (%s)\n", title);
+ printf("=================================\n");
+ gemtk_wm_dump_window_info(atari_treeview_get_gemtk_window(tv));
+ GEMTK_DBG_GRECT("Redraw Area: \n", &tv->rdw_area)
+ dbg_grect("Redraw Area2: \n", &tv->rdw_area);
+ printf("Extent: x: %d, y: %d\n", tv->extent, tv->extent);
+}
- /* TODO: do not use the global vdi handle for plot actions! */
- /* TODO: implement getter/setter for the vdi handle */
- if (tv != NULL) {
- if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
+void atari_treeview_redraw(struct atari_treeview_window *tv)
+{
+ if (tv != NULL && tv->is_open) {
+ if( tv->redraw && ((plot_get_flags() & PLOT_FLAG_OFFSCREEN) == 0) ) {
- plot_vdi_handle = plot_get_vdi_handle();
- long atari_plot_flags = plot_get_flags();
short todo[4];
GRECT work;
short handle = gemtk_wm_get_handle(tv->window);
struct gemtk_wm_scroll_info_s *slid;
-/*
- if (vdi_txt_plotter == NULL) {
- int err = 0;
- VdiHdl vdih = plot_get_vdi_handle();
- vdi_txt_plotter = new_font_plotter(vdih, (char*)"vdi", PLOT_FLAG_TRANS,
- &err);
- if(err) {
- const char * desc = plot_err_str(err);
- die(("Unable to load vdi font plotter %s -> %s", "vdi", desc ));
- }
- }
-*/
gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
slid = gemtk_wm_get_scroll_info(tv->window);
@@ -180,26 +170,37 @@ void atari_treeview_redraw(struct atari_treeview_window *tv)
plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
if (plot_lock() == false)
return;
-/*
- if(vdi_txt_plotter != NULL){
- old_txt_plotter = plot_get_text_plotter();
- plot_set_text_plotter(vdi_txt_plotter);
- }
-*/
+
if( wind_get(handle, WF_FIRSTXYWH,
&todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
while (todo[2] && todo[3]) {
short pxy[4];
+
+ if(!rc_intersect(&work, (GRECT*)&todo)){
+ if (wind_get(handle, WF_NEXTXYWH,
+ &todo[0], &todo[1], &todo[2], &todo[3])==0) {
+ break;
+ }
+ continue;
+ }
pxy[0] = todo[0];
pxy[1] = todo[1];
pxy[2] = todo[0] + todo[2]-1;
pxy[3] = todo[1] + todo[3]-1;
- vs_clip(plot_vdi_handle, 1, (short*)&pxy);
+ vs_clip(plot_get_vdi_handle(), 1, (short*)&pxy);
+
+ // Debug code: this 3 lines help to inspect the redraw
+ // areas...
+ /*
+ vsf_color(plot_get_vdi_handle(), 3);
+ v_bar(plot_get_vdi_handle(), (short*)&pxy);
+ evnt_timer(500);
+ */
/* convert screen to treeview coords: */
- todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
- todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
+ todo[0] = todo[0] - work.g_x ;//+ slid->x_pos*slid->x_unit_px;
+ todo[1] = todo[1] - work.g_y ;//+ slid->y_pos*slid->y_unit_px;
if( todo[0] < 0 ){
todo[2] = todo[2] + todo[0];
todo[0] = 0;
@@ -209,27 +210,29 @@ void atari_treeview_redraw(struct atari_treeview_window *tv)
todo[1] = 0;
}
+ // TODO: get slider values
if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
- tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
+ struct rect clip;
+
+ clip.x0 = todo[0]+(slid->x_pos*slid->x_unit_px);
+ clip.y0 = todo[1]+(slid->y_pos*slid->y_unit_px);
+ clip.x1 = clip.x0 + todo[2]+(slid->x_pos*slid->x_unit_px);
+ clip.y1 = clip.y0 + todo[3]+(slid->y_pos*slid->y_unit_px);
+
+ tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
-(slid->y_pos*slid->y_unit_px),
- todo[0], todo[1], todo[2], todo[3], &ctx);
+ &clip, &ctx);
}
- vs_clip(plot_vdi_handle, 0, (short*)&pxy);
+ vs_clip(plot_get_vdi_handle(), 0, (short*)&pxy);
if (wind_get(handle, WF_NEXTXYWH,
&todo[0], &todo[1], &todo[2], &todo[3])==0) {
break;
}
}
} else {
- /*
- plot_set_text_plotter(old_txt_plotter);
- */
plot_unlock();
return;
}
- /*
- plot_set_text_plotter(old_txt_plotter);
- */
plot_unlock();
tv->redraw = false;
tv->rdw_area.g_x = 65000;
@@ -242,6 +245,137 @@ void atari_treeview_redraw(struct atari_treeview_window *tv)
}
}
+//
+//// TODO: rename to atari_treeview_draw_content
+//void atari_treeview_redraw(struct atari_treeview_window *tv)
+//{
+// static FONT_PLOTTER vdi_txt_plotter = NULL;
+// FONT_PLOTTER old_txt_plotter;
+//
+// VdiHdl plot_vdi_handle = 0;
+// long atari_plot_flags = 0;
+// short pxy[4];
+// struct rect clip;
+//
+// /* TODO: do not use the global vdi handle for plot actions! */
+// /* TODO: implement getter/setter for the vdi handle */
+//
+// if (tv != NULL && tv->is_open) {
+// if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
+//
+// atari_treeview_dump_info(tv, "atari_treeview_redraw");
+//
+// plot_vdi_handle = plot_get_vdi_handle();
+// long atari_plot_flags = plot_get_flags();
+// short todo[4];
+// GRECT work;
+// short handle = gemtk_wm_get_handle(tv->window);
+// struct gemtk_wm_scroll_info_s *slid;
+//
+///*
+// if (vdi_txt_plotter == NULL) {
+// int err = 0;
+// VdiHdl vdih = plot_get_vdi_handle();
+// vdi_txt_plotter = new_font_plotter(vdih, (char*)"vdi", PLOT_FLAG_TRANS,
+// &err);
+// if(err) {
+// const char * desc = plot_err_str(err);
+// die(("Unable to load vdi font plotter %s -> %s", "vdi", desc ));
+// }
+// }
+//*/
+// gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+// slid = gemtk_wm_get_scroll_info(tv->window);
+//
+// struct redraw_context ctx = {
+// .interactive = true,
+// .background_images = true,
+// .plot = &atari_plotters
+// };
+// plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
+// if (plot_lock() == false)
+// return;
+///*
+// if(vdi_txt_plotter != NULL){
+// old_txt_plotter = plot_get_text_plotter();
+// plot_set_text_plotter(vdi_txt_plotter);
+// }
+//*/
+// if( wind_get(handle, WF_FIRSTXYWH,
+// &todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
+// while (todo[2] && todo[3]) {
+//
+// pxy[0] = todo[0];
+// pxy[1] = todo[1];
+// pxy[2] = todo[0] + todo[2]-1;
+// pxy[3] = todo[1] + todo[3]-1;
+// //vs_clip(plot_vdi_handle, 1, (short*)&pxy);
+//
+// /* convert screen to treeview coords: */
+// todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
+// todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
+// if( todo[0] < 0 ){
+// todo[2] = todo[2] + todo[0];
+// todo[0] = 0;
+// }
+// if( todo[1] < 0 ){
+// todo[3] = todo[3] + todo[1];
+// todo[1] = 0;
+// }
+//
+// clip.x0 = todo[0];
+// clip.y0 = todo[1];
+// clip.x1 = clip.x0 + todo[2];
+// clip.y1 = clip.y0 + todo[3];
+//
+// clip.x0 = todo[0];
+// clip.y0 = todo[1];
+// clip.x1 = clip.x0 + todo[2] ;
+// clip.y1 = clip.y0 + todo[3] ;
+///*
+// clip.x0 = 0;
+// clip.y0 = 0;
+// clip.x1 = work.g_w;//MAX(tv->extent.x, work.g_w);
+// clip.y1 = MAX(tv->extent.y, work.g_h)+200;
+//*/
+// dbg_rect("treeview redraw clip", &clip);
+//
+// if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
+// tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
+// -(slid->y_pos*slid->y_unit_px), &clip,
+// &ctx);
+//
+// /*tv->io->draw(tv, 0,0, &clip,
+// &ctx);*/
+// }
+// //vs_clip(plot_vdi_handle, 0, (short*)&pxy);
+// if (wind_get(handle, WF_NEXTXYWH,
+// &todo[0], &todo[1], &todo[2], &todo[3])==0) {
+// break;
+// }
+// }
+// } else {
+// /*
+// plot_set_text_plotter(old_txt_plotter);
+// */
+// plot_unlock();
+// return;
+// }
+// /*
+// plot_set_text_plotter(old_txt_plotter);
+// */
+// plot_unlock();
+// tv->redraw = false;
+// tv->rdw_area.g_x = 65000;
+// tv->rdw_area.g_y = 65000;
+// tv->rdw_area.g_w = -1;
+// tv->rdw_area.g_h = -1;
+// } else {
+// /* just copy stuff from the offscreen buffer */
+// }
+// }
+//}
+
/**
* GEMTK event sink
@@ -272,14 +406,10 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
on_mbutton_event(tv, ev_out, msg);
}
- if (tv) {
-
- }
-/*
- if(tv != NULL && tv->user_func != NULL){
- tv->user_func(win, ev_out, msg);
+ if(tv != NULL && tv->io->gemtk_user_func != NULL){
+ tv->io->gemtk_user_func(win, ev_out, msg);
}
-*/
+
return(0);
}
@@ -325,12 +455,24 @@ static void __CDECL on_redraw_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
return;
gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ //dbg_grect("treeview work: ", &work);
+
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &work);
+ //dbg_grect("treeview work: ", &work);
slid = gemtk_wm_get_scroll_info(tv->window);
clip = work;
- if ( !rc_intersect( (GRECT*)&msg[4], &clip ) ) return;
+
+ /* check if the redraw area intersects with the content area: */
+ if ( !rc_intersect( (GRECT*)&msg[4], &clip)) {
+ return;
+ }
+
+ /* make redraw coords relative to content viewport */
clip.g_x -= work.g_x;
clip.g_y -= work.g_y;
+
+ /* normalize the redraw coords: */
if( clip.g_x < 0 ) {
clip.g_w = work.g_w + clip.g_x;
clip.g_x = 0;
@@ -339,15 +481,19 @@ static void __CDECL on_redraw_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
clip.g_h = work.g_h + clip.g_y;
clip.g_y = 0;
}
+
+ /* Merge redraw coords: */
if( clip.g_h > 0 && clip.g_w > 0 ) {
GRECT rdrw_area;
- rdrw_area.g_x = (slid->x_pos*slid->x_unit_px) + clip.g_x;
- rdrw_area.g_y =(slid->y_pos*slid->y_unit_px) + clip.g_y;
+ rdrw_area.g_x = clip.g_x;
+ rdrw_area.g_y = clip.g_y;
rdrw_area.g_w = clip.g_w;
rdrw_area.g_h = clip.g_h;
+ //dbg_grect("treeview on_redraw_event ", &rdrw_area);
+
atari_treeview_redraw_grect_request(tptr, &rdrw_area);
}
}
@@ -410,7 +556,10 @@ static void __CDECL on_mbutton_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out
tv->startdrag.x = origin_rel_x;
tv->startdrag.y = origin_rel_y;
-
+ /* First, report mouse press, to trigger entry selection */
+ tv->io->mouse_action(tv, BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1, cur_rel_x,
+ cur_rel_y);
+ atari_treeview_redraw(tv);
tv->io->mouse_action(tv, BROWSER_MOUSE_DRAG_1 | BROWSER_MOUSE_DRAG_ON,
cur_rel_x, cur_rel_y);
do{
@@ -477,9 +626,15 @@ atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
slid->x_unit_px = 16;
assert(cw->io);
- assert(cw->io->init);
-
- nserror err = cw->io->init(cw, &cw_t);
+ assert(cw->io->init_phase2);
+
+ /* Now that the window is configured for treeview content, */
+ /* call init_phase2 which must create the treeview */
+ /* descriptor, and at least setup the the default */
+ /* event handlers of the treeview: */
+ /* It would be more simple to not pass around the callbacks */
+ /* but the treeview constructor requires them for initialization... */
+ nserror err = cw->io->init_phase2(cw, &cw_t);
if (err != NSERROR_OK) {
free(cw);
cw = NULL;
@@ -491,14 +646,37 @@ atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
void atari_treeview_delete(struct atari_treeview_window * cw)
{
assert(cw);
- assert(cw->io->fini);
+ assert(cw->io->finish);
- cw->io->fini(cw);
+ cw->io->finish(cw);
free(cw);
}
+void atari_treeview_open(struct atari_treeview_window *cw, GRECT *pos)
+{
+ if (cw->window != NULL) {
+ cw->is_open = true;
+ wind_open_grect(gemtk_wm_get_handle(cw->window), pos);
+ gemtk_wm_link(cw->window);
+ }
+}
+
+bool atari_treeview_is_open(struct atari_treeview_window *cw)
+{
+ return(cw->is_open);
+}
+
+void atari_treeview_close(struct atari_treeview_window *cw)
+{
+ if (cw->window != NULL) {
+ cw->is_open = false;
+ wind_close(gemtk_wm_get_handle(cw->window));
+ gemtk_wm_unlink(cw->window);
+ }
+}
+
/**
* Core Window Callbacks:
@@ -513,9 +691,21 @@ void atari_treeview_delete(struct atari_treeview_window * cw)
void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
{
GRECT area;
+ struct gemtk_wm_scroll_info_s * slid;
+ struct atari_treeview_window * tv = (cw);
RECT_TO_GRECT(r, &area)
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ //dbg_rect("redraw rect request", r);
+
+ // treeview redraw is always full window width:
+ area.g_x = 0;
+ area.g_w = area.g_w;
+ // but vertical redraw region is clipped:
+ area.g_y = r->y0 - (slid->y_pos*slid->y_unit_px);
+ area.g_h = r->y1 - r->y0;
atari_treeview_redraw_grect_request(cw, &area);
}
@@ -528,7 +718,40 @@ void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
*/
void atari_treeview_update_size(struct core_window *cw, int width, int height)
{
+ GRECT area;
+ struct gemtk_wm_scroll_info_s *slid;
+ struct atari_treeview_window *tv = (struct atari_treeview_window *)cw;
+ if (tv != NULL) {
+
+ if (tv->disposing)
+ return;
+
+ /* Get acces to the gemtk window slider settings: */
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ /* recalculate and refresh sliders: */
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &area);
+ if (width > -1) {
+ slid->x_units = (width/slid->x_unit_px);
+ } else {
+ slid->x_units = 1;
+ }
+
+ if (height > -1) {
+ slid->y_units = (height/slid->y_unit_px);
+ } else {
+ slid->y_units = 1;
+ }
+
+ tv->extent.x = width;
+ tv->extent.y = height;
+
+
+ /*printf("units content: %d, units viewport: %d\n", (height/slid->y_unit_px),
+ (area.g_h/slid->y_unit_px));*/
+ gemtk_wm_update_slider(tv->window, GEMTK_WM_VH_SLIDER);
+ }
}
@@ -540,7 +763,8 @@ void atari_treeview_update_size(struct core_window *cw, int width, int height)
*/
void atari_treeview_scroll_visible(struct core_window *cw, const struct rect *r)
{
-
+ /* atari frontend doesn't support dragging outside the treeview */
+ /* so there is no need to implement this? */
}
@@ -554,7 +778,13 @@ void atari_treeview_scroll_visible(struct core_window *cw, const struct rect *r)
void atari_treeview_get_window_dimensions(struct core_window *cw,
int *width, int *height)
{
-
+ if (cw != NULL && (width != NULL || height != NULL)) {
+ GRECT work;
+ struct atari_treeview_window *tv = (struct atari_treeview_window *)cw;
+ atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &work);
+ *width = work.g_w;
+ *height = work.g_h;
+ }
}
diff --git a/atari/treeview.h b/atari/treeview.h
index ee01bf2..bab20c4 100644
--- a/atari/treeview.h
+++ b/atari/treeview.h
@@ -27,25 +27,33 @@
SMALLER | VSLIDE | HSLIDE | UPARROW | DNARROW \
| LFARROW | RTARROW)
+enum treeview_area_e {
+ TREEVIEW_AREA_WORK = 0,
+ TREEVIEW_AREA_TOOLBAR,
+ TREEVIEW_AREA_CONTENT
+};
struct core_window;
struct atari_treeview_window;
+
typedef struct atari_treeview_window *ATARI_TREEVIEW_PTR;
+// TODO: add drag_status callback!!
+typedef nserror (*atari_treeview_init2_callback)(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+typedef void (*atari_treeview_finish_callback)(struct core_window *cw);
typedef void (*atari_treeview_keypress_callback)(struct core_window *cw,
- long ucs4);
+ uint32_t ucs4);
typedef void (*atari_treeview_mouse_action_callback)(struct core_window *cw,
browser_mouse_state mouse,
int x, int y);
typedef void (*atari_treeview_draw_callback)(struct core_window *cw, int x,
- int y, int clip_x, int clip_y,
- int clip_width, int clip_height,
+ int y, struct rect *clip,
const struct redraw_context *ctx);
struct atari_treeview_callbacks {
- nserror (*init)(struct core_window *cw,
- struct core_window_callback_table * default_callbacks);
- void (*fini)(struct core_window *cw);
+ atari_treeview_init2_callback init_phase2;
+ atari_treeview_finish_callback finish;
atari_treeview_draw_callback draw;
atari_treeview_keypress_callback keypress;
atari_treeview_mouse_action_callback mouse_action;
@@ -56,6 +64,12 @@ struct atari_treeview_window *
atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
uint32_t flags);
void atari_treeview_delete(struct atari_treeview_window * cw);
-
+void atari_treeview_open(struct atari_treeview_window * cw, GRECT *pos);
+bool atari_treeview_is_open(struct atari_treeview_window *cw);
+void atari_treeview_close(struct atari_treeview_window * cw);
+GUIWIN * atari_treeview_get_gemtk_window(struct atari_treeview_window *tv);
+void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
+ GRECT *dest);
+void atari_treeview_redraw(struct atari_treeview_window *tv);
#endif //NSATARI_TREEVIEW_H
--
NetSurf Browser
9 years, 4 months
netsurf: branch mono/atari_treeview_rework updated. release/3.0-572-ge4c6ace
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/e4c6acee55139a18d6118...
...commit http://git.netsurf-browser.org/netsurf.git/commit/e4c6acee55139a18d611899...
...tree http://git.netsurf-browser.org/netsurf.git/tree/e4c6acee55139a18d6118999c...
The branch, mono/atari_treeview_rework has been updated
via e4c6acee55139a18d6118999c16d55aa1f36c9e8 (commit)
from eab22c4f32a92586a4390c53e81c909747ee3f7a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=e4c6acee55139a18d61...
commit e4c6acee55139a18d6118999c16d55aa1f36c9e8
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Treeview implementation adjusted
(still requires changes at several places in the atari frontent)
diff --git a/atari/gui.c b/atari/gui.c
index 83731b4..3f056a1 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -171,6 +171,8 @@ void gui_poll(bool active)
tmp = tmp->next;
}
+ // TODO: reenable treeview redraws
+/*
if(hl.tv->redraw){
atari_treeview_redraw(hl.tv);
}
@@ -178,6 +180,7 @@ void gui_poll(bool active)
if(gl_history.tv->redraw){
atari_treeview_redraw(gl_history.tv);
}
+*/
}
diff --git a/atari/hotlist.c b/atari/hotlist.c
index dfed6d0..e44ce7d 100644
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -15,3 +15,214 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/hotlist.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/hotlist.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_hotlist hl;
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ NSTREEVIEW tv=NULL;
+ GRECT tb_area;
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+ case WM_TOOLBAR:
+
+ tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
+
+ switch (msg[4]) {
+ case TOOLBAR_HOTLIST_CREATE_FOLDER:
+ hotlist_add_folder(NULL, false, 0);
+ break;
+
+ case TOOLBAR_HOTLIST_ADD:
+ atari_hotlist_add_page(NULL, NULL);
+ break;
+
+ case TOOLBAR_HOTLIST_DELETE:
+ hotlist_keypress(KEY_DELETE_LEFT);
+ gemtk_wm_exec_redraw(tv->window, NULL);
+ break;
+
+ case TOOLBAR_HOTLIST_EDIT:
+ hotlist_edit_selection();
+ break;
+ }
+
+ gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
+ evnt_timer(150);
+ gemtk_wm_exec_redraw(tv->window, &tb_area);
+ break;
+
+ case WM_CLOSED:
+ atari_hotlist_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+
+
+void atari_hotlist_init(void)
+{
+ if (hl.init == false) {
+ if( strcmp(nsoption_charp(hotlist_file), "") == 0 ){
+ atari_find_resource( (char*)&hl.path, "hotlist", "hotlist" );
+ } else {
+ strncpy( (char*)&hl.path, nsoption_charp(hotlist_file), PATH_MAX-1 );
+ }
+
+ LOG(("Hotlist: %s", (char*)&hl.path ));
+
+ if( hl.window == NULL ){
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
+ assert( tree );
+ hl.open = false;
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( hl.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate Hotlist");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("Hotlist"));
+ gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
+ gemtk_wm_unlink(hl.window);
+ tree_hotlist_path = (const char*)&hl.path;
+ hl.tv = atari_treeview_create(
+ TREE_HOTLIST,
+ hl.window,
+ handle_event
+ );
+ if (hl.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ hl.init = true;
+}
+
+
+void atari_hotlist_open(void)
+{
+ if( hl.init == false ) {
+ return;
+ }
+
+ if( hl.open == false ) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
+ hl.open = true;
+ atari_treeview_open( hl.tv );
+ } else {
+ wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
+ }
+}
+
+void atari_hotlist_close(void)
+{
+ wind_close(gemtk_wm_get_handle(hl.window));
+ hl.open = false;
+ atari_treeview_close(hl.tv);
+}
+
+void atari_hotlist_destroy(void)
+{
+
+ if( hl.init == false) {
+ return;
+ }
+ if( hl.window != NULL ) {
+ if (hl.open)
+ atari_hotlist_close();
+ wind_delete(gemtk_wm_get_handle(hl.window));
+ gemtk_wm_remove(hl.window);
+ hl.window = NULL;
+ atari_treeview_destroy(hl.tv);
+ hl.init = false;
+ }
+ LOG(("done"));
+}
+
+void atari_hotlist_redraw(void)
+{
+ int i = 01;
+ atari_treeview_redraw(hl.tv);
+}
+
+struct node;
+
+void atari_hotlist_add_page( const char * url, const char * title )
+{
+ struct node * root;
+ struct node * selected = NULL;
+ struct node * folder = NULL;
+ nsurl *nsurl;
+ NSTREEVIEW tv = hl.tv;
+ if(hl.tv == NULL )
+ return;
+
+ atari_hotlist_open();
+
+ if (nsurl_create(url, &nsurl) != NSERROR_OK)
+ return;
+
+ if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
+ hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
+ } else {
+ hotlist_add_url( nsurl );
+ }
+ nsurl_unref(nsurl);
+}
+
diff --git a/atari/hotlist.h b/atari/hotlist.h
index e69de29..c6fc464 100644
--- a/atari/hotlist.h
+++ b/atari/hotlist.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NS_ATARI_HOTLIST_H
+#define NS_ATARI_HOTLIST_H
+#include <stdbool.h>
+#include "desktop/tree.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/treeview.h"
+/* The hotlist window, toolbar and treeview data. */
+
+struct atari_hotlist {
+ GUIWIN * window;
+ NSTREEVIEW tv; /*< The hotlist treeview handle. */
+ bool open;
+ bool init;
+ char path[PATH_MAX];
+};
+
+extern struct atari_hotlist hl;
+
+void atari_hotlist_init( void );
+void atari_hotlist_open( void );
+void atari_hotlist_close( void );
+void atari_hotlist_destroy( void );
+void atari_hotlist_add_page( const char * url, const char * title );
+
+void atari_hotlist_redraw( void );
+
+
+#endif
diff --git a/atari/plot/plot.c b/atari/plot/plot.c
index 80eda69..19c34e2 100755
--- a/atari/plot/plot.c
+++ b/atari/plot/plot.c
@@ -1953,6 +1953,12 @@ VdiHdl plot_get_vdi_handle(void)
return(atari_plot_vdi_handle);
}
+long plot_get_flags(void)
+{
+ return(atari_plot_flags);
+}
+
+
bool plot_get_clip(struct rect * out)
{
out->x0 = view.clipping.x0;
diff --git a/atari/plot/plot.h b/atari/plot/plot.h
index 3c9461d..d00bbc6 100755
--- a/atari/plot/plot.h
+++ b/atari/plot/plot.h
@@ -112,6 +112,7 @@ bool plot_get_clip(struct rect * out);
void plot_get_clip_grect(GRECT * out);
bool plot_clip(const struct rect *clip);
VdiHdl plot_get_vdi_handle(void);
+long plot_get_flags(void);
bool plot_rectangle( int x0, int y0, int x1, int y1,const plot_style_t *style );
bool plot_line( int x0, int y0, int x1, int y1, const plot_style_t *style );
bool plot_blit_bitmap(struct bitmap * bmp, int x, int y,
diff --git a/atari/treeview.c b/atari/treeview.c
index 7ea039c..6dd43d3 100644
--- a/atari/treeview.c
+++ b/atari/treeview.c
@@ -75,21 +75,370 @@ struct atari_treeview_window {
struct atari_treeview_callbacks *io;
};
-typedef struct atari_treeview_window *ATARI_TREEVIEW;
-
+enum treeview_area_e {
+ TREEVIEW_AREA_WORK = 0,
+ TREEVIEW_AREA_TOOLBAR,
+ TREEVIEW_AREA_CONTENT
+};
/* native GUI event handlers: */
-static void __CDECL on_mbutton_event(struct atari_treeview_window tvw,
+static void __CDECL on_mbutton_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_keybd_event(struct atari_treeview_window tvw,
+static void __CDECL on_keybd_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_redraw_event(struct atari_treeview_window tvw,
+static void __CDECL on_redraw_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-/* GEMTK event sink: */
+
+/**
+ * Schedule a redraw of the treeview content
+ *
+ */
+static void atari_treeview_redraw_grect_request(struct core_window *cw,
+ GRECT *area)
+{
+ if (cw != NULL) {
+ ATARI_TREEVIEW_PTR tv = (ATARI_TREEVIEW_PTR) cw;
+ if( tv->redraw == false ){
+ tv->redraw = true;
+ tv->rdw_area.g_x = area->g_x;
+ tv->rdw_area.g_y = area->g_y;
+ tv->rdw_area.g_w = area->g_w;
+ tv->rdw_area.g_h = area->g_h;
+ } else {
+ /* merge the redraw area to the new area.: */
+ int newx1 = area->g_x+area->g_w;
+ int newy1 = area->g_y+area->g_h;
+ int oldx1 = tv->rdw_area.g_x + tv->rdw_area.g_w;
+ int oldy1 = tv->rdw_area.g_y + tv->rdw_area.g_h;
+ tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, area->g_x);
+ tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, area->g_y);
+ tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
+ tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
+ }
+ // dbg_grect("atari_treeview_request_redraw", &tv->rdw_area);
+ }
+}
+
+
+static void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
+ GRECT *dest)
+{
+
+ struct atari_treeview_window * tv = tptr;
+
+ if (mode == TREEVIEW_AREA_CONTENT) {
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, dest);
+ }
+ else if (mode == TREEVIEW_AREA_TOOLBAR) {
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, dest);
+ }
+}
+
+
+void atari_treeview_redraw(struct atari_treeview_window *tv)
+{
+ static FONT_PLOTTER vdi_txt_plotter = NULL;
+ FONT_PLOTTER old_txt_plotter;
+
+ VdiHdl plot_vdi_handle = 0;
+ long atari_plot_flags = 0;
+
+ /* TODO: do not use the global vdi handle for plot actions! */
+ /* TODO: implement getter/setter for the vdi handle */
+
+ if (tv != NULL) {
+ if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
+
+ plot_vdi_handle = plot_get_vdi_handle();
+ long atari_plot_flags = plot_get_flags();
+ short todo[4];
+ GRECT work;
+ short handle = gemtk_wm_get_handle(tv->window);
+ struct gemtk_wm_scroll_info_s *slid;
+
+/*
+ if (vdi_txt_plotter == NULL) {
+ int err = 0;
+ VdiHdl vdih = plot_get_vdi_handle();
+ vdi_txt_plotter = new_font_plotter(vdih, (char*)"vdi", PLOT_FLAG_TRANS,
+ &err);
+ if(err) {
+ const char * desc = plot_err_str(err);
+ die(("Unable to load vdi font plotter %s -> %s", "vdi", desc ));
+ }
+ }
+*/
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ struct redraw_context ctx = {
+ .interactive = true,
+ .background_images = true,
+ .plot = &atari_plotters
+ };
+ plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
+ if (plot_lock() == false)
+ return;
+/*
+ if(vdi_txt_plotter != NULL){
+ old_txt_plotter = plot_get_text_plotter();
+ plot_set_text_plotter(vdi_txt_plotter);
+ }
+*/
+ if( wind_get(handle, WF_FIRSTXYWH,
+ &todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
+ while (todo[2] && todo[3]) {
+
+ short pxy[4];
+ pxy[0] = todo[0];
+ pxy[1] = todo[1];
+ pxy[2] = todo[0] + todo[2]-1;
+ pxy[3] = todo[1] + todo[3]-1;
+ vs_clip(plot_vdi_handle, 1, (short*)&pxy);
+
+ /* convert screen to treeview coords: */
+ todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
+ todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
+ if( todo[0] < 0 ){
+ todo[2] = todo[2] + todo[0];
+ todo[0] = 0;
+ }
+ if( todo[1] < 0 ){
+ todo[3] = todo[3] + todo[1];
+ todo[1] = 0;
+ }
+
+ if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
+ tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
+ -(slid->y_pos*slid->y_unit_px),
+ todo[0], todo[1], todo[2], todo[3], &ctx);
+ }
+ vs_clip(plot_vdi_handle, 0, (short*)&pxy);
+ if (wind_get(handle, WF_NEXTXYWH,
+ &todo[0], &todo[1], &todo[2], &todo[3])==0) {
+ break;
+ }
+ }
+ } else {
+ /*
+ plot_set_text_plotter(old_txt_plotter);
+ */
+ plot_unlock();
+ return;
+ }
+ /*
+ plot_set_text_plotter(old_txt_plotter);
+ */
+ plot_unlock();
+ tv->redraw = false;
+ tv->rdw_area.g_x = 65000;
+ tv->rdw_area.g_y = 65000;
+ tv->rdw_area.g_w = -1;
+ tv->rdw_area.g_h = -1;
+ } else {
+ /* just copy stuff from the offscreen buffer */
+ }
+ }
+}
+
+
+/**
+ * GEMTK event sink
+ *
+*/
static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
+ ATARI_TREEVIEW_PTR tv = (ATARI_TREEVIEW_PTR) gemtk_wm_get_user_data(win);
+
+ if( (ev_out->emo_events & MU_MESAG) != 0 ) {
+ // handle message
+ switch (msg[0]) {
+
+ case WM_REDRAW:
+ on_redraw_event(tv, ev_out, msg);
+ break;
+
+ default:
+ break;
+ }
+ }
+ if( (ev_out->emo_events & MU_KEYBD) != 0 ) {
+ on_keybd_event(tv, ev_out, msg);
+ }
+ if( (ev_out->emo_events & MU_BUTTON) != 0 ) {
+ LOG(("Treeview click at: %d,%d\n", ev_out->emo_mouse.p_x,
+ ev_out->emo_mouse.p_y));
+ on_mbutton_event(tv, ev_out, msg);
+ }
+
+ if (tv) {
+
+ }
+/*
+ if(tv != NULL && tv->user_func != NULL){
+ tv->user_func(win, ev_out, msg);
+ }
+*/
+ return(0);
+}
+
+
+static void __CDECL on_keybd_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
+ short msg[8])
+{
+ bool r=false;
+ long kstate = 0;
+ long kcode = 0;
+ long ucs4;
+ long ik;
+ unsigned short nkc = 0;
+ unsigned short nks = 0;
+ unsigned char ascii;
+ struct atari_treeview_window * tv = tptr;
+
+ kstate = ev_out->emo_kmeta;
+ kcode = ev_out->emo_kreturn;
+ nkc= gem_to_norm( (short)kstate, (short)kcode );
+ ascii = (nkc & 0xFF);
+ ik = nkc_to_input_key(nkc, &ucs4);
+
+ if (ik == 0) {
+ if (ascii >= 9) {
+ tv->io->keypress(tv, ucs4);
+ //r = tree_keypress(tv->tree, ucs4);
+ }
+ } else {
+ tv->io->keypress(tv, ik);
+ }
+}
+
+
+static void __CDECL on_redraw_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
+ short msg[8])
+{
+ GRECT work, clip;
+ struct gemtk_wm_scroll_info_s *slid;
+ struct atari_treeview_window * tv = tptr;
+
+ if (tv == NULL)
+ return;
+
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ clip = work;
+ if ( !rc_intersect( (GRECT*)&msg[4], &clip ) ) return;
+ clip.g_x -= work.g_x;
+ clip.g_y -= work.g_y;
+ if( clip.g_x < 0 ) {
+ clip.g_w = work.g_w + clip.g_x;
+ clip.g_x = 0;
+ }
+ if( clip.g_y < 0 ) {
+ clip.g_h = work.g_h + clip.g_y;
+ clip.g_y = 0;
+ }
+ if( clip.g_h > 0 && clip.g_w > 0 ) {
+
+ GRECT rdrw_area;
+
+ rdrw_area.g_x = (slid->x_pos*slid->x_unit_px) + clip.g_x;
+ rdrw_area.g_y =(slid->y_pos*slid->y_unit_px) + clip.g_y;
+ rdrw_area.g_w = clip.g_w;
+ rdrw_area.g_h = clip.g_h;
+
+ atari_treeview_redraw_grect_request(tptr, &rdrw_area);
+ }
+}
+
+static void __CDECL on_mbutton_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
+ short msg[8])
+{
+ struct atari_treeview_window * tv = tptr;
+ struct gemtk_wm_scroll_info_s *slid;
+ GRECT work;
+ short mx, my;
+ int bms;
+ bool ignore=false;
+ short cur_rel_x, cur_rel_y, dummy, mbut;
+
+ if(tv == NULL)
+ return;
+
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ slid = gemtk_wm_get_scroll_info(tv->window);
+ mx = ev_out->emo_mouse.p_x;
+ my = ev_out->emo_mouse.p_y;
+
+ /* mouse click relative origin: */
+
+ short origin_rel_x = (mx-work.g_x) +
+ (slid->x_pos*slid->x_unit_px);
+ short origin_rel_y = (my-work.g_y) +
+ (slid->y_pos*slid->y_unit_px);
+
+ /* Only pass on events in the content area: */
+ if( origin_rel_x >= 0 && origin_rel_y >= 0
+ && mx < work.g_x + work.g_w
+ && my < work.g_y + work.g_h )
+ {
+ if (ev_out->emo_mclicks == 2) {
+ tv->io->mouse_action(tv,
+ BROWSER_MOUSE_CLICK_1|BROWSER_MOUSE_DOUBLE_CLICK,
+ origin_rel_x, origin_rel_y);
+ return;
+ }
+ graf_mkstate(&cur_rel_x, &cur_rel_y, &mbut, &dummy);
+ /* check for click or hold: */
+ if( (mbut&1) == 0 ){
+ bms = BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1;
+ if(ev_out->emo_mclicks == 2 ) {
+ bms = BROWSER_MOUSE_DOUBLE_CLICK;
+ }
+ tv->io->mouse_action(tv, bms, origin_rel_x, origin_rel_y);
+ } else {
+ /* button still pressed */
+ short prev_x = origin_rel_x;
+ short prev_y = origin_rel_y;
+
+ cur_rel_x = origin_rel_x;
+ cur_rel_y = origin_rel_y;
+
+ gem_set_cursor(&gem_cursors.hand);
+
+ tv->startdrag.x = origin_rel_x;
+ tv->startdrag.y = origin_rel_y;
+
+ tv->io->mouse_action(tv, BROWSER_MOUSE_DRAG_1 | BROWSER_MOUSE_DRAG_ON,
+ cur_rel_x, cur_rel_y);
+ do{
+ if (abs(prev_x-cur_rel_x) > 5 || abs(prev_y-cur_rel_y) > 5) {
+ tv->io->mouse_action(tv,
+ BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_ON,
+ cur_rel_x, cur_rel_y);
+ prev_x = cur_rel_x;
+ prev_y = cur_rel_y;
+ }
+
+ if (tv->redraw) {
+ // TODO: maybe GUI poll would fit better here?
+ // ... is gui_poll re-entrance save?
+ atari_treeview_redraw(tv);
+ }
+
+ /* sample mouse button state: */
+ graf_mkstate(&cur_rel_x, &cur_rel_y, &mbut, &dummy);
+ cur_rel_x = (cur_rel_x-work.g_x)+(slid->x_pos*slid->x_unit_px);
+ cur_rel_y = (cur_rel_y-work.g_y)+(slid->y_pos*slid->y_unit_px);
+ } while( mbut & 1 );
+
+ /* End drag: */
+ tv->io->mouse_action(tv, BROWSER_MOUSE_HOVER, cur_rel_x, cur_rel_y);
+ gem_set_cursor(&gem_cursors.arrow);
+ }
+ }
}
@@ -97,15 +446,10 @@ struct atari_treeview_window *
atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
uint32_t flags)
{
-/*
- init_func();
-
- sslcert_viewer_init(&cw_t, (struct core_window *)tree,
- ssl_current_session);
-*/
/* allocate the core_window struct: */
struct atari_treeview_window * cw;
+ struct gemtk_wm_scroll_info_s *slid;
cw = calloc(sizeof(struct atari_treeview_window), 1);
if (cw == NULL) {
@@ -114,9 +458,24 @@ atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
return NULL;
}
+ /* Store the window ref inside the new treeview: */
cw->window = win;
cw->io = callbacks;
+ // Setup gemtk event handler function:
+ gemtk_wm_set_event_handler(win, handle_event);
+
+ // bind window user data to treeview ref:
+ gemtk_wm_set_user_data(win, (void*)cw);
+
+ // Get acces to the gemtk scroll info struct:
+ slid = gemtk_wm_get_scroll_info(cw->window);
+
+ // Setup line and column height/width of the window,
+ // each scroll takes the configured steps:
+ slid->y_unit_px = 16;
+ slid->x_unit_px = 16;
+
assert(cw->io);
assert(cw->io->init);
@@ -145,7 +504,6 @@ void atari_treeview_delete(struct atari_treeview_window * cw)
* Core Window Callbacks:
*/
-
/**
* Request a redraw of the window
*
@@ -158,27 +516,7 @@ void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
RECT_TO_GRECT(r, &area)
- if (cw != NULL) {
- ATARI_TREEVIEW tv = (ATARI_TREEVIEW) cw;
- if( tv->redraw == false ){
- tv->redraw = true;
- tv->rdw_area.g_x = area.g_x;
- tv->rdw_area.g_y = area.g_y;
- tv->rdw_area.g_w = area.g_w;
- tv->rdw_area.g_h = area.g_h;
- } else {
- /* merge the redraw area to the new area.: */
- int newx1 = area.g_x+area.g_w;
- int newy1 = area.g_y+area.g_h;
- int oldx1 = tv->rdw_area.g_x + tv->rdw_area.g_w;
- int oldy1 = tv->rdw_area.g_y + tv->rdw_area.g_h;
- tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, area.g_x);
- tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, area.g_y);
- tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
- tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
- }
- // dbg_grect("atari_treeview_request_redraw", &tv->rdw_area);
- }
+ atari_treeview_redraw_grect_request(cw, &area);
}
/**
diff --git a/atari/treeview.h b/atari/treeview.h
index f8e4c42..a6a59ac 100644
--- a/atari/treeview.h
+++ b/atari/treeview.h
@@ -19,19 +19,38 @@
#ifndef NSATARI_TREEVIEW_H
#define NSATARI_TREEVIEW_H
+#include "atari/gui.h"
+#include "atari/gemtk/gemtk.h"
+
+#define ATARI_TREEVIEW_WIDGETS (CLOSER | MOVER | SIZER| NAME | FULLER | \
+ SMALLER | VSLIDE | HSLIDE | UPARROW | DNARROW \
+ | LFARROW | RTARROW)
+
+
+struct core_window;
+struct atari_treeview_window;
+typedef struct atari_treeview_window *ATARI_TREEVIEW_PTR;
+
+typedef void (*atari_treeview_keypress_callback)(struct core_window *cw,
+ long ucs4);
+typedef void (*atari_treeview_mouse_action_callback)(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+typedef void (*atari_treeview_draw_callback)(struct core_window *cw, int x,
+ int y, int clip_x, int clip_y,
+ int clip_width, int clip_height,
+ const struct redraw_context *ctx);
+
struct atari_treeview_callbacks {
nserror (*init)(struct core_window *cw,
struct core_window_callback_table * default_callbacks);
void (*fini)(struct core_window *cw);
- void (*draw)(struct core_window *cw);
- void (*keypress)(struct core_window *cw);
- void (*mouse)(struct core_window *cw);
+ atari_treeview_draw_callback draw;
+ atari_treeview_keypress_callback keypress;
+ atari_treeview_mouse_action_callback mouse_action;
gemtk_wm_event_handler_f gemtk_user_func;
};
-struct atari_treeview_callbacks;
-struct atari_treeview_window;
-
struct atari_treeview_window *
atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
uint32_t flags);
-----------------------------------------------------------------------
Summary of changes:
atari/gui.c | 3 +
atari/hotlist.c | 211 +++++++++++++++++++++++++++
atari/hotlist.h | 46 ++++++
atari/plot/plot.c | 6 +
atari/plot/plot.h | 1 +
atari/treeview.c | 406 ++++++++++++++++++++++++++++++++++++++++++++++++-----
atari/treeview.h | 31 ++++-
7 files changed, 664 insertions(+), 40 deletions(-)
diff --git a/atari/gui.c b/atari/gui.c
index 83731b4..3f056a1 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -171,6 +171,8 @@ void gui_poll(bool active)
tmp = tmp->next;
}
+ // TODO: reenable treeview redraws
+/*
if(hl.tv->redraw){
atari_treeview_redraw(hl.tv);
}
@@ -178,6 +180,7 @@ void gui_poll(bool active)
if(gl_history.tv->redraw){
atari_treeview_redraw(gl_history.tv);
}
+*/
}
diff --git a/atari/hotlist.c b/atari/hotlist.c
index dfed6d0..e44ce7d 100644
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -15,3 +15,214 @@
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
+
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/hotlist.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/hotlist.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_hotlist hl;
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ NSTREEVIEW tv=NULL;
+ GRECT tb_area;
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+ case WM_TOOLBAR:
+
+ tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
+
+ switch (msg[4]) {
+ case TOOLBAR_HOTLIST_CREATE_FOLDER:
+ hotlist_add_folder(NULL, false, 0);
+ break;
+
+ case TOOLBAR_HOTLIST_ADD:
+ atari_hotlist_add_page(NULL, NULL);
+ break;
+
+ case TOOLBAR_HOTLIST_DELETE:
+ hotlist_keypress(KEY_DELETE_LEFT);
+ gemtk_wm_exec_redraw(tv->window, NULL);
+ break;
+
+ case TOOLBAR_HOTLIST_EDIT:
+ hotlist_edit_selection();
+ break;
+ }
+
+ gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
+ evnt_timer(150);
+ gemtk_wm_exec_redraw(tv->window, &tb_area);
+ break;
+
+ case WM_CLOSED:
+ atari_hotlist_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+
+
+void atari_hotlist_init(void)
+{
+ if (hl.init == false) {
+ if( strcmp(nsoption_charp(hotlist_file), "") == 0 ){
+ atari_find_resource( (char*)&hl.path, "hotlist", "hotlist" );
+ } else {
+ strncpy( (char*)&hl.path, nsoption_charp(hotlist_file), PATH_MAX-1 );
+ }
+
+ LOG(("Hotlist: %s", (char*)&hl.path ));
+
+ if( hl.window == NULL ){
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
+ assert( tree );
+ hl.open = false;
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( hl.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate Hotlist");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("Hotlist"));
+ gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
+ gemtk_wm_unlink(hl.window);
+ tree_hotlist_path = (const char*)&hl.path;
+ hl.tv = atari_treeview_create(
+ TREE_HOTLIST,
+ hl.window,
+ handle_event
+ );
+ if (hl.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ hl.init = true;
+}
+
+
+void atari_hotlist_open(void)
+{
+ if( hl.init == false ) {
+ return;
+ }
+
+ if( hl.open == false ) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
+ hl.open = true;
+ atari_treeview_open( hl.tv );
+ } else {
+ wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
+ }
+}
+
+void atari_hotlist_close(void)
+{
+ wind_close(gemtk_wm_get_handle(hl.window));
+ hl.open = false;
+ atari_treeview_close(hl.tv);
+}
+
+void atari_hotlist_destroy(void)
+{
+
+ if( hl.init == false) {
+ return;
+ }
+ if( hl.window != NULL ) {
+ if (hl.open)
+ atari_hotlist_close();
+ wind_delete(gemtk_wm_get_handle(hl.window));
+ gemtk_wm_remove(hl.window);
+ hl.window = NULL;
+ atari_treeview_destroy(hl.tv);
+ hl.init = false;
+ }
+ LOG(("done"));
+}
+
+void atari_hotlist_redraw(void)
+{
+ int i = 01;
+ atari_treeview_redraw(hl.tv);
+}
+
+struct node;
+
+void atari_hotlist_add_page( const char * url, const char * title )
+{
+ struct node * root;
+ struct node * selected = NULL;
+ struct node * folder = NULL;
+ nsurl *nsurl;
+ NSTREEVIEW tv = hl.tv;
+ if(hl.tv == NULL )
+ return;
+
+ atari_hotlist_open();
+
+ if (nsurl_create(url, &nsurl) != NSERROR_OK)
+ return;
+
+ if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
+ hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
+ } else {
+ hotlist_add_url( nsurl );
+ }
+ nsurl_unref(nsurl);
+}
+
diff --git a/atari/hotlist.h b/atari/hotlist.h
index e69de29..c6fc464 100644
--- a/atari/hotlist.h
+++ b/atari/hotlist.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NS_ATARI_HOTLIST_H
+#define NS_ATARI_HOTLIST_H
+#include <stdbool.h>
+#include "desktop/tree.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/treeview.h"
+/* The hotlist window, toolbar and treeview data. */
+
+struct atari_hotlist {
+ GUIWIN * window;
+ NSTREEVIEW tv; /*< The hotlist treeview handle. */
+ bool open;
+ bool init;
+ char path[PATH_MAX];
+};
+
+extern struct atari_hotlist hl;
+
+void atari_hotlist_init( void );
+void atari_hotlist_open( void );
+void atari_hotlist_close( void );
+void atari_hotlist_destroy( void );
+void atari_hotlist_add_page( const char * url, const char * title );
+
+void atari_hotlist_redraw( void );
+
+
+#endif
diff --git a/atari/plot/plot.c b/atari/plot/plot.c
index 80eda69..19c34e2 100755
--- a/atari/plot/plot.c
+++ b/atari/plot/plot.c
@@ -1953,6 +1953,12 @@ VdiHdl plot_get_vdi_handle(void)
return(atari_plot_vdi_handle);
}
+long plot_get_flags(void)
+{
+ return(atari_plot_flags);
+}
+
+
bool plot_get_clip(struct rect * out)
{
out->x0 = view.clipping.x0;
diff --git a/atari/plot/plot.h b/atari/plot/plot.h
index 3c9461d..d00bbc6 100755
--- a/atari/plot/plot.h
+++ b/atari/plot/plot.h
@@ -112,6 +112,7 @@ bool plot_get_clip(struct rect * out);
void plot_get_clip_grect(GRECT * out);
bool plot_clip(const struct rect *clip);
VdiHdl plot_get_vdi_handle(void);
+long plot_get_flags(void);
bool plot_rectangle( int x0, int y0, int x1, int y1,const plot_style_t *style );
bool plot_line( int x0, int y0, int x1, int y1, const plot_style_t *style );
bool plot_blit_bitmap(struct bitmap * bmp, int x, int y,
diff --git a/atari/treeview.c b/atari/treeview.c
index 7ea039c..6dd43d3 100644
--- a/atari/treeview.c
+++ b/atari/treeview.c
@@ -75,21 +75,370 @@ struct atari_treeview_window {
struct atari_treeview_callbacks *io;
};
-typedef struct atari_treeview_window *ATARI_TREEVIEW;
-
+enum treeview_area_e {
+ TREEVIEW_AREA_WORK = 0,
+ TREEVIEW_AREA_TOOLBAR,
+ TREEVIEW_AREA_CONTENT
+};
/* native GUI event handlers: */
-static void __CDECL on_mbutton_event(struct atari_treeview_window tvw,
+static void __CDECL on_mbutton_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_keybd_event(struct atari_treeview_window tvw,
+static void __CDECL on_keybd_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_redraw_event(struct atari_treeview_window tvw,
+static void __CDECL on_redraw_event(struct atari_treeview_window *tvw,
EVMULT_OUT *ev_out, short msg[8]);
-/* GEMTK event sink: */
+
+/**
+ * Schedule a redraw of the treeview content
+ *
+ */
+static void atari_treeview_redraw_grect_request(struct core_window *cw,
+ GRECT *area)
+{
+ if (cw != NULL) {
+ ATARI_TREEVIEW_PTR tv = (ATARI_TREEVIEW_PTR) cw;
+ if( tv->redraw == false ){
+ tv->redraw = true;
+ tv->rdw_area.g_x = area->g_x;
+ tv->rdw_area.g_y = area->g_y;
+ tv->rdw_area.g_w = area->g_w;
+ tv->rdw_area.g_h = area->g_h;
+ } else {
+ /* merge the redraw area to the new area.: */
+ int newx1 = area->g_x+area->g_w;
+ int newy1 = area->g_y+area->g_h;
+ int oldx1 = tv->rdw_area.g_x + tv->rdw_area.g_w;
+ int oldy1 = tv->rdw_area.g_y + tv->rdw_area.g_h;
+ tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, area->g_x);
+ tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, area->g_y);
+ tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
+ tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
+ }
+ // dbg_grect("atari_treeview_request_redraw", &tv->rdw_area);
+ }
+}
+
+
+static void atari_treeview_get_grect(ATARI_TREEVIEW_PTR tptr, enum treeview_area_e mode,
+ GRECT *dest)
+{
+
+ struct atari_treeview_window * tv = tptr;
+
+ if (mode == TREEVIEW_AREA_CONTENT) {
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, dest);
+ }
+ else if (mode == TREEVIEW_AREA_TOOLBAR) {
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, dest);
+ }
+}
+
+
+void atari_treeview_redraw(struct atari_treeview_window *tv)
+{
+ static FONT_PLOTTER vdi_txt_plotter = NULL;
+ FONT_PLOTTER old_txt_plotter;
+
+ VdiHdl plot_vdi_handle = 0;
+ long atari_plot_flags = 0;
+
+ /* TODO: do not use the global vdi handle for plot actions! */
+ /* TODO: implement getter/setter for the vdi handle */
+
+ if (tv != NULL) {
+ if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
+
+ plot_vdi_handle = plot_get_vdi_handle();
+ long atari_plot_flags = plot_get_flags();
+ short todo[4];
+ GRECT work;
+ short handle = gemtk_wm_get_handle(tv->window);
+ struct gemtk_wm_scroll_info_s *slid;
+
+/*
+ if (vdi_txt_plotter == NULL) {
+ int err = 0;
+ VdiHdl vdih = plot_get_vdi_handle();
+ vdi_txt_plotter = new_font_plotter(vdih, (char*)"vdi", PLOT_FLAG_TRANS,
+ &err);
+ if(err) {
+ const char * desc = plot_err_str(err);
+ die(("Unable to load vdi font plotter %s -> %s", "vdi", desc ));
+ }
+ }
+*/
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ struct redraw_context ctx = {
+ .interactive = true,
+ .background_images = true,
+ .plot = &atari_plotters
+ };
+ plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
+ if (plot_lock() == false)
+ return;
+/*
+ if(vdi_txt_plotter != NULL){
+ old_txt_plotter = plot_get_text_plotter();
+ plot_set_text_plotter(vdi_txt_plotter);
+ }
+*/
+ if( wind_get(handle, WF_FIRSTXYWH,
+ &todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
+ while (todo[2] && todo[3]) {
+
+ short pxy[4];
+ pxy[0] = todo[0];
+ pxy[1] = todo[1];
+ pxy[2] = todo[0] + todo[2]-1;
+ pxy[3] = todo[1] + todo[3]-1;
+ vs_clip(plot_vdi_handle, 1, (short*)&pxy);
+
+ /* convert screen to treeview coords: */
+ todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
+ todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
+ if( todo[0] < 0 ){
+ todo[2] = todo[2] + todo[0];
+ todo[0] = 0;
+ }
+ if( todo[1] < 0 ){
+ todo[3] = todo[3] + todo[1];
+ todo[1] = 0;
+ }
+
+ if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
+ tv->io->draw(tv, -(slid->x_pos*slid->x_unit_px),
+ -(slid->y_pos*slid->y_unit_px),
+ todo[0], todo[1], todo[2], todo[3], &ctx);
+ }
+ vs_clip(plot_vdi_handle, 0, (short*)&pxy);
+ if (wind_get(handle, WF_NEXTXYWH,
+ &todo[0], &todo[1], &todo[2], &todo[3])==0) {
+ break;
+ }
+ }
+ } else {
+ /*
+ plot_set_text_plotter(old_txt_plotter);
+ */
+ plot_unlock();
+ return;
+ }
+ /*
+ plot_set_text_plotter(old_txt_plotter);
+ */
+ plot_unlock();
+ tv->redraw = false;
+ tv->rdw_area.g_x = 65000;
+ tv->rdw_area.g_y = 65000;
+ tv->rdw_area.g_w = -1;
+ tv->rdw_area.g_h = -1;
+ } else {
+ /* just copy stuff from the offscreen buffer */
+ }
+ }
+}
+
+
+/**
+ * GEMTK event sink
+ *
+*/
static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
+ ATARI_TREEVIEW_PTR tv = (ATARI_TREEVIEW_PTR) gemtk_wm_get_user_data(win);
+
+ if( (ev_out->emo_events & MU_MESAG) != 0 ) {
+ // handle message
+ switch (msg[0]) {
+
+ case WM_REDRAW:
+ on_redraw_event(tv, ev_out, msg);
+ break;
+
+ default:
+ break;
+ }
+ }
+ if( (ev_out->emo_events & MU_KEYBD) != 0 ) {
+ on_keybd_event(tv, ev_out, msg);
+ }
+ if( (ev_out->emo_events & MU_BUTTON) != 0 ) {
+ LOG(("Treeview click at: %d,%d\n", ev_out->emo_mouse.p_x,
+ ev_out->emo_mouse.p_y));
+ on_mbutton_event(tv, ev_out, msg);
+ }
+
+ if (tv) {
+
+ }
+/*
+ if(tv != NULL && tv->user_func != NULL){
+ tv->user_func(win, ev_out, msg);
+ }
+*/
+ return(0);
+}
+
+
+static void __CDECL on_keybd_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
+ short msg[8])
+{
+ bool r=false;
+ long kstate = 0;
+ long kcode = 0;
+ long ucs4;
+ long ik;
+ unsigned short nkc = 0;
+ unsigned short nks = 0;
+ unsigned char ascii;
+ struct atari_treeview_window * tv = tptr;
+
+ kstate = ev_out->emo_kmeta;
+ kcode = ev_out->emo_kreturn;
+ nkc= gem_to_norm( (short)kstate, (short)kcode );
+ ascii = (nkc & 0xFF);
+ ik = nkc_to_input_key(nkc, &ucs4);
+
+ if (ik == 0) {
+ if (ascii >= 9) {
+ tv->io->keypress(tv, ucs4);
+ //r = tree_keypress(tv->tree, ucs4);
+ }
+ } else {
+ tv->io->keypress(tv, ik);
+ }
+}
+
+
+static void __CDECL on_redraw_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
+ short msg[8])
+{
+ GRECT work, clip;
+ struct gemtk_wm_scroll_info_s *slid;
+ struct atari_treeview_window * tv = tptr;
+
+ if (tv == NULL)
+ return;
+
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ slid = gemtk_wm_get_scroll_info(tv->window);
+
+ clip = work;
+ if ( !rc_intersect( (GRECT*)&msg[4], &clip ) ) return;
+ clip.g_x -= work.g_x;
+ clip.g_y -= work.g_y;
+ if( clip.g_x < 0 ) {
+ clip.g_w = work.g_w + clip.g_x;
+ clip.g_x = 0;
+ }
+ if( clip.g_y < 0 ) {
+ clip.g_h = work.g_h + clip.g_y;
+ clip.g_y = 0;
+ }
+ if( clip.g_h > 0 && clip.g_w > 0 ) {
+
+ GRECT rdrw_area;
+
+ rdrw_area.g_x = (slid->x_pos*slid->x_unit_px) + clip.g_x;
+ rdrw_area.g_y =(slid->y_pos*slid->y_unit_px) + clip.g_y;
+ rdrw_area.g_w = clip.g_w;
+ rdrw_area.g_h = clip.g_h;
+
+ atari_treeview_redraw_grect_request(tptr, &rdrw_area);
+ }
+}
+
+static void __CDECL on_mbutton_event(ATARI_TREEVIEW_PTR tptr, EVMULT_OUT *ev_out,
+ short msg[8])
+{
+ struct atari_treeview_window * tv = tptr;
+ struct gemtk_wm_scroll_info_s *slid;
+ GRECT work;
+ short mx, my;
+ int bms;
+ bool ignore=false;
+ short cur_rel_x, cur_rel_y, dummy, mbut;
+
+ if(tv == NULL)
+ return;
+
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
+ slid = gemtk_wm_get_scroll_info(tv->window);
+ mx = ev_out->emo_mouse.p_x;
+ my = ev_out->emo_mouse.p_y;
+
+ /* mouse click relative origin: */
+
+ short origin_rel_x = (mx-work.g_x) +
+ (slid->x_pos*slid->x_unit_px);
+ short origin_rel_y = (my-work.g_y) +
+ (slid->y_pos*slid->y_unit_px);
+
+ /* Only pass on events in the content area: */
+ if( origin_rel_x >= 0 && origin_rel_y >= 0
+ && mx < work.g_x + work.g_w
+ && my < work.g_y + work.g_h )
+ {
+ if (ev_out->emo_mclicks == 2) {
+ tv->io->mouse_action(tv,
+ BROWSER_MOUSE_CLICK_1|BROWSER_MOUSE_DOUBLE_CLICK,
+ origin_rel_x, origin_rel_y);
+ return;
+ }
+ graf_mkstate(&cur_rel_x, &cur_rel_y, &mbut, &dummy);
+ /* check for click or hold: */
+ if( (mbut&1) == 0 ){
+ bms = BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1;
+ if(ev_out->emo_mclicks == 2 ) {
+ bms = BROWSER_MOUSE_DOUBLE_CLICK;
+ }
+ tv->io->mouse_action(tv, bms, origin_rel_x, origin_rel_y);
+ } else {
+ /* button still pressed */
+ short prev_x = origin_rel_x;
+ short prev_y = origin_rel_y;
+
+ cur_rel_x = origin_rel_x;
+ cur_rel_y = origin_rel_y;
+
+ gem_set_cursor(&gem_cursors.hand);
+
+ tv->startdrag.x = origin_rel_x;
+ tv->startdrag.y = origin_rel_y;
+
+ tv->io->mouse_action(tv, BROWSER_MOUSE_DRAG_1 | BROWSER_MOUSE_DRAG_ON,
+ cur_rel_x, cur_rel_y);
+ do{
+ if (abs(prev_x-cur_rel_x) > 5 || abs(prev_y-cur_rel_y) > 5) {
+ tv->io->mouse_action(tv,
+ BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_ON,
+ cur_rel_x, cur_rel_y);
+ prev_x = cur_rel_x;
+ prev_y = cur_rel_y;
+ }
+
+ if (tv->redraw) {
+ // TODO: maybe GUI poll would fit better here?
+ // ... is gui_poll re-entrance save?
+ atari_treeview_redraw(tv);
+ }
+
+ /* sample mouse button state: */
+ graf_mkstate(&cur_rel_x, &cur_rel_y, &mbut, &dummy);
+ cur_rel_x = (cur_rel_x-work.g_x)+(slid->x_pos*slid->x_unit_px);
+ cur_rel_y = (cur_rel_y-work.g_y)+(slid->y_pos*slid->y_unit_px);
+ } while( mbut & 1 );
+
+ /* End drag: */
+ tv->io->mouse_action(tv, BROWSER_MOUSE_HOVER, cur_rel_x, cur_rel_y);
+ gem_set_cursor(&gem_cursors.arrow);
+ }
+ }
}
@@ -97,15 +446,10 @@ struct atari_treeview_window *
atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
uint32_t flags)
{
-/*
- init_func();
-
- sslcert_viewer_init(&cw_t, (struct core_window *)tree,
- ssl_current_session);
-*/
/* allocate the core_window struct: */
struct atari_treeview_window * cw;
+ struct gemtk_wm_scroll_info_s *slid;
cw = calloc(sizeof(struct atari_treeview_window), 1);
if (cw == NULL) {
@@ -114,9 +458,24 @@ atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
return NULL;
}
+ /* Store the window ref inside the new treeview: */
cw->window = win;
cw->io = callbacks;
+ // Setup gemtk event handler function:
+ gemtk_wm_set_event_handler(win, handle_event);
+
+ // bind window user data to treeview ref:
+ gemtk_wm_set_user_data(win, (void*)cw);
+
+ // Get acces to the gemtk scroll info struct:
+ slid = gemtk_wm_get_scroll_info(cw->window);
+
+ // Setup line and column height/width of the window,
+ // each scroll takes the configured steps:
+ slid->y_unit_px = 16;
+ slid->x_unit_px = 16;
+
assert(cw->io);
assert(cw->io->init);
@@ -145,7 +504,6 @@ void atari_treeview_delete(struct atari_treeview_window * cw)
* Core Window Callbacks:
*/
-
/**
* Request a redraw of the window
*
@@ -158,27 +516,7 @@ void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
RECT_TO_GRECT(r, &area)
- if (cw != NULL) {
- ATARI_TREEVIEW tv = (ATARI_TREEVIEW) cw;
- if( tv->redraw == false ){
- tv->redraw = true;
- tv->rdw_area.g_x = area.g_x;
- tv->rdw_area.g_y = area.g_y;
- tv->rdw_area.g_w = area.g_w;
- tv->rdw_area.g_h = area.g_h;
- } else {
- /* merge the redraw area to the new area.: */
- int newx1 = area.g_x+area.g_w;
- int newy1 = area.g_y+area.g_h;
- int oldx1 = tv->rdw_area.g_x + tv->rdw_area.g_w;
- int oldy1 = tv->rdw_area.g_y + tv->rdw_area.g_h;
- tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, area.g_x);
- tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, area.g_y);
- tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
- tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
- }
- // dbg_grect("atari_treeview_request_redraw", &tv->rdw_area);
- }
+ atari_treeview_redraw_grect_request(cw, &area);
}
/**
diff --git a/atari/treeview.h b/atari/treeview.h
index f8e4c42..a6a59ac 100644
--- a/atari/treeview.h
+++ b/atari/treeview.h
@@ -19,19 +19,38 @@
#ifndef NSATARI_TREEVIEW_H
#define NSATARI_TREEVIEW_H
+#include "atari/gui.h"
+#include "atari/gemtk/gemtk.h"
+
+#define ATARI_TREEVIEW_WIDGETS (CLOSER | MOVER | SIZER| NAME | FULLER | \
+ SMALLER | VSLIDE | HSLIDE | UPARROW | DNARROW \
+ | LFARROW | RTARROW)
+
+
+struct core_window;
+struct atari_treeview_window;
+typedef struct atari_treeview_window *ATARI_TREEVIEW_PTR;
+
+typedef void (*atari_treeview_keypress_callback)(struct core_window *cw,
+ long ucs4);
+typedef void (*atari_treeview_mouse_action_callback)(struct core_window *cw,
+ browser_mouse_state mouse,
+ int x, int y);
+typedef void (*atari_treeview_draw_callback)(struct core_window *cw, int x,
+ int y, int clip_x, int clip_y,
+ int clip_width, int clip_height,
+ const struct redraw_context *ctx);
+
struct atari_treeview_callbacks {
nserror (*init)(struct core_window *cw,
struct core_window_callback_table * default_callbacks);
void (*fini)(struct core_window *cw);
- void (*draw)(struct core_window *cw);
- void (*keypress)(struct core_window *cw);
- void (*mouse)(struct core_window *cw);
+ atari_treeview_draw_callback draw;
+ atari_treeview_keypress_callback keypress;
+ atari_treeview_mouse_action_callback mouse_action;
gemtk_wm_event_handler_f gemtk_user_func;
};
-struct atari_treeview_callbacks;
-struct atari_treeview_window;
-
struct atari_treeview_window *
atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
uint32_t flags);
--
NetSurf Browser
9 years, 4 months
netsurf: branch mono/atari_treeview_rework updated. release/3.0-571-geab22c4
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/eab22c4f32a92586a4390...
...commit http://git.netsurf-browser.org/netsurf.git/commit/eab22c4f32a92586a4390c5...
...tree http://git.netsurf-browser.org/netsurf.git/tree/eab22c4f32a92586a4390c53e...
The branch, mono/atari_treeview_rework has been updated
via eab22c4f32a92586a4390c53e81c909747ee3f7a (commit)
via 5d6d4b87c529aceee5754f7cfa5db0965f4ee37e (commit)
from e4421933eae27a84245b24daf6db9e16afad5b64 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=eab22c4f32a92586a43...
commit eab22c4f32a92586a4390c53e81c909747ee3f7a
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Replaced atari_treeview wrapper with a new one
(removed all modules which used the old tree API)
diff --git a/atari/Makefile.target b/atari/Makefile.target
index 0ffe9e7..fee4963 100644
--- a/atari/Makefile.target
+++ b/atari/Makefile.target
@@ -40,7 +40,7 @@ $(eval $(call feature_enabled,PNG,-DWITH_PNG,-lpng,PNG (libpng)))
$(eval $(call feature_enabled,MOZJS,$(SPIDERMONKEY_CFLAGS),-ljs,JavaScript (Spidermonkey)))
$(eval $(call feature_enabled,ATARI_FREETYPE_FONT,$(FREETYPE_FONT_CFLAGS),-lfreetype,(Freetype)))
$(eval $(call feature_enabled,ATARI_NETSURF_FONT,-DWITH_INTERNAL_FONT_DRIVER,,(Internal Font)))
-$(eval $(call feature_enabled,ATARI_VDI_FONT,-DWITH_VDI_FONT_DRIVER,,(Internal Font)))
+$(eval $(call feature_enabled,ATARI_VDI_FONT,-DWITH_VDI_FONT_DRIVER,,(VDI Font)))
$(eval $(call feature_enabled,ATARI_8BPP_SUPPORT,-DWITH_8BPP_SUPPORT,,(Indexed screen format support)))
# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs here
@@ -77,28 +77,26 @@ LDFLAGS += -L$(GCCSDK_INSTALL_ENV)/lib
S_ATARI := \
bitmap.c \
clipboard.c \
+ ctxmenu.c \
+ deskmenu.c \
+ download.c \
+ encoding.c \
findfile.c \
filetype.c \
font.c \
gui.c \
+ login.c \
misc.c \
+ osspec.c \
schedule.c \
- download.c \
+ search.c \
+ statusbar.c \
thumbnail.c \
- login.c \
treeview.c \
- hotlist.c \
- history.c\
- search.c \
redrawslots.c \
- encoding.c \
rootwin.c \
toolbar.c \
- statusbar.c \
- osspec.c \
- ctxmenu.c \
settings.c \
- deskmenu.c \
plot/plot.c \
plot/fontplot.c \
plot/eddi.s \
@@ -112,6 +110,10 @@ S_ATARI := \
gemtk/utils.c \
gemtk/objc.c
+# cookies.c \
+# hotlist.c \
+# history.c\
+
S_ATARI := $(addprefix atari/,$(S_ATARI))
# This is the final source build list
diff --git a/atari/Makefile.target.orig b/atari/Makefile.target.orig
new file mode 100644
index 0000000..25951b9
--- /dev/null
+++ b/atari/Makefile.target.orig
@@ -0,0 +1,120 @@
+# ----------------------------------------------------------------------------
+# Atari target setup
+# ----------------------------------------------------------------------------
+
+ifeq ($(ATARI_ARCH),68000)
+PRGSUFFIX := 000.app
+PKGNAME := ns000.zip
+endif
+
+ifeq ($(ATARI_ARCH),68020-60)
+CFLAGS += -m68020-60
+LDFLAGS += -m68020-60
+PRGSUFFIX := 020.app
+PKGNAME := ns020.zip
+endif
+
+ifeq ($(ATARI_ARCH),5475)
+CFLAGS += -mcpu=5475
+LDFLAGS += -mcpu=5475
+PRGSUFFIX := v4e.app
+PKGNAME := nsv4e.zip
+endif
+
+# non-pkgconfig components
+
+FREETYPE_FONT_CFLAGS := $(shell freetype-config --cflags) -DWITH_FREETYPE_FONT_DRIVER
+SPIDERMONKEY_CFLAGS := -DWITH_MOZJS -DXP_UNIX -DJS_HAS_FILE_OBJECT=0 -DJSOPTION_JIT=0 -DPOSIX_SOURCE -D_BSD_SOURCE
+
+$(eval $(call feature_enabled,MNG,-DWITH_MNG,-lmng,PNG/MNG/JNG (libmng)))
+$(eval $(call feature_enabled,PNG,-DWITH_PNG,-lpng,PNG (libpng)))
+$(eval $(call feature_enabled,MOZJS,$(SPIDERMONKEY_CFLAGS),-ljs,JavaScript (Spidermonkey)))
+$(eval $(call feature_enabled,ATARI_FREETYPE_FONT,$(FREETYPE_FONT_CFLAGS),-lfreetype,(Freetype)))
+$(eval $(call feature_enabled,ATARI_NETSURF_FONT,-DWITH_INTERNAL_FONT_DRIVER,,(Internal Font)))
+$(eval $(call feature_enabled,ATARI_8BPP_SUPPORT,-DWITH_8BPP_SUPPORT,,(Indexed screen format support)))
+
+# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs here
+NETSURF_FEATURE_RSVG_CFLAGS := -DWITH_RSVG
+NETSURF_FEATURE_HUBBUB_CFLAGS := -DWITH_HUBBUB
+NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP
+NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF
+NETSURF_FEATURE_JS_CFLAGS := -DWITH_JS -DJS_HAS_FILE_OBJECT=0
+NETSURF_FEATURE_MOZJS_CFLAGS := -DWITH_MOZJS -DJS_HAS_FILE_OBJECT=0
+
+ifeq ($(NETSURF_USE_MOZJS),YES)
+NETSURF_USE_JS:=YES
+NETSURF_USE_MOZJS:=YES
+endif
+
+$(eval $(call pkg_config_find_and_add,BMP,libnsbmp,BMP))
+$(eval $(call pkg_config_find_and_add,GIF,libnsgif,GIF))
+
+CFLAGS += -U__STRICT_ANSI__ -std=c99 -I. -Dsmall $(WARNFLAGS) -Dnsatari \
+ -D_BSD_SOURCE \
+ -D_XOPEN_SOURCE=600 \
+ -D_POSIX_C_SOURCE=200112L \
+ $(shell $(PKG_CONFIG) --cflags libhubbub libcss openssl ) \
+ $(shell $(PKG_CONFIG) --cflags libxml-2.0 ) \
+ $(shell $(PKG_CONFIG) --cflags libcurl )
+
+LDFLAGS += -lcflib -lcurl
+LDFLAGS += -lcss -lparserutils -ldom -lwapcaplet -lhubbub
+LDFLAGS += -lssl -lcrypto
+LDFLAGS += -lxml2 -lz -liconv -lcares -lHermes -lwindom -lgem -lm
+LDFLAGS += -L$(GCCSDK_INSTALL_ENV)/lib
+
+
+# S_ATARI are sources purely for the Atari FreeMiNT build
+S_ATARI := gui.c findfile.c filetype.c misc.c bitmap.c schedule.c \
+ download.c thumbnail.c login.c verify_ssl.c treeview.c hotlist.c history.c\
+ search.c font.c \
+ plot/plot.c plot/fontplot.c plot/eddi.s \
+ plot/font_freetype.c plot/font_internal.c \
+ redrawslots.c encoding.c \
+ browser_win.c toolbar.c statusbar.c browser.c \
+ global_evnt.c osspec.c dragdrop.c system_colour.c \
+ ctxmenu.c save.c settings.c
+S_ATARI := $(addprefix atari/,$(S_ATARI))
+
+# This is the final source build list
+# Note this is deliberately *not* expanded here as common and image
+# are not yet available
+SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_ATARI)
+EXETARGET := ns$(SUBTARGET)$(PRGSUFFIX)
+
+# ----------------------------------------------------------------------------
+# Install target
+# ----------------------------------------------------------------------------
+
+<<<<<<< Updated upstream
+install-atari:
+
+# ----------------------------------------------------------------------------
+# Package target
+# ----------------------------------------------------------------------------
+
+package-atari:
+=======
+ATARI_INSTALL_TARGET_DIR := nsatari.package
+ATARI_RES_DIR := atari/res
+
+install-atari: $(PKGNAME)
+ $(VQ)echo Creating $(PKGNAME)
+
+$(PKGNAME): $(EXETARGET)
+ $(Q)rm -rf $(ATARI_INSTALL_TARGET_DIR)
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/doc
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/download
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/res
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/fonts
+ #$(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/icons
+ $(Q)touch $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/cookies
+ $(Q)cp $(ATARI_RES_DIR)/netsurf.rsc $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/netsurf.rsc
+ $(Q)cp $(ATARI_RES_DIR)/icons/ $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/icons/ -R
+
+
+ $(Q)cp $(EXETARGET) $(ATARI_INSTALL_TARGET_DIR)/netsurf
+
+>>>>>>> Stashed changes
diff --git a/atari/cookies.c b/atari/cookies.c
new file mode 100644
index 0000000..dfed6d0
--- /dev/null
+++ b/atari/cookies.c
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
diff --git a/atari/cookies.h b/atari/cookies.h
new file mode 100644
index 0000000..e69de29
diff --git a/atari/history.c b/atari/history.c
old mode 100755
new mode 100644
index 6da8eeb..dfed6d0
--- a/atari/history.c
+++ b/atari/history.c
@@ -1,168 +1,17 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-#include <string.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include "desktop/browser.h"
-#include "utils/nsoption.h"
-#include "desktop/tree.h"
-#include "desktop/gui.h"
-#include "desktop/global_history.h"
-#include "desktop/browser.h"
-#include "utils/messages.h"
-#include "content/content.h"
-#include "content/hlcache.h"
-#include "content/urldb.h"
-#include "utils/log.h"
-#include "atari/treeview.h"
-#include "atari/findfile.h"
-#include "atari/res/netsurf.rsh"
-#include "atari/history.h"
-
-
-//TODO: remove/add guiwin handle on close / open - so that the list
-// is kept tiny.
-
-extern GRECT desk_area;
-
-struct s_atari_global_history gl_history;
-
-
-void atari_global_history_open( void )
-{
- atari_global_history_init();
- if (gl_history.init == false ) {
- return;
- }
- if( gl_history.open == false ) {
-
- GRECT pos;
- wind_get_grect(0, WF_WORKXYWH, &pos);
- pos.g_x = desk_area.g_w - desk_area.g_w / 4;
- pos.g_y = desk_area.g_y;
- pos.g_w = desk_area.g_w / 4;
- pos.g_h = desk_area.g_h;
-
- wind_open(gemtk_wm_get_handle(gl_history.window), pos.g_x, pos.g_y,
- pos.g_w, pos.g_h);
- gl_history.open = true;
- atari_treeview_open(gl_history.tv);
- } else {
- wind_set(gemtk_wm_get_handle(gl_history.window), WF_TOP, 1, 0, 0, 0);
- }
-}
-
-void atari_global_history_close( void )
-{
- wind_close(gemtk_wm_get_handle(gl_history.window));
- gl_history.open = false;
- atari_treeview_close(gl_history.tv);
-}
-
-static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
-{
- NSTREEVIEW tv=NULL;
-
- //printf("Hotlist event %d, open: %d\n", ev_out->emo_events, gl_history.open);
-
- if(ev_out->emo_events & MU_MESAG){
- switch (msg[0]) {
-
- case WM_CLOSED:
- atari_global_history_close();
- break;
-
- default: break;
- }
- }
-
- // TODO: implement selectable objects in toolbar API:
- // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
-}
-
-bool atari_global_history_init( void )
-{
-
- if( gl_history.init == false ) {
-
- short handle;
- GRECT desk;
- int flags = ATARI_TREEVIEW_WIDGETS;
-
- // initialize state options:
- gl_history.open = false;
-
- // Create an AES window:
- handle = wind_create(flags, 40, 40, desk_area.g_w, desk_area.g_h);
-
- // add the AES window to the gemtk window manager:
- gl_history.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
-
- if( gl_history.window == NULL ) {
- LOG(("Failed to allocate history window"));
- return( false );
- }
-
- // Set window title:
- wind_set_str(handle, WF_NAME, (char*)messages_get("GlobalHistory"));
-
- // Make the window part of the netsurf treeview framework:
- gl_history.tv = atari_treeview_create(TREE_HISTORY,
- gl_history.window, handle_event);
-
- gemtk_wm_unlink(gl_history.window);
-
- if (gl_history.tv == NULL) {
- /* TODO: handle it properly, clean up previous allocs */
- LOG(("Failed to allocate history treeview"));
- return( false );
- }
-
- gl_history.init = true;
- }
- return( true );
-}
-
-
-void atari_global_history_destroy( void )
-{
-
- if( gl_history.init == false ) {
- return;
- }
- if( gl_history.window != NULL ) {
- if( gl_history.open )
- atari_global_history_close();
- wind_delete(gemtk_wm_get_handle(gl_history.window));
- gemtk_wm_remove(gl_history.window);
- gl_history.window = NULL;
- atari_treeview_destroy(gl_history.tv);
- gl_history.init = false;
- }
- LOG(("done"));
-}
-
-void atari_global_history_redraw( void )
-{
- atari_treeview_redraw( gl_history.tv );
-}
-
-
diff --git a/atari/history.h b/atari/history.h
old mode 100755
new mode 100644
index d94e188..e69de29
--- a/atari/history.h
+++ b/atari/history.h
@@ -1,45 +0,0 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NS_ATARI_HISTORY_H
-#define NS_ATARI_HISTORY_H
-
-#include <stdbool.h>
-#include "desktop/tree.h"
-#include "atari/treeview.h"
-#include "atari/gemtk/gemtk.h"
-
-struct s_atari_global_history {
- GUIWIN *window; /*< The GEMTK window ref */
- NSTREEVIEW tv; /*< The history treeview handle. */
- bool open;
- bool init;
-};
-
-extern struct s_atari_global_history gl_history;
-
-bool atari_global_history_init( void );
-void atari_global_history_destroy( void );
-void atari_global_history_open( void );
-void atari_global_history_close( void );
-
-void atari_global_history_redraw( void );
-
-
-
-#endif
diff --git a/atari/hotlist.c b/atari/hotlist.c
old mode 100755
new mode 100644
index 57cf0c0..dfed6d0
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -1,226 +1,17 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-#include <ctype.h>
-#include <string.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "desktop/browser.h"
-#include "content/content.h"
-#include "content/hlcache.h"
-#include "content/urldb.h"
-#include "utils/nsoption.h"
-#include "desktop/hotlist.h"
-#include "desktop/tree.h"
-#include "desktop/gui.h"
-#include "utils/log.h"
-#include "utils/messages.h"
-#include "utils/utils.h"
-#include "utils/url.h"
-#include "atari/gui.h"
-#include "atari/misc.h"
-#include "atari/treeview.h"
-#include "atari/hotlist.h"
-#include "atari/findfile.h"
-#include "atari/gemtk/gemtk.h"
-#include "atari/res/netsurf.rsh"
-
-extern GRECT desk_area;
-
-struct atari_hotlist hl;
-
-static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
-{
- NSTREEVIEW tv=NULL;
- GRECT tb_area;
-
- if(ev_out->emo_events & MU_MESAG){
- switch (msg[0]) {
-
- case WM_TOOLBAR:
-
- tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
-
- switch (msg[4]) {
- case TOOLBAR_HOTLIST_CREATE_FOLDER:
- hotlist_add_folder(NULL, false, 0);
- break;
-
- case TOOLBAR_HOTLIST_ADD:
- atari_hotlist_add_page(NULL, NULL);
- break;
-
- case TOOLBAR_HOTLIST_DELETE:
- hotlist_keypress(KEY_DELETE_LEFT);
- gemtk_wm_exec_redraw(tv->window, NULL);
- break;
-
- case TOOLBAR_HOTLIST_EDIT:
- hotlist_edit_selection();
- break;
- }
-
- gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
- evnt_timer(150);
- gemtk_wm_exec_redraw(tv->window, &tb_area);
- break;
-
- case WM_CLOSED:
- atari_hotlist_close();
- break;
-
- default: break;
- }
- }
-
- // TODO: implement selectable objects in toolbar API:
- // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
-}
-
-
-
-void atari_hotlist_init(void)
-{
- if (hl.init == false) {
- if( strcmp(nsoption_charp(hotlist_file), "") == 0 ){
- atari_find_resource( (char*)&hl.path, "hotlist", "hotlist" );
- } else {
- strncpy( (char*)&hl.path, nsoption_charp(hotlist_file), PATH_MAX-1 );
- }
-
- LOG(("Hotlist: %s", (char*)&hl.path ));
-
- if( hl.window == NULL ){
- int flags = ATARI_TREEVIEW_WIDGETS;
- short handle = -1;
- GRECT desk;
- OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
- assert( tree );
- hl.open = false;
-
- handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
- hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
- if( hl.window == NULL ) {
- gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
- "Failed to allocate Hotlist");
- return;
- }
- wind_set_str(handle, WF_NAME, (char*)messages_get("Hotlist"));
- gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
- gemtk_wm_unlink(hl.window);
- tree_hotlist_path = (const char*)&hl.path;
- hl.tv = atari_treeview_create(
- TREE_HOTLIST,
- hl.window,
- handle_event
- );
- if (hl.tv == NULL) {
- /* handle it properly, clean up previous allocs */
- LOG(("Failed to allocate treeview"));
- return;
- }
-
- } else {
-
- }
- }
- hl.init = true;
-}
-
-
-void atari_hotlist_open(void)
-{
- if( hl.init == false ) {
- return;
- }
-
- if( hl.open == false ) {
-
- GRECT pos;
- pos.g_x = desk_area.g_w - desk_area.g_w / 4;
- pos.g_y = desk_area.g_y;
- pos.g_w = desk_area.g_w / 4;
- pos.g_h = desk_area.g_h;
-
- wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
- hl.open = true;
- atari_treeview_open( hl.tv );
- } else {
- wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
- }
-}
-
-void atari_hotlist_close(void)
-{
- wind_close(gemtk_wm_get_handle(hl.window));
- hl.open = false;
- atari_treeview_close(hl.tv);
-}
-
-void atari_hotlist_destroy(void)
-{
-
- if( hl.init == false) {
- return;
- }
- if( hl.window != NULL ) {
- if (hl.open)
- atari_hotlist_close();
- wind_delete(gemtk_wm_get_handle(hl.window));
- gemtk_wm_remove(hl.window);
- hl.window = NULL;
- atari_treeview_destroy(hl.tv);
- hl.init = false;
- }
- LOG(("done"));
-}
-
-void atari_hotlist_redraw(void)
-{
- int i = 01;
- atari_treeview_redraw(hl.tv);
-}
-
-struct node;
-
-void atari_hotlist_add_page( const char * url, const char * title )
-{
- struct node * root;
- struct node * selected = NULL;
- struct node * folder = NULL;
- nsurl *nsurl;
- NSTREEVIEW tv = hl.tv;
- if(hl.tv == NULL )
- return;
-
- atari_hotlist_open();
-
- if (nsurl_create(url, &nsurl) != NSERROR_OK)
- return;
-
- if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
- hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
- } else {
- hotlist_add_url( nsurl );
- }
- nsurl_unref(nsurl);
-}
diff --git a/atari/hotlist.h b/atari/hotlist.h
old mode 100755
new mode 100644
index fc9cba6..e69de29
--- a/atari/hotlist.h
+++ b/atari/hotlist.h
@@ -1,46 +0,0 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NS_ATARI_HOTLIST_H
-#define NS_ATARI_HOTLIST_H
-#include <stdbool.h>
-#include "desktop/tree.h"
-#include "atari/gemtk/gemtk.h"
-#include "atari/treeview.h"
-/* The hotlist window, toolbar and treeview data. */
-
-struct atari_hotlist {
- GUIWIN * window;
- NSTREEVIEW tv; /*< The hotlist treeview handle. */
- bool open;
- bool init;
- char path[PATH_MAX];
-};
-
-extern struct atari_hotlist hl;
-
-void atari_hotlist_init( void );
-void atari_hotlist_open( void );
-void atari_hotlist_close( void );
-void atari_hotlist_destroy( void );
-void atari_hotlist_add_page( const char * url, const char * title );
-
-void atari_hotlist_redraw( void );
-
-
-#endif
diff --git a/atari/old_treeview/history.c b/atari/old_treeview/history.c
new file mode 100755
index 0000000..5447571
--- /dev/null
+++ b/atari/old_treeview/history.c
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2010 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+#include "desktop/browser.h"
+#include "utils/nsoption.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "desktop/global_history.h"
+#include "desktop/browser.h"
+#include "utils/messages.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/log.h"
+#include "atari/treeview.h"
+#include "atari/findfile.h"
+#include "atari/res/netsurf.rsh"
+#include "atari/history.h"
+
+
+//TODO: remove/add guiwin handle on close / open - so that the list
+// is kept tiny.
+
+extern GRECT desk_area;
+
+struct s_atari_global_history gl_history;
+
+
+void atari_global_history_open( void )
+{
+ /* TODO: call this in gui.c and move global_history_init() into history.c */
+ atari_global_history_init();
+ if (gl_history.init == false ) {
+ return;
+ }
+ if( gl_history.open == false ) {
+
+ GRECT pos;
+ wind_get_grect(0, WF_WORKXYWH, &pos);
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ wind_open(gemtk_wm_get_handle(gl_history.window), pos.g_x, pos.g_y,
+ pos.g_w, pos.g_h);
+ gl_history.open = true;
+ atari_treeview_open(gl_history.tv);
+ } else {
+ wind_set(gemtk_wm_get_handle(gl_history.window), WF_TOP, 1, 0, 0, 0);
+ }
+}
+
+void atari_global_history_close( void )
+{
+ wind_close(gemtk_wm_get_handle(gl_history.window));
+ gl_history.open = false;
+ atari_treeview_close(gl_history.tv);
+}
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ NSTREEVIEW tv=NULL;
+
+ //printf("Hotlist event %d, open: %d\n", ev_out->emo_events, gl_history.open);
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+ case WM_CLOSED:
+ atari_global_history_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+/* TODO: add call to global_history_init() */
+bool atari_global_history_init( void )
+{
+
+ if( gl_history.init == false ) {
+
+ short handle;
+ GRECT desk;
+ int flags = ATARI_TREEVIEW_WIDGETS;
+
+ // initialize state options:
+ gl_history.open = false;
+
+ // Create an AES window:
+ handle = wind_create(flags, 40, 40, desk_area.g_w, desk_area.g_h);
+
+ // add the AES window to the gemtk window manager:
+ gl_history.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
+
+ if( gl_history.window == NULL ) {
+ LOG(("Failed to allocate history window"));
+ return( false );
+ }
+
+ // Set window title:
+ wind_set_str(handle, WF_NAME, (char*)messages_get("GlobalHistory"));
+
+ // Make the window part of the netsurf treeview framework:
+ gl_history.tv = atari_treeview_create(TREE_HISTORY,
+ gl_history.window, handle_event);
+
+ gemtk_wm_unlink(gl_history.window);
+
+ if (gl_history.tv == NULL) {
+ /* TODO: handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate history treeview"));
+ return( false );
+ }
+
+ gl_history.init = true;
+ }
+ return( true );
+}
+
+
+void atari_global_history_destroy( void )
+{
+
+ if( gl_history.init == false ) {
+ return;
+ }
+ if( gl_history.window != NULL ) {
+ if( gl_history.open )
+ atari_global_history_close();
+ wind_delete(gemtk_wm_get_handle(gl_history.window));
+ gemtk_wm_remove(gl_history.window);
+ gl_history.window = NULL;
+ atari_treeview_destroy(gl_history.tv);
+ gl_history.init = false;
+ }
+ LOG(("done"));
+}
+
+void atari_global_history_redraw( void )
+{
+ atari_treeview_redraw( gl_history.tv );
+}
+
+
diff --git a/atari/old_treeview/history.h b/atari/old_treeview/history.h
new file mode 100755
index 0000000..d94e188
--- /dev/null
+++ b/atari/old_treeview/history.h
@@ -0,0 +1,45 @@
+/*
+ * Copyright 2010 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NS_ATARI_HISTORY_H
+#define NS_ATARI_HISTORY_H
+
+#include <stdbool.h>
+#include "desktop/tree.h"
+#include "atari/treeview.h"
+#include "atari/gemtk/gemtk.h"
+
+struct s_atari_global_history {
+ GUIWIN *window; /*< The GEMTK window ref */
+ NSTREEVIEW tv; /*< The history treeview handle. */
+ bool open;
+ bool init;
+};
+
+extern struct s_atari_global_history gl_history;
+
+bool atari_global_history_init( void );
+void atari_global_history_destroy( void );
+void atari_global_history_open( void );
+void atari_global_history_close( void );
+
+void atari_global_history_redraw( void );
+
+
+
+#endif
diff --git a/atari/old_treeview/hotlist.c b/atari/old_treeview/hotlist.c
new file mode 100755
index 0000000..57cf0c0
--- /dev/null
+++ b/atari/old_treeview/hotlist.c
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2010 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#include <ctype.h>
+#include <string.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <time.h>
+
+#include "desktop/browser.h"
+#include "content/content.h"
+#include "content/hlcache.h"
+#include "content/urldb.h"
+#include "utils/nsoption.h"
+#include "desktop/hotlist.h"
+#include "desktop/tree.h"
+#include "desktop/gui.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "utils/utils.h"
+#include "utils/url.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
+#include "atari/treeview.h"
+#include "atari/hotlist.h"
+#include "atari/findfile.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern GRECT desk_area;
+
+struct atari_hotlist hl;
+
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
+{
+ NSTREEVIEW tv=NULL;
+ GRECT tb_area;
+
+ if(ev_out->emo_events & MU_MESAG){
+ switch (msg[0]) {
+
+ case WM_TOOLBAR:
+
+ tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
+
+ switch (msg[4]) {
+ case TOOLBAR_HOTLIST_CREATE_FOLDER:
+ hotlist_add_folder(NULL, false, 0);
+ break;
+
+ case TOOLBAR_HOTLIST_ADD:
+ atari_hotlist_add_page(NULL, NULL);
+ break;
+
+ case TOOLBAR_HOTLIST_DELETE:
+ hotlist_keypress(KEY_DELETE_LEFT);
+ gemtk_wm_exec_redraw(tv->window, NULL);
+ break;
+
+ case TOOLBAR_HOTLIST_EDIT:
+ hotlist_edit_selection();
+ break;
+ }
+
+ gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
+ gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
+ evnt_timer(150);
+ gemtk_wm_exec_redraw(tv->window, &tb_area);
+ break;
+
+ case WM_CLOSED:
+ atari_hotlist_close();
+ break;
+
+ default: break;
+ }
+ }
+
+ // TODO: implement selectable objects in toolbar API:
+ // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
+}
+
+
+
+void atari_hotlist_init(void)
+{
+ if (hl.init == false) {
+ if( strcmp(nsoption_charp(hotlist_file), "") == 0 ){
+ atari_find_resource( (char*)&hl.path, "hotlist", "hotlist" );
+ } else {
+ strncpy( (char*)&hl.path, nsoption_charp(hotlist_file), PATH_MAX-1 );
+ }
+
+ LOG(("Hotlist: %s", (char*)&hl.path ));
+
+ if( hl.window == NULL ){
+ int flags = ATARI_TREEVIEW_WIDGETS;
+ short handle = -1;
+ GRECT desk;
+ OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
+ assert( tree );
+ hl.open = false;
+
+ handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
+ hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
+ if( hl.window == NULL ) {
+ gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
+ "Failed to allocate Hotlist");
+ return;
+ }
+ wind_set_str(handle, WF_NAME, (char*)messages_get("Hotlist"));
+ gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
+ gemtk_wm_unlink(hl.window);
+ tree_hotlist_path = (const char*)&hl.path;
+ hl.tv = atari_treeview_create(
+ TREE_HOTLIST,
+ hl.window,
+ handle_event
+ );
+ if (hl.tv == NULL) {
+ /* handle it properly, clean up previous allocs */
+ LOG(("Failed to allocate treeview"));
+ return;
+ }
+
+ } else {
+
+ }
+ }
+ hl.init = true;
+}
+
+
+void atari_hotlist_open(void)
+{
+ if( hl.init == false ) {
+ return;
+ }
+
+ if( hl.open == false ) {
+
+ GRECT pos;
+ pos.g_x = desk_area.g_w - desk_area.g_w / 4;
+ pos.g_y = desk_area.g_y;
+ pos.g_w = desk_area.g_w / 4;
+ pos.g_h = desk_area.g_h;
+
+ wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
+ hl.open = true;
+ atari_treeview_open( hl.tv );
+ } else {
+ wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
+ }
+}
+
+void atari_hotlist_close(void)
+{
+ wind_close(gemtk_wm_get_handle(hl.window));
+ hl.open = false;
+ atari_treeview_close(hl.tv);
+}
+
+void atari_hotlist_destroy(void)
+{
+
+ if( hl.init == false) {
+ return;
+ }
+ if( hl.window != NULL ) {
+ if (hl.open)
+ atari_hotlist_close();
+ wind_delete(gemtk_wm_get_handle(hl.window));
+ gemtk_wm_remove(hl.window);
+ hl.window = NULL;
+ atari_treeview_destroy(hl.tv);
+ hl.init = false;
+ }
+ LOG(("done"));
+}
+
+void atari_hotlist_redraw(void)
+{
+ int i = 01;
+ atari_treeview_redraw(hl.tv);
+}
+
+struct node;
+
+void atari_hotlist_add_page( const char * url, const char * title )
+{
+ struct node * root;
+ struct node * selected = NULL;
+ struct node * folder = NULL;
+ nsurl *nsurl;
+ NSTREEVIEW tv = hl.tv;
+ if(hl.tv == NULL )
+ return;
+
+ atari_hotlist_open();
+
+ if (nsurl_create(url, &nsurl) != NSERROR_OK)
+ return;
+
+ if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
+ hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
+ } else {
+ hotlist_add_url( nsurl );
+ }
+ nsurl_unref(nsurl);
+}
diff --git a/atari/old_treeview/hotlist.h b/atari/old_treeview/hotlist.h
new file mode 100755
index 0000000..fc9cba6
--- /dev/null
+++ b/atari/old_treeview/hotlist.h
@@ -0,0 +1,46 @@
+/*
+ * Copyright 2010 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef NS_ATARI_HOTLIST_H
+#define NS_ATARI_HOTLIST_H
+#include <stdbool.h>
+#include "desktop/tree.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/treeview.h"
+/* The hotlist window, toolbar and treeview data. */
+
+struct atari_hotlist {
+ GUIWIN * window;
+ NSTREEVIEW tv; /*< The hotlist treeview handle. */
+ bool open;
+ bool init;
+ char path[PATH_MAX];
+};
+
+extern struct atari_hotlist hl;
+
+void atari_hotlist_init( void );
+void atari_hotlist_open( void );
+void atari_hotlist_close( void );
+void atari_hotlist_destroy( void );
+void atari_hotlist_add_page( const char * url, const char * title );
+
+void atari_hotlist_redraw( void );
+
+
+#endif
diff --git a/atari/plot/fontplot.c b/atari/plot/fontplot.c
index ebc7687..a33dd1f 100644
--- a/atari/plot/fontplot.c
+++ b/atari/plot/fontplot.c
@@ -36,10 +36,8 @@ void dump_font_drivers(void)
{
int i = 0;
while( font_driver_table[i].name != NULL ) {
- printf("%s -> flags: %d\n",
- font_driver_table[i].name,
- font_driver_table[i].flags
- );
+ printf("%s -> flags: %d\n", font_driver_table[i].name,
+ font_driver_table[i].flags);
i++;
}
}
diff --git a/atari/res/netsurf.c b/atari/res/netsurf.c
new file mode 100644
index 0000000..d6ee900
--- /dev/null
+++ b/atari/res/netsurf.c
@@ -0,0 +1,4379 @@
+/* erzeugt mit RSM2CS V1.01 Beta von Armin Diedering aus "S:\Sources\netsurf.git\netsurf\atari\res\netsurf.rsc" */
+/* nach Sourcen von Holger Weets */
+
+#include <portab.h>
+
+static char rs_s0[] = "";
+static char rs_s1[] = "-------------------------";
+static char rs_s2[] = "------------------------------";
+static char rs_s3[] = "-----------------------";
+static char rs_s4[] = "Abort";
+static char rs_s5[] = "X";
+static char rs_s7[] = "__";
+static char rs_s6[] = "n";
+static char rs_s8[] = "___";
+static char rs_s9[] = "____________________________________________";
+
+static char rs_s10[] = "";
+static char rs_s11[] = "";
+static char rs_s12[] = "";
+static char rs_s13[] = "";
+static char rs_s14[] = "";
+static char rs_s15[] = "";
+static char rs_s16[] = "";
+static char rs_s17[] = "";
+static char rs_s18[] = "";
+static char rs_s19[] = "";
+static char rs_s20[] = "";
+static char rs_s21[] = "";
+static char rs_s22[] = "";
+static char rs_s23[] = "";
+static char rs_s24[] = "";
+static char rs_s25[] = "";
+static char rs_s26[] = "";
+static char rs_s27[] = "";
+static char rs_s28[] = "";
+static char rs_s29[] = "";
+static char rs_s30[] = "";
+static char rs_s31[] = "";
+static char rs_s32[] = "";
+static char rs_s33[] = "";
+static char rs_s34[] = "";
+static char rs_s35[] = "";
+static char rs_s36[] = "";
+static char rs_s37[] = "";
+static char rs_s38[] = "";
+static char rs_s39[] = "";
+static char rs_s40[] = "";
+static char rs_s41[] = "";
+static char rs_s42[] = "";
+static char rs_s43[] = "";
+static char rs_s44[] = "";
+static char rs_s45[] = "-------------------";
+static char rs_s46[] = "-------------------";
+static char rs_s51[] = "03";
+static char rs_s47[] = "_____";
+static char rs_s48[] = "_____";
+static char rs_s49[] = "_____________________________________";
+static char rs_s50[] = "_____________________________________";
+static char rs_s52[] = "03";
+static char rs_s53[] = "03";
+static char rs_s54[] = "03";
+static char rs_s55[] = "____________________________________________";
+static char rs_s56[] = "____________________________________________";
+static char rs_s57[] = "____________________________________________";
+static char rs_s58[] = "____________________________________________";
+static char rs_s59[] = "____________________________________________";
+
+#define FLAGS11 0x0800
+#define FLAGS12 0x1000
+#define FLAGS13 0x2000
+#define FLAGS14 0x4000
+#define FLAGS15 0x8000
+#define STATE8 0x0100
+#define STATE9 0x0200
+#define STATE10 0x0400
+#define STATE11 0x0800
+#define STATE12 0x1000
+#define STATE13 0x2000
+#define STATE14 0x4000
+#define STATE15 0x8000
+
+#define RS_NTED 43
+
+static TEDINFO rs_tedinfo[] = {
+ "NetSurf",
+ rs_s0,
+ rs_s0,
+ SMALL, 6, TE_LEFT, 4352, 0, 0, 8, 1,
+
+ rs_s45,
+ "User: ___________________",
+ rs_s5,
+ IBM, 6, TE_CNTR, 4480, 0, -2, 20, 30,
+
+ rs_s46,
+ "Password: ___________________",
+ rs_s5,
+ IBM, 6, TE_CNTR, 4480, 0, -2, 20, 30,
+
+ "SSL Verify failed!",
+ rs_s0,
+ rs_s0,
+ IBM, 1, TE_LEFT, 4480, 10, -1, 19, 1,
+
+ "XY",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 3, 1,
+
+ "Text\0@@@@@@@@@@@@@@@@@@@@",
+ "Search : _________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 26, 37,
+
+ "File",
+ rs_s0,
+ rs_s0,
+ SMALL, 6, TE_LEFT, 4352, 0, -1, 5, 1,
+
+ "100000 MB / 100000 MB",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4352, 0, -1, 22, 1,
+
+ "100%",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_RIGHT, 4352, 0, -1, 5, 1,
+
+ "99999 KB/s ",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_RIGHT, 4352, 0, -1, 12, 1,
+
+ " Cut",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 6, 1,
+
+ " Copy",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 7, 1,
+
+ " Paste",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 8, 1,
+
+ " Select All",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 13, 1,
+
+ "---------------------",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_CNTR, 4480, 0, -1, 22, 1,
+
+ " Open in new Window",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 21, 1,
+
+ " Copy Link",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 12, 1,
+
+ " Copy URL",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 11, 1,
+
+ " Save as...",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 13, 1,
+
+ " View source...",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 17, 1,
+
+ " Save link as...",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 18, 1,
+
+ "\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
+ "Homepage: ____________________________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 10, -2, 45, 55,
+
+ rs_s51,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_CNTR, 4480, 0, -2, 3, 3,
+
+ "Browser",
+ "_______",
+ rs_s5,
+ SMALL, 1, TE_CNTR, 4480, 9, 1, 8, 8,
+
+ "_______________________________",
+ "Proxy Host: _______________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 32, 44,
+
+ rs_s47,
+ rs_s48,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 6, 6,
+
+ rs_s49,
+ "Username: _____________________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 38, 50,
+
+ rs_s50,
+ "Password: _____________________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 38, 50,
+
+ rs_s52,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 3, 3,
+
+ rs_s53,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 3, 3,
+
+ rs_s54,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 3, 3,
+
+ "Network",
+ rs_s0,
+ rs_s0,
+ SMALL, 1, TE_CNTR, 4480, 9, -1, 8, 1,
+
+ "130",
+ rs_s8,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 4, 4,
+
+ "100",
+ rs_s8,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 4, 4,
+
+ "0.5",
+ rs_s8,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 4, 4,
+
+ "0350",
+ "____",
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 5, 5,
+
+ "Rendering",
+ rs_s0,
+ rs_s0,
+ SMALL, 1, TE_CNTR, 4480, 9, -1, 10, 1,
+
+ rs_s55,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s56,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s57,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s58,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s59,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ "Directories",
+ rs_s0,
+ rs_s0,
+ SMALL, 1, TE_CNTR, 4480, 9, -1, 12, 1
+};
+
+static int rs_b222img[] = {
+ 0x07ff,0xffff,0xff80,0x0c00,0x0000,0x00c0,0x183f,0xf03f,
+ 0xf060,0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,
+ 0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,
+ 0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,0xf860,
+ 0x1860,0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,
+ 0xf860,0x1860,0x183f,0xf03f,0xf060,0x0c00,0x0000,0x00c0,
+ 0x07ff,0xffff,0xff80,0x0000,0x0000,0x0000,0x3f30,0xc787,
+ 0x8fe0,0x0c39,0xcccc,0xcc00,0x0c36,0xcfcc,0x0f80,0x0c30,
+ 0xcccd,0xcc00,0x3f30,0xccc7,0xcfe0,0x0000,0x0000,0x0000
+};
+
+static int rs_b221img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b220img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b219img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b218img[] = {
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b217img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b216img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b215img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b214img[] = {
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b213img[] = {
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b212img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b211img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b210img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b209img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b208img[] = {
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000
+};
+
+static int rs_b207img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b206img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b205img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b204img[] = {
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000
+};
+
+static int rs_b203img[] = {
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000
+};
+
+static int rs_b202img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b201img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b200img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b199img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b198img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b197img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b196img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b195img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b194img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b193img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b192img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b191img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b190img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b189img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b188img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b187img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b186img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000
+};
+
+static int rs_b185img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b184img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8
+};
+
+static int rs_b183img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b182img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b181img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b180img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b179img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b178img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000
+};
+
+static int rs_b177img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b176img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8
+};
+
+static int rs_b175img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8
+};
+
+static int rs_b174img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b173img[] = {
+ 0x0000,0x0000,0x1c00,0x3e00,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x0000
+};
+
+static int rs_b172img[] = {
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000
+};
+
+static int rs_b171img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b170img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b169img[] = {
+ 0x0000,0x0000,0x1c00,0x3e00,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x0000
+};
+
+static int rs_b168img[] = {
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000
+};
+
+static int rs_b167img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b166img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b165img[] = {
+ 0x0000,0x0000,0x1c00,0x3e00,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x0000
+};
+
+static int rs_b164img[] = {
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000
+};
+
+static int rs_b163img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b162img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b161img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b160img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b159img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b158img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b157img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b156img[] = {
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b155img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b154img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b153img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b152img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b151img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b150img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b149img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b148img[] = {
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b147img[] = {
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b146img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b145img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b144img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b143img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b142img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b141img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b140img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b139img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b138img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b137img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b136img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b135img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b134img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b133img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b132img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b131img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b130img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b129img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b128img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b127img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b126img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b125img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b124img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b123img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000
+};
+
+static int rs_b122img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b121img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b120img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b119img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b118img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b117img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b116img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b115img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b114img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b113img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b112img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b111img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b110img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b109img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b108img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b107img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b106img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b105img[] = {
+ 0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b104img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b103img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b102img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b101img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b100img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b99img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b98img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b97img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b96img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b95img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b94img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b93img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b92img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b91img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b90img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b89img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b88img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b87img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000
+};
+
+static int rs_b86img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b85img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b84img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b83img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b82img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b81img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b80img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b79img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b78img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b77img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b76img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b75img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b74img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b73img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b72img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b71img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b70img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b69img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b68img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b67img[] = {
+ 0xffff,0xfffe,0xffff,0xffff,0xc000,0x0003,0xc03f,0xe003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc01f,0xf003,
+ 0xc000,0x0003,0xc03f,0xe003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc01f,0xf003,
+ 0xc000,0x0003,0xc000,0x0003,0xffff,0xffff,0x7fff,0xffff
+};
+
+static int rs_b66img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x0000,0x0000,0x0000,0x0000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0xffff,0xfffe,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0xffff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b65img[] = {
+ 0x0000,0x0000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x0000,0x0000,0x0000,0x0000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000
+};
+
+static int rs_b64img[] = {
+ 0x0000,0x0000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x0000,0x0000,0x0000,0x0000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000
+};
+
+static int rs_b63img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x007c,0x00fe,0x7ffe,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b62img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x004c,0x00be,0x7f3e,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0038,0x004c,0x00be,0x7f3e,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0038,0x0044,0x0082,0x7f12,0x8012,
+ 0x4012,0x5402,0x2b82,0x0044,0x0038,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0038,0x0044,0x0082,0x7f16,0x8016,
+ 0x47d6,0x7fd6,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b61img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x0044,0x0082,0x7f12,0x8012,
+ 0x4012,0x5412,0x2b82,0x0044,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b60img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x007c,0x00fe,0x7ffe,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b59img[] = {
+ 0x0000,0x0380,0x07c0,0x0fe0,0x0fe0,0x0fe0,0x07c0,0x0380,
+ 0x07c0,0x0fe0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b58img[] = {
+ 0x0000,0x0380,0x04c0,0x09a0,0x0ba0,0x0b20,0x0640,0x0380,
+ 0x0440,0x0820,0x1010,0x1010,0x1010,0x1ff0,0x0000,0x0000,
+ 0x0000,0x0380,0x04c0,0x09a0,0x0ba0,0x0b20,0x0640,0x0380,
+ 0x05c0,0x0be0,0x17f0,0x17f0,0x1ff0,0x1ff0,0x0000,0x0000,
+ 0x0000,0x0380,0x04c0,0x09a0,0x0ba0,0x0b20,0x0640,0x0380,
+ 0x05c0,0x0be0,0x17f0,0x17f0,0x1ff0,0x1ff0,0x0000,0x0000,
+ 0x0000,0x0380,0x0440,0x0860,0x0860,0x08e0,0x05c0,0x0380,
+ 0x0440,0x0860,0x1030,0x1070,0x17f0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b57img[] = {
+ 0x0000,0x0380,0x0440,0x0820,0x0860,0x08a0,0x0540,0x0380,
+ 0x0540,0x0aa0,0x1570,0x1ab0,0x15f0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b56img[] = {
+ 0x0000,0x0380,0x07c0,0x0fe0,0x0fe0,0x0fe0,0x07c0,0x0380,
+ 0x07c0,0x0fe0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b55img[] = {
+ 0x03e0,0x0ff8,0x1ffc,0x3ffe,0x3ffe,0x7fff,0x7fff,0x7fff,
+ 0x7fff,0x7fff,0x3ffe,0x3ffe,0x1ffc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b54img[] = {
+ 0x03e0,0x0d18,0x1604,0x2d5a,0x3e4a,0x4c89,0x5679,0x4c01,
+ 0x6403,0x4009,0x2062,0x2702,0x1004,0x0c18,0x03e0,0x0000,
+ 0x03e0,0x0ff8,0x1ffc,0x3fde,0x3fce,0x7f8d,0x7ffd,0x7ffb,
+ 0x7fff,0x7fe9,0x2ef2,0x27a2,0x1144,0x0c18,0x03e0,0x0000,
+ 0x03e0,0x0ff8,0x1ffc,0x3fde,0x3fce,0x7f8d,0x7ffd,0x7ffb,
+ 0x7fff,0x7fe9,0x2ef2,0x27a2,0x1144,0x0c18,0x03e0,0x0000,
+ 0x03e0,0x0c18,0x1204,0x2002,0x2402,0x4403,0x4003,0x4405,
+ 0x4403,0x401f,0x316e,0x3f5e,0x1ebc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b53img[] = {
+ 0x03e0,0x0ff8,0x1ffc,0x3ffe,0x3ffe,0x7fff,0x7fff,0x7fff,
+ 0x7fff,0x7fff,0x3ffe,0x3ffe,0x1ffc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b52img[] = {
+ 0x0120,0x0838,0x100c,0x2006,0x2002,0x4001,0x0020,0x0001,
+ 0x4001,0x4005,0x310a,0x3a06,0x0a0c,0x0d18,0x0020,0x0000,
+ 0x03e0,0x0d18,0x1604,0x2d52,0x1e4a,0x4c8b,0x5673,0x4c05,
+ 0x6403,0x401b,0x2066,0x275a,0x04bc,0x0ef8,0x02e0,0x0000,
+ 0x0260,0x01c0,0x10d0,0x2908,0x1284,0x4080,0x5589,0x32e1,
+ 0x7380,0x7f03,0x0e8a,0x0004,0x1018,0x0550,0x03c0,0x0000,
+ 0x01a0,0x0730,0x1928,0x3b8c,0x1302,0x738a,0x3c2a,0x4114,
+ 0x2800,0x4015,0x1104,0x1858,0x0ea8,0x02a0,0x0000,0x0000,
+ 0x03c0,0x0fd8,0x09f4,0x1b8a,0x1386,0x338d,0x7dad,0x73fb,
+ 0x7bfd,0x3fe0,0x2e92,0x20a2,0x114c,0x0c18,0x03e0,0x0000,
+ 0x0180,0x0cd8,0x00d4,0x000a,0x0086,0x0009,0x01a8,0x72e0,
+ 0x1381,0x3f02,0x2e88,0x2006,0x1014,0x0948,0x0120,0x0000,
+ 0x0000,0x08e8,0x06dc,0x0456,0x2ccc,0x0c0f,0x03f6,0x3eee,
+ 0x17ff,0x3ffc,0x3ff4,0x3ffa,0x1fe4,0x0aa8,0x0120,0x0000,
+ 0x0000,0x0b08,0x0d24,0x1fda,0x1b48,0x3b89,0x3e78,0x0910,
+ 0x2801,0x0000,0x2000,0x2002,0x1004,0x0808,0x0120,0x0000
+};
+
+static int rs_b51img[] = {
+ 0x03e0,0x0c18,0x1224,0x2052,0x244a,0x4485,0x4059,0x4421,
+ 0x4403,0x400d,0x3062,0x2702,0x1004,0x0d18,0x03e0,0x0000
+};
+
+static int rs_b50img[] = {
+ 0x03e0,0x0ff8,0x1ffc,0x3ffe,0x3ffe,0x7fff,0x7fff,0x7fff,
+ 0x7fff,0x7fff,0x3ffe,0x3ffe,0x1ffc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b49img[] = {
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x03ff,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xffe0,0x1fff,0xfff0,0x3fff,0xfff8,
+ 0x3fff,0xfff8,0x7fff,0xfffc,0x7fff,0xfffc,0x7fff,0xfffc,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0x7fff,0xfffc,
+ 0x7fff,0xfffc,0x7fff,0xfffc,0x3fff,0xfff8,0x3fff,0xfff8,
+ 0x1fff,0xfff0,0x0fff,0xffe0,0x07ff,0xffc0,0x03ff,0xff80,
+ 0x01ff,0xff00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b48img[] = {
+ 0x000f,0xe000,0x0070,0x1c00,0x0180,0x0300,0x0200,0x0080,
+ 0x0500,0x0040,0x0a00,0x0420,0x1000,0x2090,0x2000,0x0008,
+ 0x2600,0x0008,0x4600,0x0004,0x4400,0x8004,0x4000,0x0004,
+ 0x8000,0x0042,0x8000,0x0002,0x8600,0x0002,0x8200,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x4000,0x0004,
+ 0x4300,0x0004,0x4300,0x00e4,0x2180,0x0108,0x3000,0x7808,
+ 0x151a,0x6810,0x0ef8,0x0020,0x0460,0x0040,0x0210,0x0080,
+ 0x0180,0x0300,0x007c,0x1c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0074,0x1c00,0x01a9,0x0300,0x0224,0x4180,
+ 0x05d9,0x0840,0x0b54,0x04a0,0x1fe9,0x3090,0x2a94,0x40d8,
+ 0x3f69,0x40c8,0x6ed4,0xc00c,0x5552,0x8014,0x5548,0x002c,
+ 0x9551,0x014a,0xc888,0x6a36,0xa724,0x0496,0x8800,0x095a,
+ 0xa450,0x0456,0x8000,0x12be,0x8000,0x42aa,0x4000,0x156c,
+ 0x4200,0x92dc,0x4002,0x2b74,0x2148,0xa5d8,0x3405,0x3b78,
+ 0x13cf,0x32f0,0x0944,0xafa0,0x043b,0x5ac0,0x0365,0xbf80,
+ 0x01d5,0x7700,0x007b,0xbc00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0076,0xfc00,0x01ac,0x7f00,0x03a5,0x3f80,
+ 0x075b,0xb2c0,0x0f51,0x6260,0x1ca9,0x8030,0x2f96,0x8008,
+ 0x33e8,0x4008,0x6ed1,0x0014,0x5552,0x0004,0x5543,0x8044,
+ 0x955b,0xc042,0x98dd,0xc082,0xedaf,0xf102,0xa777,0xfe06,
+ 0xf7ff,0xe90a,0xfedf,0xea06,0xdbff,0xa812,0x7fff,0x520c,
+ 0x7efd,0xa80c,0x7df6,0x40ec,0x2a5a,0x91a8,0x3554,0xb858,
+ 0x1b2c,0x1150,0x08c0,0x00a0,0x0420,0x0b40,0x0220,0x2580,
+ 0x0180,0xab00,0x0074,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007d,0x1c00,0x01fb,0x8300,0x03fe,0xc180,
+ 0x077d,0x4440,0x0dfe,0x9520,0x1cbf,0x2090,0x3ffd,0x0058,
+ 0x31ff,0xc0a8,0x7dfe,0x402c,0x7fff,0x8054,0x7ffc,0x402c,
+ 0xfff5,0x000a,0xefaa,0x7276,0xb574,0x0296,0xde88,0x095e,
+ 0xaa50,0x045e,0x8120,0x12ba,0xa400,0x42ba,0x4000,0x156c,
+ 0x4200,0x92d4,0x4302,0x2bfc,0x21c8,0xa438,0x3405,0x5328,
+ 0x1553,0x7bb0,0x0ef2,0xaf20,0x047b,0x51c0,0x0355,0x9a80,
+ 0x01d5,0xdf00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x037f,0xfe80,
+ 0x077f,0xf7c0,0x0fff,0xf760,0x1cbf,0xa0f0,0x3fff,0x8028,
+ 0x37ff,0xc0b8,0x7fff,0x4034,0x7fff,0x806c,0x7fff,0xc054,
+ 0xffff,0xc036,0xffff,0xf3ca,0xffff,0xfb6a,0xf9ff,0xf6a2,
+ 0xfdff,0xfba2,0xffff,0xed42,0xffff,0xbd46,0x7fff,0xea9c,
+ 0x7cff,0x6d24,0x7dfd,0xd4e4,0x3f37,0x5b88,0x3bfa,0xac88,
+ 0x1a2e,0xb410,0x0881,0x5060,0x0784,0xa440,0x02aa,0x4080,
+ 0x01aa,0x0300,0x007c,0x1c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0072,0xfc00,0x0185,0x7f00,0x0381,0x7f80,
+ 0x0702,0xb2c0,0x0c05,0x6660,0x1000,0xa0b0,0x2502,0x8008,
+ 0x2481,0x0088,0x4405,0x4014,0x4400,0x8004,0x400b,0x8044,
+ 0x800a,0xc002,0xd055,0xa282,0xce8b,0xf102,0xaf77,0xfe06,
+ 0xd3af,0xe90a,0xfedf,0xea06,0xdbff,0xa812,0x7fff,0x5204,
+ 0x7cfd,0xa80c,0x7cf6,0x404c,0x2b5a,0x9028,0x3554,0x8058,
+ 0x1822,0x2150,0x0800,0x00a0,0x0400,0x0b40,0x0200,0x2580,
+ 0x0180,0xab00,0x0078,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0072,0xfc00,0x0185,0x7f00,0x0281,0x7f80,
+ 0x0582,0xbbc0,0x0805,0x66e0,0x1340,0xb0f0,0x2002,0xc0f8,
+ 0x2c01,0x00d8,0x4405,0xc01c,0x4400,0x803c,0x400b,0x807c,
+ 0x800a,0xc13e,0xd055,0xabbe,0xce8b,0xfdfe,0xaf77,0xfffa,
+ 0xd3af,0xfff6,0xfedf,0xfffa,0xdbff,0xffea,0x7fff,0xfff4,
+ 0x7dff,0xfff4,0x7eff,0xff54,0x3eff,0xfe58,0x3fff,0xc7a8,
+ 0x1cf1,0xceb0,0x0f3f,0xff60,0x07df,0xf4c0,0x03df,0xda80,
+ 0x01ff,0x5700,0x0073,0xbc00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007d,0x1c00,0x01fa,0x8300,0x037e,0x8080,
+ 0x07fd,0x4c40,0x0ffa,0x95a0,0x1fff,0x3090,0x3ffd,0x4088,
+ 0x3ffe,0xc0e8,0x7ffa,0xc024,0x7fff,0x8044,0x7ff4,0x4004,
+ 0xfff5,0x0102,0xafaa,0x7a42,0xb574,0x0602,0xd488,0x0002,
+ 0xa850,0x0002,0x8120,0x0002,0xa400,0x0002,0x4000,0x0004,
+ 0x4000,0x0004,0x4000,0x0044,0x2000,0x0008,0x3000,0x0008,
+ 0x1000,0x0010,0x0800,0x0020,0x0400,0x0040,0x0200,0x0080,
+ 0x0180,0x0300,0x0070,0x1c00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b47img[] = {
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x03ff,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xffe0,0x1fff,0xfff0,0x3fff,0xfff8,
+ 0x3fff,0xfff8,0x7fff,0xfffc,0x7fff,0xfffc,0x7fff,0xfffc,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0x7fff,0xfffc,
+ 0x7fff,0xfffc,0x7fff,0xfffc,0x3fff,0xfff8,0x3fff,0xfff8,
+ 0x1fff,0xfff0,0x0fff,0xffe0,0x07ff,0xffc0,0x03ff,0xff80,
+ 0x01ff,0xff00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b46img[] = {
+ 0x000f,0xe000,0x0074,0x1c00,0x01a9,0x0300,0x0324,0x4080,
+ 0x07d9,0x0840,0x0d54,0x04a0,0x1fe9,0x3090,0x2a94,0x4088,
+ 0x3d69,0x40c8,0x6cd4,0xc004,0x5552,0x8004,0x5540,0x0004,
+ 0x9551,0x0142,0xc888,0x6a02,0xa524,0x0402,0x8c00,0x0002,
+ 0xa450,0x0002,0x8000,0x0002,0x8000,0x0006,0x4000,0x0004,
+ 0x4200,0x0004,0x4100,0x0044,0x2100,0x0188,0x3000,0x3808,
+ 0x130e,0x2010,0x0840,0x0020,0x0420,0x0040,0x0220,0x0080,
+ 0x0180,0x0300,0x0070,0x1c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x037f,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xf7e0,0x1fff,0xb0f0,0x3fff,0xc0a8,
+ 0x3fff,0xc0f8,0x7fff,0xc034,0x7fff,0x806c,0x7fff,0xc054,
+ 0xffff,0xc176,0xffff,0xfbca,0xffff,0xff6a,0xfdff,0xf6a6,
+ 0xfdff,0xfbaa,0xffff,0xed42,0xffff,0xbd56,0x7fff,0xea94,
+ 0x7eff,0x6d24,0x7dfd,0xd74c,0x3f37,0x5ba8,0x3bfa,0xbc88,
+ 0x1b2e,0xa510,0x0841,0x5060,0x07a4,0xa540,0x02aa,0x4080,
+ 0x01aa,0x8b00,0x0070,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x037f,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xf7e0,0x1fff,0xb0f0,0x3fff,0xc0a8,
+ 0x3fff,0xc0f8,0x7fff,0xc034,0x7fff,0x806c,0x7fff,0xc054,
+ 0xffff,0xc176,0xffff,0xfbca,0xffff,0xff6a,0xfdff,0xf6a6,
+ 0xfdff,0xfbaa,0xffff,0xed42,0xffff,0xbd56,0x7fff,0xea94,
+ 0x7eff,0x6d24,0x7dfd,0xd74c,0x3f37,0x5ba8,0x3bfa,0xbc88,
+ 0x1b2e,0xa510,0x0841,0x5060,0x07a4,0xa540,0x02aa,0x4080,
+ 0x01aa,0x8b00,0x0070,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0070,0x1c00,0x0180,0x0300,0x0280,0x0080,
+ 0x0500,0x0040,0x0800,0x0020,0x1000,0x0010,0x2000,0x0058,
+ 0x2400,0x0008,0x4400,0x000c,0x4400,0x0014,0x4000,0x002c,
+ 0x8000,0x000a,0x8000,0x0036,0x8400,0x0096,0x8600,0x095a,
+ 0x8600,0x0456,0x8000,0x12be,0x8000,0x42ae,0x4000,0x156c,
+ 0x4300,0x92dc,0x4302,0x28f4,0x21c8,0xa5d8,0x3405,0x7b78,
+ 0x17df,0x7af0,0x0ffe,0xafa0,0x047b,0x5ac0,0x0375,0xbf80,
+ 0x01d5,0x7700,0x007f,0xbc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b45img[] = {
+ 0x000f,0xe000,0x0070,0x1c00,0x0180,0x0300,0x0280,0x0080,
+ 0x0500,0x0840,0x0800,0x08a0,0x1000,0x7790,0x2000,0x2088,
+ 0x2400,0x2048,0x4400,0xc064,0x4400,0x2084,0x4000,0x2084,
+ 0x8000,0x3bc2,0x8000,0x6402,0x8400,0x0402,0x8400,0x0002,
+ 0x8400,0x0002,0x8000,0x0002,0x8000,0x0006,0x4000,0x000c,
+ 0x4200,0x0004,0x4100,0x0044,0x2100,0x0188,0x3000,0x1808,
+ 0x130e,0x6010,0x0840,0x0020,0x0420,0x0040,0x0220,0x0080,
+ 0x0180,0x0300,0x0070,0x1c00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b44img[] = {
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x03ff,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xffe0,0x1fff,0xfff0,0x3fff,0xfff8,
+ 0x3fff,0xfff8,0x7fff,0xfffc,0x7fff,0xfffc,0x7fff,0xfffc,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0x7fff,0xfffc,
+ 0x7fff,0xfffc,0x7fff,0xfffc,0x3fff,0xfff8,0x3fff,0xfff8,
+ 0x1fff,0xfff0,0x0fff,0xffe0,0x07ff,0xffc0,0x03ff,0xff80,
+ 0x01ff,0xff00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b43img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4007,0xe003,0x4007,0xf203,0x4007,0xfe03,0x4000,0x7e03,
+ 0x4000,0x3e03,0x407e,0x3e03,0x407c,0x7e03,0x407c,0x0003,
+ 0x407e,0x0003,0x407f,0xc003,0x404f,0xc003,0x4007,0xc003,
+ 0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b42img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4007,0xe002,
+ 0x4007,0xf202,0x4007,0xfe02,0x4000,0x7e02,0x4000,0x3e02,
+ 0x407e,0x3e02,0x407c,0x7e02,0x407c,0x0002,0x407e,0x0002,
+ 0x407f,0xc002,0x404f,0xc002,0x4007,0xc002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b41img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4007,0xe003,0x4007,0xf303,0x4007,0xff03,0x4007,0xff03,
+ 0x4000,0x3f03,0x407f,0xbf03,0x407f,0x7f03,0x407e,0x7f03,
+ 0x407e,0x0003,0x407f,0xe003,0x407f,0xe003,0x4067,0xe003,
+ 0x4047,0xe003,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b40img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0007,0xe000,0x0007,0xf200,0x0007,0xfe00,0x0000,0x7e00,
+ 0x0000,0x3e00,0x007e,0x3e00,0x007c,0x7e00,0x007c,0x0000,
+ 0x007e,0x0000,0x007f,0xc000,0x004f,0xc000,0x0007,0xc000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4007,0xe002,
+ 0x4007,0xf202,0x4007,0xfe02,0x4000,0x7e02,0x4000,0x3e02,
+ 0x407e,0x3e02,0x407c,0x7e02,0x407c,0x0002,0x407e,0x0002,
+ 0x407f,0xc002,0x404f,0xc002,0x4007,0xc002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b39img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4007,0xe002,0x4007,0xf202,0x4007,0xfe02,0x4000,0x7e02,
+ 0x4000,0x3e02,0x407e,0x3e02,0x407c,0x7e02,0x407c,0x0002,
+ 0x407e,0x0002,0x407f,0xc002,0x404f,0xc002,0x4007,0xc002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b38img[] = {
+ 0x7fff,0xfffe,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b37img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4030,0x1803,0x4078,0x3c03,0x407c,0x7c03,0x403e,0xf803,
+ 0x401f,0xf003,0x400f,0xe003,0x4007,0xc003,0x400f,0xe003,
+ 0x401f,0xf003,0x403e,0xf803,0x407c,0x7c03,0x4078,0x3c03,
+ 0x4030,0x1803,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b36img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4030,0x1802,
+ 0x4078,0x3c02,0x407c,0x7c02,0x403e,0xf802,0x401f,0xf002,
+ 0x400f,0xe002,0x4007,0xc002,0x400f,0xe002,0x401f,0xf002,
+ 0x403e,0xf802,0x407c,0x7c02,0x4078,0x3c02,0x4030,0x1802,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b35img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4030,0x1803,0x4078,0x3e03,0x407c,0x7e03,0x403e,0xfe03,
+ 0x401f,0xfc03,0x400f,0xf803,0x4007,0xf003,0x400f,0xe003,
+ 0x401f,0xf003,0x403f,0xf803,0x407f,0x7c03,0x407e,0x3e03,
+ 0x403c,0x1e03,0x4038,0x1c03,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b34img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0030,0x1800,0x0078,0x3c00,0x007c,0x7c00,0x003e,0xf800,
+ 0x001f,0xf000,0x000f,0xe000,0x0007,0xc000,0x000f,0xe000,
+ 0x001f,0xf000,0x003e,0xf800,0x007c,0x7c00,0x0078,0x3c00,
+ 0x0030,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b33img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4030,0x1802,0x4078,0x3c02,0x407c,0x7c02,0x403e,0xf802,
+ 0x401f,0xf002,0x400f,0xe002,0x4007,0xc002,0x400f,0xe002,
+ 0x401f,0xf002,0x403e,0xf802,0x407c,0x7c02,0x4078,0x3c02,
+ 0x4030,0x1802,0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b32img[] = {
+ 0x7fff,0xfffe,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b31img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4001,0x8003,0x4001,0xc003,0x4001,0xe003,0x4001,0xf003,
+ 0x407f,0xf803,0x407f,0xfc03,0x407f,0xfe03,0x407f,0xfc03,
+ 0x407f,0xf803,0x4001,0xf003,0x4001,0xe003,0x4001,0xc003,
+ 0x4001,0x8003,0x4001,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b30img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4001,0x0002,0x4001,0x8002,
+ 0x4001,0xc002,0x4001,0xe002,0x4001,0xf002,0x407f,0xf802,
+ 0x407f,0xfc02,0x407f,0xfe02,0x407f,0xfc02,0x407f,0xf802,
+ 0x4001,0xf002,0x4001,0xe002,0x4001,0xc002,0x4001,0x8002,
+ 0x4001,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b29img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4001,0x8003,0x4001,0xc003,0x4001,0xe003,0x4001,0xf003,
+ 0x407f,0xf803,0x407f,0xfc03,0x407f,0xfe03,0x407f,0xff03,
+ 0x407f,0xfe03,0x407f,0xfc03,0x4001,0xf803,0x4001,0xf003,
+ 0x4001,0xe003,0x4001,0xc003,0x4001,0x8003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b28img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0001,0x0000,0x0001,0x8000,0x0001,0xc000,
+ 0x0001,0xe000,0x0001,0xf000,0x007f,0xf800,0x007f,0xfc00,
+ 0x007f,0xfe00,0x007f,0xfc00,0x007f,0xf800,0x0001,0xf000,
+ 0x0001,0xe000,0x0001,0xc000,0x0001,0x8000,0x0001,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b27img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4001,0x0002,
+ 0x4001,0x8002,0x4001,0x4002,0x4001,0x2002,0x407f,0x1002,
+ 0x4040,0x0802,0x4040,0x0402,0x406a,0xaa02,0x4055,0x5402,
+ 0x406a,0xa802,0x407f,0x5002,0x4001,0xa002,0x4001,0x4002,
+ 0x4001,0x8002,0x4001,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b26img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4001,0x8003,0x4001,0xc003,0x4001,0xe003,0x407f,0xf003,
+ 0x407f,0xf803,0x407f,0xfc03,0x407f,0xfe03,0x407f,0xfc03,
+ 0x407f,0xf803,0x407f,0xf003,0x4001,0xe003,0x4001,0xc003,
+ 0x4001,0x8003,0x4001,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b25img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x1c03,
+ 0x4003,0x9c03,0x4007,0xdc03,0x400f,0xfc03,0x401f,0xfc03,
+ 0x403f,0xfc03,0x407f,0xfc03,0x40ff,0xfe03,0x41ff,0xff03,
+ 0x41ff,0xff03,0x40ff,0xfe03,0x40ff,0xfe03,0x40ff,0xfe03,
+ 0x40ff,0xfe03,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b24img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0001,0x0800,0x0003,0x8800,0x0006,0xc800,0x000d,0x6800,
+ 0x001b,0xb000,0x0037,0xd800,0x006f,0xec00,0x00d8,0x3600,
+ 0x003b,0xb800,0x007b,0xbc00,0x007b,0xbc00,0x007b,0xbc00,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0001,0x0800,0x0003,0x8800,0x0006,0xc800,
+ 0x000d,0x6800,0x001b,0xb000,0x0037,0xd800,0x006f,0xec00,
+ 0x00d8,0x3600,0x003b,0xb800,0x007b,0xbc00,0x007b,0xbc00,
+ 0x007b,0xbc00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0001,0x0800,0x0003,0x8800,
+ 0x0006,0xc800,0x000d,0x6800,0x001b,0xb000,0x0037,0xd800,
+ 0x006f,0xec00,0x00d8,0x3600,0x003b,0xb800,0x007b,0xbc00,
+ 0x007b,0xbc00,0x007b,0xbc00,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4001,0x1c02,0x4002,0x9402,
+ 0x4004,0x5402,0x4009,0x3402,0x4012,0x9402,0x4024,0x4c02,
+ 0x4048,0x2402,0x4090,0x1202,0x4127,0xc902,0x41c4,0x4702,
+ 0x4084,0x4202,0x4084,0x4202,0x4084,0x4202,0x40ff,0xfe02,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b23img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x1c03,
+ 0x4003,0x9e03,0x4007,0xde03,0x400f,0xfe03,0x401f,0xfe03,
+ 0x403f,0xfe03,0x407f,0xfe03,0x40ff,0xfe03,0x41ff,0xff03,
+ 0x41ff,0xff83,0x40ff,0xff83,0x40ff,0xff03,0x40ff,0xff03,
+ 0x40ff,0xff03,0x407f,0xff03,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b22img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x1c00,
+ 0x0003,0x9c00,0x0007,0xdc00,0x000f,0xfc00,0x001e,0xfc00,
+ 0x003c,0x7c00,0x0078,0x3c00,0x00f0,0x1e00,0x01e7,0xcf00,
+ 0x01c7,0xc700,0x0087,0xc200,0x0087,0xc200,0x0087,0xc200,
+ 0x00ff,0xfe00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0001,0x1c00,0x0003,0x9400,0x0007,0xd400,0x000f,0xf400,
+ 0x001e,0xf400,0x003c,0x7c00,0x0078,0x3c00,0x00f0,0x1e00,
+ 0x01e7,0xcf00,0x01c7,0xc700,0x0087,0xc200,0x0087,0xc200,
+ 0x0087,0xc200,0x00ff,0xfe00,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0001,0x1c00,0x0002,0x9400,0x0004,0x5400,
+ 0x0009,0x3400,0x0012,0x9400,0x0024,0x4c00,0x0048,0x2400,
+ 0x0090,0x1200,0x0127,0xc900,0x01c4,0x4700,0x0084,0x4200,
+ 0x0084,0x4200,0x0084,0x4200,0x00ff,0xfe00,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4001,0x1c02,0x4002,0x9602,
+ 0x4004,0x5602,0x4009,0x3602,0x4013,0x9602,0x4026,0xce02,
+ 0x404c,0x6602,0x4098,0x3202,0x4137,0xd902,0x41e7,0xcf82,
+ 0x4087,0xc382,0x4087,0xc302,0x4087,0xc302,0x40ff,0xff02,
+ 0x407f,0xff02,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b21img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4001,0x1c02,
+ 0x4002,0x9c02,0x4004,0x5c02,0x4009,0x3c02,0x4012,0x9c02,
+ 0x4024,0x4c02,0x4048,0x2402,0x4090,0x1202,0x4120,0x0902,
+ 0x41c7,0xc702,0x4087,0xc202,0x4087,0xc202,0x4087,0xc202,
+ 0x4087,0xc202,0x40ff,0xfe02,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b20img[] = {
+ 0x7fff,0xfffe,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b19img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x8003,
+ 0x4001,0x8003,0x4003,0x8003,0x4007,0x8003,0x400f,0x8003,
+ 0x401f,0xfe03,0x403f,0xfe03,0x407f,0xfe03,0x403f,0xfe03,
+ 0x401f,0xfe03,0x400f,0x8003,0x4007,0x8003,0x4003,0x8003,
+ 0x4001,0x8003,0x4000,0x8003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b18img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x8002,0x4001,0x8002,
+ 0x4003,0x8002,0x4007,0x8002,0x400f,0x8002,0x401f,0xfe02,
+ 0x403f,0xfe02,0x407f,0xfe02,0x403f,0xfe02,0x401f,0xfe02,
+ 0x400f,0x8002,0x4007,0x8002,0x4003,0x8002,0x4001,0x8002,
+ 0x4000,0x8002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b17img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0xc003,
+ 0x4001,0xc003,0x4003,0xc003,0x4007,0xc003,0x400f,0xc003,
+ 0x401f,0xff03,0x403f,0xff03,0x407f,0xff03,0x403f,0xff03,
+ 0x401f,0xff03,0x400f,0xff03,0x4007,0xc003,0x4003,0xc003,
+ 0x4001,0xc003,0x4000,0xc003,0x4000,0x4003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b16img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x8000,0x0001,0x8000,0x0003,0x8000,
+ 0x0007,0x8000,0x000f,0x8000,0x001f,0xfe00,0x003f,0xfe00,
+ 0x007f,0xfe00,0x003f,0xfe00,0x001f,0xfe00,0x000f,0x8000,
+ 0x0007,0x8000,0x0003,0x8000,0x0001,0x8000,0x0000,0x8000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b15img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4001,0x0002,
+ 0x4003,0x0002,0x4005,0x0002,0x4009,0x0002,0x4011,0xfc02,
+ 0x4020,0x0402,0x4040,0x0402,0x40aa,0xac02,0x4055,0x5402,
+ 0x402a,0xac02,0x4015,0xfc02,0x400b,0x0002,0x4005,0x0002,
+ 0x4003,0x0002,0x4001,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b14img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4003,0x0003,0x4007,0x0003,0x400f,0x0003,0x401f,0xfc03,
+ 0x403f,0xfc03,0x407f,0xfc03,0x40ff,0xfc03,0x407f,0xfc03,
+ 0x403f,0xfc03,0x401f,0xfc03,0x400f,0x0003,0x4007,0x0003,
+ 0x4003,0x0003,0x4001,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b13img[] = {
+ 0x0000,0x3ffc,0x2004,0x2ff4,0x2004,0x3ffc,0x303c,0x3ffc,
+ 0x2004,0x2ff4,0x2004,0x2fe4,0x2004,0x2ff4,0x2004,0x3ffc
+};
+
+static int rs_b12img[] = {
+ 0x0000,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc
+};
+
+static int rs_b11img[] = {
+ 0x0000,0x0000,0x0180,0x03c0,0x07e0,0x0ff0,0x0180,0x0180,
+ 0x0180,0x0180,0x0180,0x0ff0,0x07e0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b10img[] = {
+ 0x0000,0x0180,0x03c0,0x07e0,0x0ff0,0x1ff8,0x0ff0,0x03c0,
+ 0x03c0,0x03c0,0x0ff0,0x1ff8,0x0ff0,0x07e0,0x03c0,0x0180
+};
+
+static int rs_b9img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0810,0x1818,0x381c,0x7ffe,
+ 0x7ffe,0x381c,0x1818,0x0810,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b8img[] = {
+ 0x0000,0x0000,0x0000,0x0810,0x1c38,0x3c3c,0x7ffe,0xffff,
+ 0xffff,0x7ffe,0x3c3c,0x1c38,0x0810,0x0000,0x0000,0x0000
+};
+
+static int rs_b7img[] = {
+ 0x0000,0x0000,0x1008,0x381c,0x1c38,0x0e70,0x07e0,0x03c0,
+ 0x03c0,0x07e0,0x0e70,0x1c38,0x381c,0x1008,0x0000,0x0000
+};
+
+static int rs_b6img[] = {
+ 0x0000,0x1008,0x381c,0x7c3e,0x3e7c,0x1ff8,0x0ff0,0x07e0,
+ 0x07e0,0x0ff0,0x1ff8,0x3e3c,0x7c3e,0x381c,0x1008,0x0000
+};
+
+static int rs_b5img[] = {
+ 0x0000,0x4000,0x60fe,0x7082,0x78c6,0x7c6c,0x7e38,0x7f38,
+ 0x7fc4,0x7c82,0x6cfe,0x46fe,0x0600,0x0300,0x0300,0x0000
+};
+
+static int rs_b4img[] = {
+ 0xc000,0xe0fe,0xf1ff,0xf9ff,0xfdff,0xfefe,0xff7c,0xfffc,
+ 0xfffe,0xffff,0xffff,0xefff,0xcffe,0x8780,0x0780,0x0380
+};
+
+static int rs_b3img[] = {
+ 0x0000,0x4000,0x60f0,0x71f8,0x7b1c,0x7e3e,0x7e76,0x7ee6,
+ 0x7fc6,0x7f8c,0x6df8,0x46f0,0x0600,0x0300,0x0300,0x0000
+};
+
+static int rs_b2img[] = {
+ 0xc000,0xe0f0,0xf1f8,0xfbfc,0xfffe,0xffff,0xffff,0xffff,
+ 0xffff,0xfffe,0xfffc,0xeff8,0xcff0,0x8780,0x0780,0x0380
+};
+
+static int rs_b1img[] = {
+ 0x0000,0x4000,0x603c,0x707e,0x786e,0x7c1c,0x7e38,0x7f76,
+ 0x7ffe,0x7c3c,0x6c00,0x4618,0x0618,0x0300,0x0300,0x0000
+};
+
+static int rs_b0img[] = {
+ 0xc000,0xe03c,0xf03e,0xf8ff,0xfcff,0xfe7e,0xff7e,0xffff,
+ 0xffff,0xfffe,0xfe3c,0xff3c,0xcf3c,0x8798,0x0780,0x0380
+};
+
+#define RS_NBITBLK 1
+
+static BITBLK rs_bitblk[] = {
+ rs_b222img, 6, 24, 0, 0, 1
+};
+
+#define RS_NICNBLK 7
+
+static ICONBLK rs_icnblk[] = {
+ rs_b0img, rs_b1img, rs_s10, 4096, 0, 0,
+ 0, 0, 16, 16, 8, 2, 0, 0,
+
+ rs_b2img, rs_b3img, rs_s11, 4096, 0, 0,
+ 0, 0, 16, 16, 8, 2, 0, 0,
+
+ rs_b4img, rs_b5img, rs_s12, 4096, 0, 0,
+ 0, 0, 16, 16, 8, 2, 0, 0,
+
+ rs_b6img, rs_b7img, rs_s13, 4096, 6, 6,
+ 0, 0, 16, 16, 7, 8, 0, 0,
+
+ rs_b8img, rs_b9img, rs_s14, 4096, 8, 8,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+
+ rs_b10img, rs_b11img, rs_s15, 4096, 8, 8,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+
+ rs_b12img, rs_b13img, rs_s16, 4096, 7, 8,
+ 0, 0, 16, 16, 5, 5, 0, 0
+};
+
+static CICON rs_cicon[] = {
+#define CI0 0
+/* CICON 0 */
+ 4, rs_b16img, rs_b17img, rs_b18img, rs_b19img, 0L,
+
+#define CI1 1
+/* CICON 1 */
+ 4, rs_b22img, rs_b23img, rs_b24img, rs_b25img, 0L,
+
+#define CI2 2
+/* CICON 2 */
+ 4, rs_b28img, rs_b29img, rs_b30img, rs_b31img, 0L,
+
+#define CI3 3
+/* CICON 3 */
+ 4, rs_b34img, rs_b35img, rs_b36img, rs_b37img, 0L,
+
+#define CI4 4
+/* CICON 4 */
+ 4, rs_b40img, rs_b41img, rs_b42img, rs_b43img, 0L,
+
+#define CI5 5
+/* CICON 5 */
+ 4, rs_b46img, rs_b47img, 0L, 0L, &rs_cicon[6],
+ 8, rs_b48img, rs_b49img, 0L, 0L, 0L,
+
+#define CI6 7
+/* CICON 6 */
+ 8, rs_b52img, rs_b53img, 0L, 0L, &rs_cicon[8],
+ 4, rs_b54img, rs_b55img, 0L, 0L, 0L,
+
+#define CI7 9
+/* CICON 7 */
+ 4, rs_b58img, rs_b59img, 0L, 0L, 0L,
+
+#define CI8 10
+/* CICON 8 */
+ 4, rs_b62img, rs_b63img, 0L, 0L, 0L,
+
+#define CI9 11
+/* CICON 9 */
+ 4, rs_b66img, rs_b67img, 0L, 0L, 0L,
+
+#define CI10 12
+/* CICON 10 */
+ 4, rs_b70img, rs_b71img, 0L, 0L, &rs_cicon[13],
+ 8, rs_b72img, rs_b73img, 0L, 0L, 0L,
+
+#define CI11 14
+/* CICON 11 */
+ 4, rs_b76img, rs_b77img, 0L, 0L, &rs_cicon[15],
+ 8, rs_b78img, rs_b79img, 0L, 0L, 0L,
+
+#define CI12 16
+/* CICON 12 */
+ 4, rs_b82img, rs_b83img, 0L, 0L, &rs_cicon[17],
+ 8, rs_b84img, rs_b85img, 0L, 0L, 0L,
+
+#define CI13 18
+/* CICON 13 */
+ 4, rs_b88img, rs_b89img, 0L, 0L, &rs_cicon[19],
+ 8, rs_b90img, rs_b91img, 0L, 0L, 0L,
+
+#define CI14 20
+/* CICON 14 */
+ 4, rs_b94img, rs_b95img, 0L, 0L, &rs_cicon[21],
+ 8, rs_b96img, rs_b97img, 0L, 0L, 0L,
+
+#define CI15 22
+/* CICON 15 */
+ 4, rs_b100img, rs_b101img, 0L, 0L, &rs_cicon[23],
+ 8, rs_b102img, rs_b103img, 0L, 0L, 0L,
+
+#define CI16 24
+/* CICON 16 */
+ 4, rs_b106img, rs_b107img, 0L, 0L, &rs_cicon[25],
+ 8, rs_b108img, rs_b109img, 0L, 0L, 0L,
+
+#define CI17 26
+/* CICON 17 */
+ 4, rs_b112img, rs_b113img, 0L, 0L, &rs_cicon[27],
+ 8, rs_b114img, rs_b115img, 0L, 0L, 0L,
+
+#define CI18 28
+/* CICON 18 */
+ 4, rs_b118img, rs_b119img, 0L, 0L, &rs_cicon[29],
+ 8, rs_b120img, rs_b121img, 0L, 0L, 0L,
+
+#define CI19 30
+/* CICON 19 */
+ 4, rs_b124img, rs_b125img, 0L, 0L, &rs_cicon[31],
+ 8, rs_b126img, rs_b127img, 0L, 0L, 0L,
+
+#define CI20 32
+/* CICON 20 */
+ 4, rs_b130img, rs_b131img, 0L, 0L, &rs_cicon[33],
+ 8, rs_b132img, rs_b133img, 0L, 0L, 0L,
+
+#define CI21 34
+/* CICON 21 */
+ 4, rs_b136img, rs_b137img, 0L, 0L, &rs_cicon[35],
+ 8, rs_b138img, rs_b139img, 0L, 0L, 0L,
+
+#define CI22 36
+/* CICON 22 */
+ 4, rs_b142img, rs_b143img, 0L, 0L, &rs_cicon[37],
+ 8, rs_b144img, rs_b145img, 0L, 0L, 0L,
+
+#define CI23 38
+/* CICON 23 */
+ 1, rs_b148img, rs_b149img, rs_b150img, rs_b151img, &rs_cicon[39],
+ 4, rs_b152img, rs_b153img, rs_b154img, rs_b155img, &rs_cicon[40],
+ 8, rs_b156img, rs_b157img, rs_b158img, rs_b159img, 0L,
+
+#define CI24 41
+/* CICON 24 */
+ 1, rs_b162img, rs_b163img, rs_b164img, rs_b165img, &rs_cicon[42],
+ 4, rs_b166img, rs_b167img, rs_b168img, rs_b169img, &rs_cicon[43],
+ 8, rs_b170img, rs_b171img, rs_b172img, rs_b173img, 0L,
+
+#define CI25 44
+/* CICON 25 */
+ 1, rs_b176img, rs_b177img, rs_b178img, rs_b179img, &rs_cicon[45],
+ 4, rs_b180img, rs_b181img, rs_b182img, rs_b183img, &rs_cicon[46],
+ 8, rs_b184img, rs_b185img, rs_b186img, rs_b187img, 0L,
+
+#define CI26 47
+/* CICON 26 */
+ 1, rs_b190img, rs_b191img, rs_b192img, rs_b193img, &rs_cicon[48],
+ 4, rs_b194img, rs_b195img, rs_b196img, rs_b197img, &rs_cicon[49],
+ 8, rs_b198img, rs_b199img, rs_b200img, rs_b201img, 0L,
+
+#define CI27 50
+/* CICON 27 */
+ 1, rs_b204img, rs_b205img, rs_b206img, rs_b207img, &rs_cicon[51],
+ 4, rs_b208img, rs_b209img, rs_b210img, rs_b211img, 0L,
+
+#define CI28 52
+/* CICON 28 */
+ 1, rs_b214img, rs_b215img, rs_b216img, rs_b217img, &rs_cicon[53],
+ 4, rs_b218img, rs_b219img, rs_b220img, rs_b221img, 0L
+};
+
+#define RS_NCICNBLK 29
+
+static CICONBLK rs_ciconblk[] = {
+ rs_b14img, rs_b15img, rs_s17, 4096, 0, 0,
+ 0, 0, 32, 21, 12, 7, 0, 0,
+ &rs_cicon[CI0],
+
+ rs_b20img, rs_b21img, rs_s18, 4096, 0, 0,
+ 0, 0, 32, 21, 13, 7, 0, 0,
+ &rs_cicon[CI1],
+
+ rs_b26img, rs_b27img, rs_s19, 4096, 0, 0,
+ 0, 0, 32, 21, 14, 7, 0, 0,
+ &rs_cicon[CI2],
+
+ rs_b32img, rs_b33img, rs_s20, 4096, 0, 0,
+ 0, 0, 32, 21, 13, 7, 0, 0,
+ &rs_cicon[CI3],
+
+ rs_b38img, rs_b39img, rs_s21, 4096, 0, 0,
+ 0, 0, 32, 21, 13, 7, 0, 0,
+ &rs_cicon[CI4],
+
+ rs_b44img, rs_b45img, rs_s22, 4096, 0, 0,
+ 0, 0, 32, 32, 13, 13, 0, 0,
+ &rs_cicon[CI5],
+
+ rs_b50img, rs_b51img, "FAVICON", 4096, 0, 0,
+ 28, 0, 16, 16, 0, 16, 72, 8,
+ &rs_cicon[CI6],
+
+ rs_b56img, rs_b57img, rs_s23, 4096, 5, 6,
+ 0, 0, 16, 16, 5, 5, 6, 8,
+ &rs_cicon[CI7],
+
+ rs_b60img, rs_b61img, rs_s24, 4096, 5, 6,
+ 0, 0, 16, 16, 5, 5, 6, 8,
+ &rs_cicon[CI8],
+
+ rs_b64img, rs_b65img, rs_s25, 4096, 14, 21,
+ 0, 0, 32, 32, 12, 13, 6, 8,
+ &rs_cicon[CI9],
+
+ rs_b68img, rs_b69img, rs_s26, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI10],
+
+ rs_b74img, rs_b75img, rs_s27, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI11],
+
+ rs_b80img, rs_b81img, rs_s28, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI12],
+
+ rs_b86img, rs_b87img, rs_s29, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI13],
+
+ rs_b92img, rs_b93img, rs_s30, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI14],
+
+ rs_b98img, rs_b99img, rs_s31, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI15],
+
+ rs_b104img, rs_b105img, rs_s32, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI16],
+
+ rs_b110img, rs_b111img, rs_s33, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI17],
+
+ rs_b116img, rs_b117img, rs_s34, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI18],
+
+ rs_b122img, rs_b123img, rs_s35, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI19],
+
+ rs_b128img, rs_b129img, rs_s36, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI20],
+
+ rs_b134img, rs_b135img, rs_s37, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI21],
+
+ rs_b140img, rs_b141img, rs_s38, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI22],
+
+ rs_b146img, rs_b147img, rs_s39, 4096, 7, 8,
+ 0, 0, 16, 16, 15, 8, 0, 0,
+ &rs_cicon[CI23],
+
+ rs_b160img, rs_b161img, rs_s40, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI24],
+
+ rs_b174img, rs_b175img, rs_s41, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI25],
+
+ rs_b188img, rs_b189img, rs_s42, 4096, 7, 8,
+ 0, 0, 16, 16, 15, 8, 0, 0,
+ &rs_cicon[CI26],
+
+ rs_b202img, rs_b203img, rs_s43, 4096, 16, 0,
+ 0, 0, 16, 16, 0, 0, 0, 0,
+ &rs_cicon[CI27],
+
+ rs_b212img, rs_b213img, rs_s44, 4096, 16, 0,
+ 0, 0, 16, 16, 0, 0, 0, 0,
+ &rs_cicon[CI28]
+};
+
+#define RS_NOBS 280
+
+static OBJECT rs_obj[] = {
+#define TR0 0
+/* TREE 0 */
+ -1, 1, 10, G_IBOX, /*** 0 ***/
+ NONE,
+ NORMAL,
+ (long) 0L,
+ 0, 0, 80, 25,
+
+ 10, 2, 2, G_BOX, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 80, 513,
+
+ 1, 3, 9, G_IBOX, /*** 2 ***/
+ NONE,
+ NORMAL,
+ (long) 0L,
+ 2, 0, 65, 769,
+
+ 4, -1, -1, G_TITLE, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) " NetSurf ",
+ 0, 0, 11, 769,
+
+ 5, -1, -1, G_TITLE, /*** 4 ***/
+ NONE,
+ NORMAL,
+ (long) " File ",
+ 11, 0, 7, 769,
+
+ 6, -1, -1, G_TITLE, /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) " Edit ",
+ 18, 0, 7, 769,
+
+ 7, -1, -1, G_TITLE, /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) " Display ",
+ 25, 0, 10, 769,
+
+ 8, -1, -1, G_TITLE, /*** 7 ***/
+ NONE,
+ NORMAL,
+ (long) " Navigate ",
+ 35, 0, 11, 769,
+
+ 9, -1, -1, G_TITLE, /*** 8 ***/
+ NONE,
+ NORMAL,
+ (long) " Utilities ",
+ 46, 0, 12, 769,
+
+ 2, -1, -1, G_TITLE, /*** 9 ***/
+ NONE,
+ NORMAL,
+ (long) " Help ",
+ 58, 0, 7, 769,
+
+ 0, 11, 60, G_IBOX, /*** 10 ***/
+ NONE,
+ NORMAL,
+ (long) 0L,
+ 0, 769, 79, 11,
+
+ 20, 12, 19, G_BOX, /*** 11 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 2, 0, 22, 8,
+
+ 13, -1, -1, G_STRING, /*** 12 ***/
+ NONE,
+ NORMAL,
+ (long) " About... ",
+ 0, 0, 22, 1,
+
+ 14, -1, -1, G_STRING, /*** 13 ***/
+ NONE,
+ DISABLED,
+ (long) "----------------------",
+ 0, 1, 22, 1,
+
+ 15, -1, -1, G_STRING, /*** 14 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 1 ",
+ 0, 2, 22, 1,
+
+ 16, -1, -1, G_STRING, /*** 15 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 2",
+ 0, 3, 22, 1,
+
+ 17, -1, -1, G_STRING, /*** 16 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 3",
+ 0, 4, 22, 1,
+
+ 18, -1, -1, G_STRING, /*** 17 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 4",
+ 0, 5, 22, 1,
+
+ 19, -1, -1, G_STRING, /*** 18 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 5",
+ 0, 6, 22, 1,
+
+ 11, -1, -1, G_STRING, /*** 19 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 6",
+ 0, 7, 22, 1,
+
+ 29, 21, 28, G_BOX, /*** 20 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 13, 0, 25, 8,
+
+ 22, -1, -1, G_STRING, /*** 21 ***/
+ NONE,
+ NORMAL,
+ (long) " New window [^N",
+ 0, 0, 25, 1,
+
+ 23, -1, -1, G_STRING, /*** 22 ***/
+ NONE,
+ NORMAL,
+ (long) " Open local file...[^O",
+ 0, 1, 25, 1,
+
+ 24, -1, -1, G_STRING, /*** 23 ***/
+ NONE,
+ NORMAL,
+ (long) " Open location [^G",
+ 0, 2, 25, 1,
+
+ 25, -1, -1, G_STRING, /*** 24 ***/
+ NONE,
+ NORMAL,
+ (long) " Close window",
+ 0, 3, 25, 1,
+
+ 26, -1, -1, G_STRING, /*** 25 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s1,
+ 0, 4, 25, 1,
+
+ 27, -1, -1, G_STRING, /*** 26 ***/
+ NONE,
+ NORMAL,
+ (long) " Save page [^S",
+ 0, 5, 25, 1,
+
+ 28, -1, -1, G_STRING, /*** 27 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s1,
+ 0, 6, 25, 1,
+
+ 20, -1, -1, G_STRING, /*** 28 ***/
+ NONE,
+ NORMAL,
+ (long) " Quit [^Q",
+ 0, 7, 25, 1,
+
+ 35, 30, 34, G_BOX, /*** 29 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 20, 0, 28, 5,
+
+ 31, -1, -1, G_STRING, /*** 30 ***/
+ NONE,
+ NORMAL,
+ (long) " Cut to clipboard [^X",
+ 0, 0, 28, 1,
+
+ 32, -1, -1, G_STRING, /*** 31 ***/
+ NONE,
+ NORMAL,
+ (long) " Copy to clipboard [^C",
+ 0, 1, 28, 1,
+
+ 33, -1, -1, G_STRING, /*** 32 ***/
+ NONE,
+ NORMAL,
+ (long) " Paste from clipboard [^V",
+ 0, 2, 28, 1,
+
+ 34, -1, -1, G_STRING, /*** 33 ***/
+ NONE,
+ DISABLED,
+ (long) "----------------------------",
+ 0, 3, 28, 1,
+
+ 29, -1, -1, G_STRING, /*** 34 ***/
+ NONE,
+ NORMAL,
+ (long) " Find... [F4",
+ 0, 4, 28, 1,
+
+ 47, 36, 46, G_BOX, /*** 35 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 27, 0, 30, 11,
+
+ 37, -1, -1, G_STRING, /*** 36 ***/
+ NONE,
+ NORMAL,
+ (long) " Stop loading this Page [^\033",
+ 0, 0, 30, 1,
+
+ 38, -1, -1, G_STRING, /*** 37 ***/
+ NONE,
+ NORMAL,
+ (long) " Reload [F5",
+ 0, 1, 30, 1,
+
+ 39, -1, -1, G_STRING, /*** 38 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s2,
+ 0, 2, 30, 1,
+
+ 40, -1, -1, G_STRING, /*** 39 ***/
+ NONE,
+ NORMAL,
+ (long) " Scale View...",
+ 0, 3, 30, 1,
+
+ 41, -1, -1, G_STRING, /*** 40 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s2,
+ 0, 4, 30, 1,
+
+ 42, -1, -1, G_STRING, /*** 41 ***/
+ NONE,
+ NORMAL,
+ (long) " Toolbars [^F1",
+ 0, 5, 30, 1,
+
+ 43, -1, -1, G_STRING, /*** 42 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s2,
+ 0, 6, 30, 1,
+
+ 44, -1, -1, G_STRING, /*** 43 ***/
+ NONE,
+ NORMAL,
+ (long) " Save window size",
+ 0, 7, 30, 1,
+
+ 45, -1, -1, G_STRING, /*** 44 ***/
+ NONE,
+ NORMAL,
+ (long) " Debug rendering",
+ 0, 8, 30, 1,
+
+ 46, -1, -1, G_STRING, /*** 45 ***/
+ NONE,
+ NORMAL,
+ (long) " Background images",
+ 0, 9, 30, 1,
+
+ 35, -1, -1, G_STRING, /*** 46 ***/
+ NONE,
+ NORMAL,
+ (long) " Foreground images",
+ 0, 10, 30, 1,
+
+ 51, 48, 50, G_BOX, /*** 47 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 37, 0, 24, 3,
+
+ 49, -1, -1, G_STRING, /*** 48 ***/
+ NONE,
+ NORMAL,
+ (long) " Back one page [@\004",
+ 0, 0, 24, 1,
+
+ 50, -1, -1, G_STRING, /*** 49 ***/
+ NONE,
+ NORMAL,
+ (long) " Forward one page [@\003",
+ 0, 1, 24, 1,
+
+ 47, -1, -1, G_STRING, /*** 50 ***/
+ NONE,
+ NORMAL,
+ (long) " Home",
+ 0, 2, 24, 1,
+
+ 60, 52, 59, G_BOX, /*** 51 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 48, 0, 23, 8,
+
+ 53, -1, -1, G_STRING, /*** 52 ***/
+ NONE,
+ NORMAL,
+ (long) " Local History [F7",
+ 0, 0, 23, 1,
+
+ 54, -1, -1, G_STRING, /*** 53 ***/
+ NONE,
+ NORMAL,
+ (long) " Global History",
+ 0, 1, 23, 1,
+
+ 55, -1, -1, G_STRING, /*** 54 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s3,
+ 0, 2, 23, 1,
+
+ 56, -1, -1, G_STRING, /*** 55 ***/
+ NONE,
+ NORMAL,
+ (long) " Add to bookmarks[^D",
+ 0, 3, 23, 1,
+
+ 57, -1, -1, G_STRING, /*** 56 ***/
+ NONE,
+ NORMAL,
+ (long) " Show bookmarks [F6",
+ 0, 4, 23, 1,
+
+ 58, -1, -1, G_STRING, /*** 57 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s3,
+ 0, 5, 23, 1,
+
+ 59, -1, -1, G_STRING, /*** 58 ***/
+ NONE,
+ NORMAL,
+ (long) " Choices... ",
+ 0, 6, 23, 1,
+
+ 51, -1, -1, G_STRING, /*** 59 ***/
+ NONE,
+ NORMAL,
+ (long) " Verbose Log",
+ 0, 7, 23, 1,
+
+ 10, 61, 61, G_BOX, /*** 60 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 60, 0, 19, 1,
+
+ 60, -1, -1, G_STRING, /*** 61 ***/
+ LASTOB,
+ NORMAL,
+ (long) " Help Content[F1",
+ 0, 0, 19, 1,
+
+#define TR1 62
+/* TREE 1 */
+ -1, 1, 8, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 48, 2049,
+
+ 7, 2, 6, G_BOX, /*** 1 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 21, 1793,
+
+ 3, -1, -1, G_CICON, /*** 2 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[0],
+ 512, 256, 4, 1281,
+
+ 4, -1, -1, G_CICON, /*** 3 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[1],
+ -1531, 256, 4, 1281,
+
+ 5, -1, -1, G_CICON, /*** 4 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[2],
+ 520, 256, 4, 1281,
+
+ 6, -1, -1, G_CICON, /*** 5 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[3],
+ 524, 256, 4, 1281,
+
+ 1, -1, -1, G_CICON, /*** 6 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[4],
+ 23045, 256, 4, 1281,
+
+ 8, -1, -1, G_BOX, /*** 7 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16720240L,
+ 21, 512, 22, 1025,
+
+ 0, -1, -1, G_BOX, /*** 8 ***/
+ LASTOB|FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 45, 256, 1026, 1537,
+
+#define TR2 71
+/* TREE 2 */
+ -1, 1, 2, G_BOX, /*** 0 ***/
+ NONE,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 9, 4,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[5],
+ 2, 1536, 4, 2,
+
+ 0, -1, -1, G_TEXT, /*** 2 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_tedinfo[0],
+ -510, -2557, 517, 2048,
+
+#define TR3 74
+/* TREE 3 */
+ -1, 1, 1, G_BOX, /*** 0 ***/
+ NONE,
+ OUTLINED,
+ (long) 135424L,
+ 0, 0, 11, 4,
+
+ 0, -1, -1, G_CICON, /*** 1 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_ciconblk[6],
+ 1, 1, 9, 2049,
+
+#define TR4 76
+/* TREE 4 */
+ -1, 1, 7, G_BOX, /*** 0 ***/
+ NONE,
+ OUTLINED,
+ (long) 135424L,
+ 0, 0, 42, 3,
+
+ 2, -1, -1, G_ICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[0],
+ 2, 1, 2, 1,
+
+ 3, -1, -1, G_ICON, /*** 2 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[1],
+ 5, 1, 2, 1,
+
+ 4, -1, -1, G_ICON, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[2],
+ 8, 1, 2, 1,
+
+ 5, -1, -1, G_ICON, /*** 4 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[3],
+ 11, 1, 2, 1,
+
+ 6, -1, -1, G_ICON, /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[4],
+ 14, 1, 2, 1,
+
+ 7, -1, -1, G_ICON, /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[5],
+ 17, 1, 2, 1,
+
+ 0, -1, -1, G_ICON, /*** 7 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_icnblk[6],
+ 20, 1, 2, 1,
+
+#define TR5 84
+/* TREE 5 */
+ -1, 1, 6, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 135424L,
+ 0, 0, 1059, 7,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[7],
+ 1025, 1, 2, 1,
+
+ 3, -1, -1, G_FTEXT, /*** 2 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[1],
+ 1028, 1, 29, 1,
+
+ 4, -1, -1, G_CICON, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[8],
+ 1025, 3, 2, 1,
+
+ 5, -1, -1, G_FTEXT, /*** 4 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[2],
+ 1028, 3, 29, 1,
+
+ 6, -1, -1, G_BUTTON, /*** 5 ***/
+ SELECTABLE|DEFAULT|EXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Login",
+ 15, 5, 8, 1,
+
+ 0, -1, -1, G_BUTTON, /*** 6 ***/
+ SELECTABLE|EXIT|LASTOB|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) rs_s4,
+ 25, 5, 8, 1,
+
+#define TR6 91
+/* TREE 6 */
+ -1, 1, 16, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16650496L,
+ 0, 0, 38, 20,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[9],
+ 1, 1, 4, 2,
+
+ 3, -1, -1, G_TEXT, /*** 2 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[3],
+ 6, 1, 31, 1,
+
+ 4, -1, -1, G_TEXT, /*** 3 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[4],
+ 13, 2, 24, 1,
+
+ 5, -1, -1, G_BUTTON, /*** 4 ***/
+ SELECTABLE|DEFAULT|EXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Accept",
+ 1, 18, 7, 1,
+
+ 6, -1, -1, G_BUTTON, /*** 5 ***/
+ SELECTABLE|EXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Reject",
+ 30, 18, 7, 1,
+
+ 7, -1, -1, G_STRING, /*** 6 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) "Server:",
+ 2053, 2, 7, 1,
+
+ 8, -1, -1, G_BUTTON, /*** 7 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND,
+ NORMAL,
+ (long) "NEXT CERT INFO",
+ 513, -1276, 33, 1,
+
+ 9, -1, -1, G_BOX, /*** 8 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16716128L,
+ 1, 5, 34, 11,
+
+ 10, -1, -1, G_BOX, /*** 9 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716049L,
+ 3, 272, -226, 1,
+
+ 11, -1, -1, G_BOXCHAR, /*** 10 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 67047680L,
+ 33, 272, 2, 1,
+
+ 12, -1, -1, G_BOXCHAR, /*** 11 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 83824896L,
+ 2048, 272, 2, 1,
+
+ 13, -1, -1, G_BOX, /*** 12 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 3, 272, 26, 1,
+
+ 14, -1, -1, G_BOXCHAR, /*** 13 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33493248L,
+ 291, 5, 2, 1,
+
+ 15, -1, -1, G_BOXCHAR, /*** 14 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 50270464L,
+ 291, 15, 2, 1,
+
+ 16, -1, -1, G_BOX, /*** 15 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716049L,
+ 291, 6, 2, -247,
+
+ 0, -1, -1, G_BOX, /*** 16 ***/
+ LASTOB|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 291, 6, 2, 1030,
+
+#define TR7 108
+/* TREE 7 */
+ -1, 1, 13, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ OUTLINED,
+ (long) 135424L,
+ 0, 0, 44, 3,
+
+ 2, -1, -1, G_CICON|(119<<8), /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[10],
+ 2, 1, 2, 1,
+
+ 3, -1, -1, G_CICON|(119<<8), /*** 2 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[11],
+ 5, 1, 2, 1,
+
+ 4, -1, -1, G_CICON|(119<<8), /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[12],
+ 8, 1, 2, 1,
+
+ 5, -1, -1, G_CICON|(119<<8), /*** 4 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[13],
+ 11, 1, 2, 1,
+
+ 6, -1, -1, G_CICON|(119<<8), /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[14],
+ 14, 1, 2, 1,
+
+ 7, -1, -1, G_CICON|(119<<8), /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[15],
+ 17, 1, 2, 1,
+
+ 8, -1, -1, G_CICON|(119<<8), /*** 7 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[16],
+ 20, 1, 2, 1,
+
+ 9, -1, -1, G_CICON|(119<<8), /*** 8 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[17],
+ 23, 1, 2, 1,
+
+ 10, -1, -1, G_CICON|(119<<8), /*** 9 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[18],
+ 26, 1, 2, 1,
+
+ 11, -1, -1, G_CICON|(119<<8), /*** 10 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[19],
+ 29, 1, 2, 1,
+
+ 12, -1, -1, G_CICON|(119<<8), /*** 11 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[20],
+ 32, 1, 2, 1,
+
+ 13, -1, -1, G_CICON|(119<<8), /*** 12 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[21],
+ 35, 1, 2, 1,
+
+ 0, -1, -1, G_CICON|(119<<8), /*** 13 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_ciconblk[22],
+ 39, 1, 2, 1,
+
+#define TR8 122
+/* TREE 8 */
+ -1, 1, 4, G_BOX, /*** 0 ***/
+ TOUCHEXIT|FL3DBAK,
+ WHITEBAK,
+ (long) 4352L,
+ 0, 0, 10, 1025,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ SELECTABLE|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[23],
+ 1024, 512, 2, 1,
+
+ 3, -1, -1, G_CICON, /*** 2 ***/
+ SELECTABLE|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[24],
+ 3, 512, 2, 1,
+
+ 4, -1, -1, G_CICON, /*** 3 ***/
+ SELECTABLE|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[25],
+ -504, 512, 2, 1,
+
+ 0, -1, -1, G_CICON, /*** 4 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[26],
+ 1029, 512, 2, 1,
+
+#define TR9 127
+/* TREE 9 */
+ -1, 1, 8, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1, 1, 49, 5,
+
+ 2, -1, -1, G_FTEXT, /*** 1 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[5],
+ 1, 1, 37, 1,
+
+ 3, -1, -1, G_STRING, /*** 2 ***/
+ NONE,
+ DRAW3D,
+ (long) "Show all",
+ 25, 3, 9, 1,
+
+ 4, -1, -1, G_STRING, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) "Case sensitive",
+ 5, 3, 14, 1,
+
+ 5, -1, -1, G_BUTTON, /*** 4 ***/
+ SELECTABLE|DEFAULT|TOUCHEXIT|FL3DIND,
+ WHITEBAK|DRAW3D,
+ (long) "Search",
+ 39, 1, 8, 1,
+
+ 6, -1, -1, G_STRING, /*** 5 ***/
+ NONE,
+ DRAW3D,
+ (long) "Forward",
+ 39, 3, 9, 1,
+
+ 7, -1, -1, G_BUTTON|(18<<8), /*** 6 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND|FL3DBAK,
+ DRAW3D,
+ (long) rs_s0,
+ 2, 3, 2, 1,
+
+ 8, -1, -1, G_BUTTON|(18<<8), /*** 7 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND|FL3DBAK,
+ DRAW3D,
+ (long) rs_s0,
+ 22, 3, 2, 1,
+
+ 0, -1, -1, G_BUTTON|(18<<8), /*** 8 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT|FL3DIND|FL3DBAK,
+ SELECTED|DRAW3D,
+ (long) rs_s0,
+ 36, 3, 2, 1,
+
+#define TR10 136
+/* TREE 10 */
+ -1, 1, 9, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16650496L,
+ 0, 0, 40, 6,
+
+ 3, 2, 2, G_BOX, /*** 1 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 69953L,
+ 1, 1, 1061, 1,
+
+ 1, -1, -1, G_BOX, /*** 2 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 70003L,
+ 0, 0, 513, 1,
+
+ 4, -1, -1, G_TEXT, /*** 3 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[6],
+ 1, 0, 38, 1,
+
+ 5, -1, -1, G_BUTTON, /*** 4 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) rs_s4,
+ 31, 4, 8, 1,
+
+ 6, -1, -1, G_STRING, /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) "Close dialog when finished",
+ 4, 4, 26, 1,
+
+ 7, -1, -1, G_TEXT, /*** 6 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[7],
+ 1, 2, 21, 1,
+
+ 8, -1, -1, G_TEXT, /*** 7 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[8],
+ 22, 2, 5, 1,
+
+ 9, -1, -1, G_TEXT, /*** 8 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[9],
+ 29, 2, 11, 1,
+
+ 0, -1, -1, G_BOXCHAR|(18<<8), /*** 9 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT|FL3DIND|FL3DBAK,
+ CROSSED|SHADOWED,
+ (long) 4096L,
+ 1025, 516, 1025, -1023,
+
+#define TR11 146
+/* TREE 11 */
+ -1, 1, 1, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ OUTLINED,
+ (long) 135424L,
+ 1, 1, 52, 9,
+
+ 0, -1, -1, G_IMAGE, /*** 1 ***/
+ LASTOB|FL3DBAK,
+ NORMAL,
+ (long) &rs_bitblk[0],
+ 3, 1, 6, 2049,
+
+#define TR12 148
+/* TREE 12 */
+ -1, 1, 11, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16650496L,
+ 0, 0, 22, 11,
+
+ 2, -1, -1, G_TEXT, /*** 1 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[10],
+ 0, 0, 22, 1,
+
+ 3, -1, -1, G_TEXT, /*** 2 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[11],
+ 0, 1, 22, 1,
+
+ 4, -1, -1, G_TEXT, /*** 3 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[12],
+ 0, 2, 22, 1,
+
+ 5, -1, -1, G_TEXT, /*** 4 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[13],
+ 0, 3, 22, 1,
+
+ 6, -1, -1, G_TEXT, /*** 5 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[14],
+ 0, 4, 22, 1,
+
+ 7, -1, -1, G_TEXT, /*** 6 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[15],
+ 0, 5, 22, 1,
+
+ 8, -1, -1, G_TEXT, /*** 7 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[16],
+ 0, 6, 22, 1,
+
+ 9, -1, -1, G_TEXT, /*** 8 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[17],
+ 0, 7, 22, 1,
+
+ 10, -1, -1, G_TEXT, /*** 9 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[18],
+ 0, 8, 22, 1,
+
+ 11, -1, -1, G_TEXT, /*** 10 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[19],
+ 0, 10, 22, 1,
+
+ 0, -1, -1, G_TEXT, /*** 11 ***/
+ SELECTABLE|LASTOB|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[20],
+ 0, 9, 22, 1,
+
+#define TR13 160
+/* TREE 13 */
+ -1, 1, 1, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1, 1, 11, 9,
+
+ 0, 2, 4, G_BOX, /*** 1 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 69888L,
+ 1, 1, -509, 7,
+
+ 7, 3, 3, G_BUTTON, /*** 2 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED,
+ (long) rs_s0,
+ 768, 1537, 2, 3,
+
+ 2, -1, -1, G_BUTTON, /*** 3 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) rs_s0,
+ 0, 0, 2, 2,
+
+ 1, -1, -1, G_CICON, /*** 4 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) &rs_ciconblk[28],
+ 768, 512, 2, 1,
+
+ 7, -1, -1, G_CICON, /*** 5 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_ciconblk[27],
+ 512, 256, 2, 1,
+
+ 4, -1, -1, G_IBOX, /*** 6 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 256, 256, 1026, 513,
+
+ 6, 5, 5, G_IBOX, /*** 7 ***/
+ LASTOB|FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 256, -2298, 1026, 513,
+
+#define TR14 168
+/* TREE 14 */
+ -1, 1, 86, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 63, 2112,
+
+ 2, -1, -1, G_BUTTON, /*** 1 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Save",
+ 1077, 63, 8, 1,
+
+ 3, -1, -1, G_BUTTON, /*** 2 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) rs_s4,
+ 1067, 63, 8, 1,
+
+ 32, 4, 31, G_IBOX, /*** 3 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 63, 2062,
+
+ 31, 5, 30, G_BOX, /*** 4 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 13,
+
+ 6, -1, -1, G_FTEXT, /*** 5 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[21],
+ 1, 1, 54, 1,
+
+ 7, -1, -1, G_STRING, /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) "Hide advertisements",
+ 1028, 2050, 27, 1,
+
+ 8, -1, -1, G_STRING|(18<<8), /*** 7 ***/
+ NONE,
+ DRAW3D|STATE8,
+ (long) "Disable pop-up windows",
+ 1028, 4, 27, 1,
+
+ 9, -1, -1, G_BOXCHAR|(101<<8), /*** 8 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 2050, 2, 1,
+
+ 10, -1, -1, G_BOXCHAR|(101<<8), /*** 9 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 4, 2, 1,
+
+ 11, -1, -1, G_STRING, /*** 10 ***/
+ NONE,
+ NORMAL,
+ (long) "Send referrer",
+ 1063, 2050, 1044, 1,
+
+ 12, -1, -1, G_BOXCHAR|(101<<8), /*** 11 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1060, 2050, 2, 1,
+
+ 13, -1, -1, G_STRING, /*** 12 ***/
+ NONE,
+ NORMAL,
+ (long) "Send do not track",
+ 1063, 4, 1044, 1,
+
+ 14, -1, -1, G_BOXCHAR|(101<<8), /*** 13 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1060, 4, 2, 1,
+
+ 15, -1, -1, G_STRING, /*** 14 ***/
+ NONE,
+ NORMAL,
+ (long) "Keep history:",
+ 1026, 9, 13, 1,
+
+ 16, -1, -1, G_BUTTON, /*** 15 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Clear history",
+ 1060, 9, 13, 1,
+
+ 17, -1, -1, G_STRING, /*** 16 ***/
+ NONE,
+ NORMAL,
+ (long) "Request locale:",
+ 1, 6, 15, 1,
+
+ 18, -1, -1, G_BUTTON, /*** 17 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ DRAW3D|STATE8,
+ (long) "______",
+ 1042, 6, 8, 1,
+
+ 19, -1, -1, G_STRING, /*** 18 ***/
+ NONE,
+ DISABLED,
+ (long) "GUI language:",
+ 1026, 2055, 13, 1,
+
+ 20, -1, -1, G_BUTTON, /*** 19 ***/
+ SELECTABLE|FL3DBAK,
+ DISABLED|DRAW3D|STATE8,
+ (long) "en",
+ 1042, 2055, 8, 1,
+
+ 21, -1, -1, G_STRING, /*** 20 ***/
+ NONE,
+ NORMAL,
+ (long) "Memory Cache:",
+ 1026, 2058, 13, 1,
+
+ 26, 22, 25, G_IBOX, /*** 21 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1042, 2058, 15, 1,
+
+ 23, -1, -1, G_BOXCHAR, /*** 22 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 7, 0, 2, 1,
+
+ 24, -1, -1, G_BOXCHAR, /*** 23 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 25, -1, -1, G_STRING, /*** 24 ***/
+ NONE,
+ DRAW3D,
+ (long) "999.5",
+ 2, 0, 5, 1,
+
+ 21, -1, -1, G_STRING, /*** 25 ***/
+ NONE,
+ NORMAL,
+ (long) "MB",
+ 1034, 0, 3, 1,
+
+ 30, 27, 29, G_IBOX, /*** 26 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1042, 9, 15, 1,
+
+ 28, -1, -1, G_BOXCHAR, /*** 27 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 29, -1, -1, G_FTEXT, /*** 28 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[22],
+ 2, 0, 1028, 1,
+
+ 26, -1, -1, G_BOXCHAR, /*** 29 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 7, 0, 2, 1,
+
+ 4, -1, -1, G_STRING, /*** 30 ***/
+ NONE,
+ NORMAL,
+ (long) "Days",
+ 29, 9, 1028, 1,
+
+ 3, -1, -1, G_FTEXT, /*** 31 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[23],
+ 2, 2048, 8, 1,
+
+ 59, 33, 58, G_IBOX, /*** 32 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 15, 63, 15,
+
+ 58, 34, 54, G_BOX, /*** 33 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 2061,
+
+ 35, -1, -1, G_BOXCHAR|(101<<8), /*** 34 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 1, 2, 1,
+
+ 36, -1, -1, G_STRING, /*** 35 ***/
+ NONE,
+ NORMAL,
+ (long) "Enable Proxy",
+ 1028, 1, 13, 1,
+
+ 37, -1, -1, G_FTEXT, /*** 36 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[24],
+ 1, 2050, 43, 1,
+
+ 38, -1, -1, G_STRING, /*** 37 ***/
+ NONE,
+ NORMAL,
+ (long) ":",
+ 44, 2050, 1, 1,
+
+ 39, -1, -1, G_FTEXT, /*** 38 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[25],
+ 45, 2050, 5, 1,
+
+ 40, -1, -1, G_BOXCHAR|(101<<8), /*** 39 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 4, 2, 1,
+
+ 41, -1, -1, G_STRING, /*** 40 ***/
+ NONE,
+ NORMAL,
+ (long) "Proxy Authentication",
+ 1028, 4, 20, 1,
+
+ 42, -1, -1, G_FTEXT, /*** 41 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[26],
+ 1, 2053, 49, 1,
+
+ 43, -1, -1, G_FTEXT, /*** 42 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[27],
+ 1, 7, 49, 1,
+
+ 44, -1, -1, G_STRING, /*** 43 ***/
+ EDITABLE|FL3DBAK,
+ DRAW3D,
+ (long) "Maximum fetchers:",
+ 1, 9, 21, 1,
+
+ 45, -1, -1, G_STRING, /*** 44 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) "Fetchers per Host:",
+ 1, 2058, 21, 1,
+
+ 46, -1, -1, G_STRING, /*** 45 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) "Cached connections:",
+ 1, 12, 21, 1,
+
+ 50, 47, 49, G_IBOX, /*** 46 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 9, 8, 1,
+
+ 48, -1, -1, G_FTEXT, /*** 47 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[28],
+ 2, 0, 2, 1,
+
+ 49, -1, -1, G_BOXCHAR, /*** 48 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 4, 0, 2, 1,
+
+ 46, -1, -1, G_BOXCHAR, /*** 49 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 54, 51, 53, G_IBOX, /*** 50 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 2058, 8, 1,
+
+ 52, -1, -1, G_BOXCHAR, /*** 51 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 53, -1, -1, G_FTEXT, /*** 52 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[29],
+ 2, 0, 2, 1,
+
+ 50, -1, -1, G_BOXCHAR, /*** 53 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 4, 0, 2, 1,
+
+ 33, 55, 57, G_IBOX, /*** 54 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 12, 1032, 1,
+
+ 56, -1, -1, G_BOXCHAR, /*** 55 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 57, -1, -1, G_FTEXT, /*** 56 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[30],
+ 2, 0, 2, 1,
+
+ 54, -1, -1, G_BOXCHAR, /*** 57 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 4, 0, 2, 1,
+
+ 32, -1, -1, G_TEXT, /*** 58 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[31],
+ 3, 2048, 8, 1,
+
+ 86, 60, 85, G_IBOX, /*** 59 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 2078, 63, 15,
+
+ 85, 61, 108, G_BOX, /*** 60 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 14,
+
+ 62, -1, -1, G_STRING, /*** 61 ***/
+ NONE,
+ NORMAL,
+ (long) "Font renderer:",
+ 1025, 1, 14, 1,
+
+ 63, -1, -1, G_BUTTON, /*** 62 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) "_freetype_",
+ 1041, 1, 12, 1,
+
+ 64, -1, -1, G_BOXCHAR|(101<<8), /*** 63 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1060, 1, 2, 1,
+
+ 65, -1, -1, G_STRING, /*** 64 ***/
+ NONE,
+ NORMAL,
+ (long) "Anti Aliasing",
+ 1063, 1, 13, 1,
+
+ 66, -1, -1, G_BOXCHAR|(101<<8), /*** 65 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 8, 2, 1,
+
+ 75, -1, -1, G_STRING, /*** 66 ***/
+ NONE,
+ NORMAL,
+ (long) "Transparent Images",
+ 1028, 8, 18, 1,
+
+ 68, -1, -1, G_BOXCHAR|(101<<8), /*** 67 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 0, 2, 1,
+
+ 100, -1, -1, G_STRING, /*** 68 ***/
+ NONE,
+ NORMAL,
+ (long) "Enable Animations",
+ 1028, 0, 17, 1,
+
+ 71, -1, -1, G_STRING, /*** 69 ***/
+ NONE,
+ NORMAL,
+ (long) "Limit speed to",
+ 1024, 0, 15, 1,
+
+ 99, -1, -1, G_STRING, /*** 70 ***/
+ NONE,
+ NORMAL,
+ (long) "seconds between frames.",
+ 1048, 0, 24, 1,
+
+ 70, 72, 74, G_IBOX, /*** 71 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 16, 0, 1032, 1,
+
+ 73, -1, -1, G_FTEXT, /*** 72 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[34],
+ 2, 0, 3, 1,
+
+ 74, -1, -1, G_BOXCHAR, /*** 73 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 5, 0, 2, 1,
+
+ 71, -1, -1, G_BOXCHAR, /*** 74 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 76, -1, -1, G_STRING, /*** 75 ***/
+ NONE,
+ NORMAL,
+ (long) "Default Font Size:",
+ 1025, 2050, 18, 1,
+
+ 80, 77, 79, G_IBOX, /*** 76 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 2050, 10, 1,
+
+ 78, -1, -1, G_FTEXT, /*** 77 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[32],
+ 2, 0, 3, 1,
+
+ 79, -1, -1, G_BOXCHAR, /*** 78 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 76, -1, -1, G_BOXCHAR, /*** 79 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 5, 0, 2, 1,
+
+ 84, 81, 83, G_IBOX, /*** 80 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 4, 9, 1,
+
+ 82, -1, -1, G_FTEXT, /*** 81 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[33],
+ 2, 0, 3, 1,
+
+ 83, -1, -1, G_BOXCHAR, /*** 82 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 80, -1, -1, G_BOXCHAR, /*** 83 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 5, 0, 2, 1,
+
+ 99, -1, -1, G_STRING, /*** 84 ***/
+ NONE,
+ NORMAL,
+ (long) "Minimum Font Size:",
+ 1025, 4, 18, 1,
+
+ 59, -1, -1, G_TEXT, /*** 85 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[36],
+ 3, 2048, 9, 1,
+
+ 0, 87, 88, G_IBOX, /*** 86 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 46, 63, 15,
+
+ 88, 89, 98, G_BOX, /*** 87 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 2061,
+
+ 86, -1, -1, G_TEXT, /*** 88 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[42],
+ 1027, 2048, 11, 1,
+
+ 90, -1, -1, G_STRING, /*** 89 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "Downloads:",
+ 1, 2048, 11, 1,
+
+ 91, -1, -1, G_FTEXT, /*** 90 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED|DRAW3D,
+ (long) &rs_tedinfo[37],
+ 1039, 2048, 44, 1,
+
+ 92, -1, -1, G_FTEXT, /*** 91 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[38],
+ 1039, 2, 44, 1,
+
+ 93, -1, -1, G_FTEXT, /*** 92 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[39],
+ 1039, 2051, 44, 1,
+
+ 94, -1, -1, G_FTEXT, /*** 93 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[40],
+ 1039, 5, 44, 1,
+
+ 95, -1, -1, G_FTEXT, /*** 94 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[41],
+ 1039, 2054, 44, 1,
+
+ 96, -1, -1, G_STRING, /*** 95 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "Hotlist:",
+ 3, 2, 8, 1,
+
+ 97, -1, -1, G_STRING, /*** 96 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "CA Bundle:",
+ 1, 2051, 10, 1,
+
+ 98, -1, -1, G_STRING, /*** 97 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "CA Certs:",
+ 2, 5, 9, 1,
+
+ 87, -1, -1, G_STRING, /*** 98 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "Editor:",
+ 4, 2054, 7, 1,
+
+ 100, 69, 70, G_IBOX, /*** 99 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 4, 11, 1074, 1,
+
+ 101, 67, 68, G_IBOX, /*** 100 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 2057, 1053, 1,
+
+ 104, 102, 103, G_IBOX, /*** 101 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 2054, 1053, 1,
+
+ 103, -1, -1, G_BOXCHAR|(101<<8), /*** 102 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 0, 2, 1,
+
+ 101, -1, -1, G_STRING, /*** 103 ***/
+ NONE,
+ NORMAL,
+ (long) "Background Images",
+ 1028, 0, 17, 1,
+
+ 107, 105, 106, G_IBOX, /*** 104 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 34, 2054, 1048, 1,
+
+ 106, -1, -1, G_BOXCHAR|(101<<8), /*** 105 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 2, 0, 2, 1,
+
+ 104, -1, -1, G_STRING, /*** 106 ***/
+ NONE,
+ NORMAL,
+ (long) "Foreground Images",
+ 5, 0, 17, 1,
+
+ 108, -1, -1, G_STRING, /*** 107 ***/
+ NONE,
+ NORMAL,
+ (long) "Minimum reflow period (ms):",
+ 1028, 2060, 27, 1,
+
+ 60, 109, 111, G_IBOX, /*** 108 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1059, 2060, 13, 1,
+
+ 110, -1, -1, G_FTEXT, /*** 109 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[35],
+ 2, 0, 4, 1,
+
+ 111, -1, -1, G_BOXCHAR, /*** 110 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 108, -1, -1, G_BOXCHAR, /*** 111 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 6, 0, 2, 1
+};
+
+OBJECT *MAINMENU = &rs_obj[TR0];
+OBJECT *TOOLBAR = &rs_obj[TR1];
+OBJECT *ICONIFY = &rs_obj[TR2];
+OBJECT *FAVICON = &rs_obj[TR3];
+OBJECT *CURSOR = &rs_obj[TR4];
+OBJECT *LOGIN = &rs_obj[TR5];
+OBJECT *VERIFY = &rs_obj[TR6];
+OBJECT *THROBBER = &rs_obj[TR7];
+OBJECT *TOOLBAR_HOTLIST = &rs_obj[TR8];
+OBJECT *SEARCH = &rs_obj[TR9];
+OBJECT *DOWNLOAD = &rs_obj[TR10];
+OBJECT *ABOUT = &rs_obj[TR11];
+OBJECT *POP_CTX = &rs_obj[TR12];
+OBJECT *VSCROLLER = &rs_obj[TR13];
+OBJECT *SETTINGS = &rs_obj[TR14];
+
+
+void rs_init(void);
+void rs_exit(void);
+
+LONG rs_ciconinit(CICONBLK *ciconblks, WORD ncib, OBJECT *objects, WORD nobj);
+void rs_ciconexit(LONG deskript);
+
+static LONG rs_cid;
+void rs_init(void)
+{
+ register OBJECT *obj=rs_obj;
+ register WORD i=0;
+
+ do
+ {
+ rsrc_obfix(obj, i);
+ } while (++i<RS_NOBS);
+ rs_cid = rs_ciconinit(&rs_ciconblk[0], 29, &rs_obj[0], 280);
+}
+void rs_exit(void)
+{
+ rs_ciconexit(rs_cid);
+}
diff --git a/atari/search.c.old b/atari/search.c.old
new file mode 100644
index 0000000..efe6ceb
--- /dev/null
+++ b/atari/search.c.old
@@ -0,0 +1,375 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Module Description:
+ *
+ *
+ *
+ */
+
+
+#include <limits.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdbool.h>
+#include <assert.h>
+
+#include "desktop/gui.h"
+#include "desktop/browser.h"
+#include "desktop/browser_private.h"
+#include "desktop/search.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "atari/gui.h"
+#include "atari/rootwin.h"
+#include "atari/misc.h"
+#include "atari/search.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern struct gui_window * input_window;
+extern void * h_gem_rsrc;
+extern GRECT desk_area;
+
+
+static SEARCH_FORM_SESSION current;
+static OBJECT *dlgtree;
+static GUIWIN *searchwin;
+static short h_aes_win;
+
+static void nsatari_search_set_status(bool found, void *p);
+static void nsatari_search_set_hourglass(bool active, void *p);
+static void nsatari_search_add_recent(const char *string, void *p);
+void nsatari_search_set_forward_state(bool active, void *p);
+void nsatari_search_set_back_state(bool active, void *p);
+
+static struct gui_search_callbacks nsatari_search_callbacks = {
+ nsatari_search_set_forward_state,
+ nsatari_search_set_back_state,
+ nsatari_search_set_status,
+ nsatari_search_set_hourglass,
+ nsatari_search_add_recent
+};
+
+
+/**
+* Change the displayed search status.
+* \param found search pattern matched in text
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_status(bool found, void *p)
+{
+ LOG(("%p set status: %d\n", p, found));
+}
+
+/**
+* display hourglass while searching
+* \param active start/stop indicator
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_hourglass(bool active, void *p)
+{
+ SEARCH_FORM_SESSION s = (SEARCH_FORM_SESSION)p;
+ LOG((""));
+ if (active && current != NULL)
+ gui_window_set_pointer(s->bw->window, GUI_POINTER_PROGRESS);
+ else
+ gui_window_set_pointer(s->bw->window, GUI_POINTER_DEFAULT);
+}
+
+/**
+* add search string to recent searches list
+* front is at liberty how to implement the bare notification
+* should normally store a strdup() of the string;
+* core gives no guarantee of the integrity of the const char *
+* \param string search pattern
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_add_recent(const char *string, void *p)
+{
+ LOG(("%p add recent: %s\n", p, string));
+}
+
+/**
+* activate search forwards button in gui
+* \param active activate/inactivate
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_forward_state(bool active, void *p)
+{
+ SEARCH_FORM_SESSION s = (SEARCH_FORM_SESSION)p;
+ /* deactivate back cb */
+ LOG(("%p: set forward state: %d\n", p, active));
+}
+
+/**
+* activate search back button in gui
+* \param active activate/inactivate
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_back_state(bool active, void *p)
+{
+ SEARCH_FORM_SESSION s = (SEARCH_FORM_SESSION)p;
+ /* deactivate back cb */
+ LOG(("%p: set back state: %d\n", p, active));
+}
+
+/*
+void search_redraw(void *session, GRECT *clip)
+{
+ GRECT area, clipped_area;
+ struct gui_window *gw = input_window;
+ short pxy[4];
+ VdiHdl vh;
+
+ if(gw == NULL)
+ return;
+
+ window_get_grect(gw->root, BROWSER_AREA_SEARCH, &area);
+
+ clipped_area = area;
+
+ if (!rc_intersect(clip, &clipped_area)) {
+ return;
+ }
+
+ OBJECT * tree = get_tree(SEARCH);
+ tree->ob_x = area.g_x;
+ tree->ob_y = area.g_y;
+ tree->ob_width = area.g_w;
+ tree->ob_height = area.g_h;
+
+ objc_draw_grect(tree, 0, 8, &clipped_area);
+}
+*/
+
+static SEARCH_FORM_SESSION get_search_session(GUIWIN * win)
+{
+ return (current);
+}
+
+
+
+static void set_text( short idx, char * text, int len )
+{
+ char spare[255];
+
+ if( len > 254 )
+ len = 254;
+ if( text != NULL ){
+ strncpy(spare, text, 254);
+ } else {
+ strcpy(spare, "");
+ }
+
+ set_string(dlgtree, idx, spare);
+}
+
+static void destroy_search_session(SEARCH_FORM_SESSION s)
+{
+ if(s != NULL ){
+ LOG((""));
+ free(s);
+ }
+}
+
+static int apply_form(GUIWIN *win, struct s_search_form_state * s)
+{
+ OBJECT * obj = dlgtree;
+ char * cstr;
+
+ if( obj == NULL ){
+ goto error;
+ }
+
+ s->flags = 0;
+ if( (obj[SEARCH_CB_FWD].ob_state & OS_SELECTED) != 0 )
+ s->flags = SEARCH_FLAG_FORWARDS;
+ if( (obj[SEARCH_CB_CASESENSE].ob_state & OS_SELECTED) != 0 )
+ s->flags |= SEARCH_FLAG_CASE_SENSITIVE;
+ if( (obj[SEARCH_CB_SHOWALL].ob_state & OS_SELECTED) != 0 )
+ s->flags |= SEARCH_FLAG_SHOWALL;
+
+ cstr = get_text(dlgtree, SEARCH_TB_SRCH);
+ snprintf(s->text, 31, "%s", cstr);
+ return ( 0 );
+
+error:
+ s->flags = SEARCH_FLAG_FORWARDS;
+ strncpy((char*)&s->text[0], "", 31 );
+ return( 1 );
+}
+
+/* checks for search parameters changes */
+static bool form_changed(GUIWIN * w)
+{
+ bool check;
+ struct s_search_form_state cur;
+ SEARCH_FORM_SESSION s = get_search_session(w);
+ if( s == NULL )
+ return false;
+ OBJECT * obj = dlgtree;
+ assert(s != NULL && obj != NULL);
+ uint32_t flags_old = s->state.flags;
+ apply_form(w, &cur);
+
+ /* adjust the forward flag, it should not init an new search */
+ flags_old |= SEARCH_FLAG_FORWARDS;
+ cur.flags |= SEARCH_FLAG_FORWARDS;
+ if( cur.flags != flags_old ){
+ return( true );
+ }
+
+ char * cstr;
+ cstr = get_text(obj, SEARCH_TB_SRCH);
+ if (cstr != NULL){
+ if (strcmp(cstr, (char*)&s->state.text) != 0) {
+ return (true);
+ }
+ }
+
+ return( false );
+}
+
+
+static void __CDECL evnt_bt_srch_click(GUIWIN * win, int index, int unused, void *unused2)
+{
+
+ bool fwd;
+ SEARCH_FORM_SESSION s = get_search_session(searchwin);
+ OBJECT * obj = dlgtree;
+ search_flags_t flags = 0;
+
+
+ if( form_changed(searchwin) ){
+ browser_window_search_destroy_context(s->bw);
+ apply_form(searchwin, &s->state);
+ } else {
+ /* get search direction manually: */
+ if( (obj[SEARCH_CB_FWD].ob_state & OS_SELECTED) != 0 )
+ s->state.flags |= SEARCH_FLAG_FORWARDS;
+ else
+ s->state.flags &= (~SEARCH_FLAG_FORWARDS);
+ }
+ if( browser_window_search_verify_new(s->bw, &nsatari_search_callbacks, s) ){
+ browser_window_search_step(s->bw, s->state.flags, get_text(obj, SEARCH_TB_SRCH));
+ }
+
+}
+
+static void __CDECL evnt_cb_click(GUIWIN *win, int index, int unused, void *unused2)
+{
+
+ short newstate;
+
+}
+
+static void __CDECL evnt_close(GUIWIN *win, short buff[8])
+{
+
+}
+
+void search_destroy(struct gui_window *gw)
+{
+ /* Free Search Contexts */
+ /* todo: destroy search context, if any? */
+ LOG((""));
+
+ if (current != NULL){
+ destroy_search_session(current);
+ current = NULL;
+ }
+
+ guiwin_remove(searchwin);
+ searchwin = NULL;
+
+ wind_close(h_aes_win);
+ wind_delete(h_aes_win);
+ h_aes_win = -1;
+
+ LOG(("done"));
+}
+
+SEARCH_FORM_SESSION open_browser_search(struct gui_window * gw)
+{
+ char * title;
+ SEARCH_FORM_SESSION sfs;
+ GRECT pos, treesize;
+ uint32_t kind = CLOSER | NAME | MOVER;
+
+ if (dlgtree == NULL) {
+ dlgtree = get_tree(SEARCH);
+ if (dlgtree == NULL) {
+ return( NULL );
+ }
+ }
+
+ if(searchwin){
+ search_destroy(gw);
+ }
+
+
+ sfs = calloc(1, sizeof(struct s_search_form_session));
+ if( sfs == NULL )
+ return( NULL );
+
+ title = (char*)messages_get("FindTextNS");
+ if (title == NULL)
+ title = (char*)"Find text ...";
+
+ /* setup dipslay position: right corner */
+ treesize.g_x = 0;
+ treesize.g_y = 0;
+ treesize.g_w = dlgtree->ob_width;
+ treesize.g_h = dlgtree->ob_height;
+ wind_calc_grect(WC_BORDER, kind, &treesize, &pos);
+ pos.g_x = desk_area.g_w - pos.g_w;
+ pos.g_y = desk_area.g_h - pos.g_h;
+
+ /* create the dialog: */
+ h_aes_win = wind_create_grect(kind, &pos);
+ wind_set_str(h_aes_win, WF_NAME, title);
+
+
+ current = sfs;
+ sfs->bw = gw->browser->bw;
+/*
+ sfs->formwind = mt_FormCreate( &app, tree, WAT_FORM,
+ NULL, title,
+ &pos, true, false);
+*/
+/*
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_BT_SEARCH, evnt_bt_srch_click,
+ NULL);
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_CB_CASESENSE, evnt_cb_click, NULL);
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_CB_SHOWALL, evnt_cb_click, NULL);
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_CB_FWD, evnt_cb_click, NULL);
+ EvntAdd(sfs->formwind, WM_CLOSED, evnt_close, EV_TOP);
+*/
+ apply_form(searchwin, &sfs->state );
+ set_text(SEARCH_TB_SRCH, (char*)"", 31);
+
+ return(current);
+
+}
diff --git a/atari/search.h.old b/atari/search.h.old
new file mode 100644
index 0000000..5cb8d07
--- /dev/null
+++ b/atari/search.h.old
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Module Description:
+ *
+ *
+ *
+ */
+
+
+#ifndef NS_ATARI_SEARCH_H
+#define NS_ATARI_SEARCH_H
+
+#define SEARCH_MAX_SLEN 24
+
+struct gui_window;
+struct browser_window;
+
+struct s_search_form_state
+{
+ char text[32];
+ uint32_t flags;
+};
+
+struct s_search_form_session {
+ struct browser_window * bw;
+ struct s_search_form_state state;
+};
+
+
+typedef struct s_search_form_session * SEARCH_FORM_SESSION;
+
+SEARCH_FORM_SESSION open_browser_search(struct gui_window * gw);
+void search_destroy(struct gui_window * gw);
+
+struct s_search_session
+
+#endif
diff --git a/atari/treeview.c b/atari/treeview.c
old mode 100755
new mode 100644
index 8565484..7ea039c
--- a/atari/treeview.c
+++ b/atari/treeview.c
@@ -1,455 +1,179 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
+#include <inttypes.h>
+#include <sys/types.h>
#include <string.h>
-#include <time.h>
+
+#include "assert.h"
+#include "cflib.h"
+
+#include "utils/nsoption.h"
#include "content/urldb.h"
#include "desktop/browser.h"
#include "desktop/plotters.h"
-#include "desktop/textinput.h"
-#include "desktop/tree.h"
-#include "desktop/textinput.h"
+#include "desktop/mouse.h"
+#include "desktop/treeview.h"
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
#include "atari/gui.h"
-#include "atari/treeview.h"
#include "atari/plot/plot.h"
#include "atari/misc.h"
#include "atari/gemtk/gemtk.h"
-#include "cflib.h"
+#include "atari/treeview.h"
-enum treeview_area_e {
- TREEVIEW_AREA_WORK = 0,
- TREEVIEW_AREA_TOOLBAR,
- TREEVIEW_AREA_CONTENT
-};
-extern int mouse_hold_start[3];
-extern browser_mouse_state bmstate;
-extern short last_drag_x;
-extern short last_drag_y;
-extern long atari_plot_flags;
-extern int atari_plot_vdi_handle;
-
-static void atari_treeview_resized(struct tree *tree,int w,int h, void *pw);
-static void atari_treeview_scroll_visible(int y, int h, void *pw);
-static void atari_treeview_get_dimensions(int *width, int *height, void *pw);
-static void atari_treeview_get_grect(NSTREEVIEW tree,
- enum treeview_area_e mode, GRECT *dest);
-
-static const struct treeview_table atari_tree_callbacks = {
- atari_treeview_request_redraw,
- atari_treeview_resized,
- atari_treeview_scroll_visible,
- atari_treeview_get_dimensions
+/**
+ * Declare Core Window Callbacks:
+ */
+
+void atari_treeview_redraw_request(struct core_window *cw,
+ const struct rect *r);
+void atari_treeview_update_size(struct core_window *cw, int width, int height);
+void atari_treeview_scroll_visible(struct core_window *cw,
+ const struct rect *r);
+void atari_treeview_get_window_dimensions(struct core_window *cw,
+ int *width, int *height);
+void atari_treeview_drag_status(struct core_window *cw,
+ core_window_drag_status ds);
+
+
+static struct core_window_callback_table cw_t = {
+ .redraw_request = atari_treeview_redraw_request,
+ .update_size = atari_treeview_update_size,
+ .scroll_visible = atari_treeview_scroll_visible,
+ .get_window_dimensions = atari_treeview_get_window_dimensions,
+ .drag_status = atari_treeview_drag_status
};
-static void __CDECL on_mbutton_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8]);
-static void __CDECL on_keybd_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8]);
-static void __CDECL on_redraw_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8]);
-static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
-{
-
- NSTREEVIEW tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
-
- if( (ev_out->emo_events & MU_MESAG) != 0 ) {
- // handle message
- switch (msg[0]) {
-
- case WM_REDRAW:
- on_redraw_event(tv, ev_out, msg);
- break;
-
- case WM_SIZED:
- case WM_FULLED:
- //atari_treeview_resized(tv->tree, tv->extent.x, tv->extent.y, tv);
- break;
-
- default:
- break;
- }
- }
- if( (ev_out->emo_events & MU_KEYBD) != 0 ) {
- on_keybd_event(tv, ev_out, msg);
- }
- if( (ev_out->emo_events & MU_BUTTON) != 0 ) {
- LOG(("Treeview click at: %d,%d\n", ev_out->emo_mouse.p_x,
- ev_out->emo_mouse.p_y));
- on_mbutton_event(tv, ev_out, msg);
- }
-
- if(tv != NULL && tv->user_func != NULL){
- tv->user_func(win, ev_out, msg);
- }
-
- return(0);
-}
+struct atari_treeview_window {
+ GUIWIN * window;
+ bool disposing;
+ bool redraw;
+ GRECT rdw_area;
+ POINT extent;
+ POINT click;
+ POINT startdrag;
+ struct atari_treeview_callbacks *io;
+};
-static void __CDECL on_keybd_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8])
-{
- bool r=false;
- long kstate = 0;
- long kcode = 0;
- long ucs4;
- long ik;
- unsigned short nkc = 0;
- unsigned short nks = 0;
- unsigned char ascii;
-
- kstate = ev_out->emo_kmeta;
- kcode = ev_out->emo_kreturn;
- nkc= gem_to_norm( (short)kstate, (short)kcode );
- ascii = (nkc & 0xFF);
- ik = nkc_to_input_key( nkc, &ucs4 );
-
- if( ik == 0 ){
- if (ascii >= 9 ) {
- r = tree_keypress( tv->tree, ucs4 );
- }
- } else {
- r = tree_keypress( tv->tree, ik );
- }
-}
+typedef struct atari_treeview_window *ATARI_TREEVIEW;
-static void __CDECL on_redraw_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8])
-{
- GRECT work, clip;
- struct gemtk_wm_scroll_info_s *slid;
-
- if( tv == NULL )
- return;
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
-
- clip = work;
- if ( !rc_intersect( (GRECT*)&msg[4], &clip ) ) return;
- clip.g_x -= work.g_x;
- clip.g_y -= work.g_y;
- if( clip.g_x < 0 ) {
- clip.g_w = work.g_w + clip.g_x;
- clip.g_x = 0;
- }
- if( clip.g_y < 0 ) {
- clip.g_h = work.g_h + clip.g_y;
- clip.g_y = 0;
- }
- if( clip.g_h > 0 && clip.g_w > 0 ) {
- // TODO: get slider values
- atari_treeview_request_redraw((slid->x_pos*slid->x_unit_px) + clip.g_x,
- (slid->y_pos*slid->y_unit_px) + clip.g_y,
- clip.g_w, clip.g_h, tv
- );
- }
-}
+/* native GUI event handlers: */
+static void __CDECL on_mbutton_event(struct atari_treeview_window tvw,
+ EVMULT_OUT *ev_out, short msg[8]);
+static void __CDECL on_keybd_event(struct atari_treeview_window tvw,
+ EVMULT_OUT *ev_out, short msg[8]);
+static void __CDECL on_redraw_event(struct atari_treeview_window tvw,
+ EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_mbutton_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8])
+/* GEMTK event sink: */
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
- struct gemtk_wm_scroll_info_s *slid;
- GRECT work;
- short mx, my;
-
- if(tv == NULL)
- return;
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
- mx = ev_out->emo_mouse.p_x;
- my = ev_out->emo_mouse.p_y;
-
- /* mouse click relative origin: */
-
- short origin_rel_x = (mx-work.g_x) +
- (slid->x_pos*slid->x_unit_px);
- short origin_rel_y = (my-work.g_y) +
- (slid->y_pos*slid->y_unit_px);
-
- if( origin_rel_x >= 0 && origin_rel_y >= 0
- && mx < work.g_x + work.g_w
- && my < work.g_y + work.g_h )
- {
- int bms;
- bool ignore=false;
- short cur_rel_x, cur_rel_y, dummy, mbut;
-
- if (ev_out->emo_mclicks == 2) {
- tree_mouse_action(tv->tree,
- BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_DOUBLE_CLICK,
- origin_rel_x, origin_rel_y );
- return;
- }
- graf_mkstate(&cur_rel_x, &cur_rel_x, &mbut, &dummy);
- if( (mbut&1) == 0 ){
- bms = BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1;
- if(ev_out->emo_mclicks == 2 ) {
- bms = BROWSER_MOUSE_DOUBLE_CLICK;
- }
- tree_mouse_action(tv->tree, bms, origin_rel_x, origin_rel_y );
- } else {
- /* button still pressed */
-
- short prev_x = origin_rel_x;
- short prev_y = origin_rel_y;
-
- cur_rel_x = origin_rel_x;
- cur_rel_y = origin_rel_y;
-
- gem_set_cursor(&gem_cursors.hand);
-
- tv->startdrag.x = origin_rel_x;
- tv->startdrag.y = origin_rel_y;
-
- tree_mouse_action( tv->tree,
- BROWSER_MOUSE_DRAG_1 | BROWSER_MOUSE_DRAG_ON ,
- cur_rel_x, cur_rel_y );
- do{
- if( abs(prev_x-cur_rel_x) > 5 || abs(prev_y-cur_rel_y) > 5 ){
- tree_mouse_action( tv->tree,
- BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_ON,
- cur_rel_x, cur_rel_y);
- prev_x = cur_rel_x;
- prev_y = cur_rel_y;
- }
-
- if( tv->redraw )
- atari_treeview_redraw( tv );
- /* sample mouse button state: */
- graf_mkstate(&cur_rel_x, &cur_rel_y, &mbut, &dummy);
- cur_rel_x = (cur_rel_x-work.g_x)+(slid->x_pos*slid->x_unit_px);
- cur_rel_y = (cur_rel_y-work.g_y)+(slid->y_pos*slid->y_unit_px);
- } while( mbut & 1 );
-
- tree_drag_end(tv->tree, 0, tv->startdrag.x, tv->startdrag.y,
- cur_rel_x, cur_rel_y );
- gem_set_cursor(&gem_cursors.arrow);
- }
- }
}
-NSTREEVIEW atari_treeview_create(uint32_t flags, GUIWIN *win,
- gemtk_wm_event_handler_f user_func)
-{
- struct gemtk_wm_scroll_info_s *slid;
- NSTREEVIEW new;
-
- if( win == NULL )
- return( NULL );
-
- new = malloc(sizeof(struct atari_treeview));
- if (new == NULL)
- return NULL;
-
- memset(new, 0, sizeof(struct atari_treeview));
- /* Store the window ref inside the new treeview: */
- new->window = win;
- new->user_func = user_func;
-
- // Setup gemtk event handler function and set the userdata
- // to be the new treeview:
- gemtk_wm_set_event_handler(win, handle_event);
- gemtk_wm_set_user_data(win, (void*)new);
+struct atari_treeview_window *
+atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
+ uint32_t flags)
+{
+/*
+ init_func();
- // Get acces to the gemtk scroll info struct:
- slid = gemtk_wm_get_scroll_info(new->window);
+ sslcert_viewer_init(&cw_t, (struct core_window *)tree,
+ ssl_current_session);
+*/
- // Setup line and column height/width of the window,
- // each scroll takes the configured steps:
- slid->y_unit_px = 16;
- slid->x_unit_px = 16;
+ /* allocate the core_window struct: */
+ struct atari_treeview_window * cw;
- // now create a new netsurf tree:
- new->tree = tree_create(flags, &atari_tree_callbacks, new);
- if (new->tree == NULL) {
- free(new);
+ cw = calloc(sizeof(struct atari_treeview_window), 1);
+ if (cw == NULL) {
+ LOG(("calloc failed"));
+ warn_user(messages_get_errorcode(NSERROR_NOMEM), 0);
return NULL;
}
- return(new);
-}
+ cw->window = win;
+ cw->io = callbacks;
-void atari_treeview_open( NSTREEVIEW tv )
-{
- if( tv->window != NULL ) {
- gemtk_wm_link(tv->window);
- }
-}
+ assert(cw->io);
+ assert(cw->io->init);
-void atari_treeview_close(NSTREEVIEW tv)
-{
- if(tv->window != NULL) {
- gemtk_wm_unlink(tv->window);
+ nserror err = cw->io->init(cw, &cw_t);
+ if (err != NSERROR_OK) {
+ free(cw);
+ cw = NULL;
}
-}
-void atari_treeview_destroy( NSTREEVIEW tv )
-{
- if( tv != NULL ){
- tv->disposing = true;
- LOG(("tree: %p", tv));
- if( tv->tree != NULL ) {
- tree_delete(tv->tree);
- tv->tree = NULL;
- }
- free( tv );
- }
+ return(cw);
}
-bool atari_treeview_mevent( NSTREEVIEW tv, browser_mouse_state bms, int x, int y)
+void atari_treeview_delete(struct atari_treeview_window * cw)
{
- GRECT work;
- struct gemtk_wm_scroll_info_s *slid;
-
- if( tv == NULL )
- return ( false );
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
-
- int rx = (x-work.g_x)+(slid->x_pos*slid->x_unit_px);
- int ry = (y-work.g_y)+(slid->y_pos*slid->y_unit_px);
-
- tree_mouse_action(tv->tree, bms, rx, ry);
+ assert(cw);
+ assert(cw->io->fini);
- tv->click.x = rx;
- tv->click.y = ry;
+ cw->io->fini(cw);
- return( true );
+ free(cw);
}
-void atari_treeview_redraw(NSTREEVIEW tv)
-{
- if (tv != NULL) {
- if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
-
- short todo[4];
- GRECT work;
- short handle = gemtk_wm_get_handle(tv->window);
- struct gemtk_wm_scroll_info_s *slid;
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
-
- struct redraw_context ctx = {
- .interactive = true,
- .background_images = true,
- .plot = &atari_plotters
- };
- plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
- if (plot_lock() == false)
- return;
-
- if( wind_get(handle, WF_FIRSTXYWH,
- &todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
- while (todo[2] && todo[3]) {
-
- short pxy[4];
- pxy[0] = todo[0];
- pxy[1] = todo[1];
- pxy[2] = todo[0] + todo[2]-1;
- pxy[3] = todo[1] + todo[3]-1;
- vs_clip(atari_plot_vdi_handle, 1, (short*)&pxy);
-
- /* convert screen to treeview coords: */
- todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
- todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
- if( todo[0] < 0 ){
- todo[2] = todo[2] + todo[0];
- todo[0] = 0;
- }
- if( todo[1] < 0 ){
- todo[3] = todo[3] + todo[1];
- todo[1] = 0;
- }
-
- // TODO: get slider values
- if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
- tree_draw(tv->tree, -(slid->x_pos*slid->x_unit_px),
- -(slid->y_pos*slid->y_unit_px),
- todo[0], todo[1], todo[2], todo[3], &ctx
- );
- }
- vs_clip(atari_plot_vdi_handle, 0, (short*)&pxy);
- if (wind_get(handle, WF_NEXTXYWH,
- &todo[0], &todo[1], &todo[2], &todo[3])==0) {
- break;
- }
- }
- } else {
- plot_unlock();
- return;
- }
- plot_unlock();
- tv->redraw = false;
- tv->rdw_area.g_x = 65000;
- tv->rdw_area.g_y = 65000;
- tv->rdw_area.g_w = -1;
- tv->rdw_area.g_h = -1;
- } else {
- /* just copy stuff from the offscreen buffer */
- }
- }
-}
+/**
+ * Core Window Callbacks:
+ */
/**
- * Callback to force a redraw of part of the treeview window.
+ * Request a redraw of the window
*
- * \param x Min X Coordinate of area to be redrawn.
- * \param y Min Y Coordinate of area to be redrawn.
- * \param width Width of area to be redrawn.
- * \param height Height of area to be redrawn.
- * \param pw The treeview object to be redrawn.
+ * \param cw the core window object
+ * \param r rectangle to redraw
*/
-void atari_treeview_request_redraw(int x, int y, int w, int h, void *pw)
+void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
{
- if ( pw != NULL ) {
- NSTREEVIEW tv = (NSTREEVIEW) pw;
+ GRECT area;
+
+ RECT_TO_GRECT(r, &area)
+
+ if (cw != NULL) {
+ ATARI_TREEVIEW tv = (ATARI_TREEVIEW) cw;
if( tv->redraw == false ){
tv->redraw = true;
- tv->rdw_area.g_x = x;
- tv->rdw_area.g_y = y;
- tv->rdw_area.g_w = w;
- tv->rdw_area.g_h = h;
+ tv->rdw_area.g_x = area.g_x;
+ tv->rdw_area.g_y = area.g_y;
+ tv->rdw_area.g_w = area.g_w;
+ tv->rdw_area.g_h = area.g_h;
} else {
/* merge the redraw area to the new area.: */
- int newx1 = x+w;
- int newy1 = y+h;
+ int newx1 = area.g_x+area.g_w;
+ int newy1 = area.g_y+area.g_h;
int oldx1 = tv->rdw_area.g_x + tv->rdw_area.g_w;
int oldy1 = tv->rdw_area.g_y + tv->rdw_area.g_h;
- tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, x);
- tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, y);
+ tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, area.g_x);
+ tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, area.g_y);
tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
}
@@ -457,89 +181,54 @@ void atari_treeview_request_redraw(int x, int y, int w, int h, void *pw)
}
}
-
/**
- * Callback to notify us of a new overall tree size.
+ * Update the limits of the window
*
- * \param tree The tree being resized.
- * \param width The new width of the window.
- * \param height The new height of the window.
- * \param *pw The treeview object to be resized.
+ * \param cw the core window object
+ * \param width the width in px, or negative if don't care
+ * \param height the height in px, or negative if don't care
*/
-
-void atari_treeview_resized(struct tree *tree, int width, int height, void *pw)
+void atari_treeview_update_size(struct core_window *cw, int width, int height)
{
- GRECT area;
- if (pw != NULL) {
- NSTREEVIEW tv = (NSTREEVIEW) pw;
- if( tv->disposing )
- return;
-
- tv->extent.x = width;
- tv->extent.y = height;
-
- struct gemtk_wm_scroll_info_s *slid = gemtk_wm_get_scroll_info(tv->window);
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &area);
-
- if(width > -1) {
- slid->x_units = (width/slid->x_unit_px);
- gemtk_wm_update_slider(tv->window, GEMTK_WM_HSLIDER);
- }
- if(height > -1){
- slid->y_units = (height/slid->y_unit_px);
- gemtk_wm_update_slider(tv->window, GEMTK_WM_VSLIDER);
- }
-
- /*printf("units content: %d, units viewport: %d\n", (height/slid->y_unit_px),
- (area.g_h/slid->y_unit_px));*/
- //gemtk_wm_update_slider(tv->window, GEMTK_WM_VH_SLIDER);
- }
}
/**
- * Callback to request that a section of the tree is scrolled into view.
+ * Scroll the window to make area visible
*
- * \param y The Y coordinate of top of the area in NS units.
- * \param height The height of the area in NS units.
- * \param *pw The treeview object affected.
+ * \param cw the core window object
+ * \param r rectangle to make visible
*/
-
-void atari_treeview_scroll_visible(int y, int height, void *pw)
+void atari_treeview_scroll_visible(struct core_window *cw, const struct rect *r)
{
- /* we don't support dragging outside the treeview */
- /* so we don't need to implement this? */
+
}
-static void atari_treeview_get_grect(NSTREEVIEW tv, enum treeview_area_e mode,
- GRECT *dest)
+
+/**
+ * Get window viewport dimensions
+ *
+ * \param cw the core window object
+ * \param width to be set to viewport width in px, if non NULL
+ * \param height to be set to viewport height in px, if non NULL
+ */
+void atari_treeview_get_window_dimensions(struct core_window *cw,
+ int *width, int *height)
{
- if (mode == TREEVIEW_AREA_CONTENT) {
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, dest);
- }
- else if (mode == TREEVIEW_AREA_TOOLBAR) {
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, dest);
- }
}
+
/**
- * Callback to return the tree window dimensions to the treeview system.
+ * Inform corewindow owner of drag status
*
- * \param *width Return the window width.
- * \param *height Return the window height.
- * \param *pw The treeview object to use.
+ * \param cw the core window object
+ * \param ds the current drag status
*/
-
-void atari_treeview_get_dimensions(int *width, int *height,
- void *pw)
+void atari_treeview_drag_status(struct core_window *cw,
+ core_window_drag_status ds)
{
- if (pw != NULL && (width != NULL || height != NULL)) {
- NSTREEVIEW tv = (NSTREEVIEW) pw;
- GRECT work;
- atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &work);
- *width = work.g_w;
- *height = work.g_h;
- }
+
}
+
diff --git a/atari/treeview.h b/atari/treeview.h
old mode 100755
new mode 100644
index 664b3a4..f8e4c42
--- a/atari/treeview.h
+++ b/atari/treeview.h
@@ -1,55 +1,41 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef NS_ATARI_TREEVIEW_H
-#define NS_ATARI_TREEVIEW_H
-
-#include <stdbool.h>
-#include "desktop/tree.h"
-#include "atari/gui.h"
-#include "atari/gemtk/gemtk.h"
-
-#define ATARI_TREEVIEW_WIDGETS (CLOSER | MOVER | SIZER| NAME | FULLER | SMALLER | VSLIDE | HSLIDE | UPARROW | DNARROW | LFARROW | RTARROW)
-
-struct atari_treeview
-{
- struct tree * tree;
- GUIWIN * window;
- bool disposing;
- bool redraw;
- GRECT rdw_area;
- POINT extent;
- POINT click;
- POINT startdrag;
- gemtk_wm_event_handler_f user_func;
+#ifndef NSATARI_TREEVIEW_H
+#define NSATARI_TREEVIEW_H
+
+struct atari_treeview_callbacks {
+ nserror (*init)(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+ void (*fini)(struct core_window *cw);
+ void (*draw)(struct core_window *cw);
+ void (*keypress)(struct core_window *cw);
+ void (*mouse)(struct core_window *cw);
+ gemtk_wm_event_handler_f gemtk_user_func;
};
-typedef struct atari_treeview * NSTREEVIEW;
-
-NSTREEVIEW atari_treeview_create( uint32_t flags, GUIWIN *win,
- gemtk_wm_event_handler_f user_func);
-void atari_treeview_destroy( NSTREEVIEW tv );
-void atari_treeview_open( NSTREEVIEW tv );
-void atari_treeview_close( NSTREEVIEW tv );
-void atari_treeview_request_redraw(int x, int y, int w, int h, void *pw);
-void atari_treeview_redraw( NSTREEVIEW tv );
-bool atari_treeview_mevent( NSTREEVIEW tv, browser_mouse_state bms, int x, int y);
+struct atari_treeview_callbacks;
+struct atari_treeview_window;
+struct atari_treeview_window *
+atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
+ uint32_t flags);
+void atari_treeview_delete(struct atari_treeview_window * cw);
+#endif //NSATARI_TREEVIEW_H
-#endif
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=5d6d4b87c529aceee57...
commit 5d6d4b87c529aceee5754f7cfa5db0965f4ee37e
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Fixed RECT_TO_GRECT macro
diff --git a/atari/misc.h b/atari/misc.h
index 32ced65..667e52f 100755
--- a/atari/misc.h
+++ b/atari/misc.h
@@ -36,10 +36,10 @@
lbuf[7] = (long)sbuf[7];
#define RECT_TO_GRECT(r,g) \
- g->g_x = (r->x0 < r->x1) ? r->x0 : r->x1 ; \
- g->g_y = (r->y0 < r->y1) ? r->y0 : r->y1 ; \
- g->g_w = (r->x0 < r->x1) ? r->x1 - r->x0 : r->x0 - r->x1 ; \
- g->g_h = (r->y0 < r->y1) ? r->y1 - r->y0 : r->y0 - r->y1 ;
+ (g)->g_x = (r->x0 < r->x1) ? r->x0 : r->x1 ; \
+ (g)->g_y = (r->y0 < r->y1) ? r->y0 : r->y1 ; \
+ (g)->g_w = (r->x0 < r->x1) ? r->x1 - r->x0 : r->x0 - r->x1 ; \
+ (g)->g_h = (r->y0 < r->y1) ? r->y1 - r->y0 : r->y0 - r->y1 ;
-----------------------------------------------------------------------
Summary of changes:
atari/Makefile.target | 24 +-
atari/Makefile.target.orig | 120 +
beos/download.h => atari/cookies.c | 33 +-
atari/history.c | 183 +--
atari/history.h | 45 -
atari/hotlist.c | 241 +--
atari/hotlist.h | 46 -
atari/misc.h | 8 +-
atari/{ => old_treeview}/history.c | 2 +
atari/{ => old_treeview}/history.h | 0
atari/{ => old_treeview}/hotlist.c | 0
atari/{ => old_treeview}/hotlist.h | 0
atari/plot/fontplot.c | 6 +-
atari/res/netsurf.c | 4379 ++++++++++++++++++++++++++++++++++++
atari/search.c.old | 375 +++
atari/{search.h => search.h.old} | 15 +-
atari/treeview.c | 601 ++----
atari/treeview.h | 82 +-
18 files changed, 5127 insertions(+), 1033 deletions(-)
create mode 100644 atari/Makefile.target.orig
copy beos/download.h => atari/cookies.c (91%)
create mode 100644 atari/cookies.h
mode change 100755 => 100644 atari/history.c
mode change 100755 => 100644 atari/history.h
mode change 100755 => 100644 atari/hotlist.c
mode change 100755 => 100644 atari/hotlist.h
copy atari/{ => old_treeview}/history.c (97%)
copy atari/{ => old_treeview}/history.h (100%)
copy atari/{ => old_treeview}/hotlist.c (100%)
copy atari/{ => old_treeview}/hotlist.h (100%)
create mode 100644 atari/res/netsurf.c
create mode 100644 atari/search.c.old
copy atari/{search.h => search.h.old} (70%)
mode change 100755 => 100644 atari/treeview.c
mode change 100755 => 100644 atari/treeview.h
diff --git a/atari/Makefile.target b/atari/Makefile.target
index 0ffe9e7..fee4963 100644
--- a/atari/Makefile.target
+++ b/atari/Makefile.target
@@ -40,7 +40,7 @@ $(eval $(call feature_enabled,PNG,-DWITH_PNG,-lpng,PNG (libpng)))
$(eval $(call feature_enabled,MOZJS,$(SPIDERMONKEY_CFLAGS),-ljs,JavaScript (Spidermonkey)))
$(eval $(call feature_enabled,ATARI_FREETYPE_FONT,$(FREETYPE_FONT_CFLAGS),-lfreetype,(Freetype)))
$(eval $(call feature_enabled,ATARI_NETSURF_FONT,-DWITH_INTERNAL_FONT_DRIVER,,(Internal Font)))
-$(eval $(call feature_enabled,ATARI_VDI_FONT,-DWITH_VDI_FONT_DRIVER,,(Internal Font)))
+$(eval $(call feature_enabled,ATARI_VDI_FONT,-DWITH_VDI_FONT_DRIVER,,(VDI Font)))
$(eval $(call feature_enabled,ATARI_8BPP_SUPPORT,-DWITH_8BPP_SUPPORT,,(Indexed screen format support)))
# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs here
@@ -77,28 +77,26 @@ LDFLAGS += -L$(GCCSDK_INSTALL_ENV)/lib
S_ATARI := \
bitmap.c \
clipboard.c \
+ ctxmenu.c \
+ deskmenu.c \
+ download.c \
+ encoding.c \
findfile.c \
filetype.c \
font.c \
gui.c \
+ login.c \
misc.c \
+ osspec.c \
schedule.c \
- download.c \
+ search.c \
+ statusbar.c \
thumbnail.c \
- login.c \
treeview.c \
- hotlist.c \
- history.c\
- search.c \
redrawslots.c \
- encoding.c \
rootwin.c \
toolbar.c \
- statusbar.c \
- osspec.c \
- ctxmenu.c \
settings.c \
- deskmenu.c \
plot/plot.c \
plot/fontplot.c \
plot/eddi.s \
@@ -112,6 +110,10 @@ S_ATARI := \
gemtk/utils.c \
gemtk/objc.c
+# cookies.c \
+# hotlist.c \
+# history.c\
+
S_ATARI := $(addprefix atari/,$(S_ATARI))
# This is the final source build list
diff --git a/atari/Makefile.target.orig b/atari/Makefile.target.orig
new file mode 100644
index 0000000..25951b9
--- /dev/null
+++ b/atari/Makefile.target.orig
@@ -0,0 +1,120 @@
+# ----------------------------------------------------------------------------
+# Atari target setup
+# ----------------------------------------------------------------------------
+
+ifeq ($(ATARI_ARCH),68000)
+PRGSUFFIX := 000.app
+PKGNAME := ns000.zip
+endif
+
+ifeq ($(ATARI_ARCH),68020-60)
+CFLAGS += -m68020-60
+LDFLAGS += -m68020-60
+PRGSUFFIX := 020.app
+PKGNAME := ns020.zip
+endif
+
+ifeq ($(ATARI_ARCH),5475)
+CFLAGS += -mcpu=5475
+LDFLAGS += -mcpu=5475
+PRGSUFFIX := v4e.app
+PKGNAME := nsv4e.zip
+endif
+
+# non-pkgconfig components
+
+FREETYPE_FONT_CFLAGS := $(shell freetype-config --cflags) -DWITH_FREETYPE_FONT_DRIVER
+SPIDERMONKEY_CFLAGS := -DWITH_MOZJS -DXP_UNIX -DJS_HAS_FILE_OBJECT=0 -DJSOPTION_JIT=0 -DPOSIX_SOURCE -D_BSD_SOURCE
+
+$(eval $(call feature_enabled,MNG,-DWITH_MNG,-lmng,PNG/MNG/JNG (libmng)))
+$(eval $(call feature_enabled,PNG,-DWITH_PNG,-lpng,PNG (libpng)))
+$(eval $(call feature_enabled,MOZJS,$(SPIDERMONKEY_CFLAGS),-ljs,JavaScript (Spidermonkey)))
+$(eval $(call feature_enabled,ATARI_FREETYPE_FONT,$(FREETYPE_FONT_CFLAGS),-lfreetype,(Freetype)))
+$(eval $(call feature_enabled,ATARI_NETSURF_FONT,-DWITH_INTERNAL_FONT_DRIVER,,(Internal Font)))
+$(eval $(call feature_enabled,ATARI_8BPP_SUPPORT,-DWITH_8BPP_SUPPORT,,(Indexed screen format support)))
+
+# define additional CFLAGS and LDFLAGS requirements for pkg-configed libs here
+NETSURF_FEATURE_RSVG_CFLAGS := -DWITH_RSVG
+NETSURF_FEATURE_HUBBUB_CFLAGS := -DWITH_HUBBUB
+NETSURF_FEATURE_BMP_CFLAGS := -DWITH_BMP
+NETSURF_FEATURE_GIF_CFLAGS := -DWITH_GIF
+NETSURF_FEATURE_JS_CFLAGS := -DWITH_JS -DJS_HAS_FILE_OBJECT=0
+NETSURF_FEATURE_MOZJS_CFLAGS := -DWITH_MOZJS -DJS_HAS_FILE_OBJECT=0
+
+ifeq ($(NETSURF_USE_MOZJS),YES)
+NETSURF_USE_JS:=YES
+NETSURF_USE_MOZJS:=YES
+endif
+
+$(eval $(call pkg_config_find_and_add,BMP,libnsbmp,BMP))
+$(eval $(call pkg_config_find_and_add,GIF,libnsgif,GIF))
+
+CFLAGS += -U__STRICT_ANSI__ -std=c99 -I. -Dsmall $(WARNFLAGS) -Dnsatari \
+ -D_BSD_SOURCE \
+ -D_XOPEN_SOURCE=600 \
+ -D_POSIX_C_SOURCE=200112L \
+ $(shell $(PKG_CONFIG) --cflags libhubbub libcss openssl ) \
+ $(shell $(PKG_CONFIG) --cflags libxml-2.0 ) \
+ $(shell $(PKG_CONFIG) --cflags libcurl )
+
+LDFLAGS += -lcflib -lcurl
+LDFLAGS += -lcss -lparserutils -ldom -lwapcaplet -lhubbub
+LDFLAGS += -lssl -lcrypto
+LDFLAGS += -lxml2 -lz -liconv -lcares -lHermes -lwindom -lgem -lm
+LDFLAGS += -L$(GCCSDK_INSTALL_ENV)/lib
+
+
+# S_ATARI are sources purely for the Atari FreeMiNT build
+S_ATARI := gui.c findfile.c filetype.c misc.c bitmap.c schedule.c \
+ download.c thumbnail.c login.c verify_ssl.c treeview.c hotlist.c history.c\
+ search.c font.c \
+ plot/plot.c plot/fontplot.c plot/eddi.s \
+ plot/font_freetype.c plot/font_internal.c \
+ redrawslots.c encoding.c \
+ browser_win.c toolbar.c statusbar.c browser.c \
+ global_evnt.c osspec.c dragdrop.c system_colour.c \
+ ctxmenu.c save.c settings.c
+S_ATARI := $(addprefix atari/,$(S_ATARI))
+
+# This is the final source build list
+# Note this is deliberately *not* expanded here as common and image
+# are not yet available
+SOURCES = $(S_COMMON) $(S_IMAGE) $(S_BROWSER) $(S_ATARI)
+EXETARGET := ns$(SUBTARGET)$(PRGSUFFIX)
+
+# ----------------------------------------------------------------------------
+# Install target
+# ----------------------------------------------------------------------------
+
+<<<<<<< Updated upstream
+install-atari:
+
+# ----------------------------------------------------------------------------
+# Package target
+# ----------------------------------------------------------------------------
+
+package-atari:
+=======
+ATARI_INSTALL_TARGET_DIR := nsatari.package
+ATARI_RES_DIR := atari/res
+
+install-atari: $(PKGNAME)
+ $(VQ)echo Creating $(PKGNAME)
+
+$(PKGNAME): $(EXETARGET)
+ $(Q)rm -rf $(ATARI_INSTALL_TARGET_DIR)
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/doc
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/download
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/res
+ $(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/fonts
+ #$(Q)mkdir $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/icons
+ $(Q)touch $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/cookies
+ $(Q)cp $(ATARI_RES_DIR)/netsurf.rsc $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/netsurf.rsc
+ $(Q)cp $(ATARI_RES_DIR)/icons/ $(ATARI_INSTALL_TARGET_DIR)/netsurf/res/icons/ -R
+
+
+ $(Q)cp $(EXETARGET) $(ATARI_INSTALL_TARGET_DIR)/netsurf
+
+>>>>>>> Stashed changes
diff --git a/beos/download.h b/atari/cookies.c
similarity index 91%
copy from beos/download.h
copy to atari/cookies.c
index 9c8d3ad..dfed6d0 100644
--- a/beos/download.h
+++ b/atari/cookies.c
@@ -1,18 +1,17 @@
-/*
- * Copyright 2012 Adrien Destugues <pulkomandy(a)pulkomandy.tk>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
diff --git a/atari/cookies.h b/atari/cookies.h
new file mode 100644
index 0000000..e69de29
diff --git a/atari/history.c b/atari/history.c
old mode 100755
new mode 100644
index 6da8eeb..dfed6d0
--- a/atari/history.c
+++ b/atari/history.c
@@ -1,168 +1,17 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-#include <string.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-#include "desktop/browser.h"
-#include "utils/nsoption.h"
-#include "desktop/tree.h"
-#include "desktop/gui.h"
-#include "desktop/global_history.h"
-#include "desktop/browser.h"
-#include "utils/messages.h"
-#include "content/content.h"
-#include "content/hlcache.h"
-#include "content/urldb.h"
-#include "utils/log.h"
-#include "atari/treeview.h"
-#include "atari/findfile.h"
-#include "atari/res/netsurf.rsh"
-#include "atari/history.h"
-
-
-//TODO: remove/add guiwin handle on close / open - so that the list
-// is kept tiny.
-
-extern GRECT desk_area;
-
-struct s_atari_global_history gl_history;
-
-
-void atari_global_history_open( void )
-{
- atari_global_history_init();
- if (gl_history.init == false ) {
- return;
- }
- if( gl_history.open == false ) {
-
- GRECT pos;
- wind_get_grect(0, WF_WORKXYWH, &pos);
- pos.g_x = desk_area.g_w - desk_area.g_w / 4;
- pos.g_y = desk_area.g_y;
- pos.g_w = desk_area.g_w / 4;
- pos.g_h = desk_area.g_h;
-
- wind_open(gemtk_wm_get_handle(gl_history.window), pos.g_x, pos.g_y,
- pos.g_w, pos.g_h);
- gl_history.open = true;
- atari_treeview_open(gl_history.tv);
- } else {
- wind_set(gemtk_wm_get_handle(gl_history.window), WF_TOP, 1, 0, 0, 0);
- }
-}
-
-void atari_global_history_close( void )
-{
- wind_close(gemtk_wm_get_handle(gl_history.window));
- gl_history.open = false;
- atari_treeview_close(gl_history.tv);
-}
-
-static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
-{
- NSTREEVIEW tv=NULL;
-
- //printf("Hotlist event %d, open: %d\n", ev_out->emo_events, gl_history.open);
-
- if(ev_out->emo_events & MU_MESAG){
- switch (msg[0]) {
-
- case WM_CLOSED:
- atari_global_history_close();
- break;
-
- default: break;
- }
- }
-
- // TODO: implement selectable objects in toolbar API:
- // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
-}
-
-bool atari_global_history_init( void )
-{
-
- if( gl_history.init == false ) {
-
- short handle;
- GRECT desk;
- int flags = ATARI_TREEVIEW_WIDGETS;
-
- // initialize state options:
- gl_history.open = false;
-
- // Create an AES window:
- handle = wind_create(flags, 40, 40, desk_area.g_w, desk_area.g_h);
-
- // add the AES window to the gemtk window manager:
- gl_history.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
-
- if( gl_history.window == NULL ) {
- LOG(("Failed to allocate history window"));
- return( false );
- }
-
- // Set window title:
- wind_set_str(handle, WF_NAME, (char*)messages_get("GlobalHistory"));
-
- // Make the window part of the netsurf treeview framework:
- gl_history.tv = atari_treeview_create(TREE_HISTORY,
- gl_history.window, handle_event);
-
- gemtk_wm_unlink(gl_history.window);
-
- if (gl_history.tv == NULL) {
- /* TODO: handle it properly, clean up previous allocs */
- LOG(("Failed to allocate history treeview"));
- return( false );
- }
-
- gl_history.init = true;
- }
- return( true );
-}
-
-
-void atari_global_history_destroy( void )
-{
-
- if( gl_history.init == false ) {
- return;
- }
- if( gl_history.window != NULL ) {
- if( gl_history.open )
- atari_global_history_close();
- wind_delete(gemtk_wm_get_handle(gl_history.window));
- gemtk_wm_remove(gl_history.window);
- gl_history.window = NULL;
- atari_treeview_destroy(gl_history.tv);
- gl_history.init = false;
- }
- LOG(("done"));
-}
-
-void atari_global_history_redraw( void )
-{
- atari_treeview_redraw( gl_history.tv );
-}
-
-
diff --git a/atari/history.h b/atari/history.h
old mode 100755
new mode 100644
index d94e188..e69de29
--- a/atari/history.h
+++ b/atari/history.h
@@ -1,45 +0,0 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NS_ATARI_HISTORY_H
-#define NS_ATARI_HISTORY_H
-
-#include <stdbool.h>
-#include "desktop/tree.h"
-#include "atari/treeview.h"
-#include "atari/gemtk/gemtk.h"
-
-struct s_atari_global_history {
- GUIWIN *window; /*< The GEMTK window ref */
- NSTREEVIEW tv; /*< The history treeview handle. */
- bool open;
- bool init;
-};
-
-extern struct s_atari_global_history gl_history;
-
-bool atari_global_history_init( void );
-void atari_global_history_destroy( void );
-void atari_global_history_open( void );
-void atari_global_history_close( void );
-
-void atari_global_history_redraw( void );
-
-
-
-#endif
diff --git a/atari/hotlist.c b/atari/hotlist.c
old mode 100755
new mode 100644
index 57cf0c0..dfed6d0
--- a/atari/hotlist.c
+++ b/atari/hotlist.c
@@ -1,226 +1,17 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-
-#include <ctype.h>
-#include <string.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <time.h>
-
-#include "desktop/browser.h"
-#include "content/content.h"
-#include "content/hlcache.h"
-#include "content/urldb.h"
-#include "utils/nsoption.h"
-#include "desktop/hotlist.h"
-#include "desktop/tree.h"
-#include "desktop/gui.h"
-#include "utils/log.h"
-#include "utils/messages.h"
-#include "utils/utils.h"
-#include "utils/url.h"
-#include "atari/gui.h"
-#include "atari/misc.h"
-#include "atari/treeview.h"
-#include "atari/hotlist.h"
-#include "atari/findfile.h"
-#include "atari/gemtk/gemtk.h"
-#include "atari/res/netsurf.rsh"
-
-extern GRECT desk_area;
-
-struct atari_hotlist hl;
-
-static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
-{
- NSTREEVIEW tv=NULL;
- GRECT tb_area;
-
- if(ev_out->emo_events & MU_MESAG){
- switch (msg[0]) {
-
- case WM_TOOLBAR:
-
- tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
-
- switch (msg[4]) {
- case TOOLBAR_HOTLIST_CREATE_FOLDER:
- hotlist_add_folder(NULL, false, 0);
- break;
-
- case TOOLBAR_HOTLIST_ADD:
- atari_hotlist_add_page(NULL, NULL);
- break;
-
- case TOOLBAR_HOTLIST_DELETE:
- hotlist_keypress(KEY_DELETE_LEFT);
- gemtk_wm_exec_redraw(tv->window, NULL);
- break;
-
- case TOOLBAR_HOTLIST_EDIT:
- hotlist_edit_selection();
- break;
- }
-
- gemtk_obj_get_tree(TOOLBAR_HOTLIST)[msg[4]].ob_state &= ~OS_SELECTED;
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, &tb_area);
- evnt_timer(150);
- gemtk_wm_exec_redraw(tv->window, &tb_area);
- break;
-
- case WM_CLOSED:
- atari_hotlist_close();
- break;
-
- default: break;
- }
- }
-
- // TODO: implement selectable objects in toolbar API:
- // ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
-}
-
-
-
-void atari_hotlist_init(void)
-{
- if (hl.init == false) {
- if( strcmp(nsoption_charp(hotlist_file), "") == 0 ){
- atari_find_resource( (char*)&hl.path, "hotlist", "hotlist" );
- } else {
- strncpy( (char*)&hl.path, nsoption_charp(hotlist_file), PATH_MAX-1 );
- }
-
- LOG(("Hotlist: %s", (char*)&hl.path ));
-
- if( hl.window == NULL ){
- int flags = ATARI_TREEVIEW_WIDGETS;
- short handle = -1;
- GRECT desk;
- OBJECT * tree = gemtk_obj_get_tree(TOOLBAR_HOTLIST);
- assert( tree );
- hl.open = false;
-
- handle = wind_create(flags, 0, 0, desk_area.g_w, desk_area.g_h);
- hl.window = gemtk_wm_add(handle, GEMTK_WM_FLAG_DEFAULTS, NULL);
- if( hl.window == NULL ) {
- gemtk_msg_box_show(GEMTK_MSG_BOX_ALERT,
- "Failed to allocate Hotlist");
- return;
- }
- wind_set_str(handle, WF_NAME, (char*)messages_get("Hotlist"));
- gemtk_wm_set_toolbar(hl.window, tree, 0, 0);
- gemtk_wm_unlink(hl.window);
- tree_hotlist_path = (const char*)&hl.path;
- hl.tv = atari_treeview_create(
- TREE_HOTLIST,
- hl.window,
- handle_event
- );
- if (hl.tv == NULL) {
- /* handle it properly, clean up previous allocs */
- LOG(("Failed to allocate treeview"));
- return;
- }
-
- } else {
-
- }
- }
- hl.init = true;
-}
-
-
-void atari_hotlist_open(void)
-{
- if( hl.init == false ) {
- return;
- }
-
- if( hl.open == false ) {
-
- GRECT pos;
- pos.g_x = desk_area.g_w - desk_area.g_w / 4;
- pos.g_y = desk_area.g_y;
- pos.g_w = desk_area.g_w / 4;
- pos.g_h = desk_area.g_h;
-
- wind_open_grect(gemtk_wm_get_handle(hl.window), &pos);
- hl.open = true;
- atari_treeview_open( hl.tv );
- } else {
- wind_set(gemtk_wm_get_handle(hl.window), WF_TOP, 1, 0, 0, 0);
- }
-}
-
-void atari_hotlist_close(void)
-{
- wind_close(gemtk_wm_get_handle(hl.window));
- hl.open = false;
- atari_treeview_close(hl.tv);
-}
-
-void atari_hotlist_destroy(void)
-{
-
- if( hl.init == false) {
- return;
- }
- if( hl.window != NULL ) {
- if (hl.open)
- atari_hotlist_close();
- wind_delete(gemtk_wm_get_handle(hl.window));
- gemtk_wm_remove(hl.window);
- hl.window = NULL;
- atari_treeview_destroy(hl.tv);
- hl.init = false;
- }
- LOG(("done"));
-}
-
-void atari_hotlist_redraw(void)
-{
- int i = 01;
- atari_treeview_redraw(hl.tv);
-}
-
-struct node;
-
-void atari_hotlist_add_page( const char * url, const char * title )
-{
- struct node * root;
- struct node * selected = NULL;
- struct node * folder = NULL;
- nsurl *nsurl;
- NSTREEVIEW tv = hl.tv;
- if(hl.tv == NULL )
- return;
-
- atari_hotlist_open();
-
- if (nsurl_create(url, &nsurl) != NSERROR_OK)
- return;
-
- if( hl.tv->click.x >= 0 && hl.tv->click.y >= 0 ){
- hotlist_add_entry( nsurl, title, true, hl.tv->click.y );
- } else {
- hotlist_add_url( nsurl );
- }
- nsurl_unref(nsurl);
-}
diff --git a/atari/hotlist.h b/atari/hotlist.h
old mode 100755
new mode 100644
index fc9cba6..e69de29
--- a/atari/hotlist.h
+++ b/atari/hotlist.h
@@ -1,46 +0,0 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-
-#ifndef NS_ATARI_HOTLIST_H
-#define NS_ATARI_HOTLIST_H
-#include <stdbool.h>
-#include "desktop/tree.h"
-#include "atari/gemtk/gemtk.h"
-#include "atari/treeview.h"
-/* The hotlist window, toolbar and treeview data. */
-
-struct atari_hotlist {
- GUIWIN * window;
- NSTREEVIEW tv; /*< The hotlist treeview handle. */
- bool open;
- bool init;
- char path[PATH_MAX];
-};
-
-extern struct atari_hotlist hl;
-
-void atari_hotlist_init( void );
-void atari_hotlist_open( void );
-void atari_hotlist_close( void );
-void atari_hotlist_destroy( void );
-void atari_hotlist_add_page( const char * url, const char * title );
-
-void atari_hotlist_redraw( void );
-
-
-#endif
diff --git a/atari/misc.h b/atari/misc.h
index 32ced65..667e52f 100755
--- a/atari/misc.h
+++ b/atari/misc.h
@@ -36,10 +36,10 @@
lbuf[7] = (long)sbuf[7];
#define RECT_TO_GRECT(r,g) \
- g->g_x = (r->x0 < r->x1) ? r->x0 : r->x1 ; \
- g->g_y = (r->y0 < r->y1) ? r->y0 : r->y1 ; \
- g->g_w = (r->x0 < r->x1) ? r->x1 - r->x0 : r->x0 - r->x1 ; \
- g->g_h = (r->y0 < r->y1) ? r->y1 - r->y0 : r->y0 - r->y1 ;
+ (g)->g_x = (r->x0 < r->x1) ? r->x0 : r->x1 ; \
+ (g)->g_y = (r->y0 < r->y1) ? r->y0 : r->y1 ; \
+ (g)->g_w = (r->x0 < r->x1) ? r->x1 - r->x0 : r->x0 - r->x1 ; \
+ (g)->g_h = (r->y0 < r->y1) ? r->y1 - r->y0 : r->y0 - r->y1 ;
diff --git a/atari/history.c b/atari/old_treeview/history.c
similarity index 97%
copy from atari/history.c
copy to atari/old_treeview/history.c
index 6da8eeb..5447571 100755
--- a/atari/history.c
+++ b/atari/old_treeview/history.c
@@ -48,6 +48,7 @@ struct s_atari_global_history gl_history;
void atari_global_history_open( void )
{
+ /* TODO: call this in gui.c and move global_history_init() into history.c */
atari_global_history_init();
if (gl_history.init == false ) {
return;
@@ -98,6 +99,7 @@ static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
// ObjcChange( OC_TOOLBAR, win, buff[4], ~SELECTED, OC_MSG );
}
+/* TODO: add call to global_history_init() */
bool atari_global_history_init( void )
{
diff --git a/atari/history.h b/atari/old_treeview/history.h
similarity index 100%
copy from atari/history.h
copy to atari/old_treeview/history.h
diff --git a/atari/hotlist.c b/atari/old_treeview/hotlist.c
similarity index 100%
copy from atari/hotlist.c
copy to atari/old_treeview/hotlist.c
diff --git a/atari/hotlist.h b/atari/old_treeview/hotlist.h
similarity index 100%
copy from atari/hotlist.h
copy to atari/old_treeview/hotlist.h
diff --git a/atari/plot/fontplot.c b/atari/plot/fontplot.c
index ebc7687..a33dd1f 100644
--- a/atari/plot/fontplot.c
+++ b/atari/plot/fontplot.c
@@ -36,10 +36,8 @@ void dump_font_drivers(void)
{
int i = 0;
while( font_driver_table[i].name != NULL ) {
- printf("%s -> flags: %d\n",
- font_driver_table[i].name,
- font_driver_table[i].flags
- );
+ printf("%s -> flags: %d\n", font_driver_table[i].name,
+ font_driver_table[i].flags);
i++;
}
}
diff --git a/atari/res/netsurf.c b/atari/res/netsurf.c
new file mode 100644
index 0000000..d6ee900
--- /dev/null
+++ b/atari/res/netsurf.c
@@ -0,0 +1,4379 @@
+/* erzeugt mit RSM2CS V1.01 Beta von Armin Diedering aus "S:\Sources\netsurf.git\netsurf\atari\res\netsurf.rsc" */
+/* nach Sourcen von Holger Weets */
+
+#include <portab.h>
+
+static char rs_s0[] = "";
+static char rs_s1[] = "-------------------------";
+static char rs_s2[] = "------------------------------";
+static char rs_s3[] = "-----------------------";
+static char rs_s4[] = "Abort";
+static char rs_s5[] = "X";
+static char rs_s7[] = "__";
+static char rs_s6[] = "n";
+static char rs_s8[] = "___";
+static char rs_s9[] = "____________________________________________";
+
+static char rs_s10[] = "";
+static char rs_s11[] = "";
+static char rs_s12[] = "";
+static char rs_s13[] = "";
+static char rs_s14[] = "";
+static char rs_s15[] = "";
+static char rs_s16[] = "";
+static char rs_s17[] = "";
+static char rs_s18[] = "";
+static char rs_s19[] = "";
+static char rs_s20[] = "";
+static char rs_s21[] = "";
+static char rs_s22[] = "";
+static char rs_s23[] = "";
+static char rs_s24[] = "";
+static char rs_s25[] = "";
+static char rs_s26[] = "";
+static char rs_s27[] = "";
+static char rs_s28[] = "";
+static char rs_s29[] = "";
+static char rs_s30[] = "";
+static char rs_s31[] = "";
+static char rs_s32[] = "";
+static char rs_s33[] = "";
+static char rs_s34[] = "";
+static char rs_s35[] = "";
+static char rs_s36[] = "";
+static char rs_s37[] = "";
+static char rs_s38[] = "";
+static char rs_s39[] = "";
+static char rs_s40[] = "";
+static char rs_s41[] = "";
+static char rs_s42[] = "";
+static char rs_s43[] = "";
+static char rs_s44[] = "";
+static char rs_s45[] = "-------------------";
+static char rs_s46[] = "-------------------";
+static char rs_s51[] = "03";
+static char rs_s47[] = "_____";
+static char rs_s48[] = "_____";
+static char rs_s49[] = "_____________________________________";
+static char rs_s50[] = "_____________________________________";
+static char rs_s52[] = "03";
+static char rs_s53[] = "03";
+static char rs_s54[] = "03";
+static char rs_s55[] = "____________________________________________";
+static char rs_s56[] = "____________________________________________";
+static char rs_s57[] = "____________________________________________";
+static char rs_s58[] = "____________________________________________";
+static char rs_s59[] = "____________________________________________";
+
+#define FLAGS11 0x0800
+#define FLAGS12 0x1000
+#define FLAGS13 0x2000
+#define FLAGS14 0x4000
+#define FLAGS15 0x8000
+#define STATE8 0x0100
+#define STATE9 0x0200
+#define STATE10 0x0400
+#define STATE11 0x0800
+#define STATE12 0x1000
+#define STATE13 0x2000
+#define STATE14 0x4000
+#define STATE15 0x8000
+
+#define RS_NTED 43
+
+static TEDINFO rs_tedinfo[] = {
+ "NetSurf",
+ rs_s0,
+ rs_s0,
+ SMALL, 6, TE_LEFT, 4352, 0, 0, 8, 1,
+
+ rs_s45,
+ "User: ___________________",
+ rs_s5,
+ IBM, 6, TE_CNTR, 4480, 0, -2, 20, 30,
+
+ rs_s46,
+ "Password: ___________________",
+ rs_s5,
+ IBM, 6, TE_CNTR, 4480, 0, -2, 20, 30,
+
+ "SSL Verify failed!",
+ rs_s0,
+ rs_s0,
+ IBM, 1, TE_LEFT, 4480, 10, -1, 19, 1,
+
+ "XY",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 3, 1,
+
+ "Text\0@@@@@@@@@@@@@@@@@@@@",
+ "Search : _________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 26, 37,
+
+ "File",
+ rs_s0,
+ rs_s0,
+ SMALL, 6, TE_LEFT, 4352, 0, -1, 5, 1,
+
+ "100000 MB / 100000 MB",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4352, 0, -1, 22, 1,
+
+ "100%",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_RIGHT, 4352, 0, -1, 5, 1,
+
+ "99999 KB/s ",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_RIGHT, 4352, 0, -1, 12, 1,
+
+ " Cut",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 6, 1,
+
+ " Copy",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 7, 1,
+
+ " Paste",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 8, 1,
+
+ " Select All",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 13, 1,
+
+ "---------------------",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_CNTR, 4480, 0, -1, 22, 1,
+
+ " Open in new Window",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 21, 1,
+
+ " Copy Link",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 12, 1,
+
+ " Copy URL",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 11, 1,
+
+ " Save as...",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 13, 1,
+
+ " View source...",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 17, 1,
+
+ " Save link as...",
+ rs_s0,
+ rs_s0,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 18, 1,
+
+ "\0@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@",
+ "Homepage: ____________________________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 10, -2, 45, 55,
+
+ rs_s51,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_CNTR, 4480, 0, -2, 3, 3,
+
+ "Browser",
+ "_______",
+ rs_s5,
+ SMALL, 1, TE_CNTR, 4480, 9, 1, 8, 8,
+
+ "_______________________________",
+ "Proxy Host: _______________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 32, 44,
+
+ rs_s47,
+ rs_s48,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 6, 6,
+
+ rs_s49,
+ "Username: _____________________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 38, 50,
+
+ rs_s50,
+ "Password: _____________________________________",
+ rs_s5,
+ IBM, 0, TE_LEFT, 4480, 0, -2, 38, 50,
+
+ rs_s52,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 3, 3,
+
+ rs_s53,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 3, 3,
+
+ rs_s54,
+ rs_s7,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 3, 3,
+
+ "Network",
+ rs_s0,
+ rs_s0,
+ SMALL, 1, TE_CNTR, 4480, 9, -1, 8, 1,
+
+ "130",
+ rs_s8,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 4, 4,
+
+ "100",
+ rs_s8,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 4, 4,
+
+ "0.5",
+ rs_s8,
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 4, 4,
+
+ "0350",
+ "____",
+ rs_s6,
+ IBM, 0, TE_LEFT, 4352, 0, -2, 5, 5,
+
+ "Rendering",
+ rs_s0,
+ rs_s0,
+ SMALL, 1, TE_CNTR, 4480, 9, -1, 10, 1,
+
+ rs_s55,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s56,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s57,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s58,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ rs_s59,
+ rs_s9,
+ rs_s5,
+ IBM, 6, TE_LEFT, 4480, 0, -1, 45, 45,
+
+ "Directories",
+ rs_s0,
+ rs_s0,
+ SMALL, 1, TE_CNTR, 4480, 9, -1, 12, 1
+};
+
+static int rs_b222img[] = {
+ 0x07ff,0xffff,0xff80,0x0c00,0x0000,0x00c0,0x183f,0xf03f,
+ 0xf060,0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,
+ 0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,
+ 0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,0xf860,
+ 0x1860,0x187f,0xf860,0x1860,0x187f,0xf860,0x1860,0x187f,
+ 0xf860,0x1860,0x183f,0xf03f,0xf060,0x0c00,0x0000,0x00c0,
+ 0x07ff,0xffff,0xff80,0x0000,0x0000,0x0000,0x3f30,0xc787,
+ 0x8fe0,0x0c39,0xcccc,0xcc00,0x0c36,0xcfcc,0x0f80,0x0c30,
+ 0xcccd,0xcc00,0x3f30,0xccc7,0xcfe0,0x0000,0x0000,0x0000
+};
+
+static int rs_b221img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b220img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b219img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b218img[] = {
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000,
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b217img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b216img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b215img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b214img[] = {
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b213img[] = {
+ 0x0000,0x0180,0x0340,0x02c0,0x0560,0x06a0,0x0d50,0x0ab0,
+ 0x1558,0x1aa8,0x3554,0x2aac,0x5556,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b212img[] = {
+ 0x0000,0x0180,0x03c0,0x03c0,0x07e0,0x07e0,0x0ff0,0x0ff0,
+ 0x1ff8,0x1ff8,0x3ffc,0x3ffc,0x7ffe,0x7ffe,0x0000,0x0000
+};
+
+static int rs_b211img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b210img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b209img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b208img[] = {
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000,
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000
+};
+
+static int rs_b207img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b206img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b205img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b204img[] = {
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000
+};
+
+static int rs_b203img[] = {
+ 0x0000,0x0000,0x7ffe,0x5556,0x2aac,0x3554,0x1aa8,0x1558,
+ 0x0ab0,0x0d50,0x06a0,0x0560,0x02c0,0x0340,0x0180,0x0000
+};
+
+static int rs_b202img[] = {
+ 0x0000,0x0000,0x7ffe,0x7ffe,0x3ffc,0x3ffc,0x1ff8,0x1ff8,
+ 0x0ff0,0x0ff0,0x07e0,0x07e0,0x03c0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b201img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b200img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b199img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b198img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b197img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b196img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b195img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b194img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b193img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b192img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b191img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b190img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b189img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6086,0x6146,0x6246,
+ 0x6286,0x6486,0x6706,0x6606,0x6406,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b188img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b187img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b186img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000
+};
+
+static int rs_b185img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b184img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8
+};
+
+static int rs_b183img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b182img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b181img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b180img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b179img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1ff0,0x1ff0,0x1ff0,0x1ff0,
+ 0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000
+};
+
+static int rs_b178img[] = {
+ 0x0000,0x0380,0x0440,0x3ff8,0x1010,0x1550,0x1550,0x1550,
+ 0x1550,0x1550,0x1550,0x1550,0x1550,0x1010,0x1ff0,0x0000
+};
+
+static int rs_b177img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b176img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8
+};
+
+static int rs_b175img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3018,0x3558,0x3558,0x3558,
+ 0x3558,0x3558,0x3558,0x3558,0x3558,0x3018,0x3ff8,0x3ff8
+};
+
+static int rs_b174img[] = {
+ 0x0380,0x0440,0x7ffc,0x7ffc,0x3ff8,0x3ff8,0x3ff8,0x3ff8,
+ 0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8,0x3ff8
+};
+
+static int rs_b173img[] = {
+ 0x0000,0x0000,0x1c00,0x3e00,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x0000
+};
+
+static int rs_b172img[] = {
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000
+};
+
+static int rs_b171img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b170img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b169img[] = {
+ 0x0000,0x0000,0x1c00,0x3e00,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x0000
+};
+
+static int rs_b168img[] = {
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000,
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000
+};
+
+static int rs_b167img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b166img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff,
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b165img[] = {
+ 0x0000,0x0000,0x1c00,0x3e00,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x0000
+};
+
+static int rs_b164img[] = {
+ 0x0000,0x0000,0x1c00,0x2200,0x41fe,0x4002,0x4002,0x4102,
+ 0x4102,0x47c2,0x4102,0x4102,0x4002,0x4002,0x7ffe,0x0000
+};
+
+static int rs_b163img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b162img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b161img[] = {
+ 0x0000,0x3800,0x7c00,0xc7ff,0xc3ff,0xc003,0xc003,0xc103,
+ 0xc103,0xc7c3,0xc103,0xc103,0xc003,0xc003,0xffff,0xffff
+};
+
+static int rs_b160img[] = {
+ 0x0000,0x3800,0x7c00,0xffff,0xffff,0xffff,0xffff,0xffff,
+ 0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff,0xffff
+};
+
+static int rs_b159img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b158img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b157img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b156img[] = {
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b155img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b154img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000,
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b153img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b152img[] = {
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe,
+ 0x7fe0,0x7ff0,0x6028,0x6024,0x603e,0x6006,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b151img[] = {
+ 0x0000,0x3fe0,0x3ff0,0x3ff8,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x0000
+};
+
+static int rs_b150img[] = {
+ 0x0000,0x3fe0,0x2050,0x2048,0x2044,0x207c,0x2104,0x2104,
+ 0x27c4,0x2104,0x2104,0x2004,0x2004,0x2004,0x3ffc,0x0000
+};
+
+static int rs_b149img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b148img[] = {
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b147img[] = {
+ 0x7fe0,0x7ff0,0x6068,0x6064,0x607e,0x607e,0x6106,0x6106,
+ 0x67c6,0x6106,0x6106,0x6006,0x6006,0x6006,0x7ffe,0x7ffe
+};
+
+static int rs_b146img[] = {
+ 0x7fe0,0x7ff0,0x7ff8,0x7ffc,0x7ffe,0x7ffe,0x7ffe,0x7ffe,
+ 0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe,0x7ffe
+};
+
+static int rs_b145img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b144img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b143img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b142img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b141img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b140img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b139img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b138img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b137img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b136img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b135img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b134img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b133img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b132img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b131img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b130img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b129img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b128img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b127img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b126img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b125img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b124img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b123img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000
+};
+
+static int rs_b122img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b121img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b120img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b119img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b118img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b117img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b116img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b115img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b114img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b113img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b112img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x481e,
+ 0x481e,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b111img[] = {
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b110img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b109img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b108img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b107img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b106img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1278,0x1278,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b105img[] = {
+ 0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b104img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b103img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b102img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b101img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b100img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b99img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x4812,
+ 0x4812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b98img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b97img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b96img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b95img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b94img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b93img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1248,0x1248,0x1e78,0x0000
+};
+
+static int rs_b92img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b91img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b90img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b89img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b88img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b87img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000
+};
+
+static int rs_b86img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b85img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b84img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b83img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b82img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b81img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x7812,
+ 0x7812,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b80img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b79img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b78img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x1e00,0x1e00,0x1e00,0x1e00,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b77img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b76img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b75img[] = {
+ 0x0000,0x1e78,0x1e48,0x1e48,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b74img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b73img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b72img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x7800,0x7800,
+ 0x7800,0x7800,0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0078,0x0078,0x0078,0x0078,0x0000,0x001e,0x001e,
+ 0x001e,0x001e,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b71img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b70img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b69img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b68img[] = {
+ 0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000,0x781e,0x781e,
+ 0x781e,0x781e,0x0000,0x1e78,0x1e78,0x1e78,0x1e78,0x0000
+};
+
+static int rs_b67img[] = {
+ 0xffff,0xfffe,0xffff,0xffff,0xc000,0x0003,0xc03f,0xe003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc01f,0xf003,
+ 0xc000,0x0003,0xc03f,0xe003,0xc03f,0xf003,0xc03f,0xf003,
+ 0xc03f,0xf003,0xc03f,0xf003,0xc03f,0xf003,0xc01f,0xf003,
+ 0xc000,0x0003,0xc000,0x0003,0xffff,0xffff,0x7fff,0xffff
+};
+
+static int rs_b66img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x0000,0x0000,0x0000,0x0000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0xffff,0xfffe,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0xffff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b65img[] = {
+ 0x0000,0x0000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x0000,0x0000,0x0000,0x0000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000
+};
+
+static int rs_b64img[] = {
+ 0x0000,0x0000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x0000,0x0000,0x0000,0x0000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,
+ 0x001f,0xf000,0x001f,0xf000,0x001f,0xf000,0x001f,0xf000
+};
+
+static int rs_b63img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x007c,0x00fe,0x7ffe,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b62img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x004c,0x00be,0x7f3e,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0038,0x004c,0x00be,0x7f3e,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0038,0x0044,0x0082,0x7f12,0x8012,
+ 0x4012,0x5402,0x2b82,0x0044,0x0038,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0038,0x0044,0x0082,0x7f16,0x8016,
+ 0x47d6,0x7fd6,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b61img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x0044,0x0082,0x7f12,0x8012,
+ 0x4012,0x5412,0x2b82,0x0044,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b60img[] = {
+ 0x0000,0x0000,0x0000,0x0038,0x007c,0x00fe,0x7ffe,0xfffe,
+ 0x7ffe,0x7ffe,0x2bfe,0x007c,0x0038,0x0000,0x0000,0x0000
+};
+
+static int rs_b59img[] = {
+ 0x0000,0x0380,0x07c0,0x0fe0,0x0fe0,0x0fe0,0x07c0,0x0380,
+ 0x07c0,0x0fe0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b58img[] = {
+ 0x0000,0x0380,0x04c0,0x09a0,0x0ba0,0x0b20,0x0640,0x0380,
+ 0x0440,0x0820,0x1010,0x1010,0x1010,0x1ff0,0x0000,0x0000,
+ 0x0000,0x0380,0x04c0,0x09a0,0x0ba0,0x0b20,0x0640,0x0380,
+ 0x05c0,0x0be0,0x17f0,0x17f0,0x1ff0,0x1ff0,0x0000,0x0000,
+ 0x0000,0x0380,0x04c0,0x09a0,0x0ba0,0x0b20,0x0640,0x0380,
+ 0x05c0,0x0be0,0x17f0,0x17f0,0x1ff0,0x1ff0,0x0000,0x0000,
+ 0x0000,0x0380,0x0440,0x0860,0x0860,0x08e0,0x05c0,0x0380,
+ 0x0440,0x0860,0x1030,0x1070,0x17f0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b57img[] = {
+ 0x0000,0x0380,0x0440,0x0820,0x0860,0x08a0,0x0540,0x0380,
+ 0x0540,0x0aa0,0x1570,0x1ab0,0x15f0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b56img[] = {
+ 0x0000,0x0380,0x07c0,0x0fe0,0x0fe0,0x0fe0,0x07c0,0x0380,
+ 0x07c0,0x0fe0,0x1ff0,0x1ff0,0x1ff0,0x1ff0,0x0000,0x0000
+};
+
+static int rs_b55img[] = {
+ 0x03e0,0x0ff8,0x1ffc,0x3ffe,0x3ffe,0x7fff,0x7fff,0x7fff,
+ 0x7fff,0x7fff,0x3ffe,0x3ffe,0x1ffc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b54img[] = {
+ 0x03e0,0x0d18,0x1604,0x2d5a,0x3e4a,0x4c89,0x5679,0x4c01,
+ 0x6403,0x4009,0x2062,0x2702,0x1004,0x0c18,0x03e0,0x0000,
+ 0x03e0,0x0ff8,0x1ffc,0x3fde,0x3fce,0x7f8d,0x7ffd,0x7ffb,
+ 0x7fff,0x7fe9,0x2ef2,0x27a2,0x1144,0x0c18,0x03e0,0x0000,
+ 0x03e0,0x0ff8,0x1ffc,0x3fde,0x3fce,0x7f8d,0x7ffd,0x7ffb,
+ 0x7fff,0x7fe9,0x2ef2,0x27a2,0x1144,0x0c18,0x03e0,0x0000,
+ 0x03e0,0x0c18,0x1204,0x2002,0x2402,0x4403,0x4003,0x4405,
+ 0x4403,0x401f,0x316e,0x3f5e,0x1ebc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b53img[] = {
+ 0x03e0,0x0ff8,0x1ffc,0x3ffe,0x3ffe,0x7fff,0x7fff,0x7fff,
+ 0x7fff,0x7fff,0x3ffe,0x3ffe,0x1ffc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b52img[] = {
+ 0x0120,0x0838,0x100c,0x2006,0x2002,0x4001,0x0020,0x0001,
+ 0x4001,0x4005,0x310a,0x3a06,0x0a0c,0x0d18,0x0020,0x0000,
+ 0x03e0,0x0d18,0x1604,0x2d52,0x1e4a,0x4c8b,0x5673,0x4c05,
+ 0x6403,0x401b,0x2066,0x275a,0x04bc,0x0ef8,0x02e0,0x0000,
+ 0x0260,0x01c0,0x10d0,0x2908,0x1284,0x4080,0x5589,0x32e1,
+ 0x7380,0x7f03,0x0e8a,0x0004,0x1018,0x0550,0x03c0,0x0000,
+ 0x01a0,0x0730,0x1928,0x3b8c,0x1302,0x738a,0x3c2a,0x4114,
+ 0x2800,0x4015,0x1104,0x1858,0x0ea8,0x02a0,0x0000,0x0000,
+ 0x03c0,0x0fd8,0x09f4,0x1b8a,0x1386,0x338d,0x7dad,0x73fb,
+ 0x7bfd,0x3fe0,0x2e92,0x20a2,0x114c,0x0c18,0x03e0,0x0000,
+ 0x0180,0x0cd8,0x00d4,0x000a,0x0086,0x0009,0x01a8,0x72e0,
+ 0x1381,0x3f02,0x2e88,0x2006,0x1014,0x0948,0x0120,0x0000,
+ 0x0000,0x08e8,0x06dc,0x0456,0x2ccc,0x0c0f,0x03f6,0x3eee,
+ 0x17ff,0x3ffc,0x3ff4,0x3ffa,0x1fe4,0x0aa8,0x0120,0x0000,
+ 0x0000,0x0b08,0x0d24,0x1fda,0x1b48,0x3b89,0x3e78,0x0910,
+ 0x2801,0x0000,0x2000,0x2002,0x1004,0x0808,0x0120,0x0000
+};
+
+static int rs_b51img[] = {
+ 0x03e0,0x0c18,0x1224,0x2052,0x244a,0x4485,0x4059,0x4421,
+ 0x4403,0x400d,0x3062,0x2702,0x1004,0x0d18,0x03e0,0x0000
+};
+
+static int rs_b50img[] = {
+ 0x03e0,0x0ff8,0x1ffc,0x3ffe,0x3ffe,0x7fff,0x7fff,0x7fff,
+ 0x7fff,0x7fff,0x3ffe,0x3ffe,0x1ffc,0x0ff8,0x03e0,0x0000
+};
+
+static int rs_b49img[] = {
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x03ff,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xffe0,0x1fff,0xfff0,0x3fff,0xfff8,
+ 0x3fff,0xfff8,0x7fff,0xfffc,0x7fff,0xfffc,0x7fff,0xfffc,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0x7fff,0xfffc,
+ 0x7fff,0xfffc,0x7fff,0xfffc,0x3fff,0xfff8,0x3fff,0xfff8,
+ 0x1fff,0xfff0,0x0fff,0xffe0,0x07ff,0xffc0,0x03ff,0xff80,
+ 0x01ff,0xff00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b48img[] = {
+ 0x000f,0xe000,0x0070,0x1c00,0x0180,0x0300,0x0200,0x0080,
+ 0x0500,0x0040,0x0a00,0x0420,0x1000,0x2090,0x2000,0x0008,
+ 0x2600,0x0008,0x4600,0x0004,0x4400,0x8004,0x4000,0x0004,
+ 0x8000,0x0042,0x8000,0x0002,0x8600,0x0002,0x8200,0x0002,
+ 0x8000,0x0002,0x8000,0x0002,0x8000,0x0002,0x4000,0x0004,
+ 0x4300,0x0004,0x4300,0x00e4,0x2180,0x0108,0x3000,0x7808,
+ 0x151a,0x6810,0x0ef8,0x0020,0x0460,0x0040,0x0210,0x0080,
+ 0x0180,0x0300,0x007c,0x1c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0074,0x1c00,0x01a9,0x0300,0x0224,0x4180,
+ 0x05d9,0x0840,0x0b54,0x04a0,0x1fe9,0x3090,0x2a94,0x40d8,
+ 0x3f69,0x40c8,0x6ed4,0xc00c,0x5552,0x8014,0x5548,0x002c,
+ 0x9551,0x014a,0xc888,0x6a36,0xa724,0x0496,0x8800,0x095a,
+ 0xa450,0x0456,0x8000,0x12be,0x8000,0x42aa,0x4000,0x156c,
+ 0x4200,0x92dc,0x4002,0x2b74,0x2148,0xa5d8,0x3405,0x3b78,
+ 0x13cf,0x32f0,0x0944,0xafa0,0x043b,0x5ac0,0x0365,0xbf80,
+ 0x01d5,0x7700,0x007b,0xbc00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0076,0xfc00,0x01ac,0x7f00,0x03a5,0x3f80,
+ 0x075b,0xb2c0,0x0f51,0x6260,0x1ca9,0x8030,0x2f96,0x8008,
+ 0x33e8,0x4008,0x6ed1,0x0014,0x5552,0x0004,0x5543,0x8044,
+ 0x955b,0xc042,0x98dd,0xc082,0xedaf,0xf102,0xa777,0xfe06,
+ 0xf7ff,0xe90a,0xfedf,0xea06,0xdbff,0xa812,0x7fff,0x520c,
+ 0x7efd,0xa80c,0x7df6,0x40ec,0x2a5a,0x91a8,0x3554,0xb858,
+ 0x1b2c,0x1150,0x08c0,0x00a0,0x0420,0x0b40,0x0220,0x2580,
+ 0x0180,0xab00,0x0074,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007d,0x1c00,0x01fb,0x8300,0x03fe,0xc180,
+ 0x077d,0x4440,0x0dfe,0x9520,0x1cbf,0x2090,0x3ffd,0x0058,
+ 0x31ff,0xc0a8,0x7dfe,0x402c,0x7fff,0x8054,0x7ffc,0x402c,
+ 0xfff5,0x000a,0xefaa,0x7276,0xb574,0x0296,0xde88,0x095e,
+ 0xaa50,0x045e,0x8120,0x12ba,0xa400,0x42ba,0x4000,0x156c,
+ 0x4200,0x92d4,0x4302,0x2bfc,0x21c8,0xa438,0x3405,0x5328,
+ 0x1553,0x7bb0,0x0ef2,0xaf20,0x047b,0x51c0,0x0355,0x9a80,
+ 0x01d5,0xdf00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x037f,0xfe80,
+ 0x077f,0xf7c0,0x0fff,0xf760,0x1cbf,0xa0f0,0x3fff,0x8028,
+ 0x37ff,0xc0b8,0x7fff,0x4034,0x7fff,0x806c,0x7fff,0xc054,
+ 0xffff,0xc036,0xffff,0xf3ca,0xffff,0xfb6a,0xf9ff,0xf6a2,
+ 0xfdff,0xfba2,0xffff,0xed42,0xffff,0xbd46,0x7fff,0xea9c,
+ 0x7cff,0x6d24,0x7dfd,0xd4e4,0x3f37,0x5b88,0x3bfa,0xac88,
+ 0x1a2e,0xb410,0x0881,0x5060,0x0784,0xa440,0x02aa,0x4080,
+ 0x01aa,0x0300,0x007c,0x1c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0072,0xfc00,0x0185,0x7f00,0x0381,0x7f80,
+ 0x0702,0xb2c0,0x0c05,0x6660,0x1000,0xa0b0,0x2502,0x8008,
+ 0x2481,0x0088,0x4405,0x4014,0x4400,0x8004,0x400b,0x8044,
+ 0x800a,0xc002,0xd055,0xa282,0xce8b,0xf102,0xaf77,0xfe06,
+ 0xd3af,0xe90a,0xfedf,0xea06,0xdbff,0xa812,0x7fff,0x5204,
+ 0x7cfd,0xa80c,0x7cf6,0x404c,0x2b5a,0x9028,0x3554,0x8058,
+ 0x1822,0x2150,0x0800,0x00a0,0x0400,0x0b40,0x0200,0x2580,
+ 0x0180,0xab00,0x0078,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0072,0xfc00,0x0185,0x7f00,0x0281,0x7f80,
+ 0x0582,0xbbc0,0x0805,0x66e0,0x1340,0xb0f0,0x2002,0xc0f8,
+ 0x2c01,0x00d8,0x4405,0xc01c,0x4400,0x803c,0x400b,0x807c,
+ 0x800a,0xc13e,0xd055,0xabbe,0xce8b,0xfdfe,0xaf77,0xfffa,
+ 0xd3af,0xfff6,0xfedf,0xfffa,0xdbff,0xffea,0x7fff,0xfff4,
+ 0x7dff,0xfff4,0x7eff,0xff54,0x3eff,0xfe58,0x3fff,0xc7a8,
+ 0x1cf1,0xceb0,0x0f3f,0xff60,0x07df,0xf4c0,0x03df,0xda80,
+ 0x01ff,0x5700,0x0073,0xbc00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007d,0x1c00,0x01fa,0x8300,0x037e,0x8080,
+ 0x07fd,0x4c40,0x0ffa,0x95a0,0x1fff,0x3090,0x3ffd,0x4088,
+ 0x3ffe,0xc0e8,0x7ffa,0xc024,0x7fff,0x8044,0x7ff4,0x4004,
+ 0xfff5,0x0102,0xafaa,0x7a42,0xb574,0x0602,0xd488,0x0002,
+ 0xa850,0x0002,0x8120,0x0002,0xa400,0x0002,0x4000,0x0004,
+ 0x4000,0x0004,0x4000,0x0044,0x2000,0x0008,0x3000,0x0008,
+ 0x1000,0x0010,0x0800,0x0020,0x0400,0x0040,0x0200,0x0080,
+ 0x0180,0x0300,0x0070,0x1c00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b47img[] = {
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x03ff,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xffe0,0x1fff,0xfff0,0x3fff,0xfff8,
+ 0x3fff,0xfff8,0x7fff,0xfffc,0x7fff,0xfffc,0x7fff,0xfffc,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0x7fff,0xfffc,
+ 0x7fff,0xfffc,0x7fff,0xfffc,0x3fff,0xfff8,0x3fff,0xfff8,
+ 0x1fff,0xfff0,0x0fff,0xffe0,0x07ff,0xffc0,0x03ff,0xff80,
+ 0x01ff,0xff00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b46img[] = {
+ 0x000f,0xe000,0x0074,0x1c00,0x01a9,0x0300,0x0324,0x4080,
+ 0x07d9,0x0840,0x0d54,0x04a0,0x1fe9,0x3090,0x2a94,0x4088,
+ 0x3d69,0x40c8,0x6cd4,0xc004,0x5552,0x8004,0x5540,0x0004,
+ 0x9551,0x0142,0xc888,0x6a02,0xa524,0x0402,0x8c00,0x0002,
+ 0xa450,0x0002,0x8000,0x0002,0x8000,0x0006,0x4000,0x0004,
+ 0x4200,0x0004,0x4100,0x0044,0x2100,0x0188,0x3000,0x3808,
+ 0x130e,0x2010,0x0840,0x0020,0x0420,0x0040,0x0220,0x0080,
+ 0x0180,0x0300,0x0070,0x1c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x037f,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xf7e0,0x1fff,0xb0f0,0x3fff,0xc0a8,
+ 0x3fff,0xc0f8,0x7fff,0xc034,0x7fff,0x806c,0x7fff,0xc054,
+ 0xffff,0xc176,0xffff,0xfbca,0xffff,0xff6a,0xfdff,0xf6a6,
+ 0xfdff,0xfbaa,0xffff,0xed42,0xffff,0xbd56,0x7fff,0xea94,
+ 0x7eff,0x6d24,0x7dfd,0xd74c,0x3f37,0x5ba8,0x3bfa,0xbc88,
+ 0x1b2e,0xa510,0x0841,0x5060,0x07a4,0xa540,0x02aa,0x4080,
+ 0x01aa,0x8b00,0x0070,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x037f,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xf7e0,0x1fff,0xb0f0,0x3fff,0xc0a8,
+ 0x3fff,0xc0f8,0x7fff,0xc034,0x7fff,0x806c,0x7fff,0xc054,
+ 0xffff,0xc176,0xffff,0xfbca,0xffff,0xff6a,0xfdff,0xf6a6,
+ 0xfdff,0xfbaa,0xffff,0xed42,0xffff,0xbd56,0x7fff,0xea94,
+ 0x7eff,0x6d24,0x7dfd,0xd74c,0x3f37,0x5ba8,0x3bfa,0xbc88,
+ 0x1b2e,0xa510,0x0841,0x5060,0x07a4,0xa540,0x02aa,0x4080,
+ 0x01aa,0x8b00,0x0070,0x5c00,0x000f,0xe000,0x0000,0x0000,
+ 0x000f,0xe000,0x0070,0x1c00,0x0180,0x0300,0x0280,0x0080,
+ 0x0500,0x0040,0x0800,0x0020,0x1000,0x0010,0x2000,0x0058,
+ 0x2400,0x0008,0x4400,0x000c,0x4400,0x0014,0x4000,0x002c,
+ 0x8000,0x000a,0x8000,0x0036,0x8400,0x0096,0x8600,0x095a,
+ 0x8600,0x0456,0x8000,0x12be,0x8000,0x42ae,0x4000,0x156c,
+ 0x4300,0x92dc,0x4302,0x28f4,0x21c8,0xa5d8,0x3405,0x7b78,
+ 0x17df,0x7af0,0x0ffe,0xafa0,0x047b,0x5ac0,0x0375,0xbf80,
+ 0x01d5,0x7700,0x007f,0xbc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b45img[] = {
+ 0x000f,0xe000,0x0070,0x1c00,0x0180,0x0300,0x0280,0x0080,
+ 0x0500,0x0840,0x0800,0x08a0,0x1000,0x7790,0x2000,0x2088,
+ 0x2400,0x2048,0x4400,0xc064,0x4400,0x2084,0x4000,0x2084,
+ 0x8000,0x3bc2,0x8000,0x6402,0x8400,0x0402,0x8400,0x0002,
+ 0x8400,0x0002,0x8000,0x0002,0x8000,0x0006,0x4000,0x000c,
+ 0x4200,0x0004,0x4100,0x0044,0x2100,0x0188,0x3000,0x1808,
+ 0x130e,0x6010,0x0840,0x0020,0x0420,0x0040,0x0220,0x0080,
+ 0x0180,0x0300,0x0070,0x1c00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b44img[] = {
+ 0x000f,0xe000,0x007f,0xfc00,0x01ff,0xff00,0x03ff,0xff80,
+ 0x07ff,0xffc0,0x0fff,0xffe0,0x1fff,0xfff0,0x3fff,0xfff8,
+ 0x3fff,0xfff8,0x7fff,0xfffc,0x7fff,0xfffc,0x7fff,0xfffc,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,
+ 0xffff,0xfffe,0xffff,0xfffe,0xffff,0xfffe,0x7fff,0xfffc,
+ 0x7fff,0xfffc,0x7fff,0xfffc,0x3fff,0xfff8,0x3fff,0xfff8,
+ 0x1fff,0xfff0,0x0fff,0xffe0,0x07ff,0xffc0,0x03ff,0xff80,
+ 0x01ff,0xff00,0x007f,0xfc00,0x000f,0xe000,0x0000,0x0000
+};
+
+static int rs_b43img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4007,0xe003,0x4007,0xf203,0x4007,0xfe03,0x4000,0x7e03,
+ 0x4000,0x3e03,0x407e,0x3e03,0x407c,0x7e03,0x407c,0x0003,
+ 0x407e,0x0003,0x407f,0xc003,0x404f,0xc003,0x4007,0xc003,
+ 0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b42img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4007,0xe002,
+ 0x4007,0xf202,0x4007,0xfe02,0x4000,0x7e02,0x4000,0x3e02,
+ 0x407e,0x3e02,0x407c,0x7e02,0x407c,0x0002,0x407e,0x0002,
+ 0x407f,0xc002,0x404f,0xc002,0x4007,0xc002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b41img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4007,0xe003,0x4007,0xf303,0x4007,0xff03,0x4007,0xff03,
+ 0x4000,0x3f03,0x407f,0xbf03,0x407f,0x7f03,0x407e,0x7f03,
+ 0x407e,0x0003,0x407f,0xe003,0x407f,0xe003,0x4067,0xe003,
+ 0x4047,0xe003,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b40img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0007,0xe000,0x0007,0xf200,0x0007,0xfe00,0x0000,0x7e00,
+ 0x0000,0x3e00,0x007e,0x3e00,0x007c,0x7e00,0x007c,0x0000,
+ 0x007e,0x0000,0x007f,0xc000,0x004f,0xc000,0x0007,0xc000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4007,0xe002,
+ 0x4007,0xf202,0x4007,0xfe02,0x4000,0x7e02,0x4000,0x3e02,
+ 0x407e,0x3e02,0x407c,0x7e02,0x407c,0x0002,0x407e,0x0002,
+ 0x407f,0xc002,0x404f,0xc002,0x4007,0xc002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b39img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4007,0xe002,0x4007,0xf202,0x4007,0xfe02,0x4000,0x7e02,
+ 0x4000,0x3e02,0x407e,0x3e02,0x407c,0x7e02,0x407c,0x0002,
+ 0x407e,0x0002,0x407f,0xc002,0x404f,0xc002,0x4007,0xc002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b38img[] = {
+ 0x7fff,0xfffe,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b37img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4030,0x1803,0x4078,0x3c03,0x407c,0x7c03,0x403e,0xf803,
+ 0x401f,0xf003,0x400f,0xe003,0x4007,0xc003,0x400f,0xe003,
+ 0x401f,0xf003,0x403e,0xf803,0x407c,0x7c03,0x4078,0x3c03,
+ 0x4030,0x1803,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b36img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4030,0x1802,
+ 0x4078,0x3c02,0x407c,0x7c02,0x403e,0xf802,0x401f,0xf002,
+ 0x400f,0xe002,0x4007,0xc002,0x400f,0xe002,0x401f,0xf002,
+ 0x403e,0xf802,0x407c,0x7c02,0x4078,0x3c02,0x4030,0x1802,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b35img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x0003,
+ 0x4030,0x1803,0x4078,0x3e03,0x407c,0x7e03,0x403e,0xfe03,
+ 0x401f,0xfc03,0x400f,0xf803,0x4007,0xf003,0x400f,0xe003,
+ 0x401f,0xf003,0x403f,0xf803,0x407f,0x7c03,0x407e,0x3e03,
+ 0x403c,0x1e03,0x4038,0x1c03,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b34img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0030,0x1800,0x0078,0x3c00,0x007c,0x7c00,0x003e,0xf800,
+ 0x001f,0xf000,0x000f,0xe000,0x0007,0xc000,0x000f,0xe000,
+ 0x001f,0xf000,0x003e,0xf800,0x007c,0x7c00,0x0078,0x3c00,
+ 0x0030,0x1800,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b33img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4030,0x1802,0x4078,0x3c02,0x407c,0x7c02,0x403e,0xf802,
+ 0x401f,0xf002,0x400f,0xe002,0x4007,0xc002,0x400f,0xe002,
+ 0x401f,0xf002,0x403e,0xf802,0x407c,0x7c02,0x4078,0x3c02,
+ 0x4030,0x1802,0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b32img[] = {
+ 0x7fff,0xfffe,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b31img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4001,0x8003,0x4001,0xc003,0x4001,0xe003,0x4001,0xf003,
+ 0x407f,0xf803,0x407f,0xfc03,0x407f,0xfe03,0x407f,0xfc03,
+ 0x407f,0xf803,0x4001,0xf003,0x4001,0xe003,0x4001,0xc003,
+ 0x4001,0x8003,0x4001,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b30img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4001,0x0002,0x4001,0x8002,
+ 0x4001,0xc002,0x4001,0xe002,0x4001,0xf002,0x407f,0xf802,
+ 0x407f,0xfc02,0x407f,0xfe02,0x407f,0xfc02,0x407f,0xf802,
+ 0x4001,0xf002,0x4001,0xe002,0x4001,0xc002,0x4001,0x8002,
+ 0x4001,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b29img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4001,0x8003,0x4001,0xc003,0x4001,0xe003,0x4001,0xf003,
+ 0x407f,0xf803,0x407f,0xfc03,0x407f,0xfe03,0x407f,0xff03,
+ 0x407f,0xfe03,0x407f,0xfc03,0x4001,0xf803,0x4001,0xf003,
+ 0x4001,0xe003,0x4001,0xc003,0x4001,0x8003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b28img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0001,0x0000,0x0001,0x8000,0x0001,0xc000,
+ 0x0001,0xe000,0x0001,0xf000,0x007f,0xf800,0x007f,0xfc00,
+ 0x007f,0xfe00,0x007f,0xfc00,0x007f,0xf800,0x0001,0xf000,
+ 0x0001,0xe000,0x0001,0xc000,0x0001,0x8000,0x0001,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b27img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4001,0x0002,
+ 0x4001,0x8002,0x4001,0x4002,0x4001,0x2002,0x407f,0x1002,
+ 0x4040,0x0802,0x4040,0x0402,0x406a,0xaa02,0x4055,0x5402,
+ 0x406a,0xa802,0x407f,0x5002,0x4001,0xa002,0x4001,0x4002,
+ 0x4001,0x8002,0x4001,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b26img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4001,0x8003,0x4001,0xc003,0x4001,0xe003,0x407f,0xf003,
+ 0x407f,0xf803,0x407f,0xfc03,0x407f,0xfe03,0x407f,0xfc03,
+ 0x407f,0xf803,0x407f,0xf003,0x4001,0xe003,0x4001,0xc003,
+ 0x4001,0x8003,0x4001,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b25img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x1c03,
+ 0x4003,0x9c03,0x4007,0xdc03,0x400f,0xfc03,0x401f,0xfc03,
+ 0x403f,0xfc03,0x407f,0xfc03,0x40ff,0xfe03,0x41ff,0xff03,
+ 0x41ff,0xff03,0x40ff,0xfe03,0x40ff,0xfe03,0x40ff,0xfe03,
+ 0x40ff,0xfe03,0x4000,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b24img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0001,0x0800,0x0003,0x8800,0x0006,0xc800,0x000d,0x6800,
+ 0x001b,0xb000,0x0037,0xd800,0x006f,0xec00,0x00d8,0x3600,
+ 0x003b,0xb800,0x007b,0xbc00,0x007b,0xbc00,0x007b,0xbc00,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0001,0x0800,0x0003,0x8800,0x0006,0xc800,
+ 0x000d,0x6800,0x001b,0xb000,0x0037,0xd800,0x006f,0xec00,
+ 0x00d8,0x3600,0x003b,0xb800,0x007b,0xbc00,0x007b,0xbc00,
+ 0x007b,0xbc00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0001,0x0800,0x0003,0x8800,
+ 0x0006,0xc800,0x000d,0x6800,0x001b,0xb000,0x0037,0xd800,
+ 0x006f,0xec00,0x00d8,0x3600,0x003b,0xb800,0x007b,0xbc00,
+ 0x007b,0xbc00,0x007b,0xbc00,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4001,0x1c02,0x4002,0x9402,
+ 0x4004,0x5402,0x4009,0x3402,0x4012,0x9402,0x4024,0x4c02,
+ 0x4048,0x2402,0x4090,0x1202,0x4127,0xc902,0x41c4,0x4702,
+ 0x4084,0x4202,0x4084,0x4202,0x4084,0x4202,0x40ff,0xfe02,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b23img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x1c03,
+ 0x4003,0x9e03,0x4007,0xde03,0x400f,0xfe03,0x401f,0xfe03,
+ 0x403f,0xfe03,0x407f,0xfe03,0x40ff,0xfe03,0x41ff,0xff03,
+ 0x41ff,0xff83,0x40ff,0xff83,0x40ff,0xff03,0x40ff,0xff03,
+ 0x40ff,0xff03,0x407f,0xff03,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b22img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0001,0x1c00,
+ 0x0003,0x9c00,0x0007,0xdc00,0x000f,0xfc00,0x001e,0xfc00,
+ 0x003c,0x7c00,0x0078,0x3c00,0x00f0,0x1e00,0x01e7,0xcf00,
+ 0x01c7,0xc700,0x0087,0xc200,0x0087,0xc200,0x0087,0xc200,
+ 0x00ff,0xfe00,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0001,0x1c00,0x0003,0x9400,0x0007,0xd400,0x000f,0xf400,
+ 0x001e,0xf400,0x003c,0x7c00,0x0078,0x3c00,0x00f0,0x1e00,
+ 0x01e7,0xcf00,0x01c7,0xc700,0x0087,0xc200,0x0087,0xc200,
+ 0x0087,0xc200,0x00ff,0xfe00,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0001,0x1c00,0x0002,0x9400,0x0004,0x5400,
+ 0x0009,0x3400,0x0012,0x9400,0x0024,0x4c00,0x0048,0x2400,
+ 0x0090,0x1200,0x0127,0xc900,0x01c4,0x4700,0x0084,0x4200,
+ 0x0084,0x4200,0x0084,0x4200,0x00ff,0xfe00,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4001,0x1c02,0x4002,0x9602,
+ 0x4004,0x5602,0x4009,0x3602,0x4013,0x9602,0x4026,0xce02,
+ 0x404c,0x6602,0x4098,0x3202,0x4137,0xd902,0x41e7,0xcf82,
+ 0x4087,0xc382,0x4087,0xc302,0x4087,0xc302,0x40ff,0xff02,
+ 0x407f,0xff02,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b21img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4001,0x1c02,
+ 0x4002,0x9c02,0x4004,0x5c02,0x4009,0x3c02,0x4012,0x9c02,
+ 0x4024,0x4c02,0x4048,0x2402,0x4090,0x1202,0x4120,0x0902,
+ 0x41c7,0xc702,0x4087,0xc202,0x4087,0xc202,0x4087,0xc202,
+ 0x4087,0xc202,0x40ff,0xfe02,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b20img[] = {
+ 0x7fff,0xfffe,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b19img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0x8003,
+ 0x4001,0x8003,0x4003,0x8003,0x4007,0x8003,0x400f,0x8003,
+ 0x401f,0xfe03,0x403f,0xfe03,0x407f,0xfe03,0x403f,0xfe03,
+ 0x401f,0xfe03,0x400f,0x8003,0x4007,0x8003,0x4003,0x8003,
+ 0x4001,0x8003,0x4000,0x8003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b18img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x8002,0x4001,0x8002,
+ 0x4003,0x8002,0x4007,0x8002,0x400f,0x8002,0x401f,0xfe02,
+ 0x403f,0xfe02,0x407f,0xfe02,0x403f,0xfe02,0x401f,0xfe02,
+ 0x400f,0x8002,0x4007,0x8002,0x4003,0x8002,0x4001,0x8002,
+ 0x4000,0x8002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b17img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4000,0xc003,
+ 0x4001,0xc003,0x4003,0xc003,0x4007,0xc003,0x400f,0xc003,
+ 0x401f,0xff03,0x403f,0xff03,0x407f,0xff03,0x403f,0xff03,
+ 0x401f,0xff03,0x400f,0xff03,0x4007,0xc003,0x4003,0xc003,
+ 0x4001,0xc003,0x4000,0xc003,0x4000,0x4003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b16img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,
+ 0x0000,0x0000,0x0000,0x8000,0x0001,0x8000,0x0003,0x8000,
+ 0x0007,0x8000,0x000f,0x8000,0x001f,0xfe00,0x003f,0xfe00,
+ 0x007f,0xfe00,0x003f,0xfe00,0x001f,0xfe00,0x000f,0x8000,
+ 0x0007,0x8000,0x0003,0x8000,0x0001,0x8000,0x0000,0x8000,
+ 0x0000,0x0000,0x0000,0x0000,0x0000,0x0000,0x7fff,0xfffe,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,0x4000,0x0002,
+ 0x4000,0x0002,0x4000,0x0002,0x7fff,0xfffe,0x0000,0x0000
+};
+
+static int rs_b15img[] = {
+ 0x7fff,0xfffe,0x4000,0x0002,0x4000,0x0002,0x4001,0x0002,
+ 0x4003,0x0002,0x4005,0x0002,0x4009,0x0002,0x4011,0xfc02,
+ 0x4020,0x0402,0x4040,0x0402,0x40aa,0xac02,0x4055,0x5402,
+ 0x402a,0xac02,0x4015,0xfc02,0x400b,0x0002,0x4005,0x0002,
+ 0x4003,0x0002,0x4001,0x0002,0x4000,0x0002,0x7fff,0xfffe,
+ 0x0000,0x0000
+};
+
+static int rs_b14img[] = {
+ 0x7fff,0xfffe,0x4000,0x0003,0x4000,0x0003,0x4001,0x0003,
+ 0x4003,0x0003,0x4007,0x0003,0x400f,0x0003,0x401f,0xfc03,
+ 0x403f,0xfc03,0x407f,0xfc03,0x40ff,0xfc03,0x407f,0xfc03,
+ 0x403f,0xfc03,0x401f,0xfc03,0x400f,0x0003,0x4007,0x0003,
+ 0x4003,0x0003,0x4001,0x0003,0x4000,0x0003,0x7fff,0xffff,
+ 0x3fff,0xffff
+};
+
+static int rs_b13img[] = {
+ 0x0000,0x3ffc,0x2004,0x2ff4,0x2004,0x3ffc,0x303c,0x3ffc,
+ 0x2004,0x2ff4,0x2004,0x2fe4,0x2004,0x2ff4,0x2004,0x3ffc
+};
+
+static int rs_b12img[] = {
+ 0x0000,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,
+ 0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc,0x3ffc
+};
+
+static int rs_b11img[] = {
+ 0x0000,0x0000,0x0180,0x03c0,0x07e0,0x0ff0,0x0180,0x0180,
+ 0x0180,0x0180,0x0180,0x0ff0,0x07e0,0x03c0,0x0180,0x0000
+};
+
+static int rs_b10img[] = {
+ 0x0000,0x0180,0x03c0,0x07e0,0x0ff0,0x1ff8,0x0ff0,0x03c0,
+ 0x03c0,0x03c0,0x0ff0,0x1ff8,0x0ff0,0x07e0,0x03c0,0x0180
+};
+
+static int rs_b9img[] = {
+ 0x0000,0x0000,0x0000,0x0000,0x0810,0x1818,0x381c,0x7ffe,
+ 0x7ffe,0x381c,0x1818,0x0810,0x0000,0x0000,0x0000,0x0000
+};
+
+static int rs_b8img[] = {
+ 0x0000,0x0000,0x0000,0x0810,0x1c38,0x3c3c,0x7ffe,0xffff,
+ 0xffff,0x7ffe,0x3c3c,0x1c38,0x0810,0x0000,0x0000,0x0000
+};
+
+static int rs_b7img[] = {
+ 0x0000,0x0000,0x1008,0x381c,0x1c38,0x0e70,0x07e0,0x03c0,
+ 0x03c0,0x07e0,0x0e70,0x1c38,0x381c,0x1008,0x0000,0x0000
+};
+
+static int rs_b6img[] = {
+ 0x0000,0x1008,0x381c,0x7c3e,0x3e7c,0x1ff8,0x0ff0,0x07e0,
+ 0x07e0,0x0ff0,0x1ff8,0x3e3c,0x7c3e,0x381c,0x1008,0x0000
+};
+
+static int rs_b5img[] = {
+ 0x0000,0x4000,0x60fe,0x7082,0x78c6,0x7c6c,0x7e38,0x7f38,
+ 0x7fc4,0x7c82,0x6cfe,0x46fe,0x0600,0x0300,0x0300,0x0000
+};
+
+static int rs_b4img[] = {
+ 0xc000,0xe0fe,0xf1ff,0xf9ff,0xfdff,0xfefe,0xff7c,0xfffc,
+ 0xfffe,0xffff,0xffff,0xefff,0xcffe,0x8780,0x0780,0x0380
+};
+
+static int rs_b3img[] = {
+ 0x0000,0x4000,0x60f0,0x71f8,0x7b1c,0x7e3e,0x7e76,0x7ee6,
+ 0x7fc6,0x7f8c,0x6df8,0x46f0,0x0600,0x0300,0x0300,0x0000
+};
+
+static int rs_b2img[] = {
+ 0xc000,0xe0f0,0xf1f8,0xfbfc,0xfffe,0xffff,0xffff,0xffff,
+ 0xffff,0xfffe,0xfffc,0xeff8,0xcff0,0x8780,0x0780,0x0380
+};
+
+static int rs_b1img[] = {
+ 0x0000,0x4000,0x603c,0x707e,0x786e,0x7c1c,0x7e38,0x7f76,
+ 0x7ffe,0x7c3c,0x6c00,0x4618,0x0618,0x0300,0x0300,0x0000
+};
+
+static int rs_b0img[] = {
+ 0xc000,0xe03c,0xf03e,0xf8ff,0xfcff,0xfe7e,0xff7e,0xffff,
+ 0xffff,0xfffe,0xfe3c,0xff3c,0xcf3c,0x8798,0x0780,0x0380
+};
+
+#define RS_NBITBLK 1
+
+static BITBLK rs_bitblk[] = {
+ rs_b222img, 6, 24, 0, 0, 1
+};
+
+#define RS_NICNBLK 7
+
+static ICONBLK rs_icnblk[] = {
+ rs_b0img, rs_b1img, rs_s10, 4096, 0, 0,
+ 0, 0, 16, 16, 8, 2, 0, 0,
+
+ rs_b2img, rs_b3img, rs_s11, 4096, 0, 0,
+ 0, 0, 16, 16, 8, 2, 0, 0,
+
+ rs_b4img, rs_b5img, rs_s12, 4096, 0, 0,
+ 0, 0, 16, 16, 8, 2, 0, 0,
+
+ rs_b6img, rs_b7img, rs_s13, 4096, 6, 6,
+ 0, 0, 16, 16, 7, 8, 0, 0,
+
+ rs_b8img, rs_b9img, rs_s14, 4096, 8, 8,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+
+ rs_b10img, rs_b11img, rs_s15, 4096, 8, 8,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+
+ rs_b12img, rs_b13img, rs_s16, 4096, 7, 8,
+ 0, 0, 16, 16, 5, 5, 0, 0
+};
+
+static CICON rs_cicon[] = {
+#define CI0 0
+/* CICON 0 */
+ 4, rs_b16img, rs_b17img, rs_b18img, rs_b19img, 0L,
+
+#define CI1 1
+/* CICON 1 */
+ 4, rs_b22img, rs_b23img, rs_b24img, rs_b25img, 0L,
+
+#define CI2 2
+/* CICON 2 */
+ 4, rs_b28img, rs_b29img, rs_b30img, rs_b31img, 0L,
+
+#define CI3 3
+/* CICON 3 */
+ 4, rs_b34img, rs_b35img, rs_b36img, rs_b37img, 0L,
+
+#define CI4 4
+/* CICON 4 */
+ 4, rs_b40img, rs_b41img, rs_b42img, rs_b43img, 0L,
+
+#define CI5 5
+/* CICON 5 */
+ 4, rs_b46img, rs_b47img, 0L, 0L, &rs_cicon[6],
+ 8, rs_b48img, rs_b49img, 0L, 0L, 0L,
+
+#define CI6 7
+/* CICON 6 */
+ 8, rs_b52img, rs_b53img, 0L, 0L, &rs_cicon[8],
+ 4, rs_b54img, rs_b55img, 0L, 0L, 0L,
+
+#define CI7 9
+/* CICON 7 */
+ 4, rs_b58img, rs_b59img, 0L, 0L, 0L,
+
+#define CI8 10
+/* CICON 8 */
+ 4, rs_b62img, rs_b63img, 0L, 0L, 0L,
+
+#define CI9 11
+/* CICON 9 */
+ 4, rs_b66img, rs_b67img, 0L, 0L, 0L,
+
+#define CI10 12
+/* CICON 10 */
+ 4, rs_b70img, rs_b71img, 0L, 0L, &rs_cicon[13],
+ 8, rs_b72img, rs_b73img, 0L, 0L, 0L,
+
+#define CI11 14
+/* CICON 11 */
+ 4, rs_b76img, rs_b77img, 0L, 0L, &rs_cicon[15],
+ 8, rs_b78img, rs_b79img, 0L, 0L, 0L,
+
+#define CI12 16
+/* CICON 12 */
+ 4, rs_b82img, rs_b83img, 0L, 0L, &rs_cicon[17],
+ 8, rs_b84img, rs_b85img, 0L, 0L, 0L,
+
+#define CI13 18
+/* CICON 13 */
+ 4, rs_b88img, rs_b89img, 0L, 0L, &rs_cicon[19],
+ 8, rs_b90img, rs_b91img, 0L, 0L, 0L,
+
+#define CI14 20
+/* CICON 14 */
+ 4, rs_b94img, rs_b95img, 0L, 0L, &rs_cicon[21],
+ 8, rs_b96img, rs_b97img, 0L, 0L, 0L,
+
+#define CI15 22
+/* CICON 15 */
+ 4, rs_b100img, rs_b101img, 0L, 0L, &rs_cicon[23],
+ 8, rs_b102img, rs_b103img, 0L, 0L, 0L,
+
+#define CI16 24
+/* CICON 16 */
+ 4, rs_b106img, rs_b107img, 0L, 0L, &rs_cicon[25],
+ 8, rs_b108img, rs_b109img, 0L, 0L, 0L,
+
+#define CI17 26
+/* CICON 17 */
+ 4, rs_b112img, rs_b113img, 0L, 0L, &rs_cicon[27],
+ 8, rs_b114img, rs_b115img, 0L, 0L, 0L,
+
+#define CI18 28
+/* CICON 18 */
+ 4, rs_b118img, rs_b119img, 0L, 0L, &rs_cicon[29],
+ 8, rs_b120img, rs_b121img, 0L, 0L, 0L,
+
+#define CI19 30
+/* CICON 19 */
+ 4, rs_b124img, rs_b125img, 0L, 0L, &rs_cicon[31],
+ 8, rs_b126img, rs_b127img, 0L, 0L, 0L,
+
+#define CI20 32
+/* CICON 20 */
+ 4, rs_b130img, rs_b131img, 0L, 0L, &rs_cicon[33],
+ 8, rs_b132img, rs_b133img, 0L, 0L, 0L,
+
+#define CI21 34
+/* CICON 21 */
+ 4, rs_b136img, rs_b137img, 0L, 0L, &rs_cicon[35],
+ 8, rs_b138img, rs_b139img, 0L, 0L, 0L,
+
+#define CI22 36
+/* CICON 22 */
+ 4, rs_b142img, rs_b143img, 0L, 0L, &rs_cicon[37],
+ 8, rs_b144img, rs_b145img, 0L, 0L, 0L,
+
+#define CI23 38
+/* CICON 23 */
+ 1, rs_b148img, rs_b149img, rs_b150img, rs_b151img, &rs_cicon[39],
+ 4, rs_b152img, rs_b153img, rs_b154img, rs_b155img, &rs_cicon[40],
+ 8, rs_b156img, rs_b157img, rs_b158img, rs_b159img, 0L,
+
+#define CI24 41
+/* CICON 24 */
+ 1, rs_b162img, rs_b163img, rs_b164img, rs_b165img, &rs_cicon[42],
+ 4, rs_b166img, rs_b167img, rs_b168img, rs_b169img, &rs_cicon[43],
+ 8, rs_b170img, rs_b171img, rs_b172img, rs_b173img, 0L,
+
+#define CI25 44
+/* CICON 25 */
+ 1, rs_b176img, rs_b177img, rs_b178img, rs_b179img, &rs_cicon[45],
+ 4, rs_b180img, rs_b181img, rs_b182img, rs_b183img, &rs_cicon[46],
+ 8, rs_b184img, rs_b185img, rs_b186img, rs_b187img, 0L,
+
+#define CI26 47
+/* CICON 26 */
+ 1, rs_b190img, rs_b191img, rs_b192img, rs_b193img, &rs_cicon[48],
+ 4, rs_b194img, rs_b195img, rs_b196img, rs_b197img, &rs_cicon[49],
+ 8, rs_b198img, rs_b199img, rs_b200img, rs_b201img, 0L,
+
+#define CI27 50
+/* CICON 27 */
+ 1, rs_b204img, rs_b205img, rs_b206img, rs_b207img, &rs_cicon[51],
+ 4, rs_b208img, rs_b209img, rs_b210img, rs_b211img, 0L,
+
+#define CI28 52
+/* CICON 28 */
+ 1, rs_b214img, rs_b215img, rs_b216img, rs_b217img, &rs_cicon[53],
+ 4, rs_b218img, rs_b219img, rs_b220img, rs_b221img, 0L
+};
+
+#define RS_NCICNBLK 29
+
+static CICONBLK rs_ciconblk[] = {
+ rs_b14img, rs_b15img, rs_s17, 4096, 0, 0,
+ 0, 0, 32, 21, 12, 7, 0, 0,
+ &rs_cicon[CI0],
+
+ rs_b20img, rs_b21img, rs_s18, 4096, 0, 0,
+ 0, 0, 32, 21, 13, 7, 0, 0,
+ &rs_cicon[CI1],
+
+ rs_b26img, rs_b27img, rs_s19, 4096, 0, 0,
+ 0, 0, 32, 21, 14, 7, 0, 0,
+ &rs_cicon[CI2],
+
+ rs_b32img, rs_b33img, rs_s20, 4096, 0, 0,
+ 0, 0, 32, 21, 13, 7, 0, 0,
+ &rs_cicon[CI3],
+
+ rs_b38img, rs_b39img, rs_s21, 4096, 0, 0,
+ 0, 0, 32, 21, 13, 7, 0, 0,
+ &rs_cicon[CI4],
+
+ rs_b44img, rs_b45img, rs_s22, 4096, 0, 0,
+ 0, 0, 32, 32, 13, 13, 0, 0,
+ &rs_cicon[CI5],
+
+ rs_b50img, rs_b51img, "FAVICON", 4096, 0, 0,
+ 28, 0, 16, 16, 0, 16, 72, 8,
+ &rs_cicon[CI6],
+
+ rs_b56img, rs_b57img, rs_s23, 4096, 5, 6,
+ 0, 0, 16, 16, 5, 5, 6, 8,
+ &rs_cicon[CI7],
+
+ rs_b60img, rs_b61img, rs_s24, 4096, 5, 6,
+ 0, 0, 16, 16, 5, 5, 6, 8,
+ &rs_cicon[CI8],
+
+ rs_b64img, rs_b65img, rs_s25, 4096, 14, 21,
+ 0, 0, 32, 32, 12, 13, 6, 8,
+ &rs_cicon[CI9],
+
+ rs_b68img, rs_b69img, rs_s26, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI10],
+
+ rs_b74img, rs_b75img, rs_s27, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI11],
+
+ rs_b80img, rs_b81img, rs_s28, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI12],
+
+ rs_b86img, rs_b87img, rs_s29, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI13],
+
+ rs_b92img, rs_b93img, rs_s30, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI14],
+
+ rs_b98img, rs_b99img, rs_s31, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI15],
+
+ rs_b104img, rs_b105img, rs_s32, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI16],
+
+ rs_b110img, rs_b111img, rs_s33, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI17],
+
+ rs_b116img, rs_b117img, rs_s34, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI18],
+
+ rs_b122img, rs_b123img, rs_s35, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI19],
+
+ rs_b128img, rs_b129img, rs_s36, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI20],
+
+ rs_b134img, rs_b135img, rs_s37, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI21],
+
+ rs_b140img, rs_b141img, rs_s38, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI22],
+
+ rs_b146img, rs_b147img, rs_s39, 4096, 7, 8,
+ 0, 0, 16, 16, 15, 8, 0, 0,
+ &rs_cicon[CI23],
+
+ rs_b160img, rs_b161img, rs_s40, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI24],
+
+ rs_b174img, rs_b175img, rs_s41, 4096, 0, 0,
+ 0, 0, 16, 16, 5, 5, 0, 0,
+ &rs_cicon[CI25],
+
+ rs_b188img, rs_b189img, rs_s42, 4096, 7, 8,
+ 0, 0, 16, 16, 15, 8, 0, 0,
+ &rs_cicon[CI26],
+
+ rs_b202img, rs_b203img, rs_s43, 4096, 16, 0,
+ 0, 0, 16, 16, 0, 0, 0, 0,
+ &rs_cicon[CI27],
+
+ rs_b212img, rs_b213img, rs_s44, 4096, 16, 0,
+ 0, 0, 16, 16, 0, 0, 0, 0,
+ &rs_cicon[CI28]
+};
+
+#define RS_NOBS 280
+
+static OBJECT rs_obj[] = {
+#define TR0 0
+/* TREE 0 */
+ -1, 1, 10, G_IBOX, /*** 0 ***/
+ NONE,
+ NORMAL,
+ (long) 0L,
+ 0, 0, 80, 25,
+
+ 10, 2, 2, G_BOX, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 80, 513,
+
+ 1, 3, 9, G_IBOX, /*** 2 ***/
+ NONE,
+ NORMAL,
+ (long) 0L,
+ 2, 0, 65, 769,
+
+ 4, -1, -1, G_TITLE, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) " NetSurf ",
+ 0, 0, 11, 769,
+
+ 5, -1, -1, G_TITLE, /*** 4 ***/
+ NONE,
+ NORMAL,
+ (long) " File ",
+ 11, 0, 7, 769,
+
+ 6, -1, -1, G_TITLE, /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) " Edit ",
+ 18, 0, 7, 769,
+
+ 7, -1, -1, G_TITLE, /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) " Display ",
+ 25, 0, 10, 769,
+
+ 8, -1, -1, G_TITLE, /*** 7 ***/
+ NONE,
+ NORMAL,
+ (long) " Navigate ",
+ 35, 0, 11, 769,
+
+ 9, -1, -1, G_TITLE, /*** 8 ***/
+ NONE,
+ NORMAL,
+ (long) " Utilities ",
+ 46, 0, 12, 769,
+
+ 2, -1, -1, G_TITLE, /*** 9 ***/
+ NONE,
+ NORMAL,
+ (long) " Help ",
+ 58, 0, 7, 769,
+
+ 0, 11, 60, G_IBOX, /*** 10 ***/
+ NONE,
+ NORMAL,
+ (long) 0L,
+ 0, 769, 79, 11,
+
+ 20, 12, 19, G_BOX, /*** 11 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 2, 0, 22, 8,
+
+ 13, -1, -1, G_STRING, /*** 12 ***/
+ NONE,
+ NORMAL,
+ (long) " About... ",
+ 0, 0, 22, 1,
+
+ 14, -1, -1, G_STRING, /*** 13 ***/
+ NONE,
+ DISABLED,
+ (long) "----------------------",
+ 0, 1, 22, 1,
+
+ 15, -1, -1, G_STRING, /*** 14 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 1 ",
+ 0, 2, 22, 1,
+
+ 16, -1, -1, G_STRING, /*** 15 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 2",
+ 0, 3, 22, 1,
+
+ 17, -1, -1, G_STRING, /*** 16 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 3",
+ 0, 4, 22, 1,
+
+ 18, -1, -1, G_STRING, /*** 17 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 4",
+ 0, 5, 22, 1,
+
+ 19, -1, -1, G_STRING, /*** 18 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 5",
+ 0, 6, 22, 1,
+
+ 11, -1, -1, G_STRING, /*** 19 ***/
+ NONE,
+ NORMAL,
+ (long) " Desk Accessory 6",
+ 0, 7, 22, 1,
+
+ 29, 21, 28, G_BOX, /*** 20 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 13, 0, 25, 8,
+
+ 22, -1, -1, G_STRING, /*** 21 ***/
+ NONE,
+ NORMAL,
+ (long) " New window [^N",
+ 0, 0, 25, 1,
+
+ 23, -1, -1, G_STRING, /*** 22 ***/
+ NONE,
+ NORMAL,
+ (long) " Open local file...[^O",
+ 0, 1, 25, 1,
+
+ 24, -1, -1, G_STRING, /*** 23 ***/
+ NONE,
+ NORMAL,
+ (long) " Open location [^G",
+ 0, 2, 25, 1,
+
+ 25, -1, -1, G_STRING, /*** 24 ***/
+ NONE,
+ NORMAL,
+ (long) " Close window",
+ 0, 3, 25, 1,
+
+ 26, -1, -1, G_STRING, /*** 25 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s1,
+ 0, 4, 25, 1,
+
+ 27, -1, -1, G_STRING, /*** 26 ***/
+ NONE,
+ NORMAL,
+ (long) " Save page [^S",
+ 0, 5, 25, 1,
+
+ 28, -1, -1, G_STRING, /*** 27 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s1,
+ 0, 6, 25, 1,
+
+ 20, -1, -1, G_STRING, /*** 28 ***/
+ NONE,
+ NORMAL,
+ (long) " Quit [^Q",
+ 0, 7, 25, 1,
+
+ 35, 30, 34, G_BOX, /*** 29 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 20, 0, 28, 5,
+
+ 31, -1, -1, G_STRING, /*** 30 ***/
+ NONE,
+ NORMAL,
+ (long) " Cut to clipboard [^X",
+ 0, 0, 28, 1,
+
+ 32, -1, -1, G_STRING, /*** 31 ***/
+ NONE,
+ NORMAL,
+ (long) " Copy to clipboard [^C",
+ 0, 1, 28, 1,
+
+ 33, -1, -1, G_STRING, /*** 32 ***/
+ NONE,
+ NORMAL,
+ (long) " Paste from clipboard [^V",
+ 0, 2, 28, 1,
+
+ 34, -1, -1, G_STRING, /*** 33 ***/
+ NONE,
+ DISABLED,
+ (long) "----------------------------",
+ 0, 3, 28, 1,
+
+ 29, -1, -1, G_STRING, /*** 34 ***/
+ NONE,
+ NORMAL,
+ (long) " Find... [F4",
+ 0, 4, 28, 1,
+
+ 47, 36, 46, G_BOX, /*** 35 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 27, 0, 30, 11,
+
+ 37, -1, -1, G_STRING, /*** 36 ***/
+ NONE,
+ NORMAL,
+ (long) " Stop loading this Page [^\033",
+ 0, 0, 30, 1,
+
+ 38, -1, -1, G_STRING, /*** 37 ***/
+ NONE,
+ NORMAL,
+ (long) " Reload [F5",
+ 0, 1, 30, 1,
+
+ 39, -1, -1, G_STRING, /*** 38 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s2,
+ 0, 2, 30, 1,
+
+ 40, -1, -1, G_STRING, /*** 39 ***/
+ NONE,
+ NORMAL,
+ (long) " Scale View...",
+ 0, 3, 30, 1,
+
+ 41, -1, -1, G_STRING, /*** 40 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s2,
+ 0, 4, 30, 1,
+
+ 42, -1, -1, G_STRING, /*** 41 ***/
+ NONE,
+ NORMAL,
+ (long) " Toolbars [^F1",
+ 0, 5, 30, 1,
+
+ 43, -1, -1, G_STRING, /*** 42 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s2,
+ 0, 6, 30, 1,
+
+ 44, -1, -1, G_STRING, /*** 43 ***/
+ NONE,
+ NORMAL,
+ (long) " Save window size",
+ 0, 7, 30, 1,
+
+ 45, -1, -1, G_STRING, /*** 44 ***/
+ NONE,
+ NORMAL,
+ (long) " Debug rendering",
+ 0, 8, 30, 1,
+
+ 46, -1, -1, G_STRING, /*** 45 ***/
+ NONE,
+ NORMAL,
+ (long) " Background images",
+ 0, 9, 30, 1,
+
+ 35, -1, -1, G_STRING, /*** 46 ***/
+ NONE,
+ NORMAL,
+ (long) " Foreground images",
+ 0, 10, 30, 1,
+
+ 51, 48, 50, G_BOX, /*** 47 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 37, 0, 24, 3,
+
+ 49, -1, -1, G_STRING, /*** 48 ***/
+ NONE,
+ NORMAL,
+ (long) " Back one page [@\004",
+ 0, 0, 24, 1,
+
+ 50, -1, -1, G_STRING, /*** 49 ***/
+ NONE,
+ NORMAL,
+ (long) " Forward one page [@\003",
+ 0, 1, 24, 1,
+
+ 47, -1, -1, G_STRING, /*** 50 ***/
+ NONE,
+ NORMAL,
+ (long) " Home",
+ 0, 2, 24, 1,
+
+ 60, 52, 59, G_BOX, /*** 51 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 48, 0, 23, 8,
+
+ 53, -1, -1, G_STRING, /*** 52 ***/
+ NONE,
+ NORMAL,
+ (long) " Local History [F7",
+ 0, 0, 23, 1,
+
+ 54, -1, -1, G_STRING, /*** 53 ***/
+ NONE,
+ NORMAL,
+ (long) " Global History",
+ 0, 1, 23, 1,
+
+ 55, -1, -1, G_STRING, /*** 54 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s3,
+ 0, 2, 23, 1,
+
+ 56, -1, -1, G_STRING, /*** 55 ***/
+ NONE,
+ NORMAL,
+ (long) " Add to bookmarks[^D",
+ 0, 3, 23, 1,
+
+ 57, -1, -1, G_STRING, /*** 56 ***/
+ NONE,
+ NORMAL,
+ (long) " Show bookmarks [F6",
+ 0, 4, 23, 1,
+
+ 58, -1, -1, G_STRING, /*** 57 ***/
+ NONE,
+ DISABLED,
+ (long) rs_s3,
+ 0, 5, 23, 1,
+
+ 59, -1, -1, G_STRING, /*** 58 ***/
+ NONE,
+ NORMAL,
+ (long) " Choices... ",
+ 0, 6, 23, 1,
+
+ 51, -1, -1, G_STRING, /*** 59 ***/
+ NONE,
+ NORMAL,
+ (long) " Verbose Log",
+ 0, 7, 23, 1,
+
+ 10, 61, 61, G_BOX, /*** 60 ***/
+ NONE,
+ NORMAL,
+ (long) 16716032L,
+ 60, 0, 19, 1,
+
+ 60, -1, -1, G_STRING, /*** 61 ***/
+ LASTOB,
+ NORMAL,
+ (long) " Help Content[F1",
+ 0, 0, 19, 1,
+
+#define TR1 62
+/* TREE 1 */
+ -1, 1, 8, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 48, 2049,
+
+ 7, 2, 6, G_BOX, /*** 1 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 21, 1793,
+
+ 3, -1, -1, G_CICON, /*** 2 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[0],
+ 512, 256, 4, 1281,
+
+ 4, -1, -1, G_CICON, /*** 3 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[1],
+ -1531, 256, 4, 1281,
+
+ 5, -1, -1, G_CICON, /*** 4 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[2],
+ 520, 256, 4, 1281,
+
+ 6, -1, -1, G_CICON, /*** 5 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[3],
+ 524, 256, 4, 1281,
+
+ 1, -1, -1, G_CICON, /*** 6 ***/
+ TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[4],
+ 23045, 256, 4, 1281,
+
+ 8, -1, -1, G_BOX, /*** 7 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16720240L,
+ 21, 512, 22, 1025,
+
+ 0, -1, -1, G_BOX, /*** 8 ***/
+ LASTOB|FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 45, 256, 1026, 1537,
+
+#define TR2 71
+/* TREE 2 */
+ -1, 1, 2, G_BOX, /*** 0 ***/
+ NONE,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 9, 4,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[5],
+ 2, 1536, 4, 2,
+
+ 0, -1, -1, G_TEXT, /*** 2 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_tedinfo[0],
+ -510, -2557, 517, 2048,
+
+#define TR3 74
+/* TREE 3 */
+ -1, 1, 1, G_BOX, /*** 0 ***/
+ NONE,
+ OUTLINED,
+ (long) 135424L,
+ 0, 0, 11, 4,
+
+ 0, -1, -1, G_CICON, /*** 1 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_ciconblk[6],
+ 1, 1, 9, 2049,
+
+#define TR4 76
+/* TREE 4 */
+ -1, 1, 7, G_BOX, /*** 0 ***/
+ NONE,
+ OUTLINED,
+ (long) 135424L,
+ 0, 0, 42, 3,
+
+ 2, -1, -1, G_ICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[0],
+ 2, 1, 2, 1,
+
+ 3, -1, -1, G_ICON, /*** 2 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[1],
+ 5, 1, 2, 1,
+
+ 4, -1, -1, G_ICON, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[2],
+ 8, 1, 2, 1,
+
+ 5, -1, -1, G_ICON, /*** 4 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[3],
+ 11, 1, 2, 1,
+
+ 6, -1, -1, G_ICON, /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[4],
+ 14, 1, 2, 1,
+
+ 7, -1, -1, G_ICON, /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_icnblk[5],
+ 17, 1, 2, 1,
+
+ 0, -1, -1, G_ICON, /*** 7 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_icnblk[6],
+ 20, 1, 2, 1,
+
+#define TR5 84
+/* TREE 5 */
+ -1, 1, 6, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 135424L,
+ 0, 0, 1059, 7,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[7],
+ 1025, 1, 2, 1,
+
+ 3, -1, -1, G_FTEXT, /*** 2 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[1],
+ 1028, 1, 29, 1,
+
+ 4, -1, -1, G_CICON, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[8],
+ 1025, 3, 2, 1,
+
+ 5, -1, -1, G_FTEXT, /*** 4 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[2],
+ 1028, 3, 29, 1,
+
+ 6, -1, -1, G_BUTTON, /*** 5 ***/
+ SELECTABLE|DEFAULT|EXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Login",
+ 15, 5, 8, 1,
+
+ 0, -1, -1, G_BUTTON, /*** 6 ***/
+ SELECTABLE|EXIT|LASTOB|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) rs_s4,
+ 25, 5, 8, 1,
+
+#define TR6 91
+/* TREE 6 */
+ -1, 1, 16, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16650496L,
+ 0, 0, 38, 20,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[9],
+ 1, 1, 4, 2,
+
+ 3, -1, -1, G_TEXT, /*** 2 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[3],
+ 6, 1, 31, 1,
+
+ 4, -1, -1, G_TEXT, /*** 3 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[4],
+ 13, 2, 24, 1,
+
+ 5, -1, -1, G_BUTTON, /*** 4 ***/
+ SELECTABLE|DEFAULT|EXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Accept",
+ 1, 18, 7, 1,
+
+ 6, -1, -1, G_BUTTON, /*** 5 ***/
+ SELECTABLE|EXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Reject",
+ 30, 18, 7, 1,
+
+ 7, -1, -1, G_STRING, /*** 6 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) "Server:",
+ 2053, 2, 7, 1,
+
+ 8, -1, -1, G_BUTTON, /*** 7 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND,
+ NORMAL,
+ (long) "NEXT CERT INFO",
+ 513, -1276, 33, 1,
+
+ 9, -1, -1, G_BOX, /*** 8 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16716128L,
+ 1, 5, 34, 11,
+
+ 10, -1, -1, G_BOX, /*** 9 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716049L,
+ 3, 272, -226, 1,
+
+ 11, -1, -1, G_BOXCHAR, /*** 10 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 67047680L,
+ 33, 272, 2, 1,
+
+ 12, -1, -1, G_BOXCHAR, /*** 11 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 83824896L,
+ 2048, 272, 2, 1,
+
+ 13, -1, -1, G_BOX, /*** 12 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 3, 272, 26, 1,
+
+ 14, -1, -1, G_BOXCHAR, /*** 13 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33493248L,
+ 291, 5, 2, 1,
+
+ 15, -1, -1, G_BOXCHAR, /*** 14 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 50270464L,
+ 291, 15, 2, 1,
+
+ 16, -1, -1, G_BOX, /*** 15 ***/
+ TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716049L,
+ 291, 6, 2, -247,
+
+ 0, -1, -1, G_BOX, /*** 16 ***/
+ LASTOB|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 291, 6, 2, 1030,
+
+#define TR7 108
+/* TREE 7 */
+ -1, 1, 13, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ OUTLINED,
+ (long) 135424L,
+ 0, 0, 44, 3,
+
+ 2, -1, -1, G_CICON|(119<<8), /*** 1 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[10],
+ 2, 1, 2, 1,
+
+ 3, -1, -1, G_CICON|(119<<8), /*** 2 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[11],
+ 5, 1, 2, 1,
+
+ 4, -1, -1, G_CICON|(119<<8), /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[12],
+ 8, 1, 2, 1,
+
+ 5, -1, -1, G_CICON|(119<<8), /*** 4 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[13],
+ 11, 1, 2, 1,
+
+ 6, -1, -1, G_CICON|(119<<8), /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[14],
+ 14, 1, 2, 1,
+
+ 7, -1, -1, G_CICON|(119<<8), /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[15],
+ 17, 1, 2, 1,
+
+ 8, -1, -1, G_CICON|(119<<8), /*** 7 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[16],
+ 20, 1, 2, 1,
+
+ 9, -1, -1, G_CICON|(119<<8), /*** 8 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[17],
+ 23, 1, 2, 1,
+
+ 10, -1, -1, G_CICON|(119<<8), /*** 9 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[18],
+ 26, 1, 2, 1,
+
+ 11, -1, -1, G_CICON|(119<<8), /*** 10 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[19],
+ 29, 1, 2, 1,
+
+ 12, -1, -1, G_CICON|(119<<8), /*** 11 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[20],
+ 32, 1, 2, 1,
+
+ 13, -1, -1, G_CICON|(119<<8), /*** 12 ***/
+ NONE,
+ NORMAL,
+ (long) &rs_ciconblk[21],
+ 35, 1, 2, 1,
+
+ 0, -1, -1, G_CICON|(119<<8), /*** 13 ***/
+ LASTOB,
+ NORMAL,
+ (long) &rs_ciconblk[22],
+ 39, 1, 2, 1,
+
+#define TR8 122
+/* TREE 8 */
+ -1, 1, 4, G_BOX, /*** 0 ***/
+ TOUCHEXIT|FL3DBAK,
+ WHITEBAK,
+ (long) 4352L,
+ 0, 0, 10, 1025,
+
+ 2, -1, -1, G_CICON, /*** 1 ***/
+ SELECTABLE|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[23],
+ 1024, 512, 2, 1,
+
+ 3, -1, -1, G_CICON, /*** 2 ***/
+ SELECTABLE|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[24],
+ 3, 512, 2, 1,
+
+ 4, -1, -1, G_CICON, /*** 3 ***/
+ SELECTABLE|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[25],
+ -504, 512, 2, 1,
+
+ 0, -1, -1, G_CICON, /*** 4 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT,
+ NORMAL,
+ (long) &rs_ciconblk[26],
+ 1029, 512, 2, 1,
+
+#define TR9 127
+/* TREE 9 */
+ -1, 1, 8, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1, 1, 49, 5,
+
+ 2, -1, -1, G_FTEXT, /*** 1 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[5],
+ 1, 1, 37, 1,
+
+ 3, -1, -1, G_STRING, /*** 2 ***/
+ NONE,
+ DRAW3D,
+ (long) "Show all",
+ 25, 3, 9, 1,
+
+ 4, -1, -1, G_STRING, /*** 3 ***/
+ NONE,
+ NORMAL,
+ (long) "Case sensitive",
+ 5, 3, 14, 1,
+
+ 5, -1, -1, G_BUTTON, /*** 4 ***/
+ SELECTABLE|DEFAULT|TOUCHEXIT|FL3DIND,
+ WHITEBAK|DRAW3D,
+ (long) "Search",
+ 39, 1, 8, 1,
+
+ 6, -1, -1, G_STRING, /*** 5 ***/
+ NONE,
+ DRAW3D,
+ (long) "Forward",
+ 39, 3, 9, 1,
+
+ 7, -1, -1, G_BUTTON|(18<<8), /*** 6 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND|FL3DBAK,
+ DRAW3D,
+ (long) rs_s0,
+ 2, 3, 2, 1,
+
+ 8, -1, -1, G_BUTTON|(18<<8), /*** 7 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND|FL3DBAK,
+ DRAW3D,
+ (long) rs_s0,
+ 22, 3, 2, 1,
+
+ 0, -1, -1, G_BUTTON|(18<<8), /*** 8 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT|FL3DIND|FL3DBAK,
+ SELECTED|DRAW3D,
+ (long) rs_s0,
+ 36, 3, 2, 1,
+
+#define TR10 136
+/* TREE 10 */
+ -1, 1, 9, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16650496L,
+ 0, 0, 40, 6,
+
+ 3, 2, 2, G_BOX, /*** 1 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 69953L,
+ 1, 1, 1061, 1,
+
+ 1, -1, -1, G_BOX, /*** 2 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 70003L,
+ 0, 0, 513, 1,
+
+ 4, -1, -1, G_TEXT, /*** 3 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[6],
+ 1, 0, 38, 1,
+
+ 5, -1, -1, G_BUTTON, /*** 4 ***/
+ SELECTABLE|TOUCHEXIT|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) rs_s4,
+ 31, 4, 8, 1,
+
+ 6, -1, -1, G_STRING, /*** 5 ***/
+ NONE,
+ NORMAL,
+ (long) "Close dialog when finished",
+ 4, 4, 26, 1,
+
+ 7, -1, -1, G_TEXT, /*** 6 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[7],
+ 1, 2, 21, 1,
+
+ 8, -1, -1, G_TEXT, /*** 7 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[8],
+ 22, 2, 5, 1,
+
+ 9, -1, -1, G_TEXT, /*** 8 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[9],
+ 29, 2, 11, 1,
+
+ 0, -1, -1, G_BOXCHAR|(18<<8), /*** 9 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT|FL3DIND|FL3DBAK,
+ CROSSED|SHADOWED,
+ (long) 4096L,
+ 1025, 516, 1025, -1023,
+
+#define TR11 146
+/* TREE 11 */
+ -1, 1, 1, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ OUTLINED,
+ (long) 135424L,
+ 1, 1, 52, 9,
+
+ 0, -1, -1, G_IMAGE, /*** 1 ***/
+ LASTOB|FL3DBAK,
+ NORMAL,
+ (long) &rs_bitblk[0],
+ 3, 1, 6, 2049,
+
+#define TR12 148
+/* TREE 12 */
+ -1, 1, 11, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16650496L,
+ 0, 0, 22, 11,
+
+ 2, -1, -1, G_TEXT, /*** 1 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[10],
+ 0, 0, 22, 1,
+
+ 3, -1, -1, G_TEXT, /*** 2 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[11],
+ 0, 1, 22, 1,
+
+ 4, -1, -1, G_TEXT, /*** 3 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[12],
+ 0, 2, 22, 1,
+
+ 5, -1, -1, G_TEXT, /*** 4 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[13],
+ 0, 3, 22, 1,
+
+ 6, -1, -1, G_TEXT, /*** 5 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[14],
+ 0, 4, 22, 1,
+
+ 7, -1, -1, G_TEXT, /*** 6 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[15],
+ 0, 5, 22, 1,
+
+ 8, -1, -1, G_TEXT, /*** 7 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[16],
+ 0, 6, 22, 1,
+
+ 9, -1, -1, G_TEXT, /*** 8 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[17],
+ 0, 7, 22, 1,
+
+ 10, -1, -1, G_TEXT, /*** 9 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[18],
+ 0, 8, 22, 1,
+
+ 11, -1, -1, G_TEXT, /*** 10 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[19],
+ 0, 10, 22, 1,
+
+ 0, -1, -1, G_TEXT, /*** 11 ***/
+ SELECTABLE|LASTOB|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[20],
+ 0, 9, 22, 1,
+
+#define TR13 160
+/* TREE 13 */
+ -1, 1, 1, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1, 1, 11, 9,
+
+ 0, 2, 4, G_BOX, /*** 1 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 69888L,
+ 1, 1, -509, 7,
+
+ 7, 3, 3, G_BUTTON, /*** 2 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED,
+ (long) rs_s0,
+ 768, 1537, 2, 3,
+
+ 2, -1, -1, G_BUTTON, /*** 3 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) rs_s0,
+ 0, 0, 2, 2,
+
+ 1, -1, -1, G_CICON, /*** 4 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) &rs_ciconblk[28],
+ 768, 512, 2, 1,
+
+ 7, -1, -1, G_CICON, /*** 5 ***/
+ SELECTABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_ciconblk[27],
+ 512, 256, 2, 1,
+
+ 4, -1, -1, G_IBOX, /*** 6 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 256, 256, 1026, 513,
+
+ 6, 5, 5, G_IBOX, /*** 7 ***/
+ LASTOB|FL3DBAK,
+ NORMAL,
+ (long) 16716032L,
+ 256, -2298, 1026, 513,
+
+#define TR14 168
+/* TREE 14 */
+ -1, 1, 86, G_BOX, /*** 0 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 63, 2112,
+
+ 2, -1, -1, G_BUTTON, /*** 1 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Save",
+ 1077, 63, 8, 1,
+
+ 3, -1, -1, G_BUTTON, /*** 2 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) rs_s4,
+ 1067, 63, 8, 1,
+
+ 32, 4, 31, G_IBOX, /*** 3 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 0, 63, 2062,
+
+ 31, 5, 30, G_BOX, /*** 4 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 13,
+
+ 6, -1, -1, G_FTEXT, /*** 5 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[21],
+ 1, 1, 54, 1,
+
+ 7, -1, -1, G_STRING, /*** 6 ***/
+ NONE,
+ NORMAL,
+ (long) "Hide advertisements",
+ 1028, 2050, 27, 1,
+
+ 8, -1, -1, G_STRING|(18<<8), /*** 7 ***/
+ NONE,
+ DRAW3D|STATE8,
+ (long) "Disable pop-up windows",
+ 1028, 4, 27, 1,
+
+ 9, -1, -1, G_BOXCHAR|(101<<8), /*** 8 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 2050, 2, 1,
+
+ 10, -1, -1, G_BOXCHAR|(101<<8), /*** 9 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 4, 2, 1,
+
+ 11, -1, -1, G_STRING, /*** 10 ***/
+ NONE,
+ NORMAL,
+ (long) "Send referrer",
+ 1063, 2050, 1044, 1,
+
+ 12, -1, -1, G_BOXCHAR|(101<<8), /*** 11 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1060, 2050, 2, 1,
+
+ 13, -1, -1, G_STRING, /*** 12 ***/
+ NONE,
+ NORMAL,
+ (long) "Send do not track",
+ 1063, 4, 1044, 1,
+
+ 14, -1, -1, G_BOXCHAR|(101<<8), /*** 13 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1060, 4, 2, 1,
+
+ 15, -1, -1, G_STRING, /*** 14 ***/
+ NONE,
+ NORMAL,
+ (long) "Keep history:",
+ 1026, 9, 13, 1,
+
+ 16, -1, -1, G_BUTTON, /*** 15 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ NORMAL,
+ (long) "Clear history",
+ 1060, 9, 13, 1,
+
+ 17, -1, -1, G_STRING, /*** 16 ***/
+ NONE,
+ NORMAL,
+ (long) "Request locale:",
+ 1, 6, 15, 1,
+
+ 18, -1, -1, G_BUTTON, /*** 17 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ DRAW3D|STATE8,
+ (long) "______",
+ 1042, 6, 8, 1,
+
+ 19, -1, -1, G_STRING, /*** 18 ***/
+ NONE,
+ DISABLED,
+ (long) "GUI language:",
+ 1026, 2055, 13, 1,
+
+ 20, -1, -1, G_BUTTON, /*** 19 ***/
+ SELECTABLE|FL3DBAK,
+ DISABLED|DRAW3D|STATE8,
+ (long) "en",
+ 1042, 2055, 8, 1,
+
+ 21, -1, -1, G_STRING, /*** 20 ***/
+ NONE,
+ NORMAL,
+ (long) "Memory Cache:",
+ 1026, 2058, 13, 1,
+
+ 26, 22, 25, G_IBOX, /*** 21 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1042, 2058, 15, 1,
+
+ 23, -1, -1, G_BOXCHAR, /*** 22 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 7, 0, 2, 1,
+
+ 24, -1, -1, G_BOXCHAR, /*** 23 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 25, -1, -1, G_STRING, /*** 24 ***/
+ NONE,
+ DRAW3D,
+ (long) "999.5",
+ 2, 0, 5, 1,
+
+ 21, -1, -1, G_STRING, /*** 25 ***/
+ NONE,
+ NORMAL,
+ (long) "MB",
+ 1034, 0, 3, 1,
+
+ 30, 27, 29, G_IBOX, /*** 26 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1042, 9, 15, 1,
+
+ 28, -1, -1, G_BOXCHAR, /*** 27 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 29, -1, -1, G_FTEXT, /*** 28 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[22],
+ 2, 0, 1028, 1,
+
+ 26, -1, -1, G_BOXCHAR, /*** 29 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 7, 0, 2, 1,
+
+ 4, -1, -1, G_STRING, /*** 30 ***/
+ NONE,
+ NORMAL,
+ (long) "Days",
+ 29, 9, 1028, 1,
+
+ 3, -1, -1, G_FTEXT, /*** 31 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[23],
+ 2, 2048, 8, 1,
+
+ 59, 33, 58, G_IBOX, /*** 32 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 15, 63, 15,
+
+ 58, 34, 54, G_BOX, /*** 33 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 2061,
+
+ 35, -1, -1, G_BOXCHAR|(101<<8), /*** 34 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 1, 2, 1,
+
+ 36, -1, -1, G_STRING, /*** 35 ***/
+ NONE,
+ NORMAL,
+ (long) "Enable Proxy",
+ 1028, 1, 13, 1,
+
+ 37, -1, -1, G_FTEXT, /*** 36 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[24],
+ 1, 2050, 43, 1,
+
+ 38, -1, -1, G_STRING, /*** 37 ***/
+ NONE,
+ NORMAL,
+ (long) ":",
+ 44, 2050, 1, 1,
+
+ 39, -1, -1, G_FTEXT, /*** 38 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[25],
+ 45, 2050, 5, 1,
+
+ 40, -1, -1, G_BOXCHAR|(101<<8), /*** 39 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 4, 2, 1,
+
+ 41, -1, -1, G_STRING, /*** 40 ***/
+ NONE,
+ NORMAL,
+ (long) "Proxy Authentication",
+ 1028, 4, 20, 1,
+
+ 42, -1, -1, G_FTEXT, /*** 41 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[26],
+ 1, 2053, 49, 1,
+
+ 43, -1, -1, G_FTEXT, /*** 42 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[27],
+ 1, 7, 49, 1,
+
+ 44, -1, -1, G_STRING, /*** 43 ***/
+ EDITABLE|FL3DBAK,
+ DRAW3D,
+ (long) "Maximum fetchers:",
+ 1, 9, 21, 1,
+
+ 45, -1, -1, G_STRING, /*** 44 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) "Fetchers per Host:",
+ 1, 2058, 21, 1,
+
+ 46, -1, -1, G_STRING, /*** 45 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) "Cached connections:",
+ 1, 12, 21, 1,
+
+ 50, 47, 49, G_IBOX, /*** 46 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 9, 8, 1,
+
+ 48, -1, -1, G_FTEXT, /*** 47 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[28],
+ 2, 0, 2, 1,
+
+ 49, -1, -1, G_BOXCHAR, /*** 48 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 4, 0, 2, 1,
+
+ 46, -1, -1, G_BOXCHAR, /*** 49 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 54, 51, 53, G_IBOX, /*** 50 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 2058, 8, 1,
+
+ 52, -1, -1, G_BOXCHAR, /*** 51 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 53, -1, -1, G_FTEXT, /*** 52 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[29],
+ 2, 0, 2, 1,
+
+ 50, -1, -1, G_BOXCHAR, /*** 53 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 4, 0, 2, 1,
+
+ 33, 55, 57, G_IBOX, /*** 54 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 12, 1032, 1,
+
+ 56, -1, -1, G_BOXCHAR, /*** 55 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 57, -1, -1, G_FTEXT, /*** 56 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[30],
+ 2, 0, 2, 1,
+
+ 54, -1, -1, G_BOXCHAR, /*** 57 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 4, 0, 2, 1,
+
+ 32, -1, -1, G_TEXT, /*** 58 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[31],
+ 3, 2048, 8, 1,
+
+ 86, 60, 85, G_IBOX, /*** 59 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 2078, 63, 15,
+
+ 85, 61, 108, G_BOX, /*** 60 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 14,
+
+ 62, -1, -1, G_STRING, /*** 61 ***/
+ NONE,
+ NORMAL,
+ (long) "Font renderer:",
+ 1025, 1, 14, 1,
+
+ 63, -1, -1, G_BUTTON, /*** 62 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) "_freetype_",
+ 1041, 1, 12, 1,
+
+ 64, -1, -1, G_BOXCHAR|(101<<8), /*** 63 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1060, 1, 2, 1,
+
+ 65, -1, -1, G_STRING, /*** 64 ***/
+ NONE,
+ NORMAL,
+ (long) "Anti Aliasing",
+ 1063, 1, 13, 1,
+
+ 66, -1, -1, G_BOXCHAR|(101<<8), /*** 65 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 8, 2, 1,
+
+ 75, -1, -1, G_STRING, /*** 66 ***/
+ NONE,
+ NORMAL,
+ (long) "Transparent Images",
+ 1028, 8, 18, 1,
+
+ 68, -1, -1, G_BOXCHAR|(101<<8), /*** 67 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 0, 2, 1,
+
+ 100, -1, -1, G_STRING, /*** 68 ***/
+ NONE,
+ NORMAL,
+ (long) "Enable Animations",
+ 1028, 0, 17, 1,
+
+ 71, -1, -1, G_STRING, /*** 69 ***/
+ NONE,
+ NORMAL,
+ (long) "Limit speed to",
+ 1024, 0, 15, 1,
+
+ 99, -1, -1, G_STRING, /*** 70 ***/
+ NONE,
+ NORMAL,
+ (long) "seconds between frames.",
+ 1048, 0, 24, 1,
+
+ 70, 72, 74, G_IBOX, /*** 71 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 16, 0, 1032, 1,
+
+ 73, -1, -1, G_FTEXT, /*** 72 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[34],
+ 2, 0, 3, 1,
+
+ 74, -1, -1, G_BOXCHAR, /*** 73 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 5, 0, 2, 1,
+
+ 71, -1, -1, G_BOXCHAR, /*** 74 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 76, -1, -1, G_STRING, /*** 75 ***/
+ NONE,
+ NORMAL,
+ (long) "Default Font Size:",
+ 1025, 2050, 18, 1,
+
+ 80, 77, 79, G_IBOX, /*** 76 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 2050, 10, 1,
+
+ 78, -1, -1, G_FTEXT, /*** 77 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[32],
+ 2, 0, 3, 1,
+
+ 79, -1, -1, G_BOXCHAR, /*** 78 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 76, -1, -1, G_BOXCHAR, /*** 79 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 5, 0, 2, 1,
+
+ 84, 81, 83, G_IBOX, /*** 80 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 36, 4, 9, 1,
+
+ 82, -1, -1, G_FTEXT, /*** 81 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[33],
+ 2, 0, 3, 1,
+
+ 83, -1, -1, G_BOXCHAR, /*** 82 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 80, -1, -1, G_BOXCHAR, /*** 83 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 5, 0, 2, 1,
+
+ 99, -1, -1, G_STRING, /*** 84 ***/
+ NONE,
+ NORMAL,
+ (long) "Minimum Font Size:",
+ 1025, 4, 18, 1,
+
+ 59, -1, -1, G_TEXT, /*** 85 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[36],
+ 3, 2048, 9, 1,
+
+ 0, 87, 88, G_IBOX, /*** 86 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 46, 63, 15,
+
+ 88, 89, 98, G_BOX, /*** 87 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 16748800L,
+ 1, 1, 61, 2061,
+
+ 86, -1, -1, G_TEXT, /*** 88 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[42],
+ 1027, 2048, 11, 1,
+
+ 90, -1, -1, G_STRING, /*** 89 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "Downloads:",
+ 1, 2048, 11, 1,
+
+ 91, -1, -1, G_FTEXT, /*** 90 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED|DRAW3D,
+ (long) &rs_tedinfo[37],
+ 1039, 2048, 44, 1,
+
+ 92, -1, -1, G_FTEXT, /*** 91 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[38],
+ 1039, 2, 44, 1,
+
+ 93, -1, -1, G_FTEXT, /*** 92 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[39],
+ 1039, 2051, 44, 1,
+
+ 94, -1, -1, G_FTEXT, /*** 93 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[40],
+ 1039, 5, 44, 1,
+
+ 95, -1, -1, G_FTEXT, /*** 94 ***/
+ EDITABLE|FL3DBAK,
+ OUTLINED,
+ (long) &rs_tedinfo[41],
+ 1039, 2054, 44, 1,
+
+ 96, -1, -1, G_STRING, /*** 95 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "Hotlist:",
+ 3, 2, 8, 1,
+
+ 97, -1, -1, G_STRING, /*** 96 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "CA Bundle:",
+ 1, 2051, 10, 1,
+
+ 98, -1, -1, G_STRING, /*** 97 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "CA Certs:",
+ 2, 5, 9, 1,
+
+ 87, -1, -1, G_STRING, /*** 98 ***/
+ EDITABLE,
+ WHITEBAK|DRAW3D,
+ (long) "Editor:",
+ 4, 2054, 7, 1,
+
+ 100, 69, 70, G_IBOX, /*** 99 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 4, 11, 1074, 1,
+
+ 101, 67, 68, G_IBOX, /*** 100 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 2057, 1053, 1,
+
+ 104, 102, 103, G_IBOX, /*** 101 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 0, 2054, 1053, 1,
+
+ 103, -1, -1, G_BOXCHAR|(101<<8), /*** 102 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 1025, 0, 2, 1,
+
+ 101, -1, -1, G_STRING, /*** 103 ***/
+ NONE,
+ NORMAL,
+ (long) "Background Images",
+ 1028, 0, 17, 1,
+
+ 107, 105, 106, G_IBOX, /*** 104 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 34, 2054, 1048, 1,
+
+ 106, -1, -1, G_BOXCHAR|(101<<8), /*** 105 ***/
+ SELECTABLE|FL3DIND|FL3DBAK,
+ SELECTED|CROSSED,
+ (long) 4352L,
+ 2, 0, 2, 1,
+
+ 104, -1, -1, G_STRING, /*** 106 ***/
+ NONE,
+ NORMAL,
+ (long) "Foreground Images",
+ 5, 0, 17, 1,
+
+ 108, -1, -1, G_STRING, /*** 107 ***/
+ NONE,
+ NORMAL,
+ (long) "Minimum reflow period (ms):",
+ 1028, 2060, 27, 1,
+
+ 60, 109, 111, G_IBOX, /*** 108 ***/
+ FL3DBAK,
+ NORMAL,
+ (long) 4352L,
+ 1059, 2060, 13, 1,
+
+ 110, -1, -1, G_FTEXT, /*** 109 ***/
+ EDITABLE|FL3DBAK,
+ NORMAL,
+ (long) &rs_tedinfo[35],
+ 2, 0, 4, 1,
+
+ 111, -1, -1, G_BOXCHAR, /*** 110 ***/
+ SELECTABLE|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 33624320L,
+ 0, 0, 2, 1,
+
+ 108, -1, -1, G_BOXCHAR, /*** 111 ***/
+ SELECTABLE|LASTOB|TOUCHEXIT|FL3DBAK,
+ NORMAL,
+ (long) 16847104L,
+ 6, 0, 2, 1
+};
+
+OBJECT *MAINMENU = &rs_obj[TR0];
+OBJECT *TOOLBAR = &rs_obj[TR1];
+OBJECT *ICONIFY = &rs_obj[TR2];
+OBJECT *FAVICON = &rs_obj[TR3];
+OBJECT *CURSOR = &rs_obj[TR4];
+OBJECT *LOGIN = &rs_obj[TR5];
+OBJECT *VERIFY = &rs_obj[TR6];
+OBJECT *THROBBER = &rs_obj[TR7];
+OBJECT *TOOLBAR_HOTLIST = &rs_obj[TR8];
+OBJECT *SEARCH = &rs_obj[TR9];
+OBJECT *DOWNLOAD = &rs_obj[TR10];
+OBJECT *ABOUT = &rs_obj[TR11];
+OBJECT *POP_CTX = &rs_obj[TR12];
+OBJECT *VSCROLLER = &rs_obj[TR13];
+OBJECT *SETTINGS = &rs_obj[TR14];
+
+
+void rs_init(void);
+void rs_exit(void);
+
+LONG rs_ciconinit(CICONBLK *ciconblks, WORD ncib, OBJECT *objects, WORD nobj);
+void rs_ciconexit(LONG deskript);
+
+static LONG rs_cid;
+void rs_init(void)
+{
+ register OBJECT *obj=rs_obj;
+ register WORD i=0;
+
+ do
+ {
+ rsrc_obfix(obj, i);
+ } while (++i<RS_NOBS);
+ rs_cid = rs_ciconinit(&rs_ciconblk[0], 29, &rs_obj[0], 280);
+}
+void rs_exit(void)
+{
+ rs_ciconexit(rs_cid);
+}
diff --git a/atari/search.c.old b/atari/search.c.old
new file mode 100644
index 0000000..efe6ceb
--- /dev/null
+++ b/atari/search.c.old
@@ -0,0 +1,375 @@
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
+ *
+ * Module Description:
+ *
+ *
+ *
+ */
+
+
+#include <limits.h>
+#include <stdlib.h>
+#include <stdio.h>
+#include <unistd.h>
+#include <string.h>
+#include <stdbool.h>
+#include <assert.h>
+
+#include "desktop/gui.h"
+#include "desktop/browser.h"
+#include "desktop/browser_private.h"
+#include "desktop/search.h"
+#include "utils/log.h"
+#include "utils/messages.h"
+#include "atari/gui.h"
+#include "atari/rootwin.h"
+#include "atari/misc.h"
+#include "atari/search.h"
+#include "atari/gemtk/gemtk.h"
+#include "atari/res/netsurf.rsh"
+
+extern struct gui_window * input_window;
+extern void * h_gem_rsrc;
+extern GRECT desk_area;
+
+
+static SEARCH_FORM_SESSION current;
+static OBJECT *dlgtree;
+static GUIWIN *searchwin;
+static short h_aes_win;
+
+static void nsatari_search_set_status(bool found, void *p);
+static void nsatari_search_set_hourglass(bool active, void *p);
+static void nsatari_search_add_recent(const char *string, void *p);
+void nsatari_search_set_forward_state(bool active, void *p);
+void nsatari_search_set_back_state(bool active, void *p);
+
+static struct gui_search_callbacks nsatari_search_callbacks = {
+ nsatari_search_set_forward_state,
+ nsatari_search_set_back_state,
+ nsatari_search_set_status,
+ nsatari_search_set_hourglass,
+ nsatari_search_add_recent
+};
+
+
+/**
+* Change the displayed search status.
+* \param found search pattern matched in text
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_status(bool found, void *p)
+{
+ LOG(("%p set status: %d\n", p, found));
+}
+
+/**
+* display hourglass while searching
+* \param active start/stop indicator
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_hourglass(bool active, void *p)
+{
+ SEARCH_FORM_SESSION s = (SEARCH_FORM_SESSION)p;
+ LOG((""));
+ if (active && current != NULL)
+ gui_window_set_pointer(s->bw->window, GUI_POINTER_PROGRESS);
+ else
+ gui_window_set_pointer(s->bw->window, GUI_POINTER_DEFAULT);
+}
+
+/**
+* add search string to recent searches list
+* front is at liberty how to implement the bare notification
+* should normally store a strdup() of the string;
+* core gives no guarantee of the integrity of the const char *
+* \param string search pattern
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_add_recent(const char *string, void *p)
+{
+ LOG(("%p add recent: %s\n", p, string));
+}
+
+/**
+* activate search forwards button in gui
+* \param active activate/inactivate
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_forward_state(bool active, void *p)
+{
+ SEARCH_FORM_SESSION s = (SEARCH_FORM_SESSION)p;
+ /* deactivate back cb */
+ LOG(("%p: set forward state: %d\n", p, active));
+}
+
+/**
+* activate search back button in gui
+* \param active activate/inactivate
+* \param p the pointer sent to search_verify_new() / search_create_context()
+*/
+
+void nsatari_search_set_back_state(bool active, void *p)
+{
+ SEARCH_FORM_SESSION s = (SEARCH_FORM_SESSION)p;
+ /* deactivate back cb */
+ LOG(("%p: set back state: %d\n", p, active));
+}
+
+/*
+void search_redraw(void *session, GRECT *clip)
+{
+ GRECT area, clipped_area;
+ struct gui_window *gw = input_window;
+ short pxy[4];
+ VdiHdl vh;
+
+ if(gw == NULL)
+ return;
+
+ window_get_grect(gw->root, BROWSER_AREA_SEARCH, &area);
+
+ clipped_area = area;
+
+ if (!rc_intersect(clip, &clipped_area)) {
+ return;
+ }
+
+ OBJECT * tree = get_tree(SEARCH);
+ tree->ob_x = area.g_x;
+ tree->ob_y = area.g_y;
+ tree->ob_width = area.g_w;
+ tree->ob_height = area.g_h;
+
+ objc_draw_grect(tree, 0, 8, &clipped_area);
+}
+*/
+
+static SEARCH_FORM_SESSION get_search_session(GUIWIN * win)
+{
+ return (current);
+}
+
+
+
+static void set_text( short idx, char * text, int len )
+{
+ char spare[255];
+
+ if( len > 254 )
+ len = 254;
+ if( text != NULL ){
+ strncpy(spare, text, 254);
+ } else {
+ strcpy(spare, "");
+ }
+
+ set_string(dlgtree, idx, spare);
+}
+
+static void destroy_search_session(SEARCH_FORM_SESSION s)
+{
+ if(s != NULL ){
+ LOG((""));
+ free(s);
+ }
+}
+
+static int apply_form(GUIWIN *win, struct s_search_form_state * s)
+{
+ OBJECT * obj = dlgtree;
+ char * cstr;
+
+ if( obj == NULL ){
+ goto error;
+ }
+
+ s->flags = 0;
+ if( (obj[SEARCH_CB_FWD].ob_state & OS_SELECTED) != 0 )
+ s->flags = SEARCH_FLAG_FORWARDS;
+ if( (obj[SEARCH_CB_CASESENSE].ob_state & OS_SELECTED) != 0 )
+ s->flags |= SEARCH_FLAG_CASE_SENSITIVE;
+ if( (obj[SEARCH_CB_SHOWALL].ob_state & OS_SELECTED) != 0 )
+ s->flags |= SEARCH_FLAG_SHOWALL;
+
+ cstr = get_text(dlgtree, SEARCH_TB_SRCH);
+ snprintf(s->text, 31, "%s", cstr);
+ return ( 0 );
+
+error:
+ s->flags = SEARCH_FLAG_FORWARDS;
+ strncpy((char*)&s->text[0], "", 31 );
+ return( 1 );
+}
+
+/* checks for search parameters changes */
+static bool form_changed(GUIWIN * w)
+{
+ bool check;
+ struct s_search_form_state cur;
+ SEARCH_FORM_SESSION s = get_search_session(w);
+ if( s == NULL )
+ return false;
+ OBJECT * obj = dlgtree;
+ assert(s != NULL && obj != NULL);
+ uint32_t flags_old = s->state.flags;
+ apply_form(w, &cur);
+
+ /* adjust the forward flag, it should not init an new search */
+ flags_old |= SEARCH_FLAG_FORWARDS;
+ cur.flags |= SEARCH_FLAG_FORWARDS;
+ if( cur.flags != flags_old ){
+ return( true );
+ }
+
+ char * cstr;
+ cstr = get_text(obj, SEARCH_TB_SRCH);
+ if (cstr != NULL){
+ if (strcmp(cstr, (char*)&s->state.text) != 0) {
+ return (true);
+ }
+ }
+
+ return( false );
+}
+
+
+static void __CDECL evnt_bt_srch_click(GUIWIN * win, int index, int unused, void *unused2)
+{
+
+ bool fwd;
+ SEARCH_FORM_SESSION s = get_search_session(searchwin);
+ OBJECT * obj = dlgtree;
+ search_flags_t flags = 0;
+
+
+ if( form_changed(searchwin) ){
+ browser_window_search_destroy_context(s->bw);
+ apply_form(searchwin, &s->state);
+ } else {
+ /* get search direction manually: */
+ if( (obj[SEARCH_CB_FWD].ob_state & OS_SELECTED) != 0 )
+ s->state.flags |= SEARCH_FLAG_FORWARDS;
+ else
+ s->state.flags &= (~SEARCH_FLAG_FORWARDS);
+ }
+ if( browser_window_search_verify_new(s->bw, &nsatari_search_callbacks, s) ){
+ browser_window_search_step(s->bw, s->state.flags, get_text(obj, SEARCH_TB_SRCH));
+ }
+
+}
+
+static void __CDECL evnt_cb_click(GUIWIN *win, int index, int unused, void *unused2)
+{
+
+ short newstate;
+
+}
+
+static void __CDECL evnt_close(GUIWIN *win, short buff[8])
+{
+
+}
+
+void search_destroy(struct gui_window *gw)
+{
+ /* Free Search Contexts */
+ /* todo: destroy search context, if any? */
+ LOG((""));
+
+ if (current != NULL){
+ destroy_search_session(current);
+ current = NULL;
+ }
+
+ guiwin_remove(searchwin);
+ searchwin = NULL;
+
+ wind_close(h_aes_win);
+ wind_delete(h_aes_win);
+ h_aes_win = -1;
+
+ LOG(("done"));
+}
+
+SEARCH_FORM_SESSION open_browser_search(struct gui_window * gw)
+{
+ char * title;
+ SEARCH_FORM_SESSION sfs;
+ GRECT pos, treesize;
+ uint32_t kind = CLOSER | NAME | MOVER;
+
+ if (dlgtree == NULL) {
+ dlgtree = get_tree(SEARCH);
+ if (dlgtree == NULL) {
+ return( NULL );
+ }
+ }
+
+ if(searchwin){
+ search_destroy(gw);
+ }
+
+
+ sfs = calloc(1, sizeof(struct s_search_form_session));
+ if( sfs == NULL )
+ return( NULL );
+
+ title = (char*)messages_get("FindTextNS");
+ if (title == NULL)
+ title = (char*)"Find text ...";
+
+ /* setup dipslay position: right corner */
+ treesize.g_x = 0;
+ treesize.g_y = 0;
+ treesize.g_w = dlgtree->ob_width;
+ treesize.g_h = dlgtree->ob_height;
+ wind_calc_grect(WC_BORDER, kind, &treesize, &pos);
+ pos.g_x = desk_area.g_w - pos.g_w;
+ pos.g_y = desk_area.g_h - pos.g_h;
+
+ /* create the dialog: */
+ h_aes_win = wind_create_grect(kind, &pos);
+ wind_set_str(h_aes_win, WF_NAME, title);
+
+
+ current = sfs;
+ sfs->bw = gw->browser->bw;
+/*
+ sfs->formwind = mt_FormCreate( &app, tree, WAT_FORM,
+ NULL, title,
+ &pos, true, false);
+*/
+/*
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_BT_SEARCH, evnt_bt_srch_click,
+ NULL);
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_CB_CASESENSE, evnt_cb_click, NULL);
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_CB_SHOWALL, evnt_cb_click, NULL);
+ ObjcAttachFormFunc(sfs->formwind, SEARCH_CB_FWD, evnt_cb_click, NULL);
+ EvntAdd(sfs->formwind, WM_CLOSED, evnt_close, EV_TOP);
+*/
+ apply_form(searchwin, &sfs->state );
+ set_text(SEARCH_TB_SRCH, (char*)"", 31);
+
+ return(current);
+
+}
diff --git a/atari/search.h b/atari/search.h.old
similarity index 70%
copy from atari/search.h
copy to atari/search.h.old
index 00671e4..5cb8d07 100644
--- a/atari/search.h
+++ b/atari/search.h.old
@@ -21,8 +21,6 @@
*
*/
-#include "desktop/browser.h"
-#include "desktop/search.h"
#ifndef NS_ATARI_SEARCH_H
#define NS_ATARI_SEARCH_H
@@ -35,8 +33,7 @@ struct browser_window;
struct s_search_form_state
{
char text[32];
- uint32_t flags;
- bool back_avail;
+ uint32_t flags;
};
struct s_search_form_session {
@@ -47,11 +44,9 @@ struct s_search_form_session {
typedef struct s_search_form_session * SEARCH_FORM_SESSION;
-struct s_search_form_session * nsatari_search_session_create(OBJECT * obj,
- struct browser_window *bw);
-void nsatari_search_session_destroy(struct s_search_form_session *s);
-void nsatari_search_perform(struct s_search_form_session *s, OBJECT *obj,
- search_flags_t f);
-void nsatari_search_restore_form( struct s_search_form_session *s, OBJECT *obj);
+SEARCH_FORM_SESSION open_browser_search(struct gui_window * gw);
+void search_destroy(struct gui_window * gw);
+
+struct s_search_session
#endif
diff --git a/atari/treeview.c b/atari/treeview.c
old mode 100755
new mode 100644
index 8565484..7ea039c
--- a/atari/treeview.c
+++ b/atari/treeview.c
@@ -1,455 +1,179 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#include <stdbool.h>
-#include <stdint.h>
-#include <stdlib.h>
+#include <inttypes.h>
+#include <sys/types.h>
#include <string.h>
-#include <time.h>
+
+#include "assert.h"
+#include "cflib.h"
+
+#include "utils/nsoption.h"
#include "content/urldb.h"
#include "desktop/browser.h"
#include "desktop/plotters.h"
-#include "desktop/textinput.h"
-#include "desktop/tree.h"
-#include "desktop/textinput.h"
+#include "desktop/mouse.h"
+#include "desktop/treeview.h"
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
#include "atari/gui.h"
-#include "atari/treeview.h"
#include "atari/plot/plot.h"
#include "atari/misc.h"
#include "atari/gemtk/gemtk.h"
-#include "cflib.h"
+#include "atari/treeview.h"
-enum treeview_area_e {
- TREEVIEW_AREA_WORK = 0,
- TREEVIEW_AREA_TOOLBAR,
- TREEVIEW_AREA_CONTENT
-};
-extern int mouse_hold_start[3];
-extern browser_mouse_state bmstate;
-extern short last_drag_x;
-extern short last_drag_y;
-extern long atari_plot_flags;
-extern int atari_plot_vdi_handle;
-
-static void atari_treeview_resized(struct tree *tree,int w,int h, void *pw);
-static void atari_treeview_scroll_visible(int y, int h, void *pw);
-static void atari_treeview_get_dimensions(int *width, int *height, void *pw);
-static void atari_treeview_get_grect(NSTREEVIEW tree,
- enum treeview_area_e mode, GRECT *dest);
-
-static const struct treeview_table atari_tree_callbacks = {
- atari_treeview_request_redraw,
- atari_treeview_resized,
- atari_treeview_scroll_visible,
- atari_treeview_get_dimensions
+/**
+ * Declare Core Window Callbacks:
+ */
+
+void atari_treeview_redraw_request(struct core_window *cw,
+ const struct rect *r);
+void atari_treeview_update_size(struct core_window *cw, int width, int height);
+void atari_treeview_scroll_visible(struct core_window *cw,
+ const struct rect *r);
+void atari_treeview_get_window_dimensions(struct core_window *cw,
+ int *width, int *height);
+void atari_treeview_drag_status(struct core_window *cw,
+ core_window_drag_status ds);
+
+
+static struct core_window_callback_table cw_t = {
+ .redraw_request = atari_treeview_redraw_request,
+ .update_size = atari_treeview_update_size,
+ .scroll_visible = atari_treeview_scroll_visible,
+ .get_window_dimensions = atari_treeview_get_window_dimensions,
+ .drag_status = atari_treeview_drag_status
};
-static void __CDECL on_mbutton_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8]);
-static void __CDECL on_keybd_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8]);
-static void __CDECL on_redraw_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8]);
-static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
-{
-
- NSTREEVIEW tv = (NSTREEVIEW) gemtk_wm_get_user_data(win);
-
- if( (ev_out->emo_events & MU_MESAG) != 0 ) {
- // handle message
- switch (msg[0]) {
-
- case WM_REDRAW:
- on_redraw_event(tv, ev_out, msg);
- break;
-
- case WM_SIZED:
- case WM_FULLED:
- //atari_treeview_resized(tv->tree, tv->extent.x, tv->extent.y, tv);
- break;
-
- default:
- break;
- }
- }
- if( (ev_out->emo_events & MU_KEYBD) != 0 ) {
- on_keybd_event(tv, ev_out, msg);
- }
- if( (ev_out->emo_events & MU_BUTTON) != 0 ) {
- LOG(("Treeview click at: %d,%d\n", ev_out->emo_mouse.p_x,
- ev_out->emo_mouse.p_y));
- on_mbutton_event(tv, ev_out, msg);
- }
-
- if(tv != NULL && tv->user_func != NULL){
- tv->user_func(win, ev_out, msg);
- }
-
- return(0);
-}
+struct atari_treeview_window {
+ GUIWIN * window;
+ bool disposing;
+ bool redraw;
+ GRECT rdw_area;
+ POINT extent;
+ POINT click;
+ POINT startdrag;
+ struct atari_treeview_callbacks *io;
+};
-static void __CDECL on_keybd_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8])
-{
- bool r=false;
- long kstate = 0;
- long kcode = 0;
- long ucs4;
- long ik;
- unsigned short nkc = 0;
- unsigned short nks = 0;
- unsigned char ascii;
-
- kstate = ev_out->emo_kmeta;
- kcode = ev_out->emo_kreturn;
- nkc= gem_to_norm( (short)kstate, (short)kcode );
- ascii = (nkc & 0xFF);
- ik = nkc_to_input_key( nkc, &ucs4 );
-
- if( ik == 0 ){
- if (ascii >= 9 ) {
- r = tree_keypress( tv->tree, ucs4 );
- }
- } else {
- r = tree_keypress( tv->tree, ik );
- }
-}
+typedef struct atari_treeview_window *ATARI_TREEVIEW;
-static void __CDECL on_redraw_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8])
-{
- GRECT work, clip;
- struct gemtk_wm_scroll_info_s *slid;
-
- if( tv == NULL )
- return;
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
-
- clip = work;
- if ( !rc_intersect( (GRECT*)&msg[4], &clip ) ) return;
- clip.g_x -= work.g_x;
- clip.g_y -= work.g_y;
- if( clip.g_x < 0 ) {
- clip.g_w = work.g_w + clip.g_x;
- clip.g_x = 0;
- }
- if( clip.g_y < 0 ) {
- clip.g_h = work.g_h + clip.g_y;
- clip.g_y = 0;
- }
- if( clip.g_h > 0 && clip.g_w > 0 ) {
- // TODO: get slider values
- atari_treeview_request_redraw((slid->x_pos*slid->x_unit_px) + clip.g_x,
- (slid->y_pos*slid->y_unit_px) + clip.g_y,
- clip.g_w, clip.g_h, tv
- );
- }
-}
+/* native GUI event handlers: */
+static void __CDECL on_mbutton_event(struct atari_treeview_window tvw,
+ EVMULT_OUT *ev_out, short msg[8]);
+static void __CDECL on_keybd_event(struct atari_treeview_window tvw,
+ EVMULT_OUT *ev_out, short msg[8]);
+static void __CDECL on_redraw_event(struct atari_treeview_window tvw,
+ EVMULT_OUT *ev_out, short msg[8]);
-static void __CDECL on_mbutton_event(NSTREEVIEW tv, EVMULT_OUT *ev_out,
- short msg[8])
+/* GEMTK event sink: */
+static short handle_event(GUIWIN *win, EVMULT_OUT *ev_out, short msg[8])
{
- struct gemtk_wm_scroll_info_s *slid;
- GRECT work;
- short mx, my;
-
- if(tv == NULL)
- return;
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
- mx = ev_out->emo_mouse.p_x;
- my = ev_out->emo_mouse.p_y;
-
- /* mouse click relative origin: */
-
- short origin_rel_x = (mx-work.g_x) +
- (slid->x_pos*slid->x_unit_px);
- short origin_rel_y = (my-work.g_y) +
- (slid->y_pos*slid->y_unit_px);
-
- if( origin_rel_x >= 0 && origin_rel_y >= 0
- && mx < work.g_x + work.g_w
- && my < work.g_y + work.g_h )
- {
- int bms;
- bool ignore=false;
- short cur_rel_x, cur_rel_y, dummy, mbut;
-
- if (ev_out->emo_mclicks == 2) {
- tree_mouse_action(tv->tree,
- BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_DOUBLE_CLICK,
- origin_rel_x, origin_rel_y );
- return;
- }
- graf_mkstate(&cur_rel_x, &cur_rel_x, &mbut, &dummy);
- if( (mbut&1) == 0 ){
- bms = BROWSER_MOUSE_CLICK_1 | BROWSER_MOUSE_PRESS_1;
- if(ev_out->emo_mclicks == 2 ) {
- bms = BROWSER_MOUSE_DOUBLE_CLICK;
- }
- tree_mouse_action(tv->tree, bms, origin_rel_x, origin_rel_y );
- } else {
- /* button still pressed */
-
- short prev_x = origin_rel_x;
- short prev_y = origin_rel_y;
-
- cur_rel_x = origin_rel_x;
- cur_rel_y = origin_rel_y;
-
- gem_set_cursor(&gem_cursors.hand);
-
- tv->startdrag.x = origin_rel_x;
- tv->startdrag.y = origin_rel_y;
-
- tree_mouse_action( tv->tree,
- BROWSER_MOUSE_DRAG_1 | BROWSER_MOUSE_DRAG_ON ,
- cur_rel_x, cur_rel_y );
- do{
- if( abs(prev_x-cur_rel_x) > 5 || abs(prev_y-cur_rel_y) > 5 ){
- tree_mouse_action( tv->tree,
- BROWSER_MOUSE_HOLDING_1 | BROWSER_MOUSE_DRAG_ON,
- cur_rel_x, cur_rel_y);
- prev_x = cur_rel_x;
- prev_y = cur_rel_y;
- }
-
- if( tv->redraw )
- atari_treeview_redraw( tv );
- /* sample mouse button state: */
- graf_mkstate(&cur_rel_x, &cur_rel_y, &mbut, &dummy);
- cur_rel_x = (cur_rel_x-work.g_x)+(slid->x_pos*slid->x_unit_px);
- cur_rel_y = (cur_rel_y-work.g_y)+(slid->y_pos*slid->y_unit_px);
- } while( mbut & 1 );
-
- tree_drag_end(tv->tree, 0, tv->startdrag.x, tv->startdrag.y,
- cur_rel_x, cur_rel_y );
- gem_set_cursor(&gem_cursors.arrow);
- }
- }
}
-NSTREEVIEW atari_treeview_create(uint32_t flags, GUIWIN *win,
- gemtk_wm_event_handler_f user_func)
-{
- struct gemtk_wm_scroll_info_s *slid;
- NSTREEVIEW new;
-
- if( win == NULL )
- return( NULL );
-
- new = malloc(sizeof(struct atari_treeview));
- if (new == NULL)
- return NULL;
-
- memset(new, 0, sizeof(struct atari_treeview));
- /* Store the window ref inside the new treeview: */
- new->window = win;
- new->user_func = user_func;
-
- // Setup gemtk event handler function and set the userdata
- // to be the new treeview:
- gemtk_wm_set_event_handler(win, handle_event);
- gemtk_wm_set_user_data(win, (void*)new);
+struct atari_treeview_window *
+atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
+ uint32_t flags)
+{
+/*
+ init_func();
- // Get acces to the gemtk scroll info struct:
- slid = gemtk_wm_get_scroll_info(new->window);
+ sslcert_viewer_init(&cw_t, (struct core_window *)tree,
+ ssl_current_session);
+*/
- // Setup line and column height/width of the window,
- // each scroll takes the configured steps:
- slid->y_unit_px = 16;
- slid->x_unit_px = 16;
+ /* allocate the core_window struct: */
+ struct atari_treeview_window * cw;
- // now create a new netsurf tree:
- new->tree = tree_create(flags, &atari_tree_callbacks, new);
- if (new->tree == NULL) {
- free(new);
+ cw = calloc(sizeof(struct atari_treeview_window), 1);
+ if (cw == NULL) {
+ LOG(("calloc failed"));
+ warn_user(messages_get_errorcode(NSERROR_NOMEM), 0);
return NULL;
}
- return(new);
-}
+ cw->window = win;
+ cw->io = callbacks;
-void atari_treeview_open( NSTREEVIEW tv )
-{
- if( tv->window != NULL ) {
- gemtk_wm_link(tv->window);
- }
-}
+ assert(cw->io);
+ assert(cw->io->init);
-void atari_treeview_close(NSTREEVIEW tv)
-{
- if(tv->window != NULL) {
- gemtk_wm_unlink(tv->window);
+ nserror err = cw->io->init(cw, &cw_t);
+ if (err != NSERROR_OK) {
+ free(cw);
+ cw = NULL;
}
-}
-void atari_treeview_destroy( NSTREEVIEW tv )
-{
- if( tv != NULL ){
- tv->disposing = true;
- LOG(("tree: %p", tv));
- if( tv->tree != NULL ) {
- tree_delete(tv->tree);
- tv->tree = NULL;
- }
- free( tv );
- }
+ return(cw);
}
-bool atari_treeview_mevent( NSTREEVIEW tv, browser_mouse_state bms, int x, int y)
+void atari_treeview_delete(struct atari_treeview_window * cw)
{
- GRECT work;
- struct gemtk_wm_scroll_info_s *slid;
-
- if( tv == NULL )
- return ( false );
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
-
- int rx = (x-work.g_x)+(slid->x_pos*slid->x_unit_px);
- int ry = (y-work.g_y)+(slid->y_pos*slid->y_unit_px);
-
- tree_mouse_action(tv->tree, bms, rx, ry);
+ assert(cw);
+ assert(cw->io->fini);
- tv->click.x = rx;
- tv->click.y = ry;
+ cw->io->fini(cw);
- return( true );
+ free(cw);
}
-void atari_treeview_redraw(NSTREEVIEW tv)
-{
- if (tv != NULL) {
- if( tv->redraw && ((atari_plot_flags & PLOT_FLAG_OFFSCREEN) == 0) ) {
-
- short todo[4];
- GRECT work;
- short handle = gemtk_wm_get_handle(tv->window);
- struct gemtk_wm_scroll_info_s *slid;
-
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &work);
- slid = gemtk_wm_get_scroll_info(tv->window);
-
- struct redraw_context ctx = {
- .interactive = true,
- .background_images = true,
- .plot = &atari_plotters
- };
- plot_set_dimensions(work.g_x, work.g_y, work.g_w, work.g_h);
- if (plot_lock() == false)
- return;
-
- if( wind_get(handle, WF_FIRSTXYWH,
- &todo[0], &todo[1], &todo[2], &todo[3] )!=0 ) {
- while (todo[2] && todo[3]) {
-
- short pxy[4];
- pxy[0] = todo[0];
- pxy[1] = todo[1];
- pxy[2] = todo[0] + todo[2]-1;
- pxy[3] = todo[1] + todo[3]-1;
- vs_clip(atari_plot_vdi_handle, 1, (short*)&pxy);
-
- /* convert screen to treeview coords: */
- todo[0] = todo[0] - work.g_x + slid->x_pos*slid->x_unit_px;
- todo[1] = todo[1] - work.g_y + slid->y_pos*slid->y_unit_px;
- if( todo[0] < 0 ){
- todo[2] = todo[2] + todo[0];
- todo[0] = 0;
- }
- if( todo[1] < 0 ){
- todo[3] = todo[3] + todo[1];
- todo[1] = 0;
- }
-
- // TODO: get slider values
- if (rc_intersect((GRECT *)&tv->rdw_area,(GRECT *)&todo)) {
- tree_draw(tv->tree, -(slid->x_pos*slid->x_unit_px),
- -(slid->y_pos*slid->y_unit_px),
- todo[0], todo[1], todo[2], todo[3], &ctx
- );
- }
- vs_clip(atari_plot_vdi_handle, 0, (short*)&pxy);
- if (wind_get(handle, WF_NEXTXYWH,
- &todo[0], &todo[1], &todo[2], &todo[3])==0) {
- break;
- }
- }
- } else {
- plot_unlock();
- return;
- }
- plot_unlock();
- tv->redraw = false;
- tv->rdw_area.g_x = 65000;
- tv->rdw_area.g_y = 65000;
- tv->rdw_area.g_w = -1;
- tv->rdw_area.g_h = -1;
- } else {
- /* just copy stuff from the offscreen buffer */
- }
- }
-}
+/**
+ * Core Window Callbacks:
+ */
/**
- * Callback to force a redraw of part of the treeview window.
+ * Request a redraw of the window
*
- * \param x Min X Coordinate of area to be redrawn.
- * \param y Min Y Coordinate of area to be redrawn.
- * \param width Width of area to be redrawn.
- * \param height Height of area to be redrawn.
- * \param pw The treeview object to be redrawn.
+ * \param cw the core window object
+ * \param r rectangle to redraw
*/
-void atari_treeview_request_redraw(int x, int y, int w, int h, void *pw)
+void atari_treeview_redraw_request(struct core_window *cw, const struct rect *r)
{
- if ( pw != NULL ) {
- NSTREEVIEW tv = (NSTREEVIEW) pw;
+ GRECT area;
+
+ RECT_TO_GRECT(r, &area)
+
+ if (cw != NULL) {
+ ATARI_TREEVIEW tv = (ATARI_TREEVIEW) cw;
if( tv->redraw == false ){
tv->redraw = true;
- tv->rdw_area.g_x = x;
- tv->rdw_area.g_y = y;
- tv->rdw_area.g_w = w;
- tv->rdw_area.g_h = h;
+ tv->rdw_area.g_x = area.g_x;
+ tv->rdw_area.g_y = area.g_y;
+ tv->rdw_area.g_w = area.g_w;
+ tv->rdw_area.g_h = area.g_h;
} else {
/* merge the redraw area to the new area.: */
- int newx1 = x+w;
- int newy1 = y+h;
+ int newx1 = area.g_x+area.g_w;
+ int newy1 = area.g_y+area.g_h;
int oldx1 = tv->rdw_area.g_x + tv->rdw_area.g_w;
int oldy1 = tv->rdw_area.g_y + tv->rdw_area.g_h;
- tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, x);
- tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, y);
+ tv->rdw_area.g_x = MIN(tv->rdw_area.g_x, area.g_x);
+ tv->rdw_area.g_y = MIN(tv->rdw_area.g_y, area.g_y);
tv->rdw_area.g_w = ( oldx1 > newx1 ) ? oldx1 - tv->rdw_area.g_x : newx1 - tv->rdw_area.g_x;
tv->rdw_area.g_h = ( oldy1 > newy1 ) ? oldy1 - tv->rdw_area.g_y : newy1 - tv->rdw_area.g_y;
}
@@ -457,89 +181,54 @@ void atari_treeview_request_redraw(int x, int y, int w, int h, void *pw)
}
}
-
/**
- * Callback to notify us of a new overall tree size.
+ * Update the limits of the window
*
- * \param tree The tree being resized.
- * \param width The new width of the window.
- * \param height The new height of the window.
- * \param *pw The treeview object to be resized.
+ * \param cw the core window object
+ * \param width the width in px, or negative if don't care
+ * \param height the height in px, or negative if don't care
*/
-
-void atari_treeview_resized(struct tree *tree, int width, int height, void *pw)
+void atari_treeview_update_size(struct core_window *cw, int width, int height)
{
- GRECT area;
- if (pw != NULL) {
- NSTREEVIEW tv = (NSTREEVIEW) pw;
- if( tv->disposing )
- return;
-
- tv->extent.x = width;
- tv->extent.y = height;
-
- struct gemtk_wm_scroll_info_s *slid = gemtk_wm_get_scroll_info(tv->window);
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, &area);
-
- if(width > -1) {
- slid->x_units = (width/slid->x_unit_px);
- gemtk_wm_update_slider(tv->window, GEMTK_WM_HSLIDER);
- }
- if(height > -1){
- slid->y_units = (height/slid->y_unit_px);
- gemtk_wm_update_slider(tv->window, GEMTK_WM_VSLIDER);
- }
-
- /*printf("units content: %d, units viewport: %d\n", (height/slid->y_unit_px),
- (area.g_h/slid->y_unit_px));*/
- //gemtk_wm_update_slider(tv->window, GEMTK_WM_VH_SLIDER);
- }
}
/**
- * Callback to request that a section of the tree is scrolled into view.
+ * Scroll the window to make area visible
*
- * \param y The Y coordinate of top of the area in NS units.
- * \param height The height of the area in NS units.
- * \param *pw The treeview object affected.
+ * \param cw the core window object
+ * \param r rectangle to make visible
*/
-
-void atari_treeview_scroll_visible(int y, int height, void *pw)
+void atari_treeview_scroll_visible(struct core_window *cw, const struct rect *r)
{
- /* we don't support dragging outside the treeview */
- /* so we don't need to implement this? */
+
}
-static void atari_treeview_get_grect(NSTREEVIEW tv, enum treeview_area_e mode,
- GRECT *dest)
+
+/**
+ * Get window viewport dimensions
+ *
+ * \param cw the core window object
+ * \param width to be set to viewport width in px, if non NULL
+ * \param height to be set to viewport height in px, if non NULL
+ */
+void atari_treeview_get_window_dimensions(struct core_window *cw,
+ int *width, int *height)
{
- if (mode == TREEVIEW_AREA_CONTENT) {
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_CONTENT, dest);
- }
- else if (mode == TREEVIEW_AREA_TOOLBAR) {
- gemtk_wm_get_grect(tv->window, GEMTK_WM_AREA_TOOLBAR, dest);
- }
}
+
/**
- * Callback to return the tree window dimensions to the treeview system.
+ * Inform corewindow owner of drag status
*
- * \param *width Return the window width.
- * \param *height Return the window height.
- * \param *pw The treeview object to use.
+ * \param cw the core window object
+ * \param ds the current drag status
*/
-
-void atari_treeview_get_dimensions(int *width, int *height,
- void *pw)
+void atari_treeview_drag_status(struct core_window *cw,
+ core_window_drag_status ds)
{
- if (pw != NULL && (width != NULL || height != NULL)) {
- NSTREEVIEW tv = (NSTREEVIEW) pw;
- GRECT work;
- atari_treeview_get_grect(tv, TREEVIEW_AREA_CONTENT, &work);
- *width = work.g_w;
- *height = work.g_h;
- }
+
}
+
diff --git a/atari/treeview.h b/atari/treeview.h
old mode 100755
new mode 100644
index 664b3a4..f8e4c42
--- a/atari/treeview.h
+++ b/atari/treeview.h
@@ -1,55 +1,41 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2013 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef NS_ATARI_TREEVIEW_H
-#define NS_ATARI_TREEVIEW_H
-
-#include <stdbool.h>
-#include "desktop/tree.h"
-#include "atari/gui.h"
-#include "atari/gemtk/gemtk.h"
-
-#define ATARI_TREEVIEW_WIDGETS (CLOSER | MOVER | SIZER| NAME | FULLER | SMALLER | VSLIDE | HSLIDE | UPARROW | DNARROW | LFARROW | RTARROW)
-
-struct atari_treeview
-{
- struct tree * tree;
- GUIWIN * window;
- bool disposing;
- bool redraw;
- GRECT rdw_area;
- POINT extent;
- POINT click;
- POINT startdrag;
- gemtk_wm_event_handler_f user_func;
+#ifndef NSATARI_TREEVIEW_H
+#define NSATARI_TREEVIEW_H
+
+struct atari_treeview_callbacks {
+ nserror (*init)(struct core_window *cw,
+ struct core_window_callback_table * default_callbacks);
+ void (*fini)(struct core_window *cw);
+ void (*draw)(struct core_window *cw);
+ void (*keypress)(struct core_window *cw);
+ void (*mouse)(struct core_window *cw);
+ gemtk_wm_event_handler_f gemtk_user_func;
};
-typedef struct atari_treeview * NSTREEVIEW;
-
-NSTREEVIEW atari_treeview_create( uint32_t flags, GUIWIN *win,
- gemtk_wm_event_handler_f user_func);
-void atari_treeview_destroy( NSTREEVIEW tv );
-void atari_treeview_open( NSTREEVIEW tv );
-void atari_treeview_close( NSTREEVIEW tv );
-void atari_treeview_request_redraw(int x, int y, int w, int h, void *pw);
-void atari_treeview_redraw( NSTREEVIEW tv );
-bool atari_treeview_mevent( NSTREEVIEW tv, browser_mouse_state bms, int x, int y);
+struct atari_treeview_callbacks;
+struct atari_treeview_window;
+struct atari_treeview_window *
+atari_treeview_create(GUIWIN *win, struct atari_treeview_callbacks * callbacks,
+ uint32_t flags);
+void atari_treeview_delete(struct atari_treeview_window * cw);
+#endif //NSATARI_TREEVIEW_H
-#endif
--
NetSurf Browser
9 years, 4 months
netsurf: branch mono/atari_treeview_rework updated. release/3.0-569-ge442193
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/e4421933eae27a84245b2...
...commit http://git.netsurf-browser.org/netsurf.git/commit/e4421933eae27a84245b24d...
...tree http://git.netsurf-browser.org/netsurf.git/tree/e4421933eae27a84245b24daf...
The branch, mono/atari_treeview_rework has been updated
via e4421933eae27a84245b24daf6db9e16afad5b64 (commit)
from a178aa5082e2670103ae15847e33ea3d56b67ba7 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=e4421933eae27a84245...
commit e4421933eae27a84245b24daf6db9e16afad5b64
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Added RECT_TO_GRECT macro
diff --git a/atari/misc.h b/atari/misc.h
index 677f8f6..32ced65 100755
--- a/atari/misc.h
+++ b/atari/misc.h
@@ -35,6 +35,13 @@
lbuf[6] = (long)sbuf[6];\
lbuf[7] = (long)sbuf[7];
+#define RECT_TO_GRECT(r,g) \
+ g->g_x = (r->x0 < r->x1) ? r->x0 : r->x1 ; \
+ g->g_y = (r->y0 < r->y1) ? r->y0 : r->y1 ; \
+ g->g_w = (r->x0 < r->x1) ? r->x1 - r->x0 : r->x0 - r->x1 ; \
+ g->g_h = (r->y0 < r->y1) ? r->y1 - r->y0 : r->y0 - r->y1 ;
+
+
/* Modes for find_gui_window: */
#define BY_WINDOM_HANDLE 0x0
-----------------------------------------------------------------------
Summary of changes:
atari/misc.h | 7 +++++++
1 files changed, 7 insertions(+), 0 deletions(-)
diff --git a/atari/misc.h b/atari/misc.h
index 677f8f6..32ced65 100755
--- a/atari/misc.h
+++ b/atari/misc.h
@@ -35,6 +35,13 @@
lbuf[6] = (long)sbuf[6];\
lbuf[7] = (long)sbuf[7];
+#define RECT_TO_GRECT(r,g) \
+ g->g_x = (r->x0 < r->x1) ? r->x0 : r->x1 ; \
+ g->g_y = (r->y0 < r->y1) ? r->y0 : r->y1 ; \
+ g->g_w = (r->x0 < r->x1) ? r->x1 - r->x0 : r->x0 - r->x1 ; \
+ g->g_h = (r->y0 < r->y1) ? r->y1 - r->y0 : r->y0 - r->y1 ;
+
+
/* Modes for find_gui_window: */
#define BY_WINDOM_HANDLE 0x0
--
NetSurf Browser
9 years, 4 months
netsurf: branch mono/atari_treeview_rework updated. release/3.0-568-ga178aa5
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/a178aa5082e2670103ae1...
...commit http://git.netsurf-browser.org/netsurf.git/commit/a178aa5082e2670103ae158...
...tree http://git.netsurf-browser.org/netsurf.git/tree/a178aa5082e2670103ae15847...
The branch, mono/atari_treeview_rework has been updated
via a178aa5082e2670103ae15847e33ea3d56b67ba7 (commit)
from 3e32688d0147fd8e12fd2e0fe74a4d9ea3b06ab1 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=a178aa5082e2670103a...
commit a178aa5082e2670103ae15847e33ea3d56b67ba7
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Added RECT_TO_GRECT macro
diff --git a/atari/misc.c b/atari/misc.c
index 974d37e..7e054c8 100755
--- a/atari/misc.c
+++ b/atari/misc.c
@@ -121,8 +121,8 @@ struct gui_window * find_guiwin_by_aes_handle(short handle){
}
while(gw != NULL) {
- if( gw->root->win != NULL
- && gemtk_wm_get_handle(gw->root->win) == handle ) {
+ if(gw->root->win != NULL
+ && gemtk_wm_get_handle(gw->root->win) == handle) {
return(gw);
}
else
-----------------------------------------------------------------------
Summary of changes:
atari/misc.c | 4 ++--
1 files changed, 2 insertions(+), 2 deletions(-)
diff --git a/atari/misc.c b/atari/misc.c
index 974d37e..7e054c8 100755
--- a/atari/misc.c
+++ b/atari/misc.c
@@ -121,8 +121,8 @@ struct gui_window * find_guiwin_by_aes_handle(short handle){
}
while(gw != NULL) {
- if( gw->root->win != NULL
- && gemtk_wm_get_handle(gw->root->win) == handle ) {
+ if(gw->root->win != NULL
+ && gemtk_wm_get_handle(gw->root->win) == handle) {
return(gw);
}
else
--
NetSurf Browser
9 years, 4 months
netsurf: branch mono/atari_treeview_rework updated. release/3.0-567-g3e32688
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/3e32688d0147fd8e12fd2...
...commit http://git.netsurf-browser.org/netsurf.git/commit/3e32688d0147fd8e12fd2e0...
...tree http://git.netsurf-browser.org/netsurf.git/tree/3e32688d0147fd8e12fd2e0fe...
The branch, mono/atari_treeview_rework has been updated
via 3e32688d0147fd8e12fd2e0fe74a4d9ea3b06ab1 (commit)
from 6026061e700dbefc4fff6122837b2a2a156d739c (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=3e32688d0147fd8e12f...
commit 3e32688d0147fd8e12fd2e0fe74a4d9ea3b06ab1
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
moved font plotter allocation
Delayed font plotter alloction until the requested
font plotter is found.
diff --git a/atari/plot/fontplot.c b/atari/plot/fontplot.c
index d3420b4..ebc7687 100644
--- a/atari/plot/fontplot.c
+++ b/atari/plot/fontplot.c
@@ -45,63 +45,67 @@ void dump_font_drivers(void)
}
-/*
+/**
* Create an new text plotter object
- * Available: "vdi", "freetype"
- * @param vdihandle the vdi handle to act upon,
- * @param name selector ID (string) of the font plotter.
- * @flags flags configration flags of the plotter,
+ *
+ * Available: "vdi", "freetype", "internal"
+ * \param vdihandle the vdi handle to act upon,
+ * \param name selector ID (string) of the font plotter.
+ * flags flags configration flags of the plotter,
* available flags:
* FONTPLOT_FLAG_MONOGLYPH - Enable 1 bit font plotting
- * @param error set to != 0 when errors occur
+ * \param error set to != 0 when errors occur
+ * \return the new font plotter instance on success, or NULL on failure.
*/
-FONT_PLOTTER new_font_plotter( int vdihandle, char * name, unsigned long flags,
+FONT_PLOTTER new_font_plotter(int vdihandle, char * name, unsigned long flags,
int * error)
{
int i=0;
int res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- FONT_PLOTTER fplotter;
+ FONT_PLOTTER fplotter = NULL;
- /* allocate the font plotter instance: */
- fplotter = (FONT_PLOTTER)malloc( sizeof(struct s_font_plotter) );
- if( fplotter == NULL ) {
- *error = 0-ERR_NO_MEM;
- return( NULL );
- }
+ /* set the default error code: */
+ *error = 0-ERR_PLOTTER_NOT_AVAILABLE;
- /* Initialize the font plotter with the requested settings: */
- memset( fplotter, 0, sizeof(FONT_PLOTTER));
- fplotter->vdi_handle = vdihandle;
- fplotter->name = name;
- fplotter->flags = 0;
- fplotter->flags |= flags;
-
- /* Find the selector string in the font plotter table: */
- /* And bail out when the font plotter is not available: */
- for( i = 0; ; i++) {
- if( font_driver_table[i].name == NULL ) {
- res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- break;
- } else {
- if( strcmp(name, font_driver_table[i].name) == 0 ) {
- if( font_driver_table[i].ctor ) {
- res = font_driver_table[i].ctor( fplotter );
- *error = 0;
- } else {
- res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- *error = res;
- return (NULL);
- }
- break;
+
+ /* Find the selector string in the font plotter table, */
+ /* and bail out when the font plotter is not available: */
+ for (i = 0; font_driver_table[i].name != NULL; i++) {
+
+ /* found selector in driver table? */
+ if (strcmp(name, font_driver_table[i].name) == 0) {
+
+ /* allocate the font plotter instance: */
+ fplotter = (FONT_PLOTTER)malloc(sizeof(struct s_font_plotter));
+ if (fplotter == NULL) {
+ *error = 0-ERR_NO_MEM;
+ return(NULL);
}
+
+ /* Initialize the font plotter with the requested settings: */
+ memset( fplotter, 0, sizeof(FONT_PLOTTER));
+ fplotter->vdi_handle = vdihandle;
+ fplotter->name = name;
+ fplotter->flags = 0;
+ fplotter->flags |= flags;
+
+ /* Execute the constructor: */
+ assert(font_driver_table[i].ctor);
+ res = font_driver_table[i].ctor(fplotter);
+
+ /* success? */
+ if (res < 0) {
+ /* NO success! */
+ free(fplotter);
+ *error = res;
+ return(NULL);
+ }
+ *error = 0;
+ break;
}
}
- if( res < 0 ) {
- free( fplotter );
- *error = res;
- return( NULL );
- }
- return( fplotter );
+
+ return(fplotter);
}
/*
@@ -109,13 +113,13 @@ FONT_PLOTTER new_font_plotter( int vdihandle, char * name, unsigned long flags,
*/
int delete_font_plotter(FONT_PLOTTER p)
{
- if( p ) {
+ if (p) {
p->dtor(p);
- free( p );
+ free(p);
p = NULL;
}
else
- return( -1 );
- return( 0 );
+ return(-1);
+ return(0);
}
-----------------------------------------------------------------------
Summary of changes:
atari/plot/fontplot.c | 100 +++++++++++++++++++++++++-----------------------
1 files changed, 52 insertions(+), 48 deletions(-)
diff --git a/atari/plot/fontplot.c b/atari/plot/fontplot.c
index d3420b4..ebc7687 100644
--- a/atari/plot/fontplot.c
+++ b/atari/plot/fontplot.c
@@ -45,63 +45,67 @@ void dump_font_drivers(void)
}
-/*
+/**
* Create an new text plotter object
- * Available: "vdi", "freetype"
- * @param vdihandle the vdi handle to act upon,
- * @param name selector ID (string) of the font plotter.
- * @flags flags configration flags of the plotter,
+ *
+ * Available: "vdi", "freetype", "internal"
+ * \param vdihandle the vdi handle to act upon,
+ * \param name selector ID (string) of the font plotter.
+ * flags flags configration flags of the plotter,
* available flags:
* FONTPLOT_FLAG_MONOGLYPH - Enable 1 bit font plotting
- * @param error set to != 0 when errors occur
+ * \param error set to != 0 when errors occur
+ * \return the new font plotter instance on success, or NULL on failure.
*/
-FONT_PLOTTER new_font_plotter( int vdihandle, char * name, unsigned long flags,
+FONT_PLOTTER new_font_plotter(int vdihandle, char * name, unsigned long flags,
int * error)
{
int i=0;
int res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- FONT_PLOTTER fplotter;
+ FONT_PLOTTER fplotter = NULL;
- /* allocate the font plotter instance: */
- fplotter = (FONT_PLOTTER)malloc( sizeof(struct s_font_plotter) );
- if( fplotter == NULL ) {
- *error = 0-ERR_NO_MEM;
- return( NULL );
- }
+ /* set the default error code: */
+ *error = 0-ERR_PLOTTER_NOT_AVAILABLE;
- /* Initialize the font plotter with the requested settings: */
- memset( fplotter, 0, sizeof(FONT_PLOTTER));
- fplotter->vdi_handle = vdihandle;
- fplotter->name = name;
- fplotter->flags = 0;
- fplotter->flags |= flags;
-
- /* Find the selector string in the font plotter table: */
- /* And bail out when the font plotter is not available: */
- for( i = 0; ; i++) {
- if( font_driver_table[i].name == NULL ) {
- res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- break;
- } else {
- if( strcmp(name, font_driver_table[i].name) == 0 ) {
- if( font_driver_table[i].ctor ) {
- res = font_driver_table[i].ctor( fplotter );
- *error = 0;
- } else {
- res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- *error = res;
- return (NULL);
- }
- break;
+
+ /* Find the selector string in the font plotter table, */
+ /* and bail out when the font plotter is not available: */
+ for (i = 0; font_driver_table[i].name != NULL; i++) {
+
+ /* found selector in driver table? */
+ if (strcmp(name, font_driver_table[i].name) == 0) {
+
+ /* allocate the font plotter instance: */
+ fplotter = (FONT_PLOTTER)malloc(sizeof(struct s_font_plotter));
+ if (fplotter == NULL) {
+ *error = 0-ERR_NO_MEM;
+ return(NULL);
}
+
+ /* Initialize the font plotter with the requested settings: */
+ memset( fplotter, 0, sizeof(FONT_PLOTTER));
+ fplotter->vdi_handle = vdihandle;
+ fplotter->name = name;
+ fplotter->flags = 0;
+ fplotter->flags |= flags;
+
+ /* Execute the constructor: */
+ assert(font_driver_table[i].ctor);
+ res = font_driver_table[i].ctor(fplotter);
+
+ /* success? */
+ if (res < 0) {
+ /* NO success! */
+ free(fplotter);
+ *error = res;
+ return(NULL);
+ }
+ *error = 0;
+ break;
}
}
- if( res < 0 ) {
- free( fplotter );
- *error = res;
- return( NULL );
- }
- return( fplotter );
+
+ return(fplotter);
}
/*
@@ -109,13 +113,13 @@ FONT_PLOTTER new_font_plotter( int vdihandle, char * name, unsigned long flags,
*/
int delete_font_plotter(FONT_PLOTTER p)
{
- if( p ) {
+ if (p) {
p->dtor(p);
- free( p );
+ free(p);
p = NULL;
}
else
- return( -1 );
- return( 0 );
+ return(-1);
+ return(0);
}
--
NetSurf Browser
9 years, 4 months
netsurf: branch mono/atari_treeview_rework created. release/3.0-566-g6026061
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/6026061e700dbefc4fff6...
...commit http://git.netsurf-browser.org/netsurf.git/commit/6026061e700dbefc4fff612...
...tree http://git.netsurf-browser.org/netsurf.git/tree/6026061e700dbefc4fff61228...
The branch, mono/atari_treeview_rework has been created
at 6026061e700dbefc4fff6122837b2a2a156d739c (commit)
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=6026061e700dbefc4ff...
commit 6026061e700dbefc4fff6122837b2a2a156d739c
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Added plot_get/set_text_plotter and comments
diff --git a/atari/plot/fontplot.c b/atari/plot/fontplot.c
index b80965b..d3420b4 100644
--- a/atari/plot/fontplot.c
+++ b/atari/plot/fontplot.c
@@ -1,106 +1,121 @@
-/*
- * Copyright 2010 Ole Loots <ole(a)monochrom.net>
- *
- * This file is part of NetSurf, http://www.netsurf-browser.org/
- *
- * NetSurf is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
- *
- * NetSurf is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see <http://www.gnu.org/licenses/>.
+/*
+ * Copyright 2010 Ole Loots <ole(a)monochrom.net>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#include "atari/plot/fontplot.h"
-const struct s_font_driver_table_entry font_driver_table[] =
+const struct s_font_driver_table_entry font_driver_table[] =
{
-#ifdef WITH_VDI_FONT_DRIVER
- {"vdi", ctor_font_plotter_vdi, 0},
+#ifdef WITH_VDI_FONT_DRIVER
+ {"vdi", ctor_font_plotter_vdi, 0},
#endif
#ifdef WITH_FREETYPE_FONT_DRIVER
{"freetype", ctor_font_plotter_freetype, 0},
#endif
-#ifdef WITH_INTERNAL_FONT_DRIVER
+#ifdef WITH_INTERNAL_FONT_DRIVER
{"internal", ctor_font_plotter_internal, 0},
-#endif
- {(char*)NULL, NULL, 0}
+#endif
+ {(char*)NULL, NULL, 0}
};
-void dump_font_drivers(void)
-{
- int i = 0;
- while( font_driver_table[i].name != NULL ) {
- printf("%s -> flags: %d\n",
- font_driver_table[i].name,
- font_driver_table[i].flags
- );
- i++;
- }
+void dump_font_drivers(void)
+{
+ int i = 0;
+ while( font_driver_table[i].name != NULL ) {
+ printf("%s -> flags: %d\n",
+ font_driver_table[i].name,
+ font_driver_table[i].flags
+ );
+ i++;
+ }
}
-
-/*
- Create an new text plotter object
-*/
+
+/*
+ * Create an new text plotter object
+ * Available: "vdi", "freetype"
+ * @param vdihandle the vdi handle to act upon,
+ * @param name selector ID (string) of the font plotter.
+ * @flags flags configration flags of the plotter,
+ * available flags:
+ * FONTPLOT_FLAG_MONOGLYPH - Enable 1 bit font plotting
+ * @param error set to != 0 when errors occur
+*/
FONT_PLOTTER new_font_plotter( int vdihandle, char * name, unsigned long flags,
- int * error)
-{
- int i=0;
- int res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- FONT_PLOTTER fplotter = (FONT_PLOTTER)malloc( sizeof(struct s_font_plotter) );
- if( fplotter == NULL ) {
- *error = 0-ERR_NO_MEM;
- return( NULL );
+ int * error)
+{
+ int i=0;
+ int res = 0-ERR_PLOTTER_NOT_AVAILABLE;
+ FONT_PLOTTER fplotter;
+
+ /* allocate the font plotter instance: */
+ fplotter = (FONT_PLOTTER)malloc( sizeof(struct s_font_plotter) );
+ if( fplotter == NULL ) {
+ *error = 0-ERR_NO_MEM;
+ return( NULL );
}
- memset( fplotter, 0, sizeof(FONT_PLOTTER));
- fplotter->vdi_handle = vdihandle;
+
+ /* Initialize the font plotter with the requested settings: */
+ memset( fplotter, 0, sizeof(FONT_PLOTTER));
+ fplotter->vdi_handle = vdihandle;
fplotter->name = name;
- fplotter->flags = 0;
+ fplotter->flags = 0;
fplotter->flags |= flags;
- for( i = 0; ; i++) {
- if( font_driver_table[i].name == NULL ) {
- res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- break;
- } else {
- if( strcmp(name, font_driver_table[i].name) == 0 ) {
- if( font_driver_table[i].ctor ) {
- res = font_driver_table[i].ctor( fplotter );
- *error = 0;
- } else {
- res = 0-ERR_PLOTTER_NOT_AVAILABLE;
- *error = res;
- return (NULL);
- }
- break;
- }
- }
- }
- if( res < 0 ) {
- free( fplotter );
- *error = res;
- return( NULL );
- }
- return( fplotter );
+
+ /* Find the selector string in the font plotter table: */
+ /* And bail out when the font plotter is not available: */
+ for( i = 0; ; i++) {
+ if( font_driver_table[i].name == NULL ) {
+ res = 0-ERR_PLOTTER_NOT_AVAILABLE;
+ break;
+ } else {
+ if( strcmp(name, font_driver_table[i].name) == 0 ) {
+ if( font_driver_table[i].ctor ) {
+ res = font_driver_table[i].ctor( fplotter );
+ *error = 0;
+ } else {
+ res = 0-ERR_PLOTTER_NOT_AVAILABLE;
+ *error = res;
+ return (NULL);
+ }
+ break;
+ }
+ }
+ }
+ if( res < 0 ) {
+ free( fplotter );
+ *error = res;
+ return( NULL );
+ }
+ return( fplotter );
}
-/*
- Free an font plotter
-*/
-int delete_font_plotter(FONT_PLOTTER p)
-{
- if( p ) {
- p->dtor(p);
- free( p );
- p = NULL;
- }
- else
- return( -1 );
- return( 0 );
+/*
+ Free an font plotter
+*/
+int delete_font_plotter(FONT_PLOTTER p)
+{
+ if( p ) {
+ p->dtor(p);
+ free( p );
+ p = NULL;
+ }
+ else
+ return( -1 );
+ return( 0 );
}
diff --git a/atari/plot/fontplot.h b/atari/plot/fontplot.h
index e4286a9..eab35cb 100644
--- a/atari/plot/fontplot.h
+++ b/atari/plot/fontplot.h
@@ -1,79 +1,84 @@
#ifndef FONT_PLOT_H
#define FONT_PLOT_H
-#include <stdlib.h>
-#include <stdbool.h>
-#include <stdio.h>
-#include <math.h>
-#include <assert.h>
+#include <stdlib.h>
+#include <stdbool.h>
+#include <stdio.h>
+#include <math.h>
+#include <assert.h>
#include <string.h>
-#include "desktop/plot_style.h"
+#include "desktop/plot_style.h"
#include "image/bitmap.h"
#include "utils/log.h"
-#include "atari/bitmap.h"
+#include "atari/bitmap.h"
#include "atari/plot/eddi.h"
-#include "atari/gui.h"
-#include "atari/misc.h"
+#include "atari/gui.h"
+#include "atari/misc.h"
#include "atari/osspec.h"
-typedef struct s_font_plotter * FONT_PLOTTER;
+typedef struct s_font_plotter * FONT_PLOTTER;
-struct s_font_driver_table_entry
-{
- const char * name;
- int (*ctor)( FONT_PLOTTER self );
- int flags;
+struct s_font_driver_table_entry
+{
+ const char * name;
+ int (*ctor)( FONT_PLOTTER self );
+ int flags;
};
-
-/* declaration of font plotter member functions: (_fpmf_ prefix) */
-typedef int (*_fpmf_str_width)( FONT_PLOTTER self, const plot_font_style_t *fstyle,
- const char * str, size_t length, int * width);
-typedef int (*_fpmf_str_split)( FONT_PLOTTER self, const plot_font_style_t *fstyle,
- const char *string, size_t length,
- int x, size_t *char_offset, int *actual_x);
-typedef int (*_fpmf_pixel_pos)( FONT_PLOTTER self, const plot_font_style_t *fstyle,
- const char *string, size_t length,
- int x, size_t *char_offset, int *actual_x);
-typedef int (*_fpmf_text)( FONT_PLOTTER self, int x, int y, const char *text,
- size_t length, const plot_font_style_t *fstyle);
+
+/* declaration of font plotter member functions: (_fpmf_ prefix) */
+typedef int (*_fpmf_str_width)( FONT_PLOTTER self, const plot_font_style_t *fstyle,
+ const char * str, size_t length, int * width);
+typedef int (*_fpmf_str_split)( FONT_PLOTTER self, const plot_font_style_t *fstyle,
+ const char *string, size_t length,
+ int x, size_t *char_offset, int *actual_x);
+typedef int (*_fpmf_pixel_pos)( FONT_PLOTTER self, const plot_font_style_t *fstyle,
+ const char *string, size_t length,
+ int x, size_t *char_offset, int *actual_x);
+typedef int (*_fpmf_text)( FONT_PLOTTER self, int x, int y, const char *text,
+ size_t length, const plot_font_style_t *fstyle);
typedef void (*_fpmf_draw_glyph)(FONT_PLOTTER self, GRECT * clip, GRECT * loc,
uint8_t * pixdata, int pitch, uint32_t colour);
-typedef int (*_fpmf_dtor)( FONT_PLOTTER self );
+typedef int (*_fpmf_dtor)( FONT_PLOTTER self );
+
-
-/* prototype of the font plotter "object" */
-struct s_font_plotter
-{
- char * name;
- int flags;
- int vdi_handle;
- void * priv_data;
-
- _fpmf_str_width str_width;
- _fpmf_str_split str_split;
- _fpmf_pixel_pos pixel_pos;
+/* prototype of the font plotter "object" */
+struct s_font_plotter
+{
+ char * name;
+ int flags;
+ int vdi_handle;
+ void * priv_data;
+
+ _fpmf_str_width str_width;
+ _fpmf_str_split str_split;
+ _fpmf_pixel_pos pixel_pos;
_fpmf_text text;
- _fpmf_draw_glyph draw_glyph;
- _fpmf_dtor dtor;
+ _fpmf_draw_glyph draw_glyph;
+ _fpmf_dtor dtor;
};
+FONT_PLOTTER plot_get_text_plotter(void);
+/* Set the font plotting engine.
+*/
+void plot_set_text_plotter(FONT_PLOTTER font_plotter);
void dump_font_drivers(void);
FONT_PLOTTER new_font_plotter( int vdihandle, char * name, unsigned long flags,
int * error);
int delete_font_plotter( FONT_PLOTTER p );
-#ifdef WITH_VDI_FONT_DRIVER
- #include "atari/plot/font_vdi.h"
-#endif
-#ifdef WITH_INTERNAL_FONT_DRIVER
- #include "atari/plot/font_internal.h"
-#endif
-#ifdef WITH_FREETYPE_FONT_DRIVER
- #include "atari/plot/font_freetype.h"
+
+#ifdef WITH_VDI_FONT_DRIVER
+ #include "atari/plot/font_vdi.h"
+#endif
+#ifdef WITH_INTERNAL_FONT_DRIVER
+ #include "atari/plot/font_internal.h"
+#endif
+#ifdef WITH_FREETYPE_FONT_DRIVER
+ #include "atari/plot/font_freetype.h"
#endif
-#endif
+#endif
diff --git a/atari/plot/plot.c b/atari/plot/plot.c
index 33810b7..80eda69 100755
--- a/atari/plot/plot.c
+++ b/atari/plot/plot.c
@@ -1974,6 +1974,16 @@ void plot_get_clip_grect(GRECT * out)
out->g_h = clip.y1 - clip.y0;
}
+FONT_PLOTTER plot_get_text_plotter()
+{
+ return(fplotter);
+}
+
+void plot_set_text_plotter(FONT_PLOTTER font_plotter)
+{
+ fplotter = font_plotter;
+}
+
static bool plot_text(int x, int y, const char *text, size_t length, const plot_font_style_t *fstyle )
{
fplotter->text(fplotter, x, y, text, length, fstyle);
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=a6060a520e8f6ff816b...
commit a6060a520e8f6ff816b3e0fe4619833dacb0b7cd
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Tuned frontend Makefiles for local environment.
diff --git a/atari/Makefile.defaults b/atari/Makefile.defaults
index 83464d6..ccc9b49 100644
--- a/atari/Makefile.defaults
+++ b/atari/Makefile.defaults
@@ -24,6 +24,10 @@
NETSURF_USE_MNG := NO
+ # Enable Spidermonkey JavaScript engine
+ # Valid options: YES, NO
+ NETSURF_USE_MOZJS := NO
+
# enable true type fonts via freetype2
# Valid options: YES, NO
NETSURF_USE_ATARI_FREETYPE_FONT := YES
diff --git a/atari/Makefile.target b/atari/Makefile.target
index bff4f07..0ffe9e7 100644
--- a/atari/Makefile.target
+++ b/atari/Makefile.target
@@ -128,8 +128,8 @@ ATARI_TARGET_DIR := netsurf/
ATARI_RES_DIR := atari/res/
ATARI_DOC_DIR := atari/doc/
ATARI_FONT_NAME := ttf-bitstream-vera-1.10
-ATARI_FONT_SOURCE_URL := http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/$(ATARI_FO...
-#ATARI_FONT_SOURCE_URL := http://localhost/$(ATARI_FONT_NAME).tar.gz
+#ATARI_FONT_SOURCE_URL := http://ftp.gnome.org/pub/GNOME/sources/ttf-bitstream-vera/1.10/$(ATARI_FO...
+ATARI_FONT_SOURCE_URL := http://localhost/$(ATARI_FONT_NAME).tar.gz
ATARI_FONT_TMP_DIR := $(DEPROOT)/../
ATARI_FONT_SOURCE_DIR := $(ATARI_FONT_TMP_DIR)$(ATARI_FONT_NAME)/
ATARI_GENERIC_RESOURCES := de en it ja
@@ -153,10 +153,10 @@ package-atari: $(ATARI_FONT_TMP_DIR)$(ATARI_FONT_NAME) $(PKGNAME)
$(VQ)echo Creating $(PKGNAME)
$(PKGNAME): $(EXETARGET)
-ifneq ($(strip $(STRIP)),)
- $(Q)echo Stripping symbols from $(EXETARGET) with $(STRIP)
- $(Q)$(STRIP) $(EXETARGET)
-endif
+#ifneq ($(strip $(STRIP)),)
+# $(Q)echo Stripping symbols from $(EXETARGET) with $(STRIP)
+# $(Q)$(STRIP) $(EXETARGET)
+#endif
ifneq ($(strip $(STACK)),)
$(Q)$(STACK) -S 256k $(EXETARGET)
endif
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=436580cfde3ddba153f...
commit 436580cfde3ddba153f4e411d3c3b91cd036979a
Author: Ole Loots <ole(a)monochrom.net>
Commit: Ole Loots <ole(a)monochrom.net>
Added initialization/finalization of treeview framework.
diff --git a/atari/gui.c b/atari/gui.c
index 8db4765..83731b4 100644
--- a/atari/gui.c
+++ b/atari/gui.c
@@ -43,6 +43,7 @@
#include "utils/nsoption.h"
#include "desktop/save_complete.h"
#include "desktop/textinput.h"
+#include "desktop/treeview.h"
#include "desktop/browser.h"
#include "desktop/browser_private.h"
#include "desktop/mouse.h"
@@ -804,16 +805,24 @@ void gui_quit(void)
struct gui_window * gw = window_list;
struct gui_window * tmp = window_list;
+ /* Destroy all remaining browser windows: */
while( gw ) {
tmp = gw->next;
browser_window_destroy(gw->browser->bw);
gw = tmp;
}
+ /* destroy the treeview windows: */
atari_global_history_destroy();
atari_hotlist_destroy();
+
+ /* shutdown netsurf treeview framework: */
+ treeview_fini();
+
+ /* shutdown the toolbar framework: */
toolbar_exit();
+ /* save persistent informations: */
urldb_save_cookies(nsoption_charp(cookie_file));
urldb_save(nsoption_charp(url_file));
@@ -1019,8 +1028,15 @@ static void gui_init2(int argc, char** argv)
menu_register( _AESapid, (char*)" NetSurf ");
}
gemtk_wm_init();
+
+ /* Initialize the netsurf treeview framework with default font size: */
+ treeview_init(0);
+
+ /* Initialize the specific treeview windows: */
atari_global_history_init();
atari_hotlist_init();
+
+ /* Initialize the toolbar framework: */
toolbar_init();
}
-----------------------------------------------------------------------
--
NetSurf Browser
9 years, 4 months
netsurf: branch master updated. release/3.0-567-gfda18c4
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/fda18c49779f8abcd83eb...
...commit http://git.netsurf-browser.org/netsurf.git/commit/fda18c49779f8abcd83eb90...
...tree http://git.netsurf-browser.org/netsurf.git/tree/fda18c49779f8abcd83eb902e...
The branch, master has been updated
via fda18c49779f8abcd83eb902e1064147b1c397fc (commit)
from 04a118c4153a4c727c5843162f147311054ebf5a (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=fda18c49779f8abcd83...
commit fda18c49779f8abcd83eb902e1064147b1c397fc
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
less over-zealous code removal
diff --git a/amiga/tree.c b/amiga/tree.c
index a017f0f..80d05a6 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 - 2012 Chris Young <chris(a)unsatisfactorysoftware.co.uk>
+ * Copyright 2008 - 2013 Chris Young <chris(a)unsatisfactorysoftware.co.uk>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -276,6 +276,10 @@ void ami_tree_drag_icon_show(struct treeview_window *twin)
if((twin->type == AMI_TREE_COOKIES) ||
(twin->type == AMI_TREE_SSLCERT)) return; /* No permissable drag operations */
+ if((tree_drag_status(twin->tree) == TREE_SELECT_DRAG) ||
+ (tree_drag_status(twin->tree) == TREE_TEXTAREA_DRAG))
+ return;
+
if((twin->type == AMI_TREE_HOTLIST) && (hotlist_has_selection())) {
hotlist_get_selection(&url, &title);
} else if((twin->type == AMI_TREE_HISTORY) && (global_history_has_selection())) {
-----------------------------------------------------------------------
Summary of changes:
amiga/tree.c | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/amiga/tree.c b/amiga/tree.c
index a017f0f..80d05a6 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -1,5 +1,5 @@
/*
- * Copyright 2008 - 2012 Chris Young <chris(a)unsatisfactorysoftware.co.uk>
+ * Copyright 2008 - 2013 Chris Young <chris(a)unsatisfactorysoftware.co.uk>
*
* This file is part of NetSurf, http://www.netsurf-browser.org/
*
@@ -276,6 +276,10 @@ void ami_tree_drag_icon_show(struct treeview_window *twin)
if((twin->type == AMI_TREE_COOKIES) ||
(twin->type == AMI_TREE_SSLCERT)) return; /* No permissable drag operations */
+ if((tree_drag_status(twin->tree) == TREE_SELECT_DRAG) ||
+ (tree_drag_status(twin->tree) == TREE_TEXTAREA_DRAG))
+ return;
+
if((twin->type == AMI_TREE_HOTLIST) && (hotlist_has_selection())) {
hotlist_get_selection(&url, &title);
} else if((twin->type == AMI_TREE_HISTORY) && (global_history_has_selection())) {
--
NetSurf Browser
9 years, 4 months
netsurf: branch master updated. release/3.0-566-g04a118c
by NetSurf Browser Project
Gitweb links:
...log http://git.netsurf-browser.org/netsurf.git/shortlog/04a118c4153a4c727c584...
...commit http://git.netsurf-browser.org/netsurf.git/commit/04a118c4153a4c727c58431...
...tree http://git.netsurf-browser.org/netsurf.git/tree/04a118c4153a4c727c5843162...
The branch, master has been updated
via 04a118c4153a4c727c5843162f147311054ebf5a (commit)
via c32c68f4ed7bd891f547ad935b00eda0add80ef7 (commit)
via 250338ba7c1bcf976399d29af9ed56de966ae816 (commit)
from b96222d8571237919bbfc7d85d43a2d46cfe262f (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=04a118c4153a4c727c5...
commit 04a118c4153a4c727c5843162f147311054ebf5a
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
treeview deferred redraw
diff --git a/amiga/tree.c b/amiga/tree.c
index c67c4a0..a017f0f 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -53,6 +53,7 @@
#include "amiga/drag.h" /* drag icon stuff */
#include "amiga/theme.h" /* pointers */
#include "amiga/filetype.h"
+#include "amiga/schedule.h"
#include "utils/nsoption.h"
#include "content/urldb.h"
#include "desktop/cookie_manager.h"
@@ -101,6 +102,14 @@ struct treeview_window {
struct MinList shared_pens;
};
+struct ami_tree_redraw_req {
+ int x;
+ int y;
+ int width;
+ int height;
+ struct treeview_window *twin;
+};
+
void ami_tree_draw(struct treeview_window *twin);
static void ami_tree_redraw_request(int x, int y, int width, int height,
void *data);
@@ -1214,9 +1223,14 @@ void ami_tree_draw(struct treeview_window *twin)
ami_tree_redraw_request(x, y, bbox->Width, bbox->Height, twin);
}
-void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
+static void ami_tree_redraw_req(void *p)
{
- struct treeview_window *twin = data;
+ struct ami_tree_redraw_req *atrr_data = (struct ami_tree_redraw_req *)p;
+ int x = atrr_data->x;
+ int y = atrr_data->y;
+ int width = atrr_data->width;
+ int height = atrr_data->height;
+ struct treeview_window *twin = atrr_data->twin;
struct IBox *bbox;
int pos_x, pos_y;
int tile_x, tile_y, tile_w, tile_h;
@@ -1276,6 +1290,21 @@ void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
}
}
+ FreeVec(atrr_data);
ami_update_pointer(twin->win, GUI_POINTER_DEFAULT);
glob = &browserglob;
}
+
+void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
+{
+ struct ami_tree_redraw_req *atrr_data = AllocVec(sizeof(struct ami_tree_redraw_req), MEMF_CLEAR | MEMF_PRIVATE);
+
+ atrr_data->x = x;
+ atrr_data->y = y;
+ atrr_data->width = width;
+ atrr_data->height = height;
+ atrr_data->twin = (struct treeview_window *)data;
+
+ schedule(0, ami_tree_redraw_req, atrr_data);
+}
+
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=c32c68f4ed7bd891f54...
commit c32c68f4ed7bd891f547ad935b00eda0add80ef7
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Support drag for global history too
diff --git a/amiga/tree.c b/amiga/tree.c
index 4663484..c67c4a0 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -264,11 +264,6 @@ void ami_tree_drag_icon_show(struct treeview_window *twin)
nsurl *url = NULL;
const char *title = NULL;
- if((tree_drag_status(twin->tree) == TREE_NO_DRAG) ||
- (tree_drag_status(twin->tree) == TREE_SELECT_DRAG) ||
- (tree_drag_status(twin->tree) == TREE_TEXTAREA_DRAG))
- return;
-
if((twin->type == AMI_TREE_COOKIES) ||
(twin->type == AMI_TREE_SSLCERT)) return; /* No permissable drag operations */
@@ -308,7 +303,7 @@ void ami_tree_drag_end(struct treeview_window *twin, int x, int y)
if((title == NULL) || (title && (url == NULL))) {
DisplayBeep(scrn);
- } else {
+ } else if(url) {
if(gwin = ami_window_at_pointer(AMINS_WINDOW)) {
browser_window_navigate(gwin->bw,
url,
commitdiff http://git.netsurf-browser.org/netsurf.git/commit/?id=250338ba7c1bcf97639...
commit 250338ba7c1bcf976399d29af9ed56de966ae816
Author: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Commit: Chris Young <chris(a)unsatisfactorysoftware.co.uk>
Re-implement dragging to/from treeview (not working)
diff --git a/amiga/tree.c b/amiga/tree.c
index a8f22e9..4663484 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -261,9 +261,8 @@ void ami_tree_scroll(struct treeview_window *twin, int sx, int sy)
void ami_tree_drag_icon_show(struct treeview_window *twin)
{
const char *type = "project";
- const char *url;
- const struct url_data *data;
- struct node *node = NULL;
+ nsurl *url = NULL;
+ const char *title = NULL;
if((tree_drag_status(twin->tree) == TREE_NO_DRAG) ||
(tree_drag_status(twin->tree) == TREE_SELECT_DRAG) ||
@@ -272,60 +271,46 @@ void ami_tree_drag_icon_show(struct treeview_window *twin)
if((twin->type == AMI_TREE_COOKIES) ||
(twin->type == AMI_TREE_SSLCERT)) return; /* No permissable drag operations */
-#if 0
- node = tree_get_selected_node(tree_get_root(twin->tree));
- if(node && tree_node_is_folder(node))
+ if((twin->type == AMI_TREE_HOTLIST) && (hotlist_has_selection())) {
+ hotlist_get_selection(&url, &title);
+ } else if((twin->type == AMI_TREE_HISTORY) && (global_history_has_selection())) {
+ global_history_get_selection(&url, &title);
+ }
+
+ if(title && (url == NULL))
{
ami_drag_icon_show(twin->win, "drawer");
}
else
{
- if(node && (url = tree_url_node_get_url(node)))
- {
- nsurl *nsurl;
- if (nsurl_create(url, &nsurl) != NSERROR_OK)
- return;
- if(data = urldb_get_url_data(nsurl))
- {
- type = ami_content_type_to_file_type(data->type);
- }
- nsurl_unref(nsurl);
- }
ami_drag_icon_show(twin->win, type);
}
-#endif
}
void ami_tree_drag_end(struct treeview_window *twin, int x, int y)
{
struct gui_window_2 *gwin;
struct treeview_window *tw;
- struct node *selected_node;
BOOL drag;
+ nsurl *url = NULL;
+ const char *title = NULL;
if(drag = ami_drag_in_progress()) ami_drag_icon_close(twin->win);
-#if 0
+
if(drag && (twin != ami_window_at_pointer(AMINS_TVWINDOW)))
{
- selected_node = tree_get_selected_node(tree_get_root(twin->tree));
+ if((twin->type == AMI_TREE_HOTLIST) && (hotlist_has_selection())) {
+ hotlist_get_selection(&url, &title);
+ } else if((twin->type == AMI_TREE_HISTORY) && (global_history_has_selection())) {
+ global_history_get_selection(&url, &title);
+ }
- if((selected_node == NULL) || (tree_node_is_folder(selected_node)))
- {
+ if((title == NULL) || (title && (url == NULL))) {
DisplayBeep(scrn);
- }
- else
- {
- if(gwin = ami_window_at_pointer(AMINS_WINDOW))
- {
- nsurl *url;
- nserror error;
-
- error = nsurl_create(tree_url_node_get_url(selected_node), &url);
- if (error != NSERROR_OK) {
- warn_user(messages_get_errorcode(error), 0);
- } else {
- browser_window_navigate(gwin->bw,
+ } else {
+ if(gwin = ami_window_at_pointer(AMINS_WINDOW)) {
+ browser_window_navigate(gwin->bw,
url,
NULL,
BROWSER_WINDOW_HISTORY |
@@ -333,25 +318,15 @@ void ami_tree_drag_end(struct treeview_window *twin, int x, int y)
NULL,
NULL,
NULL);
- nsurl_unref(url);
- }
-
- }
-#if 0
- else if((tw = ami_window_at_pointer(AMINS_TVWINDOW)) &&
- (tw != twin) && (tw->type == AMI_TREE_HOTLIST))
- {
- hotlist_add_entry(tree_url_node_get_url(selected_node), NULL, true, y);
+ } else if((tw = ami_window_at_pointer(AMINS_TVWINDOW)) &&
+ (tw != twin) && (tw->type == AMI_TREE_HOTLIST)) {
+ hotlist_add_entry(url, title, true, y);
}
-#endif
}
tree_drag_end(twin->tree, twin->mouse_state,
twin->drag_x, twin->drag_y,
twin->drag_x, twin->drag_y); /* Keep the tree happy */
- }
- else
-#endif
- {
+ } else {
if(tree_drag_status(twin->tree) == TREE_UNKNOWN_DRAG)
DisplayBeep(scrn);
-----------------------------------------------------------------------
Summary of changes:
amiga/tree.c | 113 ++++++++++++++++++++++++++++-----------------------------
1 files changed, 56 insertions(+), 57 deletions(-)
diff --git a/amiga/tree.c b/amiga/tree.c
index a8f22e9..a017f0f 100644
--- a/amiga/tree.c
+++ b/amiga/tree.c
@@ -53,6 +53,7 @@
#include "amiga/drag.h" /* drag icon stuff */
#include "amiga/theme.h" /* pointers */
#include "amiga/filetype.h"
+#include "amiga/schedule.h"
#include "utils/nsoption.h"
#include "content/urldb.h"
#include "desktop/cookie_manager.h"
@@ -101,6 +102,14 @@ struct treeview_window {
struct MinList shared_pens;
};
+struct ami_tree_redraw_req {
+ int x;
+ int y;
+ int width;
+ int height;
+ struct treeview_window *twin;
+};
+
void ami_tree_draw(struct treeview_window *twin);
static void ami_tree_redraw_request(int x, int y, int width, int height,
void *data);
@@ -261,71 +270,51 @@ void ami_tree_scroll(struct treeview_window *twin, int sx, int sy)
void ami_tree_drag_icon_show(struct treeview_window *twin)
{
const char *type = "project";
- const char *url;
- const struct url_data *data;
- struct node *node = NULL;
-
- if((tree_drag_status(twin->tree) == TREE_NO_DRAG) ||
- (tree_drag_status(twin->tree) == TREE_SELECT_DRAG) ||
- (tree_drag_status(twin->tree) == TREE_TEXTAREA_DRAG))
- return;
+ nsurl *url = NULL;
+ const char *title = NULL;
if((twin->type == AMI_TREE_COOKIES) ||
(twin->type == AMI_TREE_SSLCERT)) return; /* No permissable drag operations */
-#if 0
- node = tree_get_selected_node(tree_get_root(twin->tree));
- if(node && tree_node_is_folder(node))
+ if((twin->type == AMI_TREE_HOTLIST) && (hotlist_has_selection())) {
+ hotlist_get_selection(&url, &title);
+ } else if((twin->type == AMI_TREE_HISTORY) && (global_history_has_selection())) {
+ global_history_get_selection(&url, &title);
+ }
+
+ if(title && (url == NULL))
{
ami_drag_icon_show(twin->win, "drawer");
}
else
{
- if(node && (url = tree_url_node_get_url(node)))
- {
- nsurl *nsurl;
- if (nsurl_create(url, &nsurl) != NSERROR_OK)
- return;
- if(data = urldb_get_url_data(nsurl))
- {
- type = ami_content_type_to_file_type(data->type);
- }
- nsurl_unref(nsurl);
- }
ami_drag_icon_show(twin->win, type);
}
-#endif
}
void ami_tree_drag_end(struct treeview_window *twin, int x, int y)
{
struct gui_window_2 *gwin;
struct treeview_window *tw;
- struct node *selected_node;
BOOL drag;
+ nsurl *url = NULL;
+ const char *title = NULL;
if(drag = ami_drag_in_progress()) ami_drag_icon_close(twin->win);
-#if 0
+
if(drag && (twin != ami_window_at_pointer(AMINS_TVWINDOW)))
{
- selected_node = tree_get_selected_node(tree_get_root(twin->tree));
+ if((twin->type == AMI_TREE_HOTLIST) && (hotlist_has_selection())) {
+ hotlist_get_selection(&url, &title);
+ } else if((twin->type == AMI_TREE_HISTORY) && (global_history_has_selection())) {
+ global_history_get_selection(&url, &title);
+ }
- if((selected_node == NULL) || (tree_node_is_folder(selected_node)))
- {
+ if((title == NULL) || (title && (url == NULL))) {
DisplayBeep(scrn);
- }
- else
- {
- if(gwin = ami_window_at_pointer(AMINS_WINDOW))
- {
- nsurl *url;
- nserror error;
-
- error = nsurl_create(tree_url_node_get_url(selected_node), &url);
- if (error != NSERROR_OK) {
- warn_user(messages_get_errorcode(error), 0);
- } else {
- browser_window_navigate(gwin->bw,
+ } else if(url) {
+ if(gwin = ami_window_at_pointer(AMINS_WINDOW)) {
+ browser_window_navigate(gwin->bw,
url,
NULL,
BROWSER_WINDOW_HISTORY |
@@ -333,25 +322,15 @@ void ami_tree_drag_end(struct treeview_window *twin, int x, int y)
NULL,
NULL,
NULL);
- nsurl_unref(url);
- }
-
- }
-#if 0
- else if((tw = ami_window_at_pointer(AMINS_TVWINDOW)) &&
- (tw != twin) && (tw->type == AMI_TREE_HOTLIST))
- {
- hotlist_add_entry(tree_url_node_get_url(selected_node), NULL, true, y);
+ } else if((tw = ami_window_at_pointer(AMINS_TVWINDOW)) &&
+ (tw != twin) && (tw->type == AMI_TREE_HOTLIST)) {
+ hotlist_add_entry(url, title, true, y);
}
-#endif
}
tree_drag_end(twin->tree, twin->mouse_state,
twin->drag_x, twin->drag_y,
twin->drag_x, twin->drag_y); /* Keep the tree happy */
- }
- else
-#endif
- {
+ } else {
if(tree_drag_status(twin->tree) == TREE_UNKNOWN_DRAG)
DisplayBeep(scrn);
@@ -1244,9 +1223,14 @@ void ami_tree_draw(struct treeview_window *twin)
ami_tree_redraw_request(x, y, bbox->Width, bbox->Height, twin);
}
-void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
+static void ami_tree_redraw_req(void *p)
{
- struct treeview_window *twin = data;
+ struct ami_tree_redraw_req *atrr_data = (struct ami_tree_redraw_req *)p;
+ int x = atrr_data->x;
+ int y = atrr_data->y;
+ int width = atrr_data->width;
+ int height = atrr_data->height;
+ struct treeview_window *twin = atrr_data->twin;
struct IBox *bbox;
int pos_x, pos_y;
int tile_x, tile_y, tile_w, tile_h;
@@ -1306,6 +1290,21 @@ void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
}
}
+ FreeVec(atrr_data);
ami_update_pointer(twin->win, GUI_POINTER_DEFAULT);
glob = &browserglob;
}
+
+void ami_tree_redraw_request(int x, int y, int width, int height, void *data)
+{
+ struct ami_tree_redraw_req *atrr_data = AllocVec(sizeof(struct ami_tree_redraw_req), MEMF_CLEAR | MEMF_PRIVATE);
+
+ atrr_data->x = x;
+ atrr_data->y = y;
+ atrr_data->width = width;
+ atrr_data->height = height;
+ atrr_data->twin = (struct treeview_window *)data;
+
+ schedule(0, ami_tree_redraw_req, atrr_data);
+}
+
--
NetSurf Browser
9 years, 4 months