2010-08-24 Lukasz Slachciak <l.slachciak@samsung.com>
[WebKit-https.git] / WebKit / efl / ewk / ewk_view.h
1 /*
2     Copyright (C) 2009-2010 ProFUSION embedded systems
3     Copyright (C) 2009-2010 Samsung Electronics
4
5     This library is free software; you can redistribute it and/or
6     modify it under the terms of the GNU Library General Public
7     License as published by the Free Software Foundation; either
8     version 2 of the License, or (at your option) any later version.
9
10     This library is distributed in the hope that it will be useful,
11     but WITHOUT ANY WARRANTY; without even the implied warranty of
12     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
13     Library General Public License for more details.
14
15     You should have received a copy of the GNU Library General Public License
16     along with this library; see the file COPYING.LIB.  If not, write to
17     the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
18     Boston, MA 02110-1301, USA.
19 */
20
21 #ifndef ewk_view_h
22 #define ewk_view_h
23
24 #include "ewk_frame.h"
25 #include "ewk_history.h"
26 #include "ewk_window_features.h"
27
28 #include <Evas.h>
29 #include <cairo.h>
30
31 #ifdef __cplusplus
32 extern "C" {
33 #endif
34
35 /**
36  * @brief WebKit main smart object.
37  *
38  * This object is the high level access to WebKit-EFL browser
39  * component. It is responsible for managing the main frame and other
40  * critical resources.
41  *
42  * Every ewk_view has at least one frame, called "main frame" and
43  * retrieved with ewk_view_frame_main_get(). Direct frame access is
44  * often discouraged, it is recommended to use ewk_view functions
45  * instead.
46  *
47  * The following signals (see evas_object_smart_callback_add()) are emitted:
48  *
49  *  - "ready", void: page is fully loaded.
50  *  - "title,changed", const char*: title of the main frame changed.
51  *  - "uri,changed", const char*: uri of the main frame changed.
52  *  - "load,started", void: frame started loading.
53  *  - "load,progress", double*: load progress changed (overall value
54  *    from 0.0 to 1.0, connect to individual frames for fine grained).
55  *  - "load,finished", const Ewk_Frame_Load_Error*: reports load
56  *    finished and as argument @c NULL if successfully or pointer to
57  *    structure defining the error.
58  *  - "load,provisional", void: view started provisional load.
59  *  - "load,error", const Ewk_Frame_Load_Error*: reports load failed
60  *    and as argument a pointer to structure defining the error.
61  *  - "frame,created", Evas_Object*: when frames are created, they are
62  *    emitted in this signal.
63  *  - "zoom,animated,end", void: requested animated zoom is finished.
64  *  - "menubar,visible,set", Eina_Bool: set menubar visibility.
65  *  - "menubar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if menubar is
66  *    visible; otherwise, @c EINA_FALSE.
67  *  - "menubar,visible,set", Eina_Bool: set menubar visibility.
68  *  - "menubar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if menubar is
69  *    visible; @c EINA_FALSE, otherwise.
70  *  - "scrollbars,visible,set", Eina_Bool: set scrollbars visibility.
71  *  - "scrollbars,visible,get", Eina_Bool *: expects a @c EINA_TRUE if scrollbars
72  *    are visible; @c EINA_FALSE, otherwise.
73  *  - "statusbar,visible,set", Eina_Bool: set statusbar visibility.
74  *  - "statusbar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if statusbar is
75  *    visible; @c EINA_FALSE, otherwise.
76  *  - "toolbar,visible,set", Eina_Bool: set toolbar visibility.
77  *  - "toolbar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if toolbar
78  *    is visible; @c EINA_FALSE, otherwise.
79  *  - "link,hover,in", const char *link[2]: reports mouse is over a link and as
80  *    argument gives the url in link[0] and link's title in link[1].
81  *  - "link,hover,out", const char *link[2]: reports mouse moved out from a link
82  *    and as argument gives the url in link[0] and link's title in link[1].
83  *  - "popup,create", Ewk_Menu: reports that a new menu was created.
84  *  - "popup,willdeleted", Ewk_Menu: reports that a previously created menu is
85  *    about to be deleted.
86  *  - "download,request", Ewk_Download: reports a download is being requested
87  *    and as arguments gives its details.
88  *  - "icon,received", void: main frame received an icon.
89  *  - "viewport,changed", void: Report that viewport has changed.
90  *  - "inputmethods,changed" with a boolean indicating whether it's enabled or not.
91  */
92
93 typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
94
95 /**
96  * Ewk view's class, to be overridden by sub-classes.
97  */
98 typedef struct _Ewk_View_Smart_Class Ewk_View_Smart_Class;
99 struct _Ewk_View_Smart_Class {
100     Evas_Smart_Class sc; /**< all but 'data' is free to be changed. */
101     unsigned long version;
102
103     Evas_Object *(*window_create)(Ewk_View_Smart_Data *sd, Eina_Bool javascript, const Ewk_Window_Features *window_features); /**< creates a new window, requested by webkit */
104     void (*window_close)(Ewk_View_Smart_Data *sd); /**< creates a new window, requested by webkit */
105     // hooks to allow different backing stores
106     Evas_Object *(*backing_store_add)(Ewk_View_Smart_Data *sd); /**< must be defined */
107     Eina_Bool (*scrolls_process)(Ewk_View_Smart_Data *sd); /**< must be defined */
108     Eina_Bool (*repaints_process)(Ewk_View_Smart_Data *sd); /**< must be defined */
109     Eina_Bool (*contents_resize)(Ewk_View_Smart_Data *sd, int w, int h);
110     Eina_Bool (*zoom_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
111     Eina_Bool (*zoom_weak_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
112     void (*zoom_weak_smooth_scale_set)(Ewk_View_Smart_Data *sd, Eina_Bool smooth_scale);
113     void (*bg_color_set)(Ewk_View_Smart_Data *sd, unsigned char r, unsigned char g, unsigned char b, unsigned char a);
114     void (*flush)(Ewk_View_Smart_Data *sd);
115     Eina_Bool (*pre_render_region)(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, float zoom);
116     void (*pre_render_cancel)(Ewk_View_Smart_Data *sd);
117     // event handling:
118     //  - returns true if handled
119     //  - if overridden, have to call parent method if desired
120     Eina_Bool (*focus_in)(Ewk_View_Smart_Data *sd);
121     Eina_Bool (*focus_out)(Ewk_View_Smart_Data *sd);
122     Eina_Bool (*mouse_wheel)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Wheel *ev);
123     Eina_Bool (*mouse_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Down *ev);
124     Eina_Bool (*mouse_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Up *ev);
125     Eina_Bool (*mouse_move)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Move *ev);
126     Eina_Bool (*key_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Down *ev);
127     Eina_Bool (*key_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Up *ev);
128
129     void (*add_console_message)(Ewk_View_Smart_Data *sd, const char *message, unsigned int lineNumber, const char *sourceID);
130     void (*run_javascript_alert)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
131     Eina_Bool (*run_javascript_confirm)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
132     Eina_Bool (*run_javascript_prompt)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message, const char *defaultValue, char **value);
133     Eina_Bool (*should_interrupt_javascript)(Ewk_View_Smart_Data *sd);
134     uint64_t (*exceeded_database_quota)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *databaseName, uint64_t current_size, uint64_t expected_size);
135
136     Eina_Bool (*run_open_panel)(Ewk_View_Smart_Data *sd, Evas_Object *frame, Eina_Bool allows_multiple_files, const Eina_List *suggested_filenames, Eina_List **selected_filenames);
137
138     Eina_Bool (*navigation_policy_decision)(Ewk_View_Smart_Data *sd, Ewk_Frame_Resource_Request *request);
139 };
140
141 #define EWK_VIEW_SMART_CLASS_VERSION 1UL /** the version you have to put into the version field in the Ewk_View_Smart_Class structure */
142
143 /**
144  * Initializer for whole Ewk_View_Smart_Class structure.
145  *
146  * @param smart_class_init initializer to use for the "base" field
147  * (Evas_Smart_Class).
148  *
149  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
150  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
151  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
152  */
153 #define EWK_VIEW_SMART_CLASS_INIT(smart_class_init) {smart_class_init, EWK_VIEW_SMART_CLASS_VERSION, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}
154
155 /**
156  * Initializer to zero a whole Ewk_View_Smart_Class structure.
157  *
158  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
159  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
160  * @see EWK_VIEW_SMART_CLASS_INIT
161  */
162 #define EWK_VIEW_SMART_CLASS_INIT_NULL EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL)
163
164 /**
165  * Initializer to zero a whole Ewk_View_Smart_Class structure and set version.
166  *
167  * Similar to EWK_VIEW_SMART_CLASS_INIT_NULL, but will set version field of
168  * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION
169  *
170  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
171  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
172  * @see EWK_VIEW_SMART_CLASS_INIT
173  */
174 #define EWK_VIEW_SMART_CLASS_INIT_VERSION EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_VERSION)
175
176 /**
177  * Initializer to zero a whole Ewk_View_Smart_Class structure and set
178  * name and version.
179  *
180  * Similar to EWK_VIEW_SMART_CLASS_INIT_NULL, but will set version field of
181  * Evas_Smart_Class (base field) to latest EVAS_SMART_CLASS_VERSION and name
182  * to the specific value.
183  *
184  * It will keep a reference to name field as a "const char *", that is,
185  * name must be available while the structure is used (hint: static or global!)
186  * and will not be modified.
187  *
188  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
189  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
190  * @see EWK_VIEW_SMART_CLASS_INIT
191  */
192 #define EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION(name) EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
193
194 enum _Ewk_Imh {
195     EWK_IMH_TELEPHONE = (1 << 0),
196     EWK_IMH_NUMBER = (1 << 1),
197     EWK_IMH_EMAIL = (1 << 2),
198     EWK_IMH_URL = (1 << 3),
199     EWK_IMH_PASSWORD = (1 << 4)
200 };
201 typedef enum _Ewk_Imh Ewk_Imh;
202
203 /**
204  * @internal
205  *
206  * private data that is used internally by EFL WebKit and should never
207  * be modified from outside.
208  */
209 typedef struct _Ewk_View_Private_Data Ewk_View_Private_Data;
210
211 enum _Ewk_Menu_Item_Type {
212     EWK_MENU_SEPARATOR,
213     EWK_MENU_GROUP,
214     EWK_MENU_OPTION
215 };
216 typedef enum _Ewk_Menu_Item_Type Ewk_Menu_Item_Type;
217
218
219 /**
220  * Structure do contain data of each menu item
221  */
222 typedef struct _Ewk_Menu_Item Ewk_Menu_Item;
223 struct _Ewk_Menu_Item {
224     const char *text; /**< Item's text */
225     Ewk_Menu_Item_Type type; /** Item's type */
226 };
227
228 /**
229  * Structure to contain Popup menu data.
230  */
231 typedef struct _Ewk_Menu Ewk_Menu;
232 struct _Ewk_Menu {
233         Eina_List* items;
234         int x;
235         int y;
236         int width;
237         int height;
238 };
239
240 /**
241  * Structure to contain Download data
242  */
243 typedef struct _Ewk_Download Ewk_Download;
244 struct _Ewk_Download {
245     const char* url;
246     /* to be extended */
247 };
248
249 /**
250  * Scroll request that should be processed by subclass implementations.
251  */
252 typedef struct _Ewk_Scroll_Request Ewk_Scroll_Request;
253 struct _Ewk_Scroll_Request {
254     Evas_Coord dx, dy;
255     Evas_Coord x, y, w, h, x2, y2;
256     Eina_Bool main_scroll;
257 };
258
259 /**
260  * Structure to contain internal View data, it is to be considered
261  * private by users, but may be extended or changed by sub-classes
262  * (that's why it's in public header file).
263  */
264 struct _Ewk_View_Smart_Data {
265     Evas_Object_Smart_Clipped_Data base;
266     const Ewk_View_Smart_Class *api; /**< reference to casted class instance */
267     Evas_Object *self; /**< reference to owner object */
268     Evas_Object *main_frame; /**< reference to main frame object */
269     Evas_Object *backing_store; /**< reference to backing store */
270     Ewk_View_Private_Data *_priv; /**< should never be accessed, c++ stuff */
271     struct {
272         Evas_Coord x, y, w, h; /**< last used viewport */
273     } view;
274     struct {
275         struct {
276             float start;
277             float end;
278             float current; /**< if > 0.0, then doing animated zoom. */
279         } zoom;
280     } animated_zoom;
281     struct {
282         unsigned char r, g, b, a;
283     } bg_color;
284     Eina_Bool zoom_weak_smooth_scale:1;
285     struct { /**< what changed since last smart_calculate */
286         Eina_Bool any:1;
287         Eina_Bool size:1;
288         Eina_Bool position:1;
289         Eina_Bool frame_rect:1;
290     } changed;
291 };
292
293 EAPI Eina_Bool    ewk_view_base_smart_set(Ewk_View_Smart_Class *api);
294 EAPI Eina_Bool    ewk_view_single_smart_set(Ewk_View_Smart_Class *api);
295
296 EAPI Evas_Object *ewk_view_single_add(Evas *e);
297
298 EAPI void         ewk_view_fixed_layout_size_set(Evas_Object *o, Evas_Coord w, Evas_Coord h);
299 EAPI void         ewk_view_fixed_layout_size_get(Evas_Object *o, Evas_Coord *w, Evas_Coord *h);
300
301 EAPI void         ewk_view_theme_set(Evas_Object *o, const char *path);
302 EAPI const char  *ewk_view_theme_get(Evas_Object *o);
303
304 EAPI Evas_Object *ewk_view_frame_main_get(const Evas_Object *o);
305 EAPI Evas_Object *ewk_view_frame_focused_get(const Evas_Object *o);
306
307 EAPI Eina_Bool    ewk_view_uri_set(Evas_Object *o, const char *uri);
308 EAPI const char  *ewk_view_uri_get(const Evas_Object *o);
309 EAPI const char  *ewk_view_title_get(const Evas_Object *o);
310
311 EAPI Eina_Bool    ewk_view_editable_get(const Evas_Object *o);
312 EAPI Eina_Bool    ewk_view_editable_set(Evas_Object *o, Eina_Bool editable);
313
314 EAPI void         ewk_view_bg_color_set(Evas_Object *o, int r, int g, int b, int a);
315 EAPI void         ewk_view_bg_color_get(const Evas_Object *o, int *r, int *g, int *b, int *a);
316
317 EAPI char        *ewk_view_selection_get(const Evas_Object *o);
318 EAPI Eina_Bool    ewk_view_select_none(Evas_Object *o);
319 EAPI Eina_Bool    ewk_view_select_all(Evas_Object *o);
320 EAPI Eina_Bool    ewk_view_select_paragraph(Evas_Object *o);
321 EAPI Eina_Bool    ewk_view_select_sentence(Evas_Object *o);
322 EAPI Eina_Bool    ewk_view_select_line(Evas_Object *o);
323 EAPI Eina_Bool    ewk_view_select_word(Evas_Object *o);
324
325 EAPI Eina_Bool    ewk_view_context_menu_forward_event(Evas_Object *o, const Evas_Event_Mouse_Down *ev);
326
327 EAPI void         ewk_view_popup_selected_set(Evas_Object *o, int index);
328 EAPI Eina_Bool    ewk_view_popup_destroy(Evas_Object *o);
329
330 EAPI Eina_Bool    ewk_view_text_search(const Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
331
332 EAPI unsigned int ewk_view_text_matches_mark(Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
333 EAPI Eina_Bool    ewk_view_text_matches_unmark_all(Evas_Object *o);
334 EAPI Eina_Bool    ewk_view_text_matches_highlight_set(Evas_Object *o, Eina_Bool highlight);
335 EAPI Eina_Bool    ewk_view_text_matches_highlight_get(const Evas_Object *o);
336
337 EAPI double       ewk_view_load_progress_get(const Evas_Object *o);
338
339 EAPI Eina_Bool    ewk_view_stop(Evas_Object *o);
340 EAPI Eina_Bool    ewk_view_reload(Evas_Object *o);
341 EAPI Eina_Bool    ewk_view_reload_full(Evas_Object *o);
342
343 EAPI Eina_Bool    ewk_view_back(Evas_Object *o);
344 EAPI Eina_Bool    ewk_view_forward(Evas_Object *o);
345 EAPI Eina_Bool    ewk_view_navigate(Evas_Object *o, int steps);
346
347 EAPI Eina_Bool    ewk_view_back_possible(Evas_Object *o);
348 EAPI Eina_Bool    ewk_view_forward_possible(Evas_Object *o);
349 EAPI Eina_Bool    ewk_view_navigate_possible(Evas_Object *o, int steps);
350
351 EAPI Eina_Bool    ewk_view_history_enable_get(const Evas_Object *o);
352 EAPI Eina_Bool    ewk_view_history_enable_set(Evas_Object *o, Eina_Bool enable);
353 EAPI Ewk_History *ewk_view_history_get(const Evas_Object *o);
354
355 EAPI float        ewk_view_zoom_get(const Evas_Object *o);
356 EAPI Eina_Bool    ewk_view_zoom_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
357
358 EAPI Eina_Bool    ewk_view_zoom_weak_smooth_scale_get(const Evas_Object *o);
359 EAPI void         ewk_view_zoom_weak_smooth_scale_set(Evas_Object *o, Eina_Bool smooth_scale);
360
361 EAPI Eina_Bool    ewk_view_zoom_weak_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
362 EAPI Eina_Bool    ewk_view_zoom_animated_mark_start(Evas_Object *o, float zoom);
363 EAPI Eina_Bool    ewk_view_zoom_animated_mark_end(Evas_Object *o, float zoom);
364 EAPI Eina_Bool    ewk_view_zoom_animated_mark_current(Evas_Object *o, float zoom);
365 EAPI Eina_Bool    ewk_view_zoom_animated_mark_stop(Evas_Object *o);
366
367 EAPI Eina_Bool    ewk_view_zoom_animated_set(Evas_Object *o, float zoom, float duration, Evas_Coord cx, Evas_Coord cy);
368 EAPI Eina_Bool    ewk_view_zoom_text_only_get(const Evas_Object *o);
369 EAPI Eina_Bool    ewk_view_zoom_text_only_set(Evas_Object *o, Eina_Bool setting);
370
371 EAPI Eina_Bool    ewk_view_pre_render_region(Evas_Object *o, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, float zoom);
372 EAPI void         ewk_view_pre_render_cancel(Evas_Object *o);
373
374 EAPI unsigned int ewk_view_imh_get(Evas_Object *o);
375
376 /* settings */
377 EAPI const char  *ewk_view_setting_user_agent_get(const Evas_Object *o);
378 EAPI Eina_Bool    ewk_view_setting_user_agent_set(Evas_Object *o, const char *user_agent);
379
380 EAPI Eina_Bool    ewk_view_setting_auto_load_images_get(const Evas_Object *o);
381 EAPI Eina_Bool    ewk_view_setting_auto_load_images_set(Evas_Object *o, Eina_Bool automatic);
382
383 EAPI Eina_Bool    ewk_view_setting_auto_shrink_images_get(const Evas_Object *o);
384 EAPI Eina_Bool    ewk_view_setting_auto_shrink_images_set(Evas_Object *o, Eina_Bool automatic);
385
386 EAPI Eina_Bool    ewk_view_setting_enable_scripts_get(const Evas_Object *o);
387 EAPI Eina_Bool    ewk_view_setting_enable_scripts_set(Evas_Object *o, Eina_Bool enable);
388
389 EAPI Eina_Bool    ewk_view_setting_enable_plugins_get(const Evas_Object *o);
390 EAPI Eina_Bool    ewk_view_setting_enable_plugins_set(Evas_Object *o, Eina_Bool enable);
391
392 EAPI Eina_Bool    ewk_view_setting_enable_frame_flattening_get(const Evas_Object* o);
393 EAPI Eina_Bool    ewk_view_setting_enable_frame_flattening_set(Evas_Object* o, Eina_Bool enable);
394
395 EAPI Eina_Bool    ewk_view_setting_scripts_window_open_get(const Evas_Object *o);
396 EAPI Eina_Bool    ewk_view_setting_scripts_window_open_set(Evas_Object *o, Eina_Bool allow);
397
398 EAPI Eina_Bool    ewk_view_setting_resizable_textareas_get(const Evas_Object *o);
399 EAPI Eina_Bool    ewk_view_setting_resizable_textareas_set(Evas_Object *o, Eina_Bool enable);
400
401 EAPI const char  *ewk_view_setting_user_stylesheet_get(const Evas_Object *o);
402 EAPI Eina_Bool    ewk_view_setting_user_stylesheet_set(Evas_Object *o, const char *uri);
403
404 EAPI Eina_Bool    ewk_view_setting_private_browsing_get(const Evas_Object *o);
405 EAPI Eina_Bool    ewk_view_setting_private_browsing_set(Evas_Object *o, Eina_Bool enable);
406
407 EAPI Eina_Bool    ewk_view_setting_caret_browsing_get(const Evas_Object *o);
408 EAPI Eina_Bool    ewk_view_setting_caret_browsing_set(Evas_Object *o, Eina_Bool enable);
409
410 EAPI const char  *ewk_view_setting_encoding_custom_get(const Evas_Object *o);
411 EAPI Eina_Bool    ewk_view_setting_encoding_custom_set(Evas_Object *o, const char *encoding);
412 EAPI const char  *ewk_view_setting_encoding_default_get(const Evas_Object *o);
413 EAPI Eina_Bool    ewk_view_setting_encoding_default_set(Evas_Object *o, const char *encoding);
414
415 EAPI int          ewk_view_setting_font_minimum_size_get(const Evas_Object *o);
416 EAPI Eina_Bool    ewk_view_setting_font_minimum_size_set(Evas_Object *o, int size);
417 EAPI int          ewk_view_setting_font_minimum_logical_size_get(const Evas_Object *o);
418 EAPI Eina_Bool    ewk_view_setting_font_minimum_logical_size_set(Evas_Object *o, int size);
419 EAPI int          ewk_view_setting_font_default_size_get(const Evas_Object *o);
420 EAPI Eina_Bool    ewk_view_setting_font_default_size_set(Evas_Object *o, int size);
421 EAPI int          ewk_view_setting_font_monospace_size_get(const Evas_Object *o);
422 EAPI Eina_Bool    ewk_view_setting_font_monospace_size_set(Evas_Object *o, int size);
423
424 EAPI const char  *ewk_view_setting_font_standard_get(const Evas_Object *o);
425 EAPI Eina_Bool    ewk_view_setting_font_standard_set(Evas_Object *o, const char *family);
426
427 EAPI const char  *ewk_view_setting_font_cursive_get(const Evas_Object *o);
428 EAPI Eina_Bool    ewk_view_setting_font_cursive_set(Evas_Object *o, const char *family);
429
430 EAPI const char  *ewk_view_setting_font_monospace_get(const Evas_Object *o);
431 EAPI Eina_Bool    ewk_view_setting_font_monospace_set(Evas_Object *o, const char *family);
432
433 EAPI const char  *ewk_view_setting_font_fantasy_get(const Evas_Object *o);
434 EAPI Eina_Bool    ewk_view_setting_font_fantasy_set(Evas_Object *o, const char *family);
435
436 EAPI const char  *ewk_view_setting_font_serif_get(const Evas_Object *o);
437 EAPI Eina_Bool    ewk_view_setting_font_serif_set(Evas_Object *o, const char *family);
438
439 EAPI const char  *ewk_view_setting_font_sans_serif_get(const Evas_Object *o);
440 EAPI Eina_Bool    ewk_view_setting_font_sans_serif_set(Evas_Object *o, const char *family);
441
442 EAPI Eina_Bool    ewk_view_setting_spatial_navigation_get(Evas_Object* o);
443 EAPI Eina_Bool    ewk_view_setting_spatial_navigation_set(Evas_Object* o, Eina_Bool enable);
444
445 /* to be used by subclass implementations */
446 EAPI Ewk_View_Smart_Data *ewk_view_smart_data_get(const Evas_Object *o);
447
448 EAPI const Eina_Rectangle *ewk_view_repaints_get(const Ewk_View_Private_Data *priv, size_t *count);
449 EAPI const Ewk_Scroll_Request *ewk_view_scroll_requests_get(const Ewk_View_Private_Data *priv, size_t *count);
450
451 EAPI void ewk_view_repaint_add(Ewk_View_Private_Data *priv, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
452
453 EAPI void ewk_view_layout_if_needed_recursive(Ewk_View_Private_Data *priv);
454
455 EAPI void ewk_view_scrolls_process(Ewk_View_Smart_Data *sd);
456
457 /**
458  * Structure that keeps paint context.
459  *
460  * @note this is not for general use but just for subclasses that want
461  *       to define their own backing store.
462  */
463 typedef struct _Ewk_View_Paint_Context Ewk_View_Paint_Context;
464
465 EAPI Ewk_View_Paint_Context *ewk_view_paint_context_new(Ewk_View_Private_Data *priv, cairo_t *cr);
466 EAPI void ewk_view_paint_context_free(Ewk_View_Paint_Context *ctxt);
467
468 EAPI void ewk_view_paint_context_save(Ewk_View_Paint_Context *ctxt);
469 EAPI void ewk_view_paint_context_restore(Ewk_View_Paint_Context *ctxt);
470 EAPI void ewk_view_paint_context_clip(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
471 EAPI void ewk_view_paint_context_paint(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
472 EAPI void ewk_view_paint_context_paint_contents(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
473 EAPI void ewk_view_paint_context_scale(Ewk_View_Paint_Context *ctxt, float scale_x, float scale_y);
474 EAPI void ewk_view_paint_context_translate(Ewk_View_Paint_Context *ctxt, float x, float y);
475
476 EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
477 EAPI Eina_Bool ewk_view_paint_contents(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
478
479 EAPI void ewk_view_viewport_get(Evas_Object *o, float* w, float* h, float* init_scale, float* max_scale, float* min_scale, float* user_scalable);
480 EAPI Eina_Bool ewk_view_zoom_range_set(Evas_Object* o, float min_scale, float max_scale);
481 EAPI float ewk_view_zoom_range_min_get(Evas_Object* o);
482 EAPI float ewk_view_zoom_range_max_get(Evas_Object* o);
483 EAPI void ewk_view_user_scalable_set(Evas_Object* o, Eina_Bool user_scalable);
484 EAPI Eina_Bool ewk_view_user_scalable_get(Evas_Object* o);
485
486 #ifdef __cplusplus
487 }
488 #endif
489 #endif // ewk_view_h