summaryrefslogtreecommitdiff
path: root/desktop/gui_table.h
blob: 6952228e25ba061b2f2ab7ae1888082ee13fe706 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
/*
 * Copyright 2014 Vincent Sanders <vince@netsurf-browser.org>
 *
 * 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/>.
 */

/**
 * \file
 * top level interface table.
 *
 * \note This should probably not be included directly but rather
 * through netsurf.h or gui_internal.h
 */

#ifndef _NETSURF_DESKTOP_GUI_TABLE_H_
#define _NETSURF_DESKTOP_GUI_TABLE_H_

struct gui_misc_table;
struct gui_window_table;
struct gui_download_table;
struct gui_clipboard_table;
struct gui_fetch_table;
struct gui_file_table;
struct gui_utf8_table;
struct gui_search_table;
struct gui_search_web_table;
struct gui_llcache_table;
struct gui_bitmap_table;

/**
 * NetSurf operation function table
 *
 * Function table implementing interface operations for the browser core.
 */
struct netsurf_table {

	/**
	 * Browser table.
	 *
	 * Provides miscellaneous browser functionality. The table
	 * is mandantory and must be provided.
	 */
	struct gui_misc_table *misc;

	/**
	 * Window table.
	 *
	 * Provides all operations which affect a frontends display window.
	 */
	struct gui_window_table *window;

	/**
	 * Download table.
	 *
	 * operations table for the download windows.
	 */
	struct gui_download_table *download;

	/**
	 * Clipboard table.
	 */
	struct gui_clipboard_table *clipboard;

	/**
	 * Fetcher table
	 */
	struct gui_fetch_table *fetch;

	/**
	 * File table
	 *
	 * Provides file and filename operations to the core. The
	 * table is optional and may be NULL in which case the default
	 * posix compliant operations will be used.
	 */
	struct gui_file_table *file;

	/**
	 * UTF8 table.
	 *
	 * Provides for conversion between the gui local character
	 * encoding and utf8. The table optional and may be NULL which
	 * implies the local encoding is utf8.
	 */
	struct gui_utf8_table *utf8;

	/**
	 * Page search table.
	 *
	 * Provides routines for the interactive text search on a page.
	 */
	struct gui_search_table *search;

	/**
	 * Web search table.
	 *
	 * Used by the web search provider system. The table is
	 * optional and may be NULL which uses the default empty
	 * implementation.
	 */
	struct gui_search_web_table *search_web;

	/**
	 * Low level cache table.
	 *
	 * Used by the low level cache to push objects to persistant
	 * storage. The table is optional and may be NULL which
	 * uses the default implementation.
	 */
	struct gui_llcache_table *llcache;

	/**
	 * Bitmap table.
	 *
	 * Used by the image convertors as a generic interface to
	 * native platform-specific image formats. The table
	 * is mandantory and must be provided.
	 */
	struct gui_bitmap_table *bitmap;
};

#endif