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