summaryrefslogtreecommitdiff
path: root/desktop/browser.h
diff options
context:
space:
mode:
authorPhil Mellor <phil@monkeyson.info>2002-09-11 14:24:02 +0000
committerPhil Mellor <phil@monkeyson.info>2002-09-11 14:24:02 +0000
commit811106028fd050cdee11fbc8732ba39f2de5e12a (patch)
tree0194609193dc142881958ff81bef57f07da71b54 /desktop/browser.h
parenta46eef0002d061c3363756182a592be7646ae79b (diff)
downloadnetsurf-811106028fd050cdee11fbc8732ba39f2de5e12a.tar.gz
netsurf-811106028fd050cdee11fbc8732ba39f2de5e12a.tar.bz2
[project @ 2002-09-11 14:24:02 by monkeyson]
RISC OS Wimp GUI. svn path=/import/netsurf/; revision=33
Diffstat (limited to 'desktop/browser.h')
-rw-r--r--desktop/browser.h148
1 files changed, 148 insertions, 0 deletions
diff --git a/desktop/browser.h b/desktop/browser.h
new file mode 100644
index 000000000..1e158b3a8
--- /dev/null
+++ b/desktop/browser.h
@@ -0,0 +1,148 @@
+/**
+ * $Id: browser.h,v 1.1 2002/09/11 14:24:02 monkeyson Exp $
+ */
+
+#ifndef _NETSURF_DESKTOP_BROWSER_H_
+#define _NETSURF_DESKTOP_BROWSER_H_
+
+#include "libxml/HTMLparser.h"
+#include "netsurf/render/css.h"
+#include "netsurf/render/box.h"
+#include "netsurf/desktop/gui.h"
+#include "netsurf/desktop/fetch.h"
+
+typedef int browser_window_flags;
+#define browser_TOOLBAR ((browser_window_flags) 1)
+#define browser_TITLE ((browser_window_flags) 2)
+#define browser_SCROLL_X_NONE ((browser_window_flags) 4)
+#define browser_SCROLL_X_AUTO ((browser_window_flags) 8)
+#define browser_SCROLL_X_ALWAYS ((browser_window_flags) 16)
+#define browser_SCROLL_Y_NONE ((browser_window_flags) 32)
+#define browser_SCROLL_Y_AUTO ((browser_window_flags) 64)
+#define browser_SCROLL_Y_ALWAYS ((browser_window_flags) 128)
+
+typedef int action_buttons;
+#define act_BUTTON_NORMAL ((action_buttons) 4)
+#define act_BUTTON_ALTERNATIVE ((action_buttons) 1)
+#define act_BUTTON_CONTEXT_MENU ((action_buttons) 2)
+
+
+
+struct box_position
+{
+ struct box* box;
+ int actual_box_x;
+ int actual_box_y;
+ int plot_index;
+ int pixel_offset;
+ int char_offset;
+};
+
+struct content
+{
+ enum {CONTENT_UNKNOWN, CONTENT_HTML, CONTENT_IMAGE} type;
+
+ union
+ {
+ struct
+ {
+ htmlParserCtxt* parser;
+ xmlDoc* document;
+ xmlNode* markup;
+ struct box* layout;
+ struct css_stylesheet* stylesheet;
+ struct css_style* style;
+ struct {
+ struct box_position start;
+ struct box_position end;
+ enum {alter_UNKNOWN, alter_START, alter_END} altering;
+ int selected; /* 0 = unselected, 1 = selected */
+ } text_selection;
+ } html;
+ } data;
+ struct fetch* main_fetch;
+};
+
+
+struct history
+{
+ struct history* earlier;
+ struct history* later;
+ char* description;
+ char* url;
+};
+
+struct history* history_create(char* desc, char* url);
+void history_remember(struct history* current, char* desc, char* url);
+
+
+struct browser_window
+{
+ int format_width;
+ int format_height;
+ struct { int mult; int div; } scale;
+
+ struct content* current_content;
+ struct content* future_content;
+ struct history* history;
+
+ char* url;
+
+ browser_window_flags flags;
+ char* title;
+ gui_window* window;
+};
+
+
+struct browser_message
+{
+ enum { msg_UNKNOWN,
+ msg_FETCH_SENDING, msg_FETCH_WAITING, msg_FETCH_ABORT,
+ msg_FETCH_FETCH_INFO, msg_FETCH_DATA, msg_FETCH_FINISHED
+ } type;
+ struct fetch* f;
+ union {
+ struct {
+ enum { type_UNKNOWN, type_HTML } type; /* should be a MIME type ? */
+ int total_size; /* -1 == unknown size */
+ } fetch_info;
+ struct {
+ char* block;
+ int block_size;
+ } fetch_data;
+ } data;
+};
+
+
+struct browser_action
+{
+ enum { act_UNKNOWN,
+ act_MOUSE_AT, act_MOUSE_CLICK, act_START_NEW_SELECTION,
+ act_ALTER_SELECTION, act_CLEAR_SELECTION,
+ act_FOLLOW_LINK, act_FOLLOW_LINK_NEW_WINDOW
+ } type;
+ union {
+ struct {
+ int x;
+ int y;
+ action_buttons buttons;
+ } mouse;
+ } data;
+};
+
+/* public functions */
+
+struct browser_window* create_browser_window(int flags, int width, int height);
+void browser_window_destroy(struct browser_window* bw);
+void browser_window_open_location(struct browser_window* bw, char* url);
+int browser_window_message(struct browser_window* bw, struct browser_message* msg);
+int browser_window_action(struct browser_window* bw, struct browser_action* act);
+void browser_window_set_status(struct browser_window* bw, char* text);
+
+int box_position_lt(struct box_position* x, struct box_position* y);
+int box_position_gt(struct box_position* x, struct box_position* y);
+int box_position_eq(struct box_position* x, struct box_position* y);
+int box_position_distance(struct box_position* x, struct box_position* y);
+
+
+#endif