From d21447d096a320a08b3efb2b8768fad0dcdcfd64 Mon Sep 17 00:00:00 2001 From: Vincent Sanders Date: Thu, 5 May 2016 22:28:51 +0100 Subject: move frontends into sub directory --- frontends/atari/gui.h | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 183 insertions(+) create mode 100644 frontends/atari/gui.h (limited to 'frontends/atari/gui.h') diff --git a/frontends/atari/gui.h b/frontends/atari/gui.h new file mode 100644 index 000000000..50184d029 --- /dev/null +++ b/frontends/atari/gui.h @@ -0,0 +1,183 @@ +/* + * Copyright 2010 Ole Loots + * + * 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 . + */ + +#ifndef NS_ATARI_GUI_H_ +#define NS_ATARI_GUI_H_ + +#include +#include + +#include "desktop/mouse.h" + +#include "atari/redrawslots.h" +#include "atari/gemtk/gemtk.h" + +#ifndef PATH_MAX +#define PATH_MAX 1024 +#endif + +#define CARET_STATE_VISIBLE 0x01 +#define CARET_STATE_ENABLED 0x02 + +struct s_caret { + GRECT dimensions; + MFDB symbol; + int fd_size; + unsigned short state; +}; + +struct point_s { + int x; + int y; +}; + +typedef struct point_s POINT; + +#define MFORM_EX_FLAG_USERFORM 0x01 + +struct mform_ex_s +{ + unsigned char flags; + int number; + OBJECT * tree; +}; + +typedef struct mform_ex_s MFORM_EX; + +struct s_gem_cursors { + MFORM_EX hand; + MFORM_EX ibeam; + MFORM_EX cross; + MFORM_EX sizeall; + MFORM_EX sizewe; + MFORM_EX sizens; + MFORM_EX sizenesw; + MFORM_EX sizenwse; + MFORM_EX wait; + MFORM_EX appstarting; + MFORM_EX nodrop; + MFORM_EX deny; + MFORM_EX help; + MFORM_EX menu; + MFORM_EX arrow; +} gem_cursors; + +enum focus_element_type { + WIDGET_NONE=0, + URL_WIDGET, + SEARCH_INPUT, + BROWSER +}; + + +struct s_focus_info +{ + enum focus_element_type type; + void * element; +}; + +/* defines for data attached to components: */ +#define CDT_OBJECT 0x004f424aUL +#define CDT_OWNER 0x03UL +#define CDT_ICON 0x04UL +#define CDT_ICON_TYPE 0x05UL +# define CDT_ICON_TYPE_NONE 0x00UL +# define CDT_ICON_TYPE_OBJECT 0x01UL +# define CDT_ICON_TYPE_BITMAP 0x02UL + + +struct gui_window; +struct s_browser; +struct s_statusbar; +struct s_toolbar; + +typedef struct s_toolbar * CMP_TOOLBAR; +typedef struct s_statusbar * CMP_STATUSBAR; +typedef struct s_browser * CMP_BROWSER; + +/* + This is the "main" window. It can consist of several components + and also holds information shared by several frames within + the window. +*/ +struct s_gui_win_root +{ + short aes_handle; + GUIWIN *win; + CMP_TOOLBAR toolbar; + CMP_STATUSBAR statusbar; + struct s_focus_info focus; + float scale; + char * title; + struct bitmap * icon; + struct gui_window *active_gui_window; + struct s_redrw_slots redraw_slots; + struct s_caret caret; + /* current size of window on screen: */ + GRECT loc; +}; +typedef struct s_gui_win_root ROOTWIN; + +struct s_browser +{ + struct browser_window * bw; + bool attached; +}; + +/* + This is the part of the gui which is known by netsurf core. + You must implement it. Altough, you are free how to do it. + Each of the browser "viewports" managed by netsurf are bound + to this structure. +*/ +struct gui_window { + struct s_gui_win_root * root; + struct s_browser * browser; + MFORM_EX *cursor; + /* icon to be drawn when iconified, or NULL for default resource. */ + char * status; + char * title; + char * url; + float scale; + struct bitmap * icon; + struct s_caret caret; + struct s_search_form_session *search; + struct gui_window *next, *prev; +}; + +extern struct gui_window *window_list; + +/* -------------------------------------------------------------------------- */ +/* Public - non core gui window functions */ +/* -------------------------------------------------------------------------- */ +void gui_set_input_gui_window(struct gui_window *gw); +struct gui_window *gui_get_input_window(void); +char *gui_window_get_url(struct gui_window *gw); +char *gui_window_get_title(struct gui_window *gw); + +/** + * Set the status bar of a browser window. + * + * \param w The gui_window to update. + * \param text new status text + */ +void atari_window_set_status(struct gui_window *w, const char *text); +void gui_window_set_pointer(struct gui_window *gw, gui_pointer_shape shape); +void gui_window_destroy(struct gui_window *w); + +#endif -- cgit v1.2.3