[EFL] Emit "resource,request,willsend" from ewk_view.
[WebKit-https.git] / Source / 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 /**
22  * @file    ewk_view.h
23  * @brief   WebKit main smart object.
24  *
25  * This object allows the high level access to WebKit-EFL component.
26  * It is responsible for managing the main frame and other
27  * critical resources.
28  *
29  * Every ewk_view has at least one frame, called "main frame" and
30  * retrieved with ewk_view_frame_main_get(). Direct frame access is
31  * often discouraged, it is recommended to use ewk_view functions
32  * instead.
33  *
34  * The following signals (see evas_object_smart_callback_add()) are emitted:
35  *
36  *  - "download,request", Ewk_Download: reports a download is being requested
37  *  - "editorclient,contents,changed", void: reports to the view that editor
38  *    client's contents were changed
39  *  - "frame,created", Evas_Object*: a new frame is created.
40  *  - "icon,received", void: main frame received an icon.
41  *  - "inputmethod,changed", Eina_Bool: reports that input method was changed and
42  *    it gives a boolean value whether it's enabled or not as an argument.
43  *  - "js,windowobject,clear", void: Report that the JS window object has been cleared.
44  *  - "link,hover,in", const char *link[2]: reports mouse is over a link.
45  *    It gives the url in link[0] and link's title in link[1] as an argument.
46  *  - "link,hover,out", void: reports mouse moved out from a link.
47  *  - "load,document,finished", Evas_Object*: a DOM document object in a frame has finished loading.
48  *  - "load,error", const Ewk_Frame_Load_Error*: reports load failed
49  *  - "load,finished", const Ewk_Frame_Load_Error*: reports load
50  *    finished and it gives @c NULL on success or pointer to
51  *    structure defining the error.
52  *  - "load,newwindow,show", void: reports that a new window was created and can be shown.
53  *    and it gives a pointer to structure defining the error as an argument.
54  *  - "load,progress", double*: load progress is changed (overall value
55  *    from 0.0 to 1.0, connect to individual frames for fine grained).
56  *  - "load,provisional", void: view started provisional load.
57  *  - "load,started", void: frame started loading the document.
58  *  - "menubar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if menubar is
59  *    visible; @c EINA_FALSE, otherwise.
60  *  - "menubar,visible,set", Eina_Bool: sets menubar visibility.
61  *  - "mixedcontent,displayed", void: any of the containing frames has loaded and displayed mixed content.
62  *  - "mixedcontent,run", void: any of the containing frames has loaded and run mixed content.
63  *  - "ready", void: page is fully loaded.
64  *  - "resource,request,willsend", Ewk_Frame_Resource_Request*: the network request for the main frame will be sent.
65  *  - "scrollbars,visible,get", Eina_Bool *: expects a @c EINA_TRUE if scrollbars
66  *    are visible; @c EINA_FALSE, otherwise.
67  *  - "scrollbars,visible,set", Eina_Bool: sets scrollbars visibility.
68  *  - "statusbar,text,set", const char *: sets statusbar text.
69  *  - "statusbar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if statusbar is
70  *    visible; @c EINA_FALSE, otherwise.
71  *  - "statusbar,visible,set", Eina_Bool: sets statusbar visibility.
72  *  - "title,changed", const char*: title of the main frame was changed.
73  *  - "toolbars,visible,get", Eina_Bool *: expects a @c EINA_TRUE if toolbar
74  *    is visible; @c EINA_FALSE, otherwise.
75  *  - "toolbars,visible,set", Eina_Bool: sets toolbar visibility.
76  *  - "popup,create", Ewk_Menu: reports that a new menu was created.
77  *  - "popup,willdeleted", Ewk_Menu: reports that a previously created menu
78  *    will be deleted.
79  *  - "restore", Evas_Object *: reports that view should be restored to default conditions
80  *    and it gives a frame that originated restore as an argument.
81  *  - "tooltip,text,set", const char*: sets tooltip text and displays if it is currently hidden.
82  *  - "uri,changed", const char*: uri of the main frame was changed.
83  *  - "view,resized", void: view object's size was changed.
84  *  - "viewport,changed", void: reports that viewport was changed.
85  *  - "zoom,animated,end", void: requested animated zoom is finished.
86  */
87
88 #ifndef ewk_view_h
89 #define ewk_view_h
90
91 #include "ewk_frame.h"
92 #include "ewk_history.h"
93 #include "ewk_js.h"
94 #include "ewk_window_features.h"
95
96 #include <Evas.h>
97 #include <cairo.h>
98
99 #ifdef __cplusplus
100 extern "C" {
101 #endif
102
103 /// Creates a type name for @a _Ewk_View_Smart_Data.
104 typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
105
106 /// Creates a type name for a Resource Handler Callback
107 typedef void* (*Ewk_View_Resource_Handler_Cb)(const char *, size_t *, char **, void *);
108
109 /// Creates a type name for @a _Ewk_View_Smart_Class.
110 typedef struct _Ewk_View_Smart_Class Ewk_View_Smart_Class;
111
112 // Defines the direction of focus change. Keep in sync with
113 // WebCore::FocusDirection.
114 enum _Ewk_Focus_Direction {
115     EWK_FOCUS_DIRECTION_FORWARD = 1,
116     EWK_FOCUS_DIRECTION_BACKWARD,
117 };
118 typedef enum _Ewk_Focus_Direction Ewk_Focus_Direction;
119
120 /// Ewk view's class, to be overridden by sub-classes.
121 struct _Ewk_View_Smart_Class {
122     Evas_Smart_Class sc; /**< All but 'data' is free to be changed. */
123     unsigned long version;
124
125     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 */
126     void (*window_close)(Ewk_View_Smart_Data *sd); /**< closes a window */
127     // hooks to allow different backing stores
128     Evas_Object *(*backing_store_add)(Ewk_View_Smart_Data *sd); /**< must be defined */
129     Eina_Bool (*scrolls_process)(Ewk_View_Smart_Data *sd); /**< must be defined */
130     Eina_Bool (*repaints_process)(Ewk_View_Smart_Data *sd); /**< must be defined */
131     Eina_Bool (*contents_resize)(Ewk_View_Smart_Data *sd, int w, int h);
132     Eina_Bool (*zoom_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
133     Eina_Bool (*zoom_weak_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
134     void (*zoom_weak_smooth_scale_set)(Ewk_View_Smart_Data *sd, Eina_Bool smooth_scale);
135     void (*bg_color_set)(Ewk_View_Smart_Data *sd, unsigned char red, unsigned char green, unsigned char blue, unsigned char alpha);
136     void (*flush)(Ewk_View_Smart_Data *sd);
137     Eina_Bool (*pre_render_region)(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, float zoom);
138     Eina_Bool (*pre_render_relative_radius)(Ewk_View_Smart_Data *sd, unsigned int n, float zoom);
139     Eina_Bool (*pre_render_start)(Ewk_View_Smart_Data *sd);
140     void (*pre_render_cancel)(Ewk_View_Smart_Data *sd);
141     Eina_Bool (*disable_render)(Ewk_View_Smart_Data *sd);
142     Eina_Bool (*enable_render)(Ewk_View_Smart_Data *sd);
143
144     // event handling:
145     //  - returns true if handled
146     //  - if overridden, have to call parent method if desired
147     Eina_Bool (*focus_in)(Ewk_View_Smart_Data *sd);
148     Eina_Bool (*focus_out)(Ewk_View_Smart_Data *sd);
149     Eina_Bool (*mouse_wheel)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Wheel *ev);
150     Eina_Bool (*mouse_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Down *ev);
151     Eina_Bool (*mouse_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Up *ev);
152     Eina_Bool (*mouse_move)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Move *ev);
153     Eina_Bool (*key_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Down *ev);
154     Eina_Bool (*key_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Up *ev);
155
156     void (*add_console_message)(Ewk_View_Smart_Data *sd, const char *message, unsigned int lineNumber, const char *sourceID);
157     void (*run_javascript_alert)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
158     Eina_Bool (*run_javascript_confirm)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
159     Eina_Bool (*run_javascript_prompt)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message, const char *defaultValue, char **value);
160     Eina_Bool (*should_interrupt_javascript)(Ewk_View_Smart_Data *sd);
161     uint64_t (*exceeded_database_quota)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *databaseName, uint64_t current_size, uint64_t expected_size);
162
163     Eina_Bool (*run_open_panel)(Ewk_View_Smart_Data *sd, Evas_Object *frame, Eina_Bool allows_multiple_files, Eina_List *accept_types, Eina_List **selected_filenames);
164
165     Eina_Bool (*navigation_policy_decision)(Ewk_View_Smart_Data *sd, Ewk_Frame_Resource_Request *request);
166     Eina_Bool (*focus_can_cycle)(Ewk_View_Smart_Data *sd, Ewk_Focus_Direction direction);
167 };
168
169 /**
170  * The version you have to put into the version field
171  * in the @a Ewk_View_Smart_Class structure.
172  */
173 #define EWK_VIEW_SMART_CLASS_VERSION 4UL
174
175 /**
176  * Initializes a whole @a Ewk_View_Smart_Class structure.
177  *
178  * @param smart_class_init initializer to use for the "base" field
179  * @a Evas_Smart_Class
180  *
181  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
182  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
183  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
184  */
185 #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, 0, 0, 0, 0, 0, 0}
186
187 /**
188  * Initializes to zero a whole @a Ewk_View_Smart_Class structure.
189  *
190  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
191  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
192  * @see EWK_VIEW_SMART_CLASS_INIT
193  */
194 #define EWK_VIEW_SMART_CLASS_INIT_NULL EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL)
195
196 /**
197  * Initializes to zero a whole @a Ewk_View_Smart_Class structure
198  * and sets the version.
199  *
200  * Similar to @a EWK_VIEW_SMART_CLASS_INIT_NULL, but it sets the version field of
201  * @a Evas_Smart_Class (base field) to latest @a EVAS_SMART_CLASS_VERSION.
202  *
203  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
204  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
205  * @see EWK_VIEW_SMART_CLASS_INIT
206  */
207 #define EWK_VIEW_SMART_CLASS_INIT_VERSION EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_VERSION)
208
209 /**
210  * Initializes to zero a whole @a Ewk_View_Smart_Class structure
211  * and sets the name and version.
212  *
213  * Similar to @a EWK_VIEW_SMART_CLASS_INIT_NULL, but it sets the version field of
214  * @a Evas_Smart_Class (base field) to latest @a EVAS_SMART_CLASS_VERSION
215  * and the name to the specific value.
216  *
217  * It will keep a reference to the name field as a "const char *", that is,
218  * name must be available while the structure is used (hint: static or global!)
219  * and it will not be modified.
220  *
221  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
222  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
223  * @see EWK_VIEW_SMART_CLASS_INIT
224  */
225 #define EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION(name) EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
226
227 /// Defines the input method hints.
228 enum _Ewk_Imh {
229     EWK_IMH_TELEPHONE = (1 << 0),
230     EWK_IMH_NUMBER = (1 << 1),
231     EWK_IMH_EMAIL = (1 << 2),
232     EWK_IMH_URL = (1 << 3),
233     EWK_IMH_PASSWORD = (1 << 4)
234 };
235 /// Creates a type name for @a _Ewk_Imh.
236 typedef enum _Ewk_Imh Ewk_Imh;
237
238 /// Creates a type name for @a _Ewk_View_Private_Data.
239 typedef struct _Ewk_View_Private_Data Ewk_View_Private_Data;
240
241 /// Defines the types of the items for the context menu.
242 enum _Ewk_Menu_Item_Type {
243     EWK_MENU_SEPARATOR,
244     EWK_MENU_GROUP,
245     EWK_MENU_OPTION
246 };
247 /// Creates a type name for @a _Ewk_Menu_Item_Type.
248 typedef enum _Ewk_Menu_Item_Type Ewk_Menu_Item_Type;
249
250 /// Creates a type name for @a _Ewk_Menu_Item.
251 typedef struct _Ewk_Menu_Item Ewk_Menu_Item;
252 /// Contains data of each menu item.
253 struct _Ewk_Menu_Item {
254     const char *text; /**< Text of the item. */
255     Ewk_Menu_Item_Type type; /** Type of the item. */
256 };
257
258 /// Creates a type name for @a _Ewk_Menu.
259 typedef struct _Ewk_Menu Ewk_Menu;
260 /// Contains Popup menu data.
261 struct _Ewk_Menu {
262         Eina_List *items; /**< List of items. */
263         int x; /**< The horizontal position of Popup menu. */
264         int y; /**< The vertical position of Popup menu. */
265         int width; /**< Popup menu width. */
266         int height; /**< Popup menu height. */
267 };
268
269 /// Creates a type name for @a _Ewk_Download.
270 typedef struct _Ewk_Download Ewk_Download;
271 /// Contains Download data.
272 struct _Ewk_Download {
273     const char *url; /**< URL of resource. */
274     /* to be extended */
275 };
276
277 /// Creates a type name for @a _Ewk_Scroll_Request.
278 typedef struct _Ewk_Scroll_Request Ewk_Scroll_Request;
279 /// Contains the scroll request that should be processed by subclass implementations.
280 struct _Ewk_Scroll_Request {
281     Evas_Coord dx, dy;
282     Evas_Coord x, y, w, h, x2, y2;
283 };
284
285 /**
286  * @brief Contains an internal View data.
287  *
288  * It is to be considered private by users, but may be extended or
289  * changed by sub-classes (that's why it's in the public header file).
290  */
291 struct _Ewk_View_Smart_Data {
292     Evas_Object_Smart_Clipped_Data base;
293     const Ewk_View_Smart_Class *api; /**< Reference to casted class instance. */
294     Evas_Object *self; /**< Reference to owner object. */
295     Evas_Object *main_frame; /**< Reference to main frame object. */
296     Evas_Object *backing_store; /**< Reference to backing store. */
297     Evas_Object *events_rect; /**< The rectangle that receives mouse events. */
298     Ewk_View_Private_Data *_priv; /**< Should @b never be accessed, c++ stuff. */
299     struct {
300         Evas_Coord x, y, w, h;
301     } view; /**< Contains the position and size of last used viewport. */
302     struct {
303         struct {
304             float start;
305             float end;
306             float current; /**< if > 0.0, then doing animated zoom. */
307         } zoom;
308     } animated_zoom;
309     struct {
310         unsigned char r, g, b, a;
311     } bg_color; /**< Keeps the background color. */
312     Eina_Bool zoom_weak_smooth_scale:1;
313     struct {
314         Eina_Bool any:1;
315         Eina_Bool size:1;
316         Eina_Bool position:1;
317         Eina_Bool frame_rect:1;
318     } changed; /**< Keeps what changed since last smart_calculate. */
319     struct {
320         Evas_Coord x, y;
321         float zoom;
322     } previousView;
323 };
324
325 /// Defines the modes of view.
326 enum _Ewk_View_Mode {
327     EWK_VIEW_MODE_INVALID,
328     EWK_VIEW_MODE_WINDOWED,
329     EWK_VIEW_MODE_FLOATING,
330     EWK_VIEW_MODE_FULLSCREEN,
331     EWK_VIEW_MODE_MAXIMIZED,
332     EWK_VIEW_MODE_MINIMIZED
333 };
334 /// Creates a type name for @a _Ewk_View_Mode.
335 typedef enum _Ewk_View_Mode Ewk_View_Mode;
336
337 /// Defines the font families.
338 enum _Ewk_Font_Family {
339     EWK_FONT_FAMILY_STANDARD = 0,
340     EWK_FONT_FAMILY_CURSIVE,
341     EWK_FONT_FAMILY_FANTASY,
342     EWK_FONT_FAMILY_MONOSPACE,
343     EWK_FONT_FAMILY_SERIF,
344     EWK_FONT_FAMILY_SANS_SERIF
345 };
346 /// Creates a type name for @a _Ewk_Font_Family.
347 typedef enum _Ewk_Font_Family Ewk_Font_Family;
348
349 /**
350  * @brief Creates a type name for @a _Ewk_Tile_Unused_Cache.
351  *
352  * Cache (pool) that contains unused tiles for ewk_view_tiled.
353  *
354  * This cache will maintain unused tiles and flush them when the total
355  * memory exceeds the set amount when
356  * ewk_tile_unused_cache_auto_flush() or explicitly set value when
357  * ewk_tile_unused_cache_flush() is called.
358  *
359  * The tile may be shared among different ewk_view_tiled instances to
360  * group maximum unused memory resident in the system.
361  */
362 typedef struct _Ewk_Tile_Unused_Cache Ewk_Tile_Unused_Cache;
363
364 /**
365  * Changes cache capacity of unused tiles.
366  *
367  * @param tuc cache of unused tiles to set a new capacity of unused tiles
368  *
369  * @param max a new capacity of cache, in bytes
370  *
371  * @note This will not flush cache, use ewk_tile_unused_cache_flush() or
372  * ewk_tile_unused_cache_auto_flush() to do so.
373  */
374 EAPI void   ewk_tile_unused_cache_max_set(Ewk_Tile_Unused_Cache *tuc, size_t max);
375
376 /**
377  * Retrieves maximum cache capacity of unused tiles.
378  *
379  * @param tuc cache of unused tiles to get maximum cache capacity of unused tiles
380  *
381  * @return maximum cache capacity, in bytes on success or @c 0 on failure
382  */
383 EAPI size_t ewk_tile_unused_cache_max_get(const Ewk_Tile_Unused_Cache *tuc);
384
385 /**
386  * Retrieves the used cache capacity of unused tiles.
387  *
388  * @param tuc cache of unused tiles to get used cache capacity of unused tiles
389  *
390  * @return used cache capacity, in bytes on success or @c 0 on failure
391  */
392 EAPI size_t ewk_tile_unused_cache_used_get(const Ewk_Tile_Unused_Cache *tuc);
393
394 /**
395  * Flushes given amount of bytes from cache of unused tiles.
396  *
397  * After calling this function, near @a bytes are freed from cache. It
398  * may be less if cache did not contain that amount of bytes (ie: an
399  * empty cache has nothing to free!) or more if the cache just
400  * contained objects that were larger than the requested amount (this
401  * is usually the case).
402  *
403  * @param tuc cache of unused tiles to flush @bytes from cache
404  * @param bytes amount bytes to free
405  *
406  * @return amount really freed bytes
407  *
408  * @see ewk_tile_unused_cache_used_get()
409  */
410 EAPI size_t ewk_tile_unused_cache_flush(Ewk_Tile_Unused_Cache *tuc, size_t bytes);
411
412 /**
413  * Flushes enough bytes to make cache of unused tiles usage lower than maximum.
414  *
415  * Just like ewk_tile_unused_cache_flush(), but this will make the cache
416  * free enough tiles to respect maximum cache size as defined with
417  * ewk_tile_unused_cache_max_set().
418  *
419  * This function is usually called when system becomes idle. This way
420  * we keep memory low but do not impact performance when
421  * creating/deleting tiles.
422  *
423  * @param tuc cache of unused tiles to flush cache of unused tiles
424  */
425 EAPI void   ewk_tile_unused_cache_auto_flush(Ewk_Tile_Unused_Cache *tuc);
426
427 /**
428  * Sets the smart class api without any backing store, enabling view
429  * to be inherited.
430  *
431  * @param api class definition to set, all members with the
432  *        exception of @a Evas_Smart_Class->data may be overridden, must
433  *        @b not be @c 0
434  *
435  * @note @a Evas_Smart_Class->data is used to implement type checking and
436  *       is not supposed to be changed/overridden. If you need extra
437  *       data for your smart class to work, just extend
438  *       Ewk_View_Smart_Class instead.
439  *
440  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
441  *         version mismatch)
442  *
443  * @see ewk_view_single_smart_set()
444  * @see ewk_view_tiled_smart_set()
445  */
446 EAPI Eina_Bool    ewk_view_base_smart_set(Ewk_View_Smart_Class *api);
447
448 /**
449  * Sets the smart class api using single backing store, enabling view
450  * to be inherited.
451  *
452  * @param api class definition to set, all members with the
453  *        exception of @a Evas_Smart_Class->data may be overridden, must
454  *        @b not be @c 0
455  *
456  * @note @a Evas_Smart_Class->data is used to implement type checking and
457  *       is not supposed to be changed/overridden. If you need extra
458  *       data for your smart class to work, just extend
459  *       @a Ewk_View_Smart_Class instead.
460  *
461  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
462  *         version mismatch)
463  *
464  * @see ewk_view_base_smart_set()
465  */
466 EAPI Eina_Bool    ewk_view_single_smart_set(Ewk_View_Smart_Class *api);
467
468 /**
469  * Sets the smart class api using tiled backing store, enabling view
470  * to be inherited.
471  *
472  * @param api class definition to set, all members with the
473  *        exception of @a Evas_Smart_Class->data may be overridden, must
474  *        @b not be @c 0
475  *
476  * @note @a Evas_Smart_Class->data is used to implement type checking and
477  *       is not supposed to be changed/overridden. If you need extra
478  *       data for your smart class to work, just extend
479  *       Ewk_View_Smart_Class instead.
480  *
481  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
482  *         version mismatch)
483  *
484  * @see ewk_view_base_smart_set()
485  */
486 EAPI Eina_Bool    ewk_view_tiled_smart_set(Ewk_View_Smart_Class *api);
487
488 /**
489  * Creates a new EFL WebKit View object.
490  *
491  * View objects are the recommended way to deal with EFL WebKit as it
492  * abstracts the complex pieces of the process.
493  *
494  * Each view is composed by a set of frames. The set has at least one
495  * frame, called 'main_frame'. See ewk_view_frame_main_get() and
496  * ewk_view_frame_focused_get().
497  *
498  * @param e canvas object where to create the view object
499  *
500  * @return view object on success or @c 0 on failure
501  *
502  * @see ewk_view_uri_set()
503  */
504 EAPI Evas_Object *ewk_view_single_add(Evas *e);
505
506 /**
507  * Creates a new EFL WebKit View object using tiled backing store.
508  *
509  * View objects are the recommended way to deal with EFL WebKit as it
510  * abstracts the complex pieces of the process.
511  *
512  * This object is almost the same as the one returned by the ewk_view_single_add()
513  * function, but it uses the tiled backing store instead of the default
514  * backing store.
515  *
516  * @param e canvas object where to create the view object
517  *
518  * @return the view object on success or @c 0 on failure
519  *
520  * @see ewk_view_uri_set()
521  */
522 EAPI Evas_Object *ewk_view_tiled_add(Evas *e);
523
524 /**
525  * Gets the cache object of unused tiles used by this view.
526  *
527  * @param o the view object to get the cache object
528  *
529  * @return the cache object of unused tiles or @c 0 on failure
530  */
531 EAPI Ewk_Tile_Unused_Cache *ewk_view_tiled_unused_cache_get(const Evas_Object *o);
532
533 /**
534  * Sets the cache object of unused tiles used by this view.
535  *
536  * It can be used to share a single cache amongst different views.
537  * The tiles from one view will not be used by the other!
538  * This is just to limit the group with amount of unused memory.
539  *
540  * @note If @c 0 is provided as a @a cache, then a new one is created.
541  *
542  * @param o the view object to set the cache object
543  * @param the cache object of unused tiles
544  */
545 EAPI void                   ewk_view_tiled_unused_cache_set(Evas_Object *o, Ewk_Tile_Unused_Cache *cache);
546
547 /**
548  * Sets a fixed layout size to be used, dissociating it from viewport size.
549  *
550  * Setting a width different than zero enables fixed layout on that
551  * size. It's automatically scaled based on zoom, but will not change
552  * if viewport changes.
553  *
554  * Setting both @a w and @a h to zero will disable fixed layout.
555  *
556  * @param o view object to change fixed layout
557  * @param w fixed width to use, this size will be automatically scaled
558  *        based on zoom level
559  * @param h fixed height to use, this size will be automatically scaled
560  *        based on zoom level
561  */
562 EAPI void         ewk_view_fixed_layout_size_set(Evas_Object *o, Evas_Coord w, Evas_Coord h);
563
564 /**
565  * Gets fixed layout size.
566  *
567  * @param o view object to get fixed layout size
568  * @param w the pointer to store fixed width, returns @c 0 on failure or if there is no
569  *        fixed layout in use
570  * @param h the pointer to store fixed height, returns @c 0 on failure or if there is no
571  *        fixed layout in use
572  */
573 EAPI void         ewk_view_fixed_layout_size_get(const Evas_Object *o, Evas_Coord *w, Evas_Coord *h);
574
575 /**
576  * Sets the theme path that will be used by this view.
577  *
578  * This also sets the theme on the main frame. As frames inherit theme
579  * from their parent, this will have all frames with unset theme to
580  * use this one.
581  *
582  * @param o view object to change theme
583  * @param path theme path, may be @c 0 to reset to the default theme
584  */
585 EAPI void         ewk_view_theme_set(Evas_Object *o, const char *path);
586
587 /**
588  * Gets the theme set on this view.
589  *
590  * This returns the value set by ewk_view_theme_set().
591  *
592  * @param o view object to get theme path
593  *
594  * @return the theme path, may be @c 0 if not set
595  */
596 EAPI const char  *ewk_view_theme_get(const Evas_Object *o);
597
598 /**
599  * Gets the object that represents the main frame.
600  *
601  * @param o view object to get main frame
602  *
603  * @return frame smart object or @c 0 if none yet
604  */
605 EAPI Evas_Object *ewk_view_frame_main_get(const Evas_Object *o);
606
607 /**
608  * Gets the currently focused frame object.
609  *
610  * @param o view object to get focused frame
611  *
612  * @return frame smart object or @c 0 if none yet
613  */
614 EAPI Evas_Object *ewk_view_frame_focused_get(const Evas_Object *o);
615
616 /**
617  * Asks the main frame to load the given URI.
618  *
619  * @param o view object to load @a uri
620  * @param uri uniform resource identifier to load
621  *
622  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
623  */
624 EAPI Eina_Bool    ewk_view_uri_set(Evas_Object *o, const char *uri);
625
626 /**
627  * Gets the current uri loaded by main frame.
628  *
629  * It returns a internal string and should not
630  * be modified. The string is guaranteed to be stringshared.
631  *
632  * @param o view object to get current uri.
633  *
634  * @return current uri on success or @c 0 on failure
635  */
636 EAPI const char  *ewk_view_uri_get(const Evas_Object *o);
637
638 /**
639  * Gets the current title of the main frame.
640  *
641  * It returns a internal string and should not
642  * be modified. The string is guaranteed to be stringshared.
643  *
644  * @param o view object to get current title
645  *
646  * @return current title on success or @c 0 on failure
647  */
648 EAPI const char  *ewk_view_title_get(const Evas_Object *o);
649
650 /**
651  * Queries if the main frame is editable.
652  *
653  * @param o view object to query editable state
654  *
655  * @return @c EINA_TRUE if the main frame is editable, @c EINA_FALSE otherwise
656  */
657 EAPI Eina_Bool    ewk_view_editable_get(const Evas_Object *o);
658
659 /**
660  * Sets if main frame is editable.
661  *
662  * @param o view object to set editable state
663  * @param editable a new state to set
664  *
665  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
666  */
667 EAPI Eina_Bool    ewk_view_editable_set(Evas_Object *o, Eina_Bool editable);
668
669 /**
670  * Sets the background color and transparency of the view.
671  *
672  * Just as in Evas, colors are pre-multiplied, so 50% red is
673  * (128, 0, 0, 128) and not (255, 0, 0, 128)!
674  *
675  * @warning Watch out performance issues with transparency! Object
676  *          will be handled as transparent image by evas even if the
677  *          webpage specifies a background color. That mean you'll pay
678  *          a price even if it's not really transparent, thus
679  *          scrolling/panning and zooming will be likely slower than
680  *          if transparency is off.
681  *
682  * @param o view object to change the background color
683  * @param r red color component
684  * @param g green color component
685  * @param b blue color component
686  * @param a transparency
687  */
688 EAPI void         ewk_view_bg_color_set(Evas_Object *o, int r, int g, int b, int a);
689
690 /**
691  * Gets the background color of the view.
692  *
693  * Just as in Evas, colors are pre-multiplied, so 50% red is
694  * (128, 0, 0, 128) and not (255, 0, 0, 128)!
695  *
696  * @param o view object to get the background color
697  * @param r the pointer to store red color component
698  * @param g the pointer to store green color component
699  * @param b the pointer to store blue color component
700  * @param a the pointer to store alpha value
701  */
702 EAPI void         ewk_view_bg_color_get(const Evas_Object *o, int *r, int *g, int *b, int *a);
703
704 /**
705  * Gets the copy of the selected text.
706  *
707  * The returned string @b should be freed after use.
708  *
709  * @param o view object to get selected text
710  *
711  * @return a newly allocated string or @c 0 if nothing is selected or on failure
712  */
713 EAPI char        *ewk_view_selection_get(const Evas_Object *o);
714
715 /**
716  * Forwards a request of a new Context Menu to WebCore.
717  *
718  * @param o view object to forward a request of a new Context Menu
719  * @param ev mouse down event data
720  *
721  * @return @c EINA_TRUE if operation was executed, @c EINA_FALSE otherwise
722  */
723 EAPI Eina_Bool    ewk_view_context_menu_forward_event(Evas_Object *o, const Evas_Event_Mouse_Down *ev);
724
725 /// Contains commands to execute.
726 enum _Ewk_Editor_Command {
727     EWK_EDITOR_COMMAND_INSERT_IMAGE = 0,
728     EWK_EDITOR_COMMAND_INSERT_TEXT,
729     EWK_EDITOR_COMMAND_SELECT_NONE,
730     EWK_EDITOR_COMMAND_SELECT_ALL,
731     EWK_EDITOR_COMMAND_SELECT_PARAGRAPH,
732     EWK_EDITOR_COMMAND_SELECT_SENTENCE,
733     EWK_EDITOR_COMMAND_SELECT_LINE,
734     EWK_EDITOR_COMMAND_SELECT_WORD
735 };
736 /// Creates a type name for @a _Ewk_Editor_Command.
737 typedef enum _Ewk_Editor_Command Ewk_Editor_Command;
738
739 /**
740  * Executes editor command.
741  *
742  * @param o view object to execute command
743  * @param command editor command to execute
744  * @param value the value to be passed into command
745  *
746  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
747  */
748 EAPI Eina_Bool    ewk_view_execute_editor_command(Evas_Object *o, const Ewk_Editor_Command command, const char *value);
749
750 /**
751  * Changes currently selected item.
752  *
753  * Changes the option selected in select widget. This is called by browser
754  * whenever user has chosen a different item. Most likely after calling this, a
755  * call to ewk_view_popup_destroy might be made in order to close the popup.
756  *
757  * @param o view object to change currently selected item
758  * @index index a new index to set
759  */
760 EAPI void         ewk_view_popup_selected_set(Evas_Object *o, int index);
761
762 /**
763  * Destroys a previously created menu.
764  *
765  * Before destroying, it informs client that menu's data is ready to be
766  * destroyed by sending a "popup,willdelete" with a list of menu items. Then it
767  * removes any reference to menu inside webkit. It's safe to call this
768  * function either from inside webkit or from browser.
769  *
770  * @param o view object
771  *
772  * @return @c EINA_TRUE in case menu was successfully destroyed or @c EINA_TRUE in
773  * case there wasn't any menu to be destroyed
774  */
775 EAPI Eina_Bool    ewk_view_popup_destroy(Evas_Object *o);
776
777 /**
778  * Searches the given string in a document.
779  *
780  * @param o view object where to search the text
781  * @param string reference string to search
782  * @param case_sensitive if search should be case sensitive or not
783  * @param forward if search is from cursor and on or backwards
784  * @param wrap if search should wrap at the end
785  *
786  * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not or failure
787  */
788 EAPI Eina_Bool    ewk_view_text_search(const Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
789
790 /**
791  * Marks matches the given string in a document.
792  *
793  * @param o view object where to search text
794  * @param string reference string to match
795  * @param case_sensitive if match should be case sensitive or not
796  * @param highlight if matches should be highlighted
797  * @param limit maximum amount of matches, or zero to unlimited
798  *
799  * @return number of matched @a string
800  */
801 EAPI unsigned int ewk_view_text_matches_mark(Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
802
803 /**
804  * Unmarks all marked matches in a document.
805  *
806  * Reverses the effect of ewk_frame_text_matches_mark().
807  *
808  * @param o view object where to unmark matches
809  *
810  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
811  */
812 EAPI Eina_Bool    ewk_view_text_matches_unmark_all(Evas_Object *o);
813
814 /**
815  * Sets if should highlight matches marked with ewk_frame_text_matches_mark().
816  *
817  * @param o view object where to set if matches are highlighted or not
818  * @param highlight @c EINA_TRUE if matches are highlighted, @c EINA_FALSE if not
819  *
820  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
821  */
822 EAPI Eina_Bool    ewk_view_text_matches_highlight_set(Evas_Object *o, Eina_Bool highlight);
823
824 /**
825  * Gets if should highlight matches marked with ewk_frame_text_matches_mark().
826  *
827  * @param o view object to query if matches are highlighted or not
828  *
829  * @return @c EINA_TRUE if matches are highlighted, @c EINA_FALSE otherwise
830  */
831 EAPI Eina_Bool    ewk_view_text_matches_highlight_get(const Evas_Object *o);
832
833 /**
834  * Gets the current load progress of page.
835  *
836  * The progress estimates from 0.0 to 1.0.
837  *
838  * @param o view object to get the current progress
839  *
840  * @return the load progres of page, value from 0.0 to 1.0 on success
841  *       or -1.0 on failure
842  */
843 EAPI double       ewk_view_load_progress_get(const Evas_Object *o);
844
845 /**
846  * Asks the main frame to stop loading.
847  *
848  * @param o view object to stop loading
849  *
850  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise.
851  */
852 EAPI Eina_Bool    ewk_view_stop(Evas_Object *o);
853
854 /**
855  * Asks the main frame to reload the current document.
856  *
857  * @param o view object to reload current document
858  *
859  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
860  *
861  * @see ewk_view_reload_full()
862  */
863 EAPI Eina_Bool    ewk_view_reload(Evas_Object *o);
864
865 /**
866  * Asks the main frame to fully reload the current document, using no caches.
867  *
868  * @param o view object to reload current document
869  *
870  * @return @c EINA_TRUE on success o r@c EINA_FALSE otherwise
871  *
872  * @see ewk_view_reload()
873  */
874 EAPI Eina_Bool    ewk_view_reload_full(Evas_Object *o);
875
876 /**
877  * Asks the frame to navigate back in the history.
878  *
879  * @param o view object to navigate back
880  *
881  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
882  *
883  * @see ewk_frame_back()
884  */
885 EAPI Eina_Bool    ewk_view_back(Evas_Object *o);
886
887 /**
888  * Asks frame to navigate forward in the history.
889  *
890  * @param o view object to navigate forward
891  *
892  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
893  *
894  * @see ewk_frame_forward()
895  */
896 EAPI Eina_Bool    ewk_view_forward(Evas_Object *o);
897
898 /**
899  * Navigates back or forward in the history.
900  *
901  * @param o view object to navigate in the history
902  * @param steps if positive navigates that amount forwards, if negative
903  *        does backwards
904  *
905  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
906  *
907  * @see ewk_frame_navigate()
908  */
909 EAPI Eina_Bool    ewk_view_navigate(Evas_Object *o, int steps);
910
911 /**
912  * Queries if it's possible to navigate backwards one item in the history.
913  *
914  * @param o view object to query if backward navigation is possible
915  *
916  * @return @c EINA_TRUE if it's possible to navigate backward one item in the history, @c EINA_FALSE otherwise
917  * @see ewk_view_navigate_possible()
918  */
919 EAPI Eina_Bool    ewk_view_back_possible(Evas_Object *o);
920
921 /**
922  * Queries if it's possible to navigate forwards one item in the history.
923  *
924  * @param o view object to query if forward navigation is possible
925  *
926  * @return @c EINA_TRUE if it's possible to navigate forwards in the history, @c EINA_FALSE otherwise
927  *
928  * @see ewk_view_navigate_possible()
929  */
930 EAPI Eina_Bool    ewk_view_forward_possible(Evas_Object *o);
931
932 /**
933  * Queries if it's possible to navigate given @a steps in the history.
934  *
935  * @param o view object to query if it's possible to navigate @a steps in the history
936  * @param steps if positive navigates that amount forwards, if negative
937  *        does backwards
938  *
939  * @return @c EINA_TRUE if it's possible to navigate @a steps in the history, @c EINA_FALSE otherwise
940  */
941 EAPI Eina_Bool    ewk_view_navigate_possible(Evas_Object *o, int steps);
942
943 /**
944  * Queries if navigation in the history (back-forward lists) is enabled.
945  *
946  * @param o view object to query if navigation history is enabled
947  *
948  * @return @c EINA_TRUE if view keeps history, @c EINA_FALSE otherwise
949  */
950 EAPI Eina_Bool    ewk_view_history_enable_get(const Evas_Object *o);
951
952 /**
953  * Enables/disables navigation in the history (back-forward lists).
954  *
955  * @param o view object to enable/disable navigation in the history
956  * @param enable @c EINA_TRUE to enable navigation in the history,
957  *        @c EINA_FALSE to disable
958  *
959  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
960  */
961 EAPI Eina_Bool    ewk_view_history_enable_set(Evas_Object *o, Eina_Bool enable);
962
963 /**
964  * Gets the history (back-forward list) associated with this view.
965  *
966  * The returned instance is unique for this view and thus multiple calls
967  * to this function with the same view as parameter returns the same
968  * handle. This handle is alive while view is alive, thus one
969  * might want to listen for EVAS_CALLBACK_DEL on given view
970  * (@a o) to know when to stop using returned handle.
971  *
972  * @param o view object to get navigation history
973  *
974  * @return the history instance handle associated with this
975  *         view on succes or @c 0 on failure (including when the history
976  *         navigation is not enabled with ewk_view_history_enable_set())
977  *
978  * @see ewk_view_history_enable_set()
979  */
980 EAPI Ewk_History *ewk_view_history_get(const Evas_Object *o);
981
982 /**
983  * Gets the current page zoom level of the main frame.
984  *
985  * @param o view object to get the zoom level
986  *
987  * @return current zoom level in use on success or @c -1.0 on failure
988  */
989 EAPI float        ewk_view_page_zoom_get(const Evas_Object *o);
990
991 /**
992  * Sets the current page zoom level of the main frame.
993  *
994  * @param o view object to set the zoom level
995  * @param page_zoom_factor a new level to set
996  *
997  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
998  */
999 EAPI Eina_Bool    ewk_view_page_zoom_set(Evas_Object *o, float page_zoom_factor);
1000
1001 /**
1002  * Gets the current scale factor of the page.
1003  *
1004  * @param o view object to get the scale factor 
1005  *
1006  * @return current scale factor in use on success or @c -1.0 on failure
1007  */
1008 EAPI float        ewk_view_scale_get(const Evas_Object *o);
1009
1010 /**
1011  * Scales the current page, centered at the given point.
1012  *
1013  * @param o view object to set the zoom level
1014  * @param scale_factor a new level to set
1015  * @param cx x of center coordinate
1016  * @param cy y of center coordinate
1017  *
1018  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1019  */
1020 EAPI Eina_Bool    ewk_view_scale_set(Evas_Object *o, float scale_factor, Evas_Coord cx, Evas_Coord cy);
1021
1022 /**
1023  * Gets the current text zoom level of the main frame.
1024  *
1025  * @param o view object to get the zoom level
1026  *
1027  * @return current zoom level in use on success or @c -1.0 on failure
1028  */
1029 EAPI float        ewk_view_text_zoom_get(const Evas_Object *o);
1030
1031 /**
1032  * Sets the current text zoom level of the main frame.
1033  *
1034  * @param o view object to set the zoom level
1035  * @param textZoomFactor a new level to set
1036  *
1037  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1038  */
1039 EAPI Eina_Bool    ewk_view_text_zoom_set(Evas_Object *o, float text_zoom_factor);
1040
1041 /**
1042  * Gets the current zoom level of the main frame.
1043  *
1044  * @param o view object to get the zoom level
1045  *
1046  * @return current zoom level in use on success or @c -1.0 on failure
1047  */
1048 EAPI float        ewk_view_zoom_get(const Evas_Object *o);
1049
1050 /**
1051  * Sets the current zoom level of the main frame, centered at the given point.
1052  *
1053  * @param o view object to set the zoom level
1054  * @param zoom a new level to set
1055  * @param cx x of center coordinate
1056  * @param cy y of center coordinate
1057  *
1058  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1059  */
1060 EAPI Eina_Bool    ewk_view_zoom_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
1061
1062 /**
1063  * Queries if the smooth scale is enabled while the weak zoom.
1064  *
1065  * @param o view object to query if the smooth scale is enabled while the weak zoom
1066  *
1067  * @return @c EINA_TRUE if the smooth scale is enabled while the weak zoom, or
1068  *         @c EINA_FALSE if not or on failure
1069  */
1070 EAPI Eina_Bool    ewk_view_zoom_weak_smooth_scale_get(const Evas_Object *o);
1071
1072 /**
1073  * Enables/disables the smooth scale while the weak zoom.
1074  *
1075  * @param o view object to set the smooth scale while the weak zoom
1076  * @param smooth_scale @c EINA_TRUE to enable the smooth scale
1077  *        @c EINA_FALSE to disable
1078  */
1079 EAPI void         ewk_view_zoom_weak_smooth_scale_set(Evas_Object *o, Eina_Bool smooth_scale);
1080
1081 /**
1082  * Sets the current zoom level of backing store, centered at given point.
1083  *
1084  * Unlike ewk_view_zoom_set(), this call do not ask WebKit to render
1085  * at new size, but scale what is already rendered, being much faster
1086  * but worse quality.
1087  *
1088  * Often one should use ewk_view_zoom_animated_set(), it will call the
1089  * same machinery internally.
1090  *
1091  * @note this will set variables used by ewk_view_zoom_animated_set()
1092  *       so sub-classes will not reset internal state on their
1093  *       "calculate" phase. To unset those and enable sub-classes to
1094  *       reset their internal state, call
1095  *       ewk_view_zoom_animated_mark_stop(). Namely, this call will
1096  *       set ewk_view_zoom_animated_mark_start() to actual webkit zoom
1097  *       level, ewk_view_zoom_animated_mark_end() and
1098  *       ewk_view_zoom_animated_mark_current() to given zoom level.
1099  *
1100  * @param o view object to set the weak zoom level
1101  * @param zoom a new level to scale backing store
1102  * @param cx horizontal center offset, relative to object (w/2 is middle)
1103  * @param cy vertical center offset, relative to object (h/2 is middle)
1104  *
1105  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1106  */
1107 EAPI Eina_Bool    ewk_view_zoom_weak_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
1108
1109 /**
1110  * Sets start of an internal zoom animation state to the given zoom.
1111  *
1112  * This does not modify any actual zoom in WebKit or backing store,
1113  * just set needed flag so sub-classes knows they should not reset
1114  * their an internal state.
1115  *
1116  * @param o view object to set start of an internal zoom animation
1117  * @param zoom a new start value
1118  *
1119  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1120  *
1121  * @see ewk_view_zoom_animated_set()
1122  * @see ewk_view_zoom_weak_set()
1123  * @see ewk_view_zoom_animated_mark_stop()
1124  * @see ewk_view_zoom_animated_mark_end()
1125  * @see ewk_view_zoom_animated_mark_current()
1126  */
1127 EAPI Eina_Bool    ewk_view_zoom_animated_mark_start(Evas_Object *o, float zoom);
1128
1129 /**
1130  * Sets end of an internal zoom animation state to given zoom.
1131  *
1132  * This does not modify any actual zoom in WebKit or backing store,
1133  * just set needed flag so sub-classes knows they should not reset
1134  * their an internal state.
1135  *
1136  * @param o view object to set end of an internal zoom animation
1137  * @param zoom a new end value
1138  *
1139  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1140  *
1141  * @see ewk_view_zoom_animated_set()
1142  * @see ewk_view_zoom_weak_set()
1143  * @see ewk_view_zoom_animated_mark_stop()
1144  * @see ewk_view_zoom_animated_mark_start()
1145  * @see ewk_view_zoom_animated_mark_current()
1146  */
1147 EAPI Eina_Bool    ewk_view_zoom_animated_mark_end(Evas_Object *o, float zoom);
1148
1149 /**
1150  * Sets an internal current zoom animation state to given zoom.
1151  *
1152  * This does not modify any actual zoom in WebKit or backing store,
1153  * just set needed flag so sub-classes knows they should not reset
1154  * their an internal state.
1155  *
1156  * @param o view object to set an internal current zoom animation
1157  * @param zoom a new current value
1158  *
1159  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1160  *
1161  * @see ewk_view_zoom_animated_set()
1162  * @see ewk_view_zoom_weak_set()
1163  * @see ewk_view_zoom_animated_mark_stop()
1164  * @see ewk_view_zoom_animated_mark_start()
1165  * @see ewk_view_zoom_animated_mark_end()
1166  */
1167 EAPI Eina_Bool    ewk_view_zoom_animated_mark_current(Evas_Object *o, float zoom);
1168
1169 /**
1170  * Unmarks an internal zoom animation state.
1171  *
1172  * The start, end and current values of an internal zoom animation are zeroed.
1173  *
1174  * @param o view object to unmark an internal zoom animation state
1175  *
1176  * @see ewk_view_zoom_animated_mark_start()
1177  * @see ewk_view_zoom_animated_mark_end()
1178  * @see ewk_view_zoom_animated_mark_current()
1179  * @see ewk_view_zoom_weak_set()
1180  */
1181 EAPI Eina_Bool    ewk_view_zoom_animated_mark_stop(Evas_Object *o);
1182
1183 /**
1184  * Sets the current zoom level while animating.
1185  *
1186  * If the view was already animating to another zoom, it will start
1187  * from current point to the next provided zoom (@a zoom parameter)
1188  * and duration (@a duration parameter).
1189  *
1190  * This is the recommended way to do transitions from one level to
1191  * another. However, one may wish to do those from outside, in that
1192  * case use ewk_view_zoom_weak_set() and later control intermediate
1193  * states with ewk_view_zoom_animated_mark_current(),
1194  * ewk_view_zoom_animated_mark_end() and
1195  * ewk_view_zoom_animated_mark_stop().
1196  *
1197  * @param o view object to animate
1198  * @param zoom final zoom level to use
1199  * @param duration time in seconds the animation should take.
1200  * @param cx offset inside object that defines zoom center. 0 is left side
1201  * @param cy offset inside object that defines zoom center. 0 is top side
1202  * @return @c EINA_TRUE if animation will be started, @c EINA_FALSE if not
1203  *            because zoom is too small/big
1204  */
1205 EAPI Eina_Bool    ewk_view_zoom_animated_set(Evas_Object *o, float zoom, float duration, Evas_Coord cx, Evas_Coord cy);
1206
1207 /**
1208  * Asks engine to pre-render region.
1209  *
1210  * Engines and backing store might be able to pre-render regions in
1211  * order to speed up zooming or scrolling to that region. Not all
1212  * engines might implement that and they will return @c EINA_FALSE
1213  * in that case.
1214  *
1215  * The given region is a hint. Engines might do bigger or smaller area
1216  * that covers that region. Pre-render might not be immediate, it may
1217  * be postponed to a thread, operated cooperatively in the main loop
1218  * and may be even ignored or cancelled afterwards.
1219  *
1220  * Multiple requests might be queued by engines. One can clear/forget
1221  * about them with ewk_view_pre_render_cancel().
1222  *
1223  * @param o view to ask pre-render of given region
1224  * @param x absolute coordinate (0=left) to pre-render at zoom
1225  * @param y absolute coordinate (0=top) to pre-render at zoom
1226  * @param w width to pre-render starting from @a x at zoom
1227  * @param h height to pre-render starting from @a y at zoom
1228  * @param zoom desired zoom
1229  *
1230  * @return @c EINA_TRUE if request was accepted, @c EINA_FALSE
1231  *         otherwise (errors, pre-render feature not supported, etc)
1232  *
1233  * @see ewk_view_pre_render_cancel()
1234  */
1235 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);
1236
1237 /**
1238  * Asks engine to pre-render region, given @a n extra cols/rows.
1239  *
1240  * This is an alternative method to ewk_view_pre_render_region(). It does not
1241  * make sense in all engines and therefore it might not be implemented at all.
1242  *
1243  * It's only useful if engine divide the area being rendered in smaller tiles,
1244  * forming a grid. Then, browser could call this function to pre-render @a n
1245  * rows/cols involving the current viewport.
1246  *
1247  * @param o view to ask pre-render
1248  * @param n number of cols/rows that must be part of the region pre-rendered
1249  *
1250  * @return @c EINA_TRUE if request was accepted, @c EINA_FALSE
1251  *         otherwise (errors, pre-render feature not supported, etc)
1252  *
1253  * @see ewk_view_pre_render_region()
1254  */
1255 EAPI Eina_Bool    ewk_view_pre_render_relative_radius(Evas_Object *o, unsigned int n);
1256
1257 /**
1258  * Asks engine to start pre-rendering.
1259  *
1260  * This is an alternative method to pre-render around the view area.
1261  * The first step is to find the center view area where to start pre-rendering.
1262  * And then from the center of the view area the backing store append the render request
1263  * outward in spiral order. So that the tiles which are close to view area are displayed
1264  * sooner than outside.
1265  *
1266  * @param o view to ask pre-render
1267  *
1268  * @return @c EINA_TRUE if request was accepted, @c EINA_FALSE
1269  *         otherwise (errors, pre-render feature not supported, etc)
1270  *
1271  */
1272 EAPI Eina_Bool    ewk_view_pre_render_start(Evas_Object *o);
1273
1274 /**
1275  * Cancels and clears previous the pre-render requests.
1276  *
1277  * @param o view to clear pre-render requests
1278  */
1279 EAPI void         ewk_view_pre_render_cancel(Evas_Object *o);
1280
1281 /**
1282  * Enables (resumes) rendering.
1283  *
1284  * @param o view object to enable rendering
1285  *
1286  * @return @c EINA_TRUE if rendering was enabled, @c EINA_FALSE
1287  *         otherwise (errors, rendering suspension feature not supported)
1288  *
1289  * @see ewk_view_disable_render()
1290  */
1291 EAPI Eina_Bool    ewk_view_enable_render(const Evas_Object *o);
1292
1293 /**
1294   * Disables (suspends) rendering.
1295   *
1296   * @param o view object to disable rendering
1297   *
1298   * @return @c EINA_TRUE if rendering was disabled, @c EINA_FALSE
1299   *         otherwise (errors, rendering suspension not supported)
1300   */
1301 EAPI Eina_Bool    ewk_view_disable_render(const Evas_Object *o);
1302
1303 /**
1304  * Gets the input method hints.
1305  *
1306  * @param o view object to get the input method hints
1307  *
1308  * @see Ewk_Imh
1309  *
1310  * @return the input method hints as @a Ewk_Imh bits-field
1311  */
1312 EAPI unsigned int ewk_view_imh_get(const Evas_Object *o);
1313
1314 /**
1315  * Gets the user agent string.
1316  *
1317  * @param o view object to get the user agent string
1318  *
1319  * @return the user agent string
1320  */
1321 EAPI const char  *ewk_view_setting_user_agent_get(const Evas_Object *o);
1322
1323 /**
1324  * Sets the user agent string.
1325  *
1326  * @param o view object to set the user agent string
1327  *
1328  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1329  */
1330 EAPI Eina_Bool    ewk_view_setting_user_agent_set(Evas_Object *o, const char *user_agent);
1331
1332 /**
1333  * Queries if the images are loaded automatically.
1334  *
1335  * @param o view object to query if the images are loaded automatically
1336  *
1337  * @return @c EINA_TRUE if the images are loaded automatically,
1338  *         @c EINA_FALSE if not or on failure
1339  */
1340 EAPI Eina_Bool    ewk_view_setting_auto_load_images_get(const Evas_Object *o);
1341
1342 /**
1343  * Enables/disables auto loading of the images.
1344  *
1345  * @param o view object to set auto loading of the images
1346  * @param automatic @c EINA_TRUE to enable auto loading of the images,
1347  *        @c EINA_FALSE to disable
1348  *
1349  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1350  */
1351 EAPI Eina_Bool    ewk_view_setting_auto_load_images_set(Evas_Object *o, Eina_Bool automatic);
1352
1353 /**
1354  * Queries if the images are shrinked automatically
1355  *
1356  * @param o view object to query if the images are shrinked automatically
1357  *
1358  * @return @c EINA_TRUE if the images are shrinked automatically,
1359  *         @c EINA_FALSE if not or on failure
1360  */
1361 EAPI Eina_Bool    ewk_view_setting_auto_shrink_images_get(const Evas_Object *o);
1362
1363 /**
1364  * Enables/disables auto shrinking of the images.
1365  *
1366  * @param o view object to set auto shrinking of the images
1367  * @param automatic @c EINA_TRUE to enable auto shrinking of the images,
1368  *        @c EINA_FALSE to disable
1369  *
1370  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1371  */
1372 EAPI Eina_Bool    ewk_view_setting_auto_shrink_images_set(Evas_Object *o, Eina_Bool automatic);
1373
1374 /**
1375  * Queries if the view can be resized automatically.
1376  *
1377  * @param o view object to query if the view can be resized automatically
1378  *
1379  * @return @c EINA_TRUE if view can be resized automatically,
1380  *         @c EINA_FALSE if not or on failure
1381  */
1382 EAPI Eina_Bool    ewk_view_setting_enable_auto_resize_window_get(const Evas_Object *o);
1383
1384 /**
1385  * Enables/disables if the view can be resized automatically.
1386  *
1387  * @param o view object to set if the view can be resized automatically
1388  * @param resizable @c EINA_TRUE if view can be resizable automatically,
1389  *        @c EINA_TRUE if not
1390  *
1391  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1392  */
1393 EAPI Eina_Bool    ewk_view_setting_enable_auto_resize_window_set(Evas_Object *o, Eina_Bool resizable);
1394
1395 /**
1396  * Queries if the scripts can be executed.
1397  *
1398  * @param o view object to query if the scripts can be executed
1399  *
1400  * @return @c EINA_TRUE if the scripts can be executed
1401  *         @c EINA_FALSE if not or on failure
1402  */
1403 EAPI Eina_Bool    ewk_view_setting_enable_scripts_get(const Evas_Object *o);
1404
1405 /**
1406  * Enables/disables scripts executing.
1407  *
1408  * @param o view object to set script executing
1409  * @param enable @c EINA_TRUE to enable scripts executing
1410  *        @c EINA_FALSE to disable
1411  *
1412  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1413  */
1414 EAPI Eina_Bool    ewk_view_setting_enable_scripts_set(Evas_Object *o, Eina_Bool enable);
1415
1416 /**
1417  * Queries if the plug-ins are enabled.
1418  *
1419  * @param o view object to query if the plug-ins are enabled
1420  *
1421  * @return @c EINA_TRUE if the plugins are enabled
1422  *         @c EINA_FALSE if not or on failure
1423  */
1424 EAPI Eina_Bool    ewk_view_setting_enable_plugins_get(const Evas_Object *o);
1425
1426 /**
1427  * Enables/disables the plug-ins.
1428  *
1429  * @param o view object to set the plug-ins
1430  * @param enable @c EINA_TRUE to enable the plug-ins
1431  *        @c EINA_FALSE to disable
1432  *
1433  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1434  */
1435 EAPI Eina_Bool    ewk_view_setting_enable_plugins_set(Evas_Object *o, Eina_Bool enable);
1436
1437 /**
1438  * Queries if the frame flattening feature is enabled.
1439  *
1440  * @param o view object to query if the frame flattening feature is enabled
1441  *
1442  * @return @c EINA_TRUE if the frame flattening feature is enabled,
1443  *         @c EINA_FALSE if not or on failure
1444  */
1445 EAPI Eina_Bool    ewk_view_setting_enable_frame_flattening_get(const Evas_Object* o);
1446
1447 /**
1448  * Enables/disables the frame flattening feature.
1449  *
1450  * @param o view object to set the frame flattening feature
1451  * @param enable @c EINA_TRUE to enable the frame flattening feature
1452  *        @c EINA_FALSE to disable
1453  *
1454  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1455  */
1456 EAPI Eina_Bool    ewk_view_setting_enable_frame_flattening_set(Evas_Object* o, Eina_Bool enable);
1457
1458 /**
1459  * Queries if the scripts can open the new windows.
1460  *
1461  * @param o view object to query if the scripts can open the new windows
1462  *
1463  * @return @c EINA_TRUE if the scripts can open the new windows
1464  *         @c EINA_FALSE if not or on failure
1465  */
1466 EAPI Eina_Bool    ewk_view_setting_scripts_can_open_windows_get(const Evas_Object *o);
1467
1468 /**
1469  * Enables/disables if the scripts can open the new windows.
1470  *
1471  * @param o view object to set if the scripts can open the new windows
1472  * @param allow @c EINA_TRUE if the scripts can open the new windows
1473  *        @c EINA_FALSE if not
1474  *
1475  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (scripts are disabled)
1476  *
1477  * @see ewk_view_setting_enable_scripts_set
1478  */
1479 EAPI Eina_Bool    ewk_view_setting_scripts_can_open_windows_set(Evas_Object *o, Eina_Bool allow);
1480
1481 /**
1482  * Returns whether scripts can close windows automatically.
1483  *
1484  * @param o View whose settings to check.
1485  *
1486  * @return @c EINA_TRUE if scripts can close windows, @c EINA_FALSE otherwise.
1487  */
1488 EAPI Eina_Bool    ewk_view_setting_scripts_can_close_windows_get(const Evas_Object *o);
1489
1490 /**
1491  * Sets whether scripts are allowed to close windows automatically.
1492  *
1493  * @param o View whose settings to change.
1494  * @param allow @c EINA_TRUE to allow scripts to close windows,
1495  *              @c EINA_FALSE otherwise.
1496  *
1497  * @return @c EINA_TRUE if the setting could be changed successfully,
1498  *         @c EINA_FALSE in case an error occurred.
1499  */
1500 EAPI Eina_Bool    ewk_view_setting_scripts_can_close_windows_set(Evas_Object *o, Eina_Bool allow);
1501
1502 /**
1503  * Queries if HTML elements @c textarea can be resizable.
1504  *
1505  * @param o view object to query if the textarea elements can be resizable
1506  *
1507  * @return @c EINA_TRUE if the textarea elements can be resizable
1508  *         @c EINA_FALSE if not or on failure
1509  */
1510 EAPI Eina_Bool    ewk_view_setting_resizable_textareas_get(const Evas_Object *o);
1511
1512 /**
1513  * Enables/disables if HTML elements @c textarea can be resizable.
1514  *
1515  * @param o view object to set if the textarea elements can be resizable
1516  * @param enable @c EINA_TRUE if the textarea elements can be resizable
1517  *        @c EINA_FALSE if not
1518  *
1519  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1520  */
1521 EAPI Eina_Bool    ewk_view_setting_resizable_textareas_set(Evas_Object *o, Eina_Bool enable);
1522
1523 /**
1524  * Gets the user style sheet.
1525  *
1526  * @param o view object to get the user style sheet
1527  *
1528  * @return the user style sheet
1529  */
1530 EAPI const char  *ewk_view_setting_user_stylesheet_get(const Evas_Object *o);
1531
1532 /**
1533  * Sets the user style sheet.
1534  *
1535  * @param o view object to set the user style sheet
1536  * @param uri uniform resource identifier to user style sheet
1537  *
1538  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1539  */
1540 EAPI Eina_Bool    ewk_view_setting_user_stylesheet_set(Evas_Object *o, const char *uri);
1541
1542 /**
1543  * Queries if the private browsing feature is enabled.
1544  *
1545  * @param o view object to query if the private browsing feature is enabled
1546  *
1547  * @return @c EINA_TRUE if the private browsing feature is enabled, or
1548  *         @c EINA_FALSE if not or on failure
1549  *
1550  * @see ewk_view_setting_private_browsing_set
1551  */
1552 EAPI Eina_Bool    ewk_view_setting_private_browsing_get(const Evas_Object *o);
1553
1554 /**
1555  * Enables/disables the private browsing feature.
1556  *
1557  * When this option is set, WebCore will avoid storing any record of browsing
1558  * activity  that may persist on disk or remain displayed when the
1559  * option is reset.
1560  *
1561  * This option does not affect the storage of such information in RAM.
1562  *
1563  * The following functions respect this setting:
1564  *  - HTML5/DOM Storage
1565  *  - Icon Database
1566  *  - Console Messages
1567  *  - MemoryCache
1568  *  - Application Cache
1569  *  - Back/Forward Page History
1570  *  - Page Search Results
1571  *  - HTTP Cookies
1572  *  - Plug-ins (that support NPNVprivateModeBool)
1573  *
1574  * @param o view object to set the private browsing feature
1575  * @param enable @c EINA_TRUE to enable the private browsing feature
1576  *        @c EINA_FALSE to disable
1577  *
1578  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1579  */
1580 EAPI Eina_Bool    ewk_view_setting_private_browsing_set(Evas_Object *o, Eina_Bool enable);
1581
1582 /**
1583  * Returns whether HTML5 application cache support is enabled for this view.
1584  *
1585  * The Offline Application Caching APIs are part of HTML5 and allow applications to store data locally that is accessed
1586  * when the network cannot be reached.
1587  *
1588  * Application cache support is enabled by default.
1589  *
1590  * @param o view object whose settings to query
1591  *
1592  * @return @c EINA_TRUE if the application cache is enabled,
1593  *         @c EINA_FALSE if not or on failure
1594  *
1595  * @sa ewk_settings_application_cache_path_set
1596  */
1597 EAPI Eina_Bool    ewk_view_setting_application_cache_get(const Evas_Object *o);
1598
1599 /**
1600  * Enables/disables the HTML5 application cache for this view.
1601  *
1602  * The Offline Application Caching APIs are part of HTML5 and allow applications to store data locally that is accessed
1603  * when the network cannot be reached.
1604  *
1605  * Application cache support is enabled by default.
1606  *
1607  * @param o view object whose settings to change
1608  * @param enable @c EINA_TRUE to enable the application cache,
1609  *        @c EINA_FALSE to disable
1610  *
1611  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1612  *
1613  * @sa ewk_settings_application_cache_path_set
1614  */
1615 EAPI Eina_Bool    ewk_view_setting_application_cache_set(Evas_Object *o, Eina_Bool enable);
1616
1617 /**
1618  * Queries if the caret browsing feature is enabled.
1619  *
1620  * @param o view object to query if the caret browsing feature is enabled
1621  *
1622  * @return @c EINA_TRUE if the caret browsing feature is enabled,
1623  *         @c EINA_FALSE if not or on failure
1624  */
1625 EAPI Eina_Bool    ewk_view_setting_caret_browsing_get(const Evas_Object *o);
1626
1627 /**
1628  * Enables/disables the caret browsing feature.
1629  *
1630  * @param o view object to set caret browsing feature
1631  * @param enable @c EINA_TRUE to enable the caret browsing feature
1632  *        @c EINA_FALSE to disable
1633  *
1634  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1635  */
1636 EAPI Eina_Bool    ewk_view_setting_caret_browsing_set(Evas_Object *o, Eina_Bool enable);
1637
1638 /**
1639  * Gets the current encoding.
1640  *
1641  * @param o view object to get the current encoding
1642  *
1643  * @return @c eina_strinshare containing the current encoding, or
1644  *         @c 0 if it's not set
1645  */
1646 EAPI const char  *ewk_view_setting_encoding_custom_get(const Evas_Object *o);
1647
1648 /**
1649  * Sets the encoding and reloads the page.
1650  *
1651  * @param o view to set the encoding
1652  * @param encoding the new encoding to set or @c 0 to restore the default one
1653  *
1654  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1655  */
1656 EAPI Eina_Bool    ewk_view_setting_encoding_custom_set(Evas_Object *o, const char *encoding);
1657
1658 /**
1659  * Gets the default encoding.
1660  *
1661  * @param o view object to get the default encoding
1662  *
1663  * @return @c eina_strinshare containing the default encoding, or
1664  *         @c 0 if it's not set
1665  */
1666 EAPI const char  *ewk_view_setting_encoding_default_get(const Evas_Object *o);
1667
1668 /**
1669  * Sets the default encoding.
1670  *
1671  * @param o view to set the default encoding
1672  * @param encoding the new encoding to set
1673  *
1674  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1675  */
1676 EAPI Eina_Bool    ewk_view_setting_encoding_default_set(Evas_Object *o, const char *encoding);
1677
1678 /**
1679  * Gets the minimum font size.
1680  *
1681  * @param o view object to get the minimum font size
1682  *
1683  * @return the minimum font size, or @c 0 on failure
1684  */
1685 EAPI int          ewk_view_setting_font_minimum_size_get(const Evas_Object *o);
1686
1687 /**
1688  * Sets the minimum font size.
1689  *
1690  * @param o view object to set the minimum font size
1691  * @param size a new minimum font size to set
1692  *
1693  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1694  */
1695 EAPI Eina_Bool    ewk_view_setting_font_minimum_size_set(Evas_Object *o, int size);
1696
1697 /**
1698  * Gets the minimum logical font size.
1699  *
1700  * @param o view object to get the minimum logical font size
1701  *
1702  * @return the minimum logical font size, or @c 0 on failure
1703  */
1704 EAPI int          ewk_view_setting_font_minimum_logical_size_get(const Evas_Object *o);
1705
1706 /**
1707  * Sets the minimum logical font size.
1708  *
1709  * @param o view object to set the minimum font size
1710  * @param size a new minimum logical font size to set
1711  *
1712  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1713  */
1714 EAPI Eina_Bool    ewk_view_setting_font_minimum_logical_size_set(Evas_Object *o, int size);
1715
1716 /**
1717  * Gets the default font size.
1718  *
1719  * @param o view object to get the default font size
1720  *
1721  * @return the default font size, or @c 0 on failure
1722  */
1723 EAPI int          ewk_view_setting_font_default_size_get(const Evas_Object *o);
1724
1725 /**
1726  * Sets the default font size.
1727  *
1728  * @param o view object to set the default font size
1729  * @param size a new default font size to set
1730  *
1731  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1732  */
1733 EAPI Eina_Bool    ewk_view_setting_font_default_size_set(Evas_Object *o, int size);
1734
1735 /**
1736  * Gets the Monospace font size.
1737  *
1738  * @param o view object to get the Monospace font size
1739  *
1740  * @return the Monospace font size, or @c 0 on failure
1741  */
1742 EAPI int          ewk_view_setting_font_monospace_size_get(const Evas_Object *o);
1743
1744 /**
1745  * Sets the Monospace font size.
1746  *
1747  * @param o view object to set the Monospace font size
1748  * @param size a new Monospace font size to set
1749  *
1750  * @return @c EINA_TRUE on success @c EINA_FALSE otherwise
1751  */
1752 EAPI Eina_Bool    ewk_view_setting_font_monospace_size_set(Evas_Object *o, int size);
1753
1754 /**
1755  * Gets the name of font for the given font family.
1756  *
1757  * @param o view object to get name of font the for font family
1758  * @param font_family the font family as @a Ewk_Font_Family enum to get font name
1759  *
1760  * @return the name of font family
1761  */
1762 EAPI const char *ewk_view_font_family_name_get(const Evas_Object *o, Ewk_Font_Family font_family);
1763
1764 /**
1765  * Sets the font for the given family.
1766  *
1767  * @param o view object to set font for the given family
1768  * @param font_family the font family as @a Ewk_Font_Family enum
1769  * @param name the font name to set
1770  *
1771  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1772  */
1773 EAPI Eina_Bool ewk_view_font_family_name_set(Evas_Object *o, Ewk_Font_Family font_family, const char *name);
1774
1775 /**
1776  * Queries if the spatial naviagtion feature is enabled.
1777  *
1778  * @param o view object to query if spatial navigation feature is enabled
1779  *
1780  * @return @c EINA_TRUE if spatial navigation is enabled,
1781  *         @c EINA_FALSE if not or on failure
1782  */
1783 EAPI Eina_Bool    ewk_view_setting_spatial_navigation_get(const Evas_Object *o);
1784
1785 /**
1786  * Enables/disables the spatial navigation feature.
1787  *
1788  * @param o view object to set spatial navigation feature
1789  * @param enable @c EINA_TRUE to enable the spatial navigation feature,
1790  *        @c EINA_FALSE to disable
1791  *
1792  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1793  */
1794 EAPI Eina_Bool    ewk_view_setting_spatial_navigation_set(Evas_Object *o, Eina_Bool enable);
1795
1796 /**
1797  * Queries if the local storage feature of HTML5 is enabled.
1798  *
1799  * @param o view object to query if the local storage feature is enabled
1800  *
1801  * @return @c EINA_TRUE if local storage is enabled,
1802  *         @c EINA_FALSE if not or on failure
1803  */
1804 EAPI Eina_Bool    ewk_view_setting_local_storage_get(const Evas_Object *o);
1805
1806 /**
1807  * Enables/disables the local storage feature of HTML5.
1808  *
1809  * Please notice that by default there is no storage path specified for the database.
1810  * This means that the contents of @c window.localStorage will not be saved to disk and
1811  * will be lost when the view is removed.
1812  * To set the path where the storage database will be stored, use
1813  * ewk_view_setting_local_storage_database_path_set.
1814  *
1815  * @param o view object to set if local storage is enabled
1816  * @param enable @c EINA_TRUE to enable the local storage feature,
1817  *        @c EINA_FALSE to disable
1818  *
1819  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1820  *
1821  * @sa ewk_view_setting_local_storage_database_path_set
1822  */
1823 EAPI Eina_Bool    ewk_view_setting_local_storage_set(Evas_Object *o, Eina_Bool enable);
1824
1825 /**
1826  * Returns the path where the HTML5 local storage database is stored on disk.
1827  *
1828  * By default, there is no path set, which means changes to @c window.localStorage will not
1829  * be saved to disk whatsoever.
1830  *
1831  * @param o view object to get the database path to the local storage feature
1832  *
1833  * @return @c eina_stringshare containing the database path to the local storage feature, or
1834  *         @c 0 if it's not set
1835  *
1836  * @sa ewk_view_setting_local_storage_database_path_set
1837  */
1838 EAPI const char  *ewk_view_setting_local_storage_database_path_get(const Evas_Object *o);
1839
1840 /**
1841  * Sets the path where the HTML5 local storage database is stored on disk.
1842  *
1843  * By default, there is no path set, which means changes to @c window.localStorage will not
1844  * be saved to disk whatsoever.
1845  *
1846  * @param o view object to set the database path to the local storage feature
1847  * @param path a new database path to the local storage feature
1848  *
1849  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1850  *
1851  * @sa ewk_view_setting_local_storage_set
1852  */
1853 EAPI Eina_Bool    ewk_view_setting_local_storage_database_path_set(Evas_Object *o, const char *path);
1854
1855 /**
1856  * Queries if the page cache feature is enabled.
1857  *
1858  * @param o view object to query if page cache feature is enabled
1859  *
1860  * @return @c EINA_TRUE if page cache is enabled,
1861  *         @c EINA_FALSE if not or on failure
1862  */
1863 EAPI Eina_Bool    ewk_view_setting_page_cache_get(const Evas_Object *o);
1864
1865 /**
1866  * Enables/disables the page cache feature.
1867  *
1868  * @param o view object to set page cache feature
1869  * @param enable @c EINA_TRUE to enable the page cache feature,
1870  *        @c EINA_FALSE to disable
1871  *
1872  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1873  */
1874 EAPI Eina_Bool    ewk_view_setting_page_cache_set(Evas_Object *o, Eina_Bool enable);
1875
1876 /**
1877  * Queries if the encoding detector is enabled.
1878  *
1879  * @param o view object to query if the encoding detector is enabled
1880  *
1881  * @return @c EINA_TRUE if the encoding feature is enabled,
1882  *         @c EINA_FALSE if not or on failure
1883  */
1884 EAPI Eina_Bool    ewk_view_setting_encoding_detector_get(const Evas_Object *o);
1885
1886 /**
1887  * Enables/disables the encoding detector.
1888  *
1889  * @param o view object to set the encoding detector
1890  * @param enable @c EINA_TRUE to enable the encoding detector,
1891  *        @c EINA_FALSE to disable
1892  *
1893  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1894  */
1895 EAPI Eina_Bool    ewk_view_setting_encoding_detector_set(Evas_Object *o, Eina_Bool enable);
1896
1897 /**
1898  * Queries if developer extensions are enabled.
1899  *
1900  * Currently, this is used to know whether the Web Inspector is enabled for a
1901  * given view.
1902  *
1903  * @param o view object to query if developer extensions are enabled
1904  *
1905  * @return @c EINA_TRUE if developer extensions are enabled, @c EINA_FALSE
1906  *         otherwise
1907  */
1908 EAPI Eina_Bool    ewk_view_setting_enable_developer_extras_get(const Evas_Object *o);
1909
1910 /**
1911  * Enables/disables developer extensions.
1912  *
1913  * This currently controls whether the Web Inspector should be enabled.
1914  *
1915  * @param o view object to set developer extensions
1916  * @param enable @c EINA_TRUE to enable developer extras, @c EINA_FALSE to
1917  *               disable
1918  *
1919  * @return @c EINA_TRUE on success or @EINA_FALSE on failure
1920  */
1921 EAPI Eina_Bool    ewk_view_setting_enable_developer_extras_set(Evas_Object *o, Eina_Bool enable);
1922
1923 /**
1924  * Sets the minimum interval for DOMTimers on current page.
1925  *
1926  * @param o view object to set the minimum interval
1927  *
1928  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
1929  */
1930 EAPI Eina_Bool    ewk_view_setting_minimum_timer_interval_set(Evas_Object *o, double interval);
1931
1932 /**
1933  * Gets the minimum interval for DOMTimers on current page.
1934  *
1935  * @param o view object to get the minimum interval
1936  *
1937  * @return the minimum interval on success or @c 0 on failure
1938  */
1939 EAPI double       ewk_view_setting_minimum_timer_interval_get(const Evas_Object *o);
1940
1941 /**
1942  * Gets the internal data of @a o.
1943  *
1944  * This is similar to evas_object_smart_data_get(), but additionally does type checking.
1945  *
1946  * @param o view object to get the internal data
1947  *
1948  * @return the internal data of @a o, or @c 0 on failure
1949  */
1950 EAPI Ewk_View_Smart_Data *ewk_view_smart_data_get(const Evas_Object *o);
1951
1952 /**
1953  * Process scrolls.
1954  *
1955  * @param priv the pointer to the private data of the view to process scrolls
1956  *
1957  * @note This is not for general use but just for subclasses that want
1958  *       to define their own backing store.
1959  */
1960 EAPI void ewk_view_scrolls_process(Ewk_View_Smart_Data *sd);
1961
1962 /// Creates a type name for @a _Ewk_View_Paint_Context.
1963 typedef struct _Ewk_View_Paint_Context Ewk_View_Paint_Context;
1964
1965 /**
1966  * Creates a new paint context using the view as source and cairo as output.
1967  *
1968  * @param priv the pointer to the private data of the view to use as paint source
1969  * @param cr cairo context to use as paint destination, a new
1970  *        reference is taken, so it's safe to call @c cairo_destroy()
1971  *        after this function returns.
1972  *
1973  * @return a newly allocated instance of @c Ewk_View_Paint_Context on success,
1974  *         or @c 0 on failure
1975  *
1976  * @note This is not for general use but just for subclasses that want
1977  *       to define their own backing store.
1978  */
1979 EAPI Ewk_View_Paint_Context *ewk_view_paint_context_new(Ewk_View_Private_Data *priv, cairo_t *cr);
1980
1981 /**
1982  * Destroys the previously created the paint context.
1983  *
1984  * @param ctxt the paint context to destroy, must @b not be @c 0
1985  *
1986  * @note This is not for general use but just for subclasses that want
1987  *       to define their own backing store.
1988  */
1989 EAPI void ewk_view_paint_context_free(Ewk_View_Paint_Context *ctxt);
1990
1991 /**
1992  * Saves (push to stack) the paint context status.
1993  *
1994  * @param ctxt the paint context to save, must @b not be @c 0
1995  *
1996  * @see ewk_view_paint_context_restore()
1997  *
1998  * @note This is not for general use but just for subclasses that want
1999  *       to define their own backing store.
2000  */
2001 EAPI void ewk_view_paint_context_save(Ewk_View_Paint_Context *ctxt);
2002
2003 /**
2004  * Restores (pop from stack) the paint context status.
2005  *
2006  * @param ctxt the paint context to restore, must @b not be @c 0
2007  *
2008  * @see ewk_view_paint_context_save()
2009  *
2010  * @note This is not for general use but just for subclasses that want
2011  *       to define their own backing store.
2012  */
2013 EAPI void ewk_view_paint_context_restore(Ewk_View_Paint_Context *ctxt);
2014
2015 /**
2016  * Clips the paint context drawings to the given area.
2017  *
2018  * @param ctxt the paint context to clip, must @b not be @c 0
2019  * @param area clip area to use, must @b not be @c 0
2020  *
2021  * @see ewk_view_paint_context_save()
2022  * @see ewk_view_paint_context_restore()
2023  *
2024  * @note This is not for general use but just for subclasses that want
2025  *       to define their own backing store.
2026  */
2027 EAPI void ewk_view_paint_context_clip(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
2028
2029 /**
2030  * Paints the context using given area.
2031  *
2032  * @param ctxt the paint context to paint, must @b not be @c 0
2033  * @param area the paint area to use, coordinates are relative to current viewport,
2034  *        thus "scrolled", must @b not be @c 0
2035  *
2036  * @note One may use cairo functions on the cairo context to
2037  *       translate, scale or any modification that may fit his desires.
2038  *
2039  * @see ewk_view_paint_context_clip()
2040  * @see ewk_view_paint_context_paint_contents()
2041  *
2042  * @note This is not for general use but just for subclasses that want
2043  *       to define their own backing store.
2044  */
2045 EAPI void ewk_view_paint_context_paint(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
2046
2047 /**
2048  * Paints just contents using context using given area.
2049  *
2050  * Unlike ewk_view_paint_context_paint(), this function paint just
2051  * bare contents and ignores any scrolling, scrollbars and extras. It
2052  * will walk the rendering tree and paint contents inside the given
2053  * area to the cairo context specified in @a ctxt.
2054  *
2055  * @param ctxt the paint context to paint, must @b not be @c 0.
2056  * @param area the paint area to use, coordinates are absolute to page, must @b not be @c 0
2057  *
2058  * @note One may use cairo functions on the cairo context to
2059  *       translate, scale or any modification that may fit his desires.
2060  *
2061  * @see ewk_view_paint_context_clip()
2062  * @see ewk_view_paint_context_paint()
2063  *
2064  * @note This is not for general use but just for subclasses that want
2065  *       to define their own backing store.
2066  */
2067 EAPI void ewk_view_paint_context_paint_contents(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
2068
2069 /**
2070  * Scales the contents by the given factors.
2071  *
2072  * This function applies a scaling transformation using Cairo.
2073  *
2074  * @param ctxt the paint context to scale, must @b not be @c 0
2075  * @param scale_x the scale factor for the X dimension
2076  * @param scale_y the scale factor for the Y dimension
2077  */
2078 EAPI void ewk_view_paint_context_scale(Ewk_View_Paint_Context *ctxt, float scale_x, float scale_y);
2079
2080 /**
2081  * Performs a translation of the origin coordinates.
2082  *
2083  * This function moves the origin coordinates by @a x and @a y pixels.
2084  *
2085  * @param ctxt the paint context to translate, must @b not be @c 0
2086  * @param x amount of pixels to translate in the X dimension
2087  * @param y amount of pixels to translate in the Y dimension
2088  */
2089 EAPI void ewk_view_paint_context_translate(Ewk_View_Paint_Context *ctxt, float x, float y);
2090
2091 /**
2092  * Paints using given graphics context the given area.
2093  *
2094  * This uses viewport relative area and will also handle scrollbars
2095  * and other extra elements. See ewk_view_paint_contents() for the
2096  * alternative function.
2097  *
2098  * @param priv the pointer to the private data of the view to use as paint source
2099  * @param cr the cairo context to use as paint destination, its state will
2100  *        be saved before operation and restored afterwards
2101  * @param area viewport relative geometry to paint
2102  *
2103  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
2104  *
2105  * @note This is an easy to use version, but internal structures are
2106  *       always created, then graphics context is clipped, then
2107  *       painted, restored and destroyed. This might not be optimum,
2108  *       so using @a Ewk_View_Paint_Context may be a better solutions
2109  *       for large number of operations.
2110  *
2111  * @see ewk_view_paint_contents()
2112  * @see ewk_view_paint_context_paint()
2113  *
2114  * @note This is not for general use but just for subclasses that want
2115  *       to define their own backing store.
2116  */
2117 EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
2118
2119 /**
2120  * Paints just contents using given graphics context the given area.
2121  *
2122  * This uses absolute coordinates for area and will just handle
2123  * contents, no scrollbars or extras. See ewk_view_paint() for the
2124  * alternative solution.
2125  *
2126  * @param priv the pointer to the private data of the view to use as paint source
2127  * @param cr the cairo context to use as paint destination, its state will
2128  *        be saved before operation and restored afterwards
2129  * @param area absolute geometry to paint
2130  *
2131  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
2132  *
2133  * @note This is an easy to use version, but internal structures are
2134  *       always created, then graphics context is clipped, then
2135  *       painted, restored and destroyed. This might not be optimum,
2136  *       so using @a Ewk_View_Paint_Context may be a better solutions
2137  *       for large number of operations.
2138  *
2139  * @see ewk_view_paint()
2140  * @see ewk_view_paint_context_paint_contents()
2141  *
2142  * @note This is not for general use but just for subclasses that want
2143  *       to define their own backing store.
2144  */
2145 EAPI Eina_Bool ewk_view_paint_contents(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
2146
2147 /**
2148  * Gets the attributes of the viewport meta tag.
2149  *
2150  * Properties are returned in the respective pointers. Passing @c 0 to any of
2151  * these pointers will make that property to not be returned.
2152  *
2153  * @param o view object to get the viewport attributes
2154  * @param w the pointer to store the width of the viewport
2155  * @param h the pointer to store the height of the viewport
2156  * @param init_scale the pointer to store the initial scale value
2157  * @param max_scale the pointer to store the maximum scale value
2158  * @param min_scale the pointer to store the minimum scale value
2159  * @param device_pixel_ratio the pointer to store the device pixel ratio value
2160  * @param user_scalable the pointer to store if user can scale viewport
2161  */
2162 EAPI void ewk_view_viewport_attributes_get(const Evas_Object *o, int *w, int *h, float *init_scale, float *max_scale, float *min_scale, float *device_pixel_ratio , Eina_Bool *user_scalable);
2163
2164 /**
2165  * Sets the zoom range.
2166  *
2167  * @param o view object to set the zoom range
2168  * @param min_scale the minimum value of the zoom range
2169  * @param max_scale the maximum value of the zoom range
2170  *
2171  * @return @c EINA_TRUE if zoom range is changed, @c EINA_FALSE if not or on failure
2172  */
2173 EAPI Eina_Bool ewk_view_zoom_range_set(Evas_Object *o, float min_scale, float max_scale);
2174
2175 /**
2176  * Gets the minimum value of the zoom range.
2177  *
2178  * @param o view object to get the minimum value of the zoom range
2179  *
2180  * @return the minimum value of the zoom range on success, or
2181  *         @c -1 on failure
2182  */
2183 EAPI float ewk_view_zoom_range_min_get(const Evas_Object *o);
2184
2185 /**
2186  * Gets the maximum value of the zoom range.
2187  *
2188  * @param o view object to get the maximum value of the zoom range
2189  *
2190  * @return the maximum value of the zoom range on success, or
2191  *         @c -1.0 on failure
2192  */
2193 EAPI float ewk_view_zoom_range_max_get(const Evas_Object *o);
2194
2195 /**
2196  * Enables/disables the zoom.
2197  *
2198  * @param o view to set zoom
2199  * @param user_scalable @c EINA_TRUE to enable zoom, @c EINA_FALSE to disable
2200  *
2201  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
2202  */
2203 EAPI Eina_Bool ewk_view_user_scalable_set(Evas_Object *o, Eina_Bool user_scalable);
2204
2205 /**
2206  * Queries if the zoom is enabled.
2207  *
2208  * @param o view to query if zoom is enabled
2209  *
2210  * @return @c EINA_TRUE if the zoom is enabled, @c EINA_FALSE if not or on failure
2211  */
2212 EAPI Eina_Bool ewk_view_user_scalable_get(const Evas_Object *o);
2213
2214 /**
2215  * Gets the device pixel ratio value.
2216  *
2217  * @param o view to get the device pixel ratio value
2218  *
2219  * @return the device pixel ratio value on success or @c -1.0 on failure
2220  */
2221 EAPI float ewk_view_device_pixel_ratio_get(const Evas_Object *o);
2222
2223 /**
2224  * Sets the view mode.
2225  *
2226  * The view-mode media feature describes the mode in which the
2227  * Web application is being shown as a running application.
2228  *
2229  * @param o view object to change the view mode
2230  * @param view_mode page view mode to set
2231  *
2232  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
2233  */
2234 EAPI Eina_Bool ewk_view_mode_set(Evas_Object *o, Ewk_View_Mode view_mode);
2235
2236 /**
2237  * Gets the view mode.
2238  *
2239  * @param o view object to get the view mode
2240  *
2241  * @return enum value of @a Ewk_View_Mode that indicates current view mode
2242  *
2243  * @see ewk_view_mode_set()
2244  */
2245 EAPI Ewk_View_Mode ewk_view_mode_get(const Evas_Object *o);
2246
2247 /**
2248  * Creates a JS object named @a obj_name as property of the window object. This should be called on a callback connectedto the
2249  * js,windowobject,clear signal.
2250  *
2251  * @param o view.
2252  * @param obj object that will be added(see: @a ewk_js_object_new).
2253  * @param obj_name name of the object.
2254  *
2255  * @return @c EINA_TRUE if object was added, @c EINA_FALSE if not.
2256  */
2257 EAPI Eina_Bool ewk_view_js_object_add(Evas_Object *o, Ewk_JS_Object *obj, const char *obj_name);
2258
2259 /// Defines the page visibility status.
2260 enum _Ewk_Page_Visibility_State {
2261     EWK_PAGE_VISIBILITY_STATE_VISIBLE,
2262     EWK_PAGE_VISIBILITY_STATE_HIDDEN,
2263     EWK_PAGE_VISIBILITY_STATE_PRERENDER
2264 };
2265 /// Creates a type name for @a _Ewk_Page_Visibility_State.
2266 typedef enum _Ewk_Page_Visibility_State Ewk_Page_Visibility_State;
2267
2268 /**
2269  * Sets the visibility state of the page.
2270  *
2271  * This function let WebKit knows the visibility status of the page.
2272  * WebKit will save the current status, and fire a "visibilitychange"
2273  * event which web application can listen. Web application could slow
2274  * down or stop itself when it gets a "visibilitychange" event and its
2275  * visibility state is hidden. If its visibility state is visible, then
2276  * the web application could use more resources.
2277  *
2278  * This feature makes that web application could use the resources efficiently,
2279  * such as power, CPU, and etc.
2280  *
2281  * If more detailed description is needed, please see the specification.
2282  * (http://www.w3.org/TR/page-visibility)
2283  *
2284  * @param o view object to set the visibility state.
2285  * @param page_visible_state the visible state of the page to set.
2286  * @param initial_state @c EINA_TRUE if this function is called at page initialization time,
2287  *                      @c EINA_FALSE otherwise.
2288  *
2289  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure.
2290  */
2291 EAPI Eina_Bool ewk_view_visibility_state_set(Evas_Object* o, Ewk_Page_Visibility_State page_visible_state, Eina_Bool initial_state);
2292
2293 /**
2294  * Gets the visibility state of the page.
2295  *
2296  * @param o view object
2297  *
2298  * @return enum value of @a Ewk_Page_Visibility_State that indicates current visibility status of the page.
2299  *
2300  * @see ewk_view_visibility_state_set()
2301  */
2302 EAPI Ewk_Page_Visibility_State ewk_view_visibility_state_get(const Evas_Object *o);
2303
2304 /**
2305  * Returns whether the view has displayed mixed content.
2306  *
2307  * When a view has displayed mixed content, any of its frames has loaded an HTTPS URI
2308  * which has itself loaded and displayed a resource (such as an image) from an insecure,
2309  * that is, non-HTTPS, URI.
2310  *
2311  * The status is reset only when a load event occurs (eg. the page is reloaded or a new page is loaded).
2312  *
2313  * When one of the containing frames displays mixed content, the view emits the "mixedcontent,displayed" signal.
2314  *
2315  * @param o The view to query.
2316  *
2317  * @sa ewk_frame_mixed_content_displayed_get
2318  */
2319 EAPI Eina_Bool ewk_view_mixed_content_displayed_get(const Evas_Object *o);
2320
2321 /**
2322  * Returns whether the view has run mixed content.
2323  *
2324  * When a view has run mixed content, any of its frames has loaded an HTTPS URI
2325  * which has itself loaded and run a resource (such as an image) from an insecure,
2326  * that is, non-HTTPS, URI.
2327  *
2328  * The status is reset only when a load event occurs (eg. the page is reloaded or a new page is loaded).
2329  *
2330  * When one of the containing frames runs mixed content, the view emits the "mixedcontent,run" signal.
2331  *
2332  * @param o The view to query.
2333  *
2334  * @sa ewk_frame_mixed_content_run_get
2335  */
2336 EAPI Eina_Bool ewk_view_mixed_content_run_get(const Evas_Object *o);
2337
2338 #ifdef __cplusplus
2339 }
2340 #endif
2341 #endif // ewk_view_h