e7db4483df85f7acf89b0d7dea482534b8c19680
[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  *  - "link,hover,in", const char *link[2]: reports mouse is over a link.
44  *    It gives the url in link[0] and link's title in link[1] as an argument.
45  *  - "link,hover,out", void: reports mouse moved out from a link.
46  *  - "load,error", const Ewk_Frame_Load_Error*: reports load failed
47  *  - "load,finished", const Ewk_Frame_Load_Error*: reports load
48  *    finished and it gives @c NULL on success or pointer to
49  *    structure defining the error.
50  *  - "load,newwindow,show", void: reports that a new window was created and can be shown.
51  *    and it gives a pointer to structure defining the error as an argument.
52  *  - "load,progress", double*: load progress is changed (overall value
53  *    from 0.0 to 1.0, connect to individual frames for fine grained).
54  *  - "load,provisional", void: view started provisional load.
55  *  - "load,started", void: frame started loading the document.
56  *  - "menubar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if menubar is
57  *    visible; @c EINA_FALSE, otherwise.
58  *  - "menubar,visible,set", Eina_Bool: sets menubar visibility.
59  *  - "ready", void: page is fully loaded.
60  *  - "scrollbars,visible,get", Eina_Bool *: expects a @c EINA_TRUE if scrollbars
61  *    are visible; @c EINA_FALSE, otherwise.
62  *  - "scrollbars,visible,set", Eina_Bool: sets scrollbars visibility.
63  *  - "statusbar,text,set", const char *: sets statusbar text.
64  *  - "statusbar,visible,get", Eina_Bool *: expects a @c EINA_TRUE if statusbar is
65  *    visible; @c EINA_FALSE, otherwise.
66  *  - "statusbar,visible,set", Eina_Bool: sets statusbar visibility.
67  *  - "title,changed", const char*: title of the main frame was changed.
68  *  - "toolbars,visible,get", Eina_Bool *: expects a @c EINA_TRUE if toolbar
69  *    is visible; @c EINA_FALSE, otherwise.
70  *  - "toolbars,visible,set", Eina_Bool: sets toolbar visibility.
71  *  - "popup,create", Ewk_Menu: reports that a new menu was created.
72  *  - "popup,willdeleted", Ewk_Menu: reports that a previously created menu
73  *    will be deleted.
74  *  - "restore", Evas_Object *: reports that view should be restored to default conditions
75  *    and it gives a frame that originated restore as an argument.
76  *  - "tooltip,text,set", const char*: sets tooltip text and displays if it is currently hidden.
77  *  - "uri,changed", const char*: uri of the main frame was changed.
78  *  - "view,resized", void: view object's size was changed.
79  *  - "viewport,changed", void: reports that viewport was changed.
80  *  - "zoom,animated,end", void: requested animated zoom is finished.
81  */
82
83 #ifndef ewk_view_h
84 #define ewk_view_h
85
86 #include "ewk_frame.h"
87 #include "ewk_history.h"
88 #include "ewk_window_features.h"
89
90 #include <Evas.h>
91 #include <cairo.h>
92
93 #ifdef __cplusplus
94 extern "C" {
95 #endif
96
97 /// Creates a type name for @a _Ewk_View_Smart_Data.
98 typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
99
100 /// Creates a type name for @a _Ewk_View_Smart_Class.
101 typedef struct _Ewk_View_Smart_Class Ewk_View_Smart_Class;
102 /// Ewk view's class, to be overridden by sub-classes.
103 struct _Ewk_View_Smart_Class {
104     Evas_Smart_Class sc; /**< All but 'data' is free to be changed. */
105     unsigned long version;
106
107     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 */
108     void (*window_close)(Ewk_View_Smart_Data *sd); /**< closes a window */
109     // hooks to allow different backing stores
110     Evas_Object *(*backing_store_add)(Ewk_View_Smart_Data *sd); /**< must be defined */
111     Eina_Bool (*scrolls_process)(Ewk_View_Smart_Data *sd); /**< must be defined */
112     Eina_Bool (*repaints_process)(Ewk_View_Smart_Data *sd); /**< must be defined */
113     Eina_Bool (*contents_resize)(Ewk_View_Smart_Data *sd, int w, int h);
114     Eina_Bool (*zoom_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
115     Eina_Bool (*zoom_weak_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
116     void (*zoom_weak_smooth_scale_set)(Ewk_View_Smart_Data *sd, Eina_Bool smooth_scale);
117     void (*bg_color_set)(Ewk_View_Smart_Data *sd, unsigned char r, unsigned char g, unsigned char b, unsigned char a);
118     void (*flush)(Ewk_View_Smart_Data *sd);
119     Eina_Bool (*pre_render_region)(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, float zoom);
120     Eina_Bool (*pre_render_relative_radius)(Ewk_View_Smart_Data *sd, unsigned int n, float zoom);
121     void (*pre_render_cancel)(Ewk_View_Smart_Data *sd);
122     Eina_Bool (*disable_render)(Ewk_View_Smart_Data *sd);
123     Eina_Bool (*enable_render)(Ewk_View_Smart_Data *sd);
124
125     // event handling:
126     //  - returns true if handled
127     //  - if overridden, have to call parent method if desired
128     Eina_Bool (*focus_in)(Ewk_View_Smart_Data *sd);
129     Eina_Bool (*focus_out)(Ewk_View_Smart_Data *sd);
130     Eina_Bool (*mouse_wheel)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Wheel *ev);
131     Eina_Bool (*mouse_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Down *ev);
132     Eina_Bool (*mouse_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Up *ev);
133     Eina_Bool (*mouse_move)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Move *ev);
134     Eina_Bool (*key_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Down *ev);
135     Eina_Bool (*key_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Up *ev);
136
137     void (*add_console_message)(Ewk_View_Smart_Data *sd, const char *message, unsigned int lineNumber, const char *sourceID);
138     void (*run_javascript_alert)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
139     Eina_Bool (*run_javascript_confirm)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
140     Eina_Bool (*run_javascript_prompt)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message, const char *defaultValue, char **value);
141     Eina_Bool (*should_interrupt_javascript)(Ewk_View_Smart_Data *sd);
142     uint64_t (*exceeded_database_quota)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *databaseName, uint64_t current_size, uint64_t expected_size);
143
144     Eina_Bool (*run_open_panel)(Ewk_View_Smart_Data *sd, Evas_Object *frame, Eina_Bool allows_multiple_files, const char *accept_types, Eina_List **selected_filenames);
145
146     Eina_Bool (*navigation_policy_decision)(Ewk_View_Smart_Data *sd, Ewk_Frame_Resource_Request *request);
147 };
148
149 /**
150  * The version you have to put into the version field
151  * in the @a Ewk_View_Smart_Class structure.
152  */
153 #define EWK_VIEW_SMART_CLASS_VERSION 1UL
154
155 /**
156  * Initializes a whole @a Ewk_View_Smart_Class structure.
157  *
158  * @param smart_class_init initializer to use for the "base" field
159  * @a Evas_Smart_Class
160  *
161  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
162  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
163  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
164  */
165 #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}
166
167 /**
168  * Initializes to zero a whole @a Ewk_View_Smart_Class structure.
169  *
170  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
171  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
172  * @see EWK_VIEW_SMART_CLASS_INIT
173  */
174 #define EWK_VIEW_SMART_CLASS_INIT_NULL EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL)
175
176 /**
177  * Initializes to zero a whole @a Ewk_View_Smart_Class structure
178  * and sets the version.
179  *
180  * Similar to @a EWK_VIEW_SMART_CLASS_INIT_NULL, but it sets the version field of
181  * @a Evas_Smart_Class (base field) to latest @a EVAS_SMART_CLASS_VERSION.
182  *
183  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
184  * @see EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION
185  * @see EWK_VIEW_SMART_CLASS_INIT
186  */
187 #define EWK_VIEW_SMART_CLASS_INIT_VERSION EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_VERSION)
188
189 /**
190  * Initializes to zero a whole @a Ewk_View_Smart_Class structure
191  * and sets the name and version.
192  *
193  * Similar to @a EWK_VIEW_SMART_CLASS_INIT_NULL, but it sets the version field of
194  * @a Evas_Smart_Class (base field) to latest @a EVAS_SMART_CLASS_VERSION
195  * and the name to the specific value.
196  *
197  * It will keep a reference to the name field as a "const char *", that is,
198  * name must be available while the structure is used (hint: static or global!)
199  * and it will not be modified.
200  *
201  * @see EWK_VIEW_SMART_CLASS_INIT_NULL
202  * @see EWK_VIEW_SMART_CLASS_INIT_VERSION
203  * @see EWK_VIEW_SMART_CLASS_INIT
204  */
205 #define EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION(name) EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
206
207 /// Defines the input method hints.
208 enum _Ewk_Imh {
209     EWK_IMH_TELEPHONE = (1 << 0),
210     EWK_IMH_NUMBER = (1 << 1),
211     EWK_IMH_EMAIL = (1 << 2),
212     EWK_IMH_URL = (1 << 3),
213     EWK_IMH_PASSWORD = (1 << 4)
214 };
215 /// Creates a type name for @a _Ewk_Imh.
216 typedef enum _Ewk_Imh Ewk_Imh;
217
218 /// Creates a type name for @a _Ewk_View_Private_Data.
219 typedef struct _Ewk_View_Private_Data Ewk_View_Private_Data;
220
221 /// Defines the types of the items for the context menu.
222 enum _Ewk_Menu_Item_Type {
223     EWK_MENU_SEPARATOR,
224     EWK_MENU_GROUP,
225     EWK_MENU_OPTION
226 };
227 /// Creates a type name for @a _Ewk_Menu_Item_Type.
228 typedef enum _Ewk_Menu_Item_Type Ewk_Menu_Item_Type;
229
230 /// Creates a type name for @a _Ewk_Menu_Item.
231 typedef struct _Ewk_Menu_Item Ewk_Menu_Item;
232 /// Contains data of each menu item.
233 struct _Ewk_Menu_Item {
234     const char *text; /**< Text of the item. */
235     Ewk_Menu_Item_Type type; /** Type of the item. */
236 };
237
238 /// Creates a type name for @a _Ewk_Menu.
239 typedef struct _Ewk_Menu Ewk_Menu;
240 /// Contains Popup menu data.
241 struct _Ewk_Menu {
242         Eina_List *items; /**< List of items. */
243         int x; /**< The horizontal position of Popup menu. */
244         int y; /**< The vertical position of Popup menu. */
245         int width; /**< Popup menu width. */
246         int height; /**< Popup menu height. */
247 };
248
249 /// Creates a type name for @a _Ewk_Download.
250 typedef struct _Ewk_Download Ewk_Download;
251 /// Contains Download data.
252 struct _Ewk_Download {
253     const char *url; /**< URL of resource. */
254     /* to be extended */
255 };
256
257 /// Creates a type name for @a _Ewk_Scroll_Request.
258 typedef struct _Ewk_Scroll_Request Ewk_Scroll_Request;
259 /// Contains the scroll request that should be processed by subclass implementations.
260 struct _Ewk_Scroll_Request {
261     Evas_Coord dx, dy;
262     Evas_Coord x, y, w, h, x2, y2;
263     Eina_Bool main_scroll;
264 };
265
266 /**
267  * @brief Contains an internal View data.
268  *
269  * It is to be considered private by users, but may be extended or
270  * changed by sub-classes (that's why it's in the public header file).
271  */
272 struct _Ewk_View_Smart_Data {
273     Evas_Object_Smart_Clipped_Data base;
274     const Ewk_View_Smart_Class *api; /**< Reference to casted class instance. */
275     Evas_Object *self; /**< Reference to owner object. */
276     Evas_Object *main_frame; /**< Reference to main frame object. */
277     Evas_Object *backing_store; /**< Reference to backing store. */
278     Evas_Object *events_rect; /**< The rectangle that receives mouse events. */
279     Ewk_View_Private_Data *_priv; /**< Should @b never be accessed, c++ stuff. */
280     struct {
281         Evas_Coord x, y, w, h;
282     } view; /**< Contains the position and size of last used viewport. */
283     struct {
284         struct {
285             float start;
286             float end;
287             float current; /**< if > 0.0, then doing animated zoom. */
288         } zoom;
289     } animated_zoom;
290     struct {
291         unsigned char r, g, b, a;
292     } bg_color; /**< Keeps the background color. */
293     Eina_Bool zoom_weak_smooth_scale:1;
294     struct {
295         Eina_Bool any:1;
296         Eina_Bool size:1;
297         Eina_Bool position:1;
298         Eina_Bool frame_rect:1;
299     } changed; /**< Keeps what changed since last smart_calculate. */
300 };
301
302 /// Defines the modes of view.
303 enum _Ewk_View_Mode {
304     EWK_VIEW_MODE_WINDOWED,
305     EWK_VIEW_MODE_FLOATING,
306     EWK_VIEW_MODE_FULLSCREEN,
307     EWK_VIEW_MODE_MAXIMIZED,
308     EWK_VIEW_MODE_MINIMIZED
309 };
310 /// Creates a type name for @a _Ewk_View_Mode.
311 typedef enum _Ewk_View_Mode Ewk_View_Mode;
312
313 /**
314  * @brief Creates a type name for @a _Ewk_Tile_Unused_Cache.
315  *
316  * Cache (pool) that contains unused tiles for ewk_view_tiled.
317  *
318  * This cache will maintain unused tiles and flush them when the total
319  * memory exceeds the set amount when
320  * ewk_tile_unused_cache_auto_flush() or explicitly set value when
321  * ewk_tile_unused_cache_flush() is called.
322  *
323  * The tile may be shared among different ewk_view_tiled instances to
324  * group maximum unused memory resident in the system.
325  */
326 typedef struct _Ewk_Tile_Unused_Cache Ewk_Tile_Unused_Cache;
327
328 /**
329  * Changes cache capacity of unused tiles.
330  *
331  * @param tuc cache of unused tiles to set a new capacity of unused tiles
332  *
333  * @param max a new capacity of cache, in bytes
334  *
335  * @note This will not flush cache, use ewk_tile_unused_cache_flush() or
336  * ewk_tile_unused_cache_auto_flush() to do so.
337  */
338 EAPI void   ewk_tile_unused_cache_max_set(Ewk_Tile_Unused_Cache *tuc, size_t max);
339
340 /**
341  * Retrieves maximum cache capacity of unused tiles.
342  *
343  * @param tuc cache of unused tiles to get maximum cache capacity of unused tiles
344  *
345  * @return maximum cache capacity, in bytes on success or @c 0 on failure
346  */
347 EAPI size_t ewk_tile_unused_cache_max_get(const Ewk_Tile_Unused_Cache *tuc);
348
349 /**
350  * Retrieves the used cache capacity of unused tiles.
351  *
352  * @param tuc cache of unused tiles to get used cache capacity of unused tiles
353  *
354  * @return used cache capacity, in bytes on success or @c 0 on failure
355  */
356 EAPI size_t ewk_tile_unused_cache_used_get(const Ewk_Tile_Unused_Cache *tuc);
357
358 /**
359  * Flushes given amount of bytes from cache of unused tiles.
360  *
361  * After calling this function, near @a bytes are freed from cache. It
362  * may be less if cache did not contain that amount of bytes (ie: an
363  * empty cache has nothing to free!) or more if the cache just
364  * contained objects that were larger than the requested amount (this
365  * is usually the case).
366  *
367  * @param tuc cache of unused tiles to flush @bytes from cache
368  * @param bytes amount bytes to free
369  *
370  * @return amount really freed bytes
371  *
372  * @see ewk_tile_unused_cache_used_get()
373  */
374 EAPI size_t ewk_tile_unused_cache_flush(Ewk_Tile_Unused_Cache *tuc, size_t bytes);
375
376 /**
377  * Flushes enough bytes to make cache of unused tiles usage lower than maximum.
378  *
379  * Just like ewk_tile_unused_cache_flush(), but this will make the cache
380  * free enough tiles to respect maximum cache size as defined with
381  * ewk_tile_unused_cache_max_set().
382  *
383  * This function is usually called when system becomes idle. This way
384  * we keep memory low but do not impact performance when
385  * creating/deleting tiles.
386  *
387  * @param tuc cache of unused tiles to flush cache of unused tiles
388  */
389 EAPI void   ewk_tile_unused_cache_auto_flush(Ewk_Tile_Unused_Cache *tuc);
390
391 /**
392  * Sets the smart class api without any backing store, enabling view
393  * to be inherited.
394  *
395  * @param api class definition to set, all members with the
396  *        exception of @a Evas_Smart_Class->data may be overridden, must
397  *        @b not be @c 0
398  *
399  * @note @a Evas_Smart_Class->data is used to implement type checking and
400  *       is not supposed to be changed/overridden. If you need extra
401  *       data for your smart class to work, just extend
402  *       Ewk_View_Smart_Class instead.
403  *
404  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
405  *         version mismatch)
406  *
407  * @see ewk_view_single_smart_set()
408  * @see ewk_view_tiled_smart_set()
409  */
410 EAPI Eina_Bool    ewk_view_base_smart_set(Ewk_View_Smart_Class *api);
411
412 /**
413  * Sets the smart class api using single backing store, enabling view
414  * to be inherited.
415  *
416  * @param api class definition to set, all members with the
417  *        exception of @a Evas_Smart_Class->data may be overridden, must
418  *        @b not be @c 0
419  *
420  * @note @a Evas_Smart_Class->data is used to implement type checking and
421  *       is not supposed to be changed/overridden. If you need extra
422  *       data for your smart class to work, just extend
423  *       @a Ewk_View_Smart_Class instead.
424  *
425  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
426  *         version mismatch)
427  *
428  * @see ewk_view_base_smart_set()
429  */
430 EAPI Eina_Bool    ewk_view_single_smart_set(Ewk_View_Smart_Class *api);
431
432 /**
433  * Sets the smart class api using tiled backing store, enabling view
434  * to be inherited.
435  *
436  * @param api class definition to set, all members with the
437  *        exception of @a Evas_Smart_Class->data may be overridden, must
438  *        @b not be @c 0
439  *
440  * @note @a Evas_Smart_Class->data is used to implement type checking and
441  *       is not supposed to be changed/overridden. If you need extra
442  *       data for your smart class to work, just extend
443  *       Ewk_View_Smart_Class instead.
444  *
445  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure (probably
446  *         version mismatch)
447  *
448  * @see ewk_view_base_smart_set()
449  */
450 EAPI Eina_Bool    ewk_view_tiled_smart_set(Ewk_View_Smart_Class *api);
451
452 /**
453  * Creates a new EFL WebKit View object.
454  *
455  * View objects are the recommended way to deal with EFL WebKit as it
456  * abstracts the complex pieces of the process.
457  *
458  * Each view is composed by a set of frames. The set has at least one
459  * frame, called 'main_frame'. See ewk_view_frame_main_get() and
460  * ewk_view_frame_focused_get().
461  *
462  * @param e canvas object where to create the view object
463  *
464  * @return view object on success or @c 0 on failure
465  *
466  * @see ewk_view_uri_set()
467  */
468 EAPI Evas_Object *ewk_view_single_add(Evas *e);
469
470 /**
471  * Creates a new EFL WebKit View object using tiled backing store.
472  *
473  * View objects are the recommended way to deal with EFL WebKit as it
474  * abstracts the complex pieces of the process.
475  *
476  * This object is almost the same as the one returned by the ewk_view_single_add()
477  * function, but it uses the tiled backing store instead of the default
478  * backing store.
479  *
480  * @param e canvas object where to create the view object
481  *
482  * @return the view object on success or @c 0 on failure
483  *
484  * @see ewk_view_uri_set()
485  */
486 EAPI Evas_Object *ewk_view_tiled_add(Evas *e);
487
488 /**
489  * Gets the cache object of unused tiles used by this view.
490  *
491  * @param o the view object to get the cache object
492  *
493  * @return the cache object of unused tiles or @c 0 on failure
494  */
495 EAPI Ewk_Tile_Unused_Cache *ewk_view_tiled_unused_cache_get(const Evas_Object *o);
496
497 /**
498  * Sets the cache object of unused tiles used by this view.
499  *
500  * It can be used to share a single cache amongst different views.
501  * The tiles from one view will not be used by the other!
502  * This is just to limit the group with amount of unused memory.
503  *
504  * @note If @c 0 is provided as a @a cache, then a new one is created.
505  *
506  * @param o the view object to set the cache object
507  * @param the cache object of unused tiles
508  */
509 EAPI void                   ewk_view_tiled_unused_cache_set(Evas_Object *o, Ewk_Tile_Unused_Cache *cache);
510
511 // FIXME: this function should be removed later, when we find the best flag to use.
512 /**
513  * Sets if all the requests of the queue should be processed.
514  *
515  * @param o the view object
516  * @param flag @c EINA_TRUE if all the request of queue should be processed, @c EINA_FALSE if not
517  */
518 EAPI void                   ewk_view_tiled_process_entire_queue_set(Evas_Object *o, Eina_Bool flag);
519
520 /**
521  * Sets a fixed layout size to be used, dissociating it from viewport size.
522  *
523  * Setting a width different than zero enables fixed layout on that
524  * size. It's automatically scaled based on zoom, but will not change
525  * if viewport changes.
526  *
527  * Setting both @a w and @a h to zero will disable fixed layout.
528  *
529  * @param o view object to change fixed layout
530  * @param w fixed width to use, this size will be automatically scaled
531  *        based on zoom level
532  * @param h fixed height to use, this size will be automatically scaled
533  *        based on zoom level
534  */
535 EAPI void         ewk_view_fixed_layout_size_set(Evas_Object *o, Evas_Coord w, Evas_Coord h);
536
537 /**
538  * Gets fixed layout size.
539  *
540  * @param o view object to get fixed layout size
541  * @param w the pointer to store fixed width, returns @c 0 on failure or if there is no
542  *        fixed layout in use
543  * @param h the pointer to store fixed height, returns @c 0 on failure or if there is no
544  *        fixed layout in use
545  */
546 EAPI void         ewk_view_fixed_layout_size_get(Evas_Object *o, Evas_Coord *w, Evas_Coord *h);
547
548 /**
549  * Sets the theme path that will be used by this view.
550  *
551  * This also sets the theme on the main frame. As frames inherit theme
552  * from their parent, this will have all frames with unset theme to
553  * use this one.
554  *
555  * @param o view object to change theme
556  * @param path theme path, may be @c 0 to reset to the default theme
557  */
558 EAPI void         ewk_view_theme_set(Evas_Object *o, const char *path);
559
560 /**
561  * Gets the theme set on this view.
562  *
563  * This returns the value set by ewk_view_theme_set().
564  *
565  * @param o view object to get theme path
566  *
567  * @return the theme path, may be @c 0 if not set
568  */
569 EAPI const char  *ewk_view_theme_get(Evas_Object *o);
570
571 /**
572  * Gets the object that represents the main frame.
573  *
574  * @param o view object to get main frame
575  *
576  * @return frame smart object or @c 0 if none yet
577  */
578 EAPI Evas_Object *ewk_view_frame_main_get(const Evas_Object *o);
579
580 /**
581  * Gets the currently focused frame object.
582  *
583  * @param o view object to get focused frame
584  *
585  * @return frame smart object or @c 0 if none yet
586  */
587 EAPI Evas_Object *ewk_view_frame_focused_get(const Evas_Object *o);
588
589 /**
590  * Asks the main frame to load the given URI.
591  *
592  * @param o view object to load @a uri
593  * @param uri uniform resource identifier to load
594  *
595  * @return @c EINA_TRUE on successful request or @c EINA_FALSE on failure
596  */
597 EAPI Eina_Bool    ewk_view_uri_set(Evas_Object *o, const char *uri);
598
599 /**
600  * Gets the current uri loaded by main frame.
601  *
602  * It returns a internal string and should not
603  * be modified. The string is guaranteed to be stringshared.
604  *
605  * @param o view object to get current uri.
606  *
607  * @return current uri on success or @c 0 on failure
608  */
609 EAPI const char  *ewk_view_uri_get(const Evas_Object *o);
610
611 /**
612  * Gets the current title of the main frame.
613  *
614  * It returns a internal string and should not
615  * be modified. The string is guaranteed to be stringshared.
616  *
617  * @param o view object to get current title
618  *
619  * @return current title on success or @c 0 on failure
620  */
621 EAPI const char  *ewk_view_title_get(const Evas_Object *o);
622
623 /**
624  * Queries if the main frame is editable.
625  *
626  * @param o view object to query editable state
627  *
628  * @return @c EINA_TRUE if the main frame is editable, @c EINA_FALSE otherwise
629  */
630 EAPI Eina_Bool    ewk_view_editable_get(const Evas_Object *o);
631
632 /**
633  * Sets if main frame is editable.
634  *
635  * @param o view object to set editable state
636  * @param editable a new state to set
637  *
638  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
639  */
640 EAPI Eina_Bool    ewk_view_editable_set(Evas_Object *o, Eina_Bool editable);
641
642 /**
643  * Sets the background color and transparency of the view.
644  *
645  * Just as in Evas, colors are pre-multiplied, so 50% red is
646  * (128, 0, 0, 128) and not (255, 0, 0, 128)!
647  *
648  * @warning Watch out performance issues with transparency! Object
649  *          will be handled as transparent image by evas even if the
650  *          webpage specifies a background color. That mean you'll pay
651  *          a price even if it's not really transparent, thus
652  *          scrolling/panning and zooming will be likely slower than
653  *          if transparency is off.
654  *
655  * @param o view object to change the background color
656  * @param r red color component
657  * @param g green color component
658  * @param b blue color component
659  * @param a transparency
660  */
661 EAPI void         ewk_view_bg_color_set(Evas_Object *o, int r, int g, int b, int a);
662
663 /**
664  * Gets the background color of the view.
665  *
666  * Just as in Evas, colors are pre-multiplied, so 50% red is
667  * (128, 0, 0, 128) and not (255, 0, 0, 128)!
668  *
669  * @param o view object to get the background color
670  * @param r the pointer to store red color component
671  * @param g the pointer to store green color component
672  * @param b the pointer to store blue color component
673  * @param a the pointer to store alpha value
674  */
675 EAPI void         ewk_view_bg_color_get(const Evas_Object *o, int *r, int *g, int *b, int *a);
676
677 /**
678  * Gets the copy of the selected text.
679  *
680  * The returned string @b should be freed after use.
681  *
682  * @param o view object to get selected text
683  *
684  * @return a newly allocated string or @c 0 if nothing is selected or on failure
685  */
686 EAPI char        *ewk_view_selection_get(const Evas_Object *o);
687
688 /**
689  * Forwards a request of a new Context Menu to WebCore.
690  *
691  * @param o view object to forward a request of a new Context Menu
692  * @param ev mouse down event data
693  *
694  * @return @c EINA_TRUE if operation was executed, @c EINA_FALSE otherwise
695  */
696 EAPI Eina_Bool    ewk_view_context_menu_forward_event(Evas_Object *o, const Evas_Event_Mouse_Down *ev);
697
698 /// Contains commands to execute.
699 enum _Ewk_Editor_Command {
700     EWK_EDITOR_COMMAND_INSERT_IMAGE = 0,
701     EWK_EDITOR_COMMAND_INSERT_TEXT,
702     EWK_EDITOR_COMMAND_SELECT_NONE,
703     EWK_EDITOR_COMMAND_SELECT_ALL,
704     EWK_EDITOR_COMMAND_SELECT_PARAGRAPH,
705     EWK_EDITOR_COMMAND_SELECT_SENTENCE,
706     EWK_EDITOR_COMMAND_SELECT_LINE,
707     EWK_EDITOR_COMMAND_SELECT_WORD
708 };
709 /// Creates a type name for @a _Ewk_Editor_Command.
710 typedef enum _Ewk_Editor_Command Ewk_Editor_Command;
711
712 /**
713  * Executes editor command.
714  *
715  * @param o view object to execute command
716  * @param command editor command to execute
717  * @param value the value to be passed into command
718  *
719  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
720  */
721 EAPI Eina_Bool    ewk_view_execute_editor_command(Evas_Object *o, const Ewk_Editor_Command command, const char *value);
722
723 /**
724  * Changes currently selected item.
725  *
726  * Changes the option selected in select widget. This is called by browser
727  * whenever user has chosen a different item. Most likely after calling this, a
728  * call to ewk_view_popup_destroy might be made in order to close the popup.
729  *
730  * @param o view object to change currently selected item
731  * @index index a new index to set
732  */
733 EAPI void         ewk_view_popup_selected_set(Evas_Object *o, int index);
734
735 /**
736  * Destroys a previously created menu.
737  *
738  * Before destroying, it informs client that menu's data is ready to be
739  * destroyed by sending a "popup,willdelete" with a list of menu items. Then it
740  * removes any reference to menu inside webkit. It's safe to call this
741  * function either from inside webkit or from browser.
742  *
743  * @param o view object
744  *
745  * @return @c EINA_TRUE in case menu was successfully destroyed or @c EINA_TRUE in
746  * case there wasn't any menu to be destroyed
747  */
748 EAPI Eina_Bool    ewk_view_popup_destroy(Evas_Object *o);
749
750 /**
751  * Searches the given string in a document.
752  *
753  * @param o view object where to search the text
754  * @param string reference string to search
755  * @param case_sensitive if search should be case sensitive or not
756  * @param forward if search is from cursor and on or backwards
757  * @param wrap if search should wrap at the end
758  *
759  * @return @c EINA_TRUE if the given string was found, @c EINA_FALSE if not or failure
760  */
761 EAPI Eina_Bool    ewk_view_text_search(const Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
762
763 /**
764  * Marks matches the given string in a document.
765  *
766  * @param o view object where to search text
767  * @param string reference string to match
768  * @param case_sensitive if match should be case sensitive or not
769  * @param highlight if matches should be highlighted
770  * @param limit maximum amount of matches, or zero to unlimited
771  *
772  * @return number of matched @a string
773  */
774 EAPI unsigned int ewk_view_text_matches_mark(Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
775
776 /**
777  * Unmarks all marked matches in a document.
778  *
779  * Reverses the effect of ewk_frame_text_matches_mark().
780  *
781  * @param o view object where to unmark matches
782  *
783  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
784  */
785 EAPI Eina_Bool    ewk_view_text_matches_unmark_all(Evas_Object *o);
786
787 /**
788  * Sets if should highlight matches marked with ewk_frame_text_matches_mark().
789  *
790  * @param o view object where to set if matches are highlighted or not
791  * @param highlight @c EINA_TRUE if matches are highlighted, @c EINA_FALSE if not
792  *
793  * @return @c EINA_TRUE on success or @c EINA_FALSE on failure
794  */
795 EAPI Eina_Bool    ewk_view_text_matches_highlight_set(Evas_Object *o, Eina_Bool highlight);
796
797 /**
798  * Gets if should highlight matches marked with ewk_frame_text_matches_mark().
799  *
800  * @param o view object to query if matches are highlighted or not
801  *
802  * @return @c EINA_TRUE if matches are highlighted, @c EINA_FALSE otherwise
803  */
804 EAPI Eina_Bool    ewk_view_text_matches_highlight_get(const Evas_Object *o);
805
806 /**
807  * Gets the current load progress of page.
808  *
809  * The progress estimates from 0.0 to 1.0.
810  *
811  * @param o view object to get the current progress
812  *
813  * @return the load progres of page, value from 0.0 to 1.0 on success
814  *       or -1.0 on failure
815  */
816 EAPI double       ewk_view_load_progress_get(const Evas_Object *o);
817
818 /**
819  * Asks the main frame to stop loading.
820  *
821  * @param o view object to stop loading
822  *
823  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise.
824  */
825 EAPI Eina_Bool    ewk_view_stop(Evas_Object *o);
826
827 /**
828  * Asks the main frame to reload the current document.
829  *
830  * @param o view object to reload current document
831  *
832  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
833  *
834  * @see ewk_view_reload_full()
835  */
836 EAPI Eina_Bool    ewk_view_reload(Evas_Object *o);
837
838 /**
839  * Asks the main frame to fully reload the current document, using no caches.
840  *
841  * @param o view object to reload current document
842  *
843  * @return @c EINA_TRUE on success o r@c EINA_FALSE otherwise
844  *
845  * @see ewk_view_reload()
846  */
847 EAPI Eina_Bool    ewk_view_reload_full(Evas_Object *o);
848
849 /**
850  * Asks the frame to navigate back in the history.
851  *
852  * @param o view object to navigate back
853  *
854  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
855  *
856  * @see ewk_frame_back()
857  */
858 EAPI Eina_Bool    ewk_view_back(Evas_Object *o);
859
860 /**
861  * Asks frame to navigate forward in the history.
862  *
863  * @param o view object to navigate forward
864  *
865  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
866  *
867  * @see ewk_frame_forward()
868  */
869 EAPI Eina_Bool    ewk_view_forward(Evas_Object *o);
870
871 /**
872  * Navigates back or forward in the history.
873  *
874  * @param o view object to navigate in the history
875  * @param steps if positive navigates that amount forwards, if negative
876  *        does backwards
877  *
878  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
879  *
880  * @see ewk_frame_navigate()
881  */
882 EAPI Eina_Bool    ewk_view_navigate(Evas_Object *o, int steps);
883
884 /**
885  * Queries if it's possible to navigate backwards one item in the history.
886  *
887  * @param o view object to query if backward navigation is possible
888  *
889  * @return @c EINA_TRUE if it's possible to navigate backward one item in the history, @c EINA_FALSE otherwise
890  * @see ewk_view_navigate_possible()
891  */
892 EAPI Eina_Bool    ewk_view_back_possible(Evas_Object *o);
893
894 /**
895  * Queries if it's possible to navigate forwards one item in the history.
896  *
897  * @param o view object to query if forward navigation is possible
898  *
899  * @return @c EINA_TRUE if it's possible to navigate forwards in the history, @c EINA_FALSE otherwise
900  *
901  * @see ewk_view_navigate_possible()
902  */
903 EAPI Eina_Bool    ewk_view_forward_possible(Evas_Object *o);
904
905 /**
906  * Queries if it's possible to navigate given @a steps in the history.
907  *
908  * @param o view object to query if it's possible to navigate @a steps in the history
909  * @param steps if positive navigates that amount forwards, if negative
910  *        does backwards
911  *
912  * @return @c EINA_TRUE if it's possible to navigate @a steps in the history, @c EINA_FALSE otherwise
913  */
914 EAPI Eina_Bool    ewk_view_navigate_possible(Evas_Object *o, int steps);
915
916 /**
917  * Queries if navigation in the history (back-forward lists) is enabled.
918  *
919  * @param o view object to query if navigation history is enabled
920  *
921  * @return @c EINA_TRUE if view keeps history, @c EINA_FALSE otherwise
922  */
923 EAPI Eina_Bool    ewk_view_history_enable_get(const Evas_Object *o);
924
925 /**
926  * Enables/disables navigation in the history (back-forward lists).
927  *
928  * @param o view object to enable/disable navigation in the history
929  * @param enable @c EINA_TRUE to enable navigation in the history,
930  *        @c EINA_FALSE to disable
931  *
932  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
933  */
934 EAPI Eina_Bool    ewk_view_history_enable_set(Evas_Object *o, Eina_Bool enable);
935
936 /**
937  * Gets the history (back-forward list) associated with this view.
938  *
939  * The returned instance is unique for this view and thus multiple calls
940  * to this function with the same view as parameter returns the same
941  * handle. This handle is alive while view is alive, thus one
942  * might want to listen for EVAS_CALLBACK_DEL on given view
943  * (@a o) to know when to stop using returned handle.
944  *
945  * @param o view object to get navigation history
946  *
947  * @return the history instance handle associated with this
948  *         view on succes or @c 0 on failure (including when the history
949  *         navigation is not enabled with ewk_view_history_enable_set())
950  *
951  * @see ewk_view_history_enable_set()
952  */
953 EAPI Ewk_History *ewk_view_history_get(const Evas_Object *o);
954
955 /**
956  * Gets the current zoom level of the main frame.
957  *
958  * @param o view object to get the zoom level
959  *
960  * @return current zoom level in use on success or @c -1.0 on failure
961  */
962 EAPI float        ewk_view_zoom_get(const Evas_Object *o);
963
964 /**
965  * Sets the current zoom level of the main frame, centered at the given point.
966  *
967  * @param o view object to set the zoom level
968  * @param zoom a new level to set
969  * @param cx x of center coordinate
970  * @param cy y of center coordinate
971  *
972  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
973  */
974 EAPI Eina_Bool    ewk_view_zoom_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
975
976 /**
977  * Queries if the smooth scale is enabled while the weak zoom.
978  *
979  * @param o view object to query if the smooth scale is enabled while the weak zoom
980  *
981  * @return @c EINA_TRUE if the smooth scale is enabled while the weak zoom, or
982  *         @c EINA_FALSE if not or on failure
983  */
984 EAPI Eina_Bool    ewk_view_zoom_weak_smooth_scale_get(const Evas_Object *o);
985
986 /**
987  * Enables/disables the smooth scale while the weak zoom.
988  *
989  * @param o view object to set the smooth scale while the weak zoom
990  * @param smooth_scale @c EINA_TRUE to enable the smooth scale
991  *        @c EINA_FALSE to disable
992  */
993 EAPI void         ewk_view_zoom_weak_smooth_scale_set(Evas_Object *o, Eina_Bool smooth_scale);
994
995 /**
996  * Sets the current zoom level of backing store, centered at given point.
997  *
998  * Unlike ewk_view_zoom_set(), this call do not ask WebKit to render
999  * at new size, but scale what is already rendered, being much faster
1000  * but worse quality.
1001  *
1002  * Often one should use ewk_view_zoom_animated_set(), it will call the
1003  * same machinery internally.
1004  *
1005  * @note this will set variables used by ewk_view_zoom_animated_set()
1006  *       so sub-classes will not reset internal state on their
1007  *       "calculate" phase. To unset those and enable sub-classes to
1008  *       reset their internal state, call
1009  *       ewk_view_zoom_animated_mark_stop(). Namely, this call will
1010  *       set ewk_view_zoom_animated_mark_start() to actual webkit zoom
1011  *       level, ewk_view_zoom_animated_mark_end() and
1012  *       ewk_view_zoom_animated_mark_current() to given zoom level.
1013  *
1014  * @param o view object to set the weak zoom level
1015  * @param zoom a new level to scale backing store
1016  * @param cx horizontal center offset, relative to object (w/2 is middle)
1017  * @param cy vertical center offset, relative to object (h/2 is middle)
1018  *
1019  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1020  */
1021 EAPI Eina_Bool    ewk_view_zoom_weak_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
1022
1023 /**
1024  * Sets start of an internal zoom animation state to the given zoom.
1025  *
1026  * This does not modify any actual zoom in WebKit or backing store,
1027  * just set needed flag so sub-classes knows they should not reset
1028  * their an internal state.
1029  *
1030  * @param o view object to set start of an internal zoom animation
1031  * @param zoom a new start value
1032  *
1033  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1034  *
1035  * @see ewk_view_zoom_animated_set()
1036  * @see ewk_view_zoom_weak_set()
1037  * @see ewk_view_zoom_animated_mark_stop()
1038  * @see ewk_view_zoom_animated_mark_end()
1039  * @see ewk_view_zoom_animated_mark_current()
1040  */
1041 EAPI Eina_Bool    ewk_view_zoom_animated_mark_start(Evas_Object *o, float zoom);
1042
1043 /**
1044  * Sets end of an internal zoom animation state to given zoom.
1045  *
1046  * This does not modify any actual zoom in WebKit or backing store,
1047  * just set needed flag so sub-classes knows they should not reset
1048  * their an internal state.
1049  *
1050  * @param o view object to set end of an internal zoom animation
1051  * @param zoom a new end value
1052  *
1053  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1054  *
1055  * @see ewk_view_zoom_animated_set()
1056  * @see ewk_view_zoom_weak_set()
1057  * @see ewk_view_zoom_animated_mark_stop()
1058  * @see ewk_view_zoom_animated_mark_start()
1059  * @see ewk_view_zoom_animated_mark_current()
1060  */
1061 EAPI Eina_Bool    ewk_view_zoom_animated_mark_end(Evas_Object *o, float zoom);
1062
1063 /**
1064  * Sets an internal current zoom animation state to given zoom.
1065  *
1066  * This does not modify any actual zoom in WebKit or backing store,
1067  * just set needed flag so sub-classes knows they should not reset
1068  * their an internal state.
1069  *
1070  * @param o view object to set an internal current zoom animation
1071  * @param zoom a new current value
1072  *
1073  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1074  *
1075  * @see ewk_view_zoom_animated_set()
1076  * @see ewk_view_zoom_weak_set()
1077  * @see ewk_view_zoom_animated_mark_stop()
1078  * @see ewk_view_zoom_animated_mark_start()
1079  * @see ewk_view_zoom_animated_mark_end()
1080  */
1081 EAPI Eina_Bool    ewk_view_zoom_animated_mark_current(Evas_Object *o, float zoom);
1082
1083 /**
1084  * Unmarks an internal zoom animation state.
1085  *
1086  * The start, end and current values of an internal zoom animation are zeroed.
1087  *
1088  * @param o view object to unmark an internal zoom animation state
1089  *
1090  * @see ewk_view_zoom_animated_mark_start()
1091  * @see ewk_view_zoom_animated_mark_end()
1092  * @see ewk_view_zoom_animated_mark_current()
1093  * @see ewk_view_zoom_weak_set()
1094  */
1095 EAPI Eina_Bool    ewk_view_zoom_animated_mark_stop(Evas_Object *o);
1096
1097 /**
1098  * Sets the current zoom level while animating.
1099  *
1100  * If the view was already animating to another zoom, it will start
1101  * from current point to the next provided zoom (@a zoom parameter)
1102  * and duration (@a duration parameter).
1103  *
1104  * This is the recommended way to do transitions from one level to
1105  * another. However, one may wish to do those from outside, in that
1106  * case use ewk_view_zoom_weak_set() and later control intermediate
1107  * states with ewk_view_zoom_animated_mark_current(),
1108  * ewk_view_zoom_animated_mark_end() and
1109  * ewk_view_zoom_animated_mark_stop().
1110  *
1111  * @param o view object to animate
1112  * @param zoom final zoom level to use
1113  * @param duration time in seconds the animation should take.
1114  * @param cx offset inside object that defines zoom center. 0 is left side
1115  * @param cy offset inside object that defines zoom center. 0 is top side
1116  * @return @c EINA_TRUE if animation will be started, @c EINA_FALSE if not
1117  *            because zoom is too small/big
1118  */
1119 EAPI Eina_Bool    ewk_view_zoom_animated_set(Evas_Object *o, float zoom, float duration, Evas_Coord cx, Evas_Coord cy);
1120
1121 /**
1122  * Queries if zoom level just applies to text only and not other elements.
1123  *
1124  * @param o view to query zoom level for text only
1125  *
1126  * @return @c EINA_TRUE if zoom level is applied to text only, @c EINA_FALSE if not or on failure
1127  */
1128 EAPI Eina_Bool    ewk_view_zoom_text_only_get(const Evas_Object *o);
1129
1130 /**
1131  * Sets if zoom level just applies to text only and not other elements.
1132  *
1133  * @param o view to apply zoom level for text only
1134  * @param setting @c EINA_TRUE if zoom level should be applied to text only, @c EINA_FALSE if not
1135  *
1136  * @return @c EINA_TRUE on success or @c EINA_FALSE otherwise
1137  */
1138 EAPI Eina_Bool    ewk_view_zoom_text_only_set(Evas_Object *o, Eina_Bool setting);
1139
1140 /**
1141  * Asks engine to pre-render region.
1142  *
1143  * Engines and backing store might be able to pre-render regions in
1144  * order to speed up zooming or scrolling to that region. Not all
1145  * engines might implement that and they will return @c EINA_FALSE
1146  * in that case.
1147  *
1148  * The given region is a hint. Engines might do bigger or smaller area
1149  * that covers that region. Pre-render might not be immediate, it may
1150  * be postponed to a thread, operated cooperatively in the main loop
1151  * and may be even ignored or cancelled afterwards.
1152  *
1153  * Multiple requests might be queued by engines. One can clear/forget
1154  * about them with ewk_view_pre_render_cancel().
1155  *
1156  * @param o view to ask pre-render of given region.
1157  * @param x absolute coordinate (0=left) to pre-render at zoom.
1158  * @param y absolute coordinate (0=top) to pre-render at zoom.
1159  * @param w width to pre-render starting from @a x at zoom.
1160  * @param h height to pre-render starting from @a y at zoom.
1161  * @param zoom desired zoom.
1162  *
1163  * @return @c EINA_TRUE if request was accepted, @c EINA_FALSE
1164  *         otherwise (errors, pre-render not supported, etc).
1165  *
1166  * @see ewk_view_pre_render_cancel()
1167  */
1168 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);
1169
1170 /**
1171  * Hint engine to pre-render region, given n extra cols/rows
1172  *
1173  * This is an alternative method to ewk_view_pre_render_region(). It does not
1174  * make sense in all engines and therefore it might not be implemented at all.
1175  *
1176  * It's only useful if engine divide the area being rendered in smaller tiles,
1177  * forming a grid. Then, browser could call this function to pre-render @param n
1178  * rows/cols involving the current viewport.
1179  *
1180  * @param o view to ask pre-render on.
1181  * @param n number of cols/rows that must be part of the region pre-rendered
1182  *
1183  * @see ewk_view_pre_render_region()
1184  */
1185 EAPI Eina_Bool    ewk_view_pre_render_relative_radius(Evas_Object *o, unsigned int n);
1186
1187 /**
1188  * Cancel (clear) previous pre-render requests.
1189  *
1190  * @param o view to clear pre-render requests.
1191  */
1192 EAPI void         ewk_view_pre_render_cancel(Evas_Object *o);
1193
1194 /**
1195   * Enable processing of update requests.
1196   *
1197   * @param o view to enable rendering.
1198   *
1199   * @return @c EINA_TRUE if render was enabled, @c EINA_FALSE
1200             otherwise (errors, rendering suspension not supported).
1201   */
1202 EAPI Eina_Bool    ewk_view_enable_render(const Evas_Object *o);
1203
1204 /**
1205   * Disable processing of update requests.
1206   *
1207   * @param o view to disable rendering.
1208   *
1209   * @return @c EINA_TRUE if render was disabled, @c EINA_FALSE
1210             otherwise (errors, rendering suspension not supported).
1211   */
1212 EAPI Eina_Bool    ewk_view_disable_render(const Evas_Object *o);
1213
1214 /**
1215  * Get input method hints
1216  *
1217  * @param o View.
1218  *
1219  * @return input method hints
1220  */
1221 EAPI unsigned int ewk_view_imh_get(Evas_Object *o);
1222
1223 /* settings */
1224 EAPI const char  *ewk_view_setting_user_agent_get(const Evas_Object *o);
1225 EAPI Eina_Bool    ewk_view_setting_user_agent_set(Evas_Object *o, const char *user_agent);
1226
1227 EAPI Eina_Bool    ewk_view_setting_auto_load_images_get(const Evas_Object *o);
1228 EAPI Eina_Bool    ewk_view_setting_auto_load_images_set(Evas_Object *o, Eina_Bool automatic);
1229
1230 EAPI Eina_Bool    ewk_view_setting_auto_shrink_images_get(const Evas_Object *o);
1231 EAPI Eina_Bool    ewk_view_setting_auto_shrink_images_set(Evas_Object *o, Eina_Bool automatic);
1232
1233 /**
1234  * Gets if view can be resized automatically.
1235  *
1236  * @param o view to check status
1237  *
1238  * @return EINA_TRUE if view can be resized, EINA_FALSE
1239  *         otherwise (errors, cannot be resized).
1240  */
1241 EAPI Eina_Bool    ewk_view_setting_enable_auto_resize_window_get(const Evas_Object *o);
1242
1243 /**
1244  * Sets if view can be resized automatically.
1245  *
1246  * @param o View.
1247  * @param resizable @c EINA_TRUE if we want to resize automatically;
1248  * @c EINA_FALSE otherwise. It defaults to @c EINA_TRUE
1249  *
1250  * @return EINA_TRUE if auto_resize_window status set, EINA_FALSE
1251  *         otherwise (errors).
1252  */
1253 EAPI Eina_Bool    ewk_view_setting_enable_auto_resize_window_set(Evas_Object *o, Eina_Bool resizable);
1254 EAPI Eina_Bool    ewk_view_setting_enable_scripts_get(const Evas_Object *o);
1255 EAPI Eina_Bool    ewk_view_setting_enable_scripts_set(Evas_Object *o, Eina_Bool enable);
1256
1257 EAPI Eina_Bool    ewk_view_setting_enable_plugins_get(const Evas_Object *o);
1258 EAPI Eina_Bool    ewk_view_setting_enable_plugins_set(Evas_Object *o, Eina_Bool enable);
1259
1260 /**
1261  * Get status of frame flattening.
1262  *
1263  * @param o view to check status
1264  *
1265  * @return EINA_TRUE if flattening is enabled, EINA_FALSE
1266  *         otherwise (errors, flattening disabled).
1267  */
1268 EAPI Eina_Bool    ewk_view_setting_enable_frame_flattening_get(const Evas_Object* o);
1269
1270 /**
1271  * Set frame flattening.
1272  *
1273  * @param o view to set flattening
1274  *
1275  * @return EINA_TRUE if flattening status set, EINA_FALSE
1276  *         otherwise (errors).
1277  */
1278 EAPI Eina_Bool    ewk_view_setting_enable_frame_flattening_set(Evas_Object* o, Eina_Bool enable);
1279
1280 EAPI Eina_Bool    ewk_view_setting_scripts_window_open_get(const Evas_Object *o);
1281 EAPI Eina_Bool    ewk_view_setting_scripts_window_open_set(Evas_Object *o, Eina_Bool allow);
1282
1283 EAPI Eina_Bool    ewk_view_setting_resizable_textareas_get(const Evas_Object *o);
1284 EAPI Eina_Bool    ewk_view_setting_resizable_textareas_set(Evas_Object *o, Eina_Bool enable);
1285
1286 EAPI const char  *ewk_view_setting_user_stylesheet_get(const Evas_Object *o);
1287 EAPI Eina_Bool    ewk_view_setting_user_stylesheet_set(Evas_Object *o, const char *uri);
1288
1289 EAPI Eina_Bool    ewk_view_setting_private_browsing_get(const Evas_Object *o);
1290 EAPI Eina_Bool    ewk_view_setting_private_browsing_set(Evas_Object *o, Eina_Bool enable);
1291 EAPI Eina_Bool    ewk_view_setting_offline_app_cache_get(const Evas_Object *o);
1292 EAPI Eina_Bool    ewk_view_setting_offline_app_cache_set(Evas_Object *o, Eina_Bool enable);
1293
1294 EAPI Eina_Bool    ewk_view_setting_caret_browsing_get(const Evas_Object *o);
1295 EAPI Eina_Bool    ewk_view_setting_caret_browsing_set(Evas_Object *o, Eina_Bool enable);
1296
1297 /**
1298  * Get current encoding of this View.
1299  *
1300  * @param o View.
1301  *
1302  * @return A pointer to an eina_strinshare containing the current custom
1303  * encoding for View object @param o, or @c 0 if it's not set.
1304  */
1305 EAPI const char  *ewk_view_setting_encoding_custom_get(const Evas_Object *o);
1306
1307 /**
1308  * Set encoding of this View and reload page.
1309  *
1310  * @param o View.
1311  * @param encoding The new encoding or @c 0 to restore the default encoding.
1312  *
1313  * @return @c EINA_TRUE on success, @c EINA_FALSE otherwise.
1314  */
1315 EAPI Eina_Bool    ewk_view_setting_encoding_custom_set(Evas_Object *o, const char *encoding);
1316 EAPI const char  *ewk_view_setting_encoding_default_get(const Evas_Object *o);
1317 EAPI Eina_Bool    ewk_view_setting_encoding_default_set(Evas_Object *o, const char *encoding);
1318
1319 EAPI int          ewk_view_setting_font_minimum_size_get(const Evas_Object *o);
1320 EAPI Eina_Bool    ewk_view_setting_font_minimum_size_set(Evas_Object *o, int size);
1321 EAPI int          ewk_view_setting_font_minimum_logical_size_get(const Evas_Object *o);
1322 EAPI Eina_Bool    ewk_view_setting_font_minimum_logical_size_set(Evas_Object *o, int size);
1323 EAPI int          ewk_view_setting_font_default_size_get(const Evas_Object *o);
1324 EAPI Eina_Bool    ewk_view_setting_font_default_size_set(Evas_Object *o, int size);
1325 EAPI int          ewk_view_setting_font_monospace_size_get(const Evas_Object *o);
1326 EAPI Eina_Bool    ewk_view_setting_font_monospace_size_set(Evas_Object *o, int size);
1327
1328 EAPI const char  *ewk_view_setting_font_standard_get(const Evas_Object *o);
1329 EAPI Eina_Bool    ewk_view_setting_font_standard_set(Evas_Object *o, const char *family);
1330
1331 EAPI const char  *ewk_view_setting_font_cursive_get(const Evas_Object *o);
1332 EAPI Eina_Bool    ewk_view_setting_font_cursive_set(Evas_Object *o, const char *family);
1333
1334 EAPI const char  *ewk_view_setting_font_monospace_get(const Evas_Object *o);
1335 EAPI Eina_Bool    ewk_view_setting_font_monospace_set(Evas_Object *o, const char *family);
1336
1337 EAPI const char  *ewk_view_setting_font_fantasy_get(const Evas_Object *o);
1338 EAPI Eina_Bool    ewk_view_setting_font_fantasy_set(Evas_Object *o, const char *family);
1339
1340 EAPI const char  *ewk_view_setting_font_serif_get(const Evas_Object *o);
1341 EAPI Eina_Bool    ewk_view_setting_font_serif_set(Evas_Object *o, const char *family);
1342
1343 EAPI const char  *ewk_view_setting_font_sans_serif_get(const Evas_Object *o);
1344 EAPI Eina_Bool    ewk_view_setting_font_sans_serif_set(Evas_Object *o, const char *family);
1345
1346 /**
1347  * Gets if the spatial naviagtion is enabled.
1348  *
1349  * @param o view object to get spatial navigation setting.
1350  * @return @c EINA_TRUE if spatial navigation is enabled, @c EINA_FALSE if not or on errors.
1351  */
1352 EAPI Eina_Bool    ewk_view_setting_spatial_navigation_get(Evas_Object *o);
1353
1354 /**
1355  * Sets the spatial navigation.
1356  *
1357  * @param o view object to set spatial navigation setting.
1358  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure
1359  */
1360 EAPI Eina_Bool    ewk_view_setting_spatial_navigation_set(Evas_Object *o, Eina_Bool enable);
1361
1362 /**
1363  * Gets if the local storage is enabled.
1364  *
1365  * @param o view object to get if local storage is enabled.
1366  * @return @c EINA_TRUE if local storage is enabled, @c EINA_FALSE if not or on errors.
1367  */
1368 EAPI Eina_Bool    ewk_view_setting_local_storage_get(Evas_Object *o);
1369
1370 /**
1371  * Sets the local storage of HTML5.
1372  *
1373  * @param o view object to set if local storage is enabled.
1374  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure
1375  */
1376 EAPI Eina_Bool    ewk_view_setting_local_storage_set(Evas_Object *o, Eina_Bool enable);
1377
1378 /**
1379  * Gets the local storage database path.
1380  *
1381  * @param o view object to get the local storage database path.
1382  * @return the local storage database path.
1383  */
1384 EAPI const char  *ewk_view_setting_local_storage_database_path_get(const Evas_Object *o);
1385
1386 /**
1387  * Sets the local storage database path.
1388  *
1389  * @param o view object to set the local storage database path.
1390  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure
1391  */
1392 EAPI Eina_Bool    ewk_view_setting_local_storage_database_path_set(Evas_Object *o, const char *path);
1393
1394 /**
1395  * Gets if the page cache is enabled.
1396  *
1397  * @param o view object to set if page cache is enabled.
1398  * @return @c EINA_TRUE if page cache is enabled, @c EINA_FALSE if not.
1399  */
1400 EAPI Eina_Bool    ewk_view_setting_page_cache_get(Evas_Object *o);
1401
1402 /**
1403  * Sets the page cache.
1404  *
1405  * @param o view object to set if page cache is enabled.
1406  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure
1407  */
1408 EAPI Eina_Bool    ewk_view_setting_page_cache_set(Evas_Object *o, Eina_Bool enable);
1409
1410 /**
1411  * Gets if the encoding detector is enabled.
1412  *
1413  * @param o view object to get if encoding detector is enabled.
1414  * @return @c EINA_TRUE if encoding detector is enabled, @c EINA_FALSE if not or on errors.
1415  */
1416 EAPI Eina_Bool    ewk_view_setting_encoding_detector_get(Evas_Object *o);
1417
1418 /**
1419  * Sets the encoding detector.
1420  *
1421  * @param o view object to set if encoding detector is enabled.
1422  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure
1423  */
1424 EAPI Eina_Bool    ewk_view_setting_encoding_detector_set(Evas_Object *o, Eina_Bool enable);
1425
1426 /**
1427  * Returns whether developer extensions are enabled for the given view.
1428  *
1429  * Currently, this is used to know whether the Web Inspector is enabled for a
1430  * given view.
1431  *
1432  * @param o view object to check.
1433  *
1434  * @return @c EINA_TRUE if developer extensions are enabled, @c EINA_FALSE
1435  *         otherwise.
1436  */
1437 EAPI Eina_Bool    ewk_view_setting_enable_developer_extras_get(Evas_Object *o);
1438
1439 /**
1440  * Enables/disables developer extensions for the given view.
1441  *
1442  * This currently controls whether the Web Inspector should be enabled.
1443  *
1444  * @param o The view whose setting will be changed.
1445  * @param enable @c EINA_TRUE to enable developer extras, @c EINA_FALSE to
1446  *               disable.
1447  *
1448  * @return @c EINA_TRUE on success, @EINA_FALSE on failure.
1449  */
1450 EAPI Eina_Bool    ewk_view_setting_enable_developer_extras_set(Evas_Object *o, Eina_Bool enable);
1451
1452 /* to be used by subclass implementations */
1453 /**
1454  * Similar to evas_object_smart_data_get(), but does type checking.
1455  *
1456  * @param o view object to query internal data.
1457  * @return internal data or @c 0 on errors (ie: incorrect type of @a o).
1458  */
1459 EAPI Ewk_View_Smart_Data *ewk_view_smart_data_get(const Evas_Object *o);
1460
1461 EAPI void ewk_view_scrolls_process(Ewk_View_Smart_Data *sd);
1462
1463 /**
1464  * Structure that keeps paint context.
1465  *
1466  * @note this is not for general use but just for subclasses that want
1467  *       to define their own backing store.
1468  */
1469 typedef struct _Ewk_View_Paint_Context Ewk_View_Paint_Context;
1470
1471 /**
1472  * Create a new paint context using the view as source and cairo as output.
1473  *
1474  * @param priv private handle pointer of the view to use as paint source.
1475  * @param cr cairo context to use as paint destination. A new
1476  *        reference is taken, so it's safe to call cairo_destroy()
1477  *        after this function returns.
1478  *
1479  * @return newly allocated instance or @c 0 on errors.
1480  *
1481  * @note this is not for general use but just for subclasses that want
1482  *       to define their own backing store.
1483  */
1484 EAPI Ewk_View_Paint_Context *ewk_view_paint_context_new(Ewk_View_Private_Data *priv, cairo_t *cr);
1485
1486 /**
1487  * Destroy previously created paint context.
1488  *
1489  * @param ctxt paint context to destroy. Must @b not be @c 0.
1490  *
1491  * @note this is not for general use but just for subclasses that want
1492  *       to define their own backing store.
1493  */
1494 EAPI void ewk_view_paint_context_free(Ewk_View_Paint_Context *ctxt);
1495
1496 /**
1497  * Save (push to stack) paint context status.
1498  *
1499  * @param ctxt paint context to save. Must @b not be @c 0.
1500  *
1501  * @see ewk_view_paint_context_restore()
1502  *
1503  * @note this is not for general use but just for subclasses that want
1504  *       to define their own backing store.
1505  */
1506 EAPI void ewk_view_paint_context_save(Ewk_View_Paint_Context *ctxt);
1507
1508 /**
1509  * Restore (pop from stack) paint context status.
1510  *
1511  * @param ctxt paint context to restore. Must @b not be @c 0.
1512  *
1513  * @see ewk_view_paint_context_save()
1514  *
1515  * @note this is not for general use but just for subclasses that want
1516  *       to define their own backing store.
1517  */
1518 EAPI void ewk_view_paint_context_restore(Ewk_View_Paint_Context *ctxt);
1519
1520 /**
1521  * Clip paint context drawings to given area.
1522  *
1523  * @param ctxt paint context to clip. Must @b not be @c 0.
1524  * @param area clip area to use.
1525  *
1526  * @see ewk_view_paint_context_save()
1527  * @see ewk_view_paint_context_restore()
1528  *
1529  * @note this is not for general use but just for subclasses that want
1530  *       to define their own backing store.
1531  */
1532 EAPI void ewk_view_paint_context_clip(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
1533
1534 /**
1535  * Paint using context using given area.
1536  *
1537  * @param ctxt paint context to paint. Must @b not be @c 0.
1538  * @param area paint area to use. Coordinates are relative to current viewport,
1539  *        thus "scrolled".
1540  *
1541  * @note one may use cairo functions on the cairo context to
1542  *       translate, scale or any modification that may fit his desires.
1543  *
1544  * @see ewk_view_paint_context_clip()
1545  * @see ewk_view_paint_context_paint_contents()
1546  *
1547  * @note this is not for general use but just for subclasses that want
1548  *       to define their own backing store.
1549  */
1550 EAPI void ewk_view_paint_context_paint(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
1551
1552 /**
1553  * Paint just contents using context using given area.
1554  *
1555  * Unlike ewk_view_paint_context_paint(), this function paint just
1556  * bare contents and ignores any scrolling, scrollbars and extras. It
1557  * will walk the rendering tree and paint contents inside the given
1558  * area to the cairo context specified in @a ctxt.
1559  *
1560  * @param ctxt paint context to paint. Must @b not be @c 0.
1561  * @param area paint area to use. Coordinates are absolute to page.
1562  *
1563  * @note one may use cairo functions on the cairo context to
1564  *       translate, scale or any modification that may fit his desires.
1565  *
1566  * @see ewk_view_paint_context_clip()
1567  * @see ewk_view_paint_context_paint()
1568  *
1569  * @note this is not for general use but just for subclasses that want
1570  *       to define their own backing store.
1571  */
1572 EAPI void ewk_view_paint_context_paint_contents(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
1573
1574 /**
1575  * Scale the contents by the given factors.
1576  *
1577  * This function applies a scaling transformation using Cairo.
1578  *
1579  * @param ctxt    paint context to paint. Must @b not be @c 0.
1580  * @param scale_x scale factor for the X dimension.
1581  * @param scale_y scale factor for the Y dimension.
1582  */
1583 EAPI void ewk_view_paint_context_scale(Ewk_View_Paint_Context *ctxt, float scale_x, float scale_y);
1584
1585 /**
1586  * Performs a translation of the origin coordinates.
1587  *
1588  * This function moves the origin coordinates by @p x and @p y pixels.
1589  *
1590  * @param ctxt paint context to paint. Must @b not be @c 0.
1591  * @param x    amount of pixels to translate in the X dimension.
1592  * @param y    amount of pixels to translate in the Y dimension.
1593  */
1594 EAPI void ewk_view_paint_context_translate(Ewk_View_Paint_Context *ctxt, float x, float y);
1595
1596 /**
1597  * Paint using given graphics context the given area.
1598  *
1599  * This uses viewport relative area and will also handle scrollbars
1600  * and other extra elements. See ewk_view_paint_contents() for the
1601  * alternative function.
1602  *
1603  * @param priv private handle pointer of view to use as paint source.
1604  * @param cr cairo context to use as paint destination. Its state will
1605  *        be saved before operation and restored afterwards.
1606  * @param area viewport relative geometry to paint.
1607  *
1608  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure, like
1609  *         incorrect parameters.
1610  *
1611  * @note this is an easy to use version, but internal structures are
1612  *       always created, then graphics context is clipped, then
1613  *       painted, restored and destroyed. This might not be optimum,
1614  *       so using #Ewk_View_Paint_Context may be a better solutions
1615  *       for large number of operations.
1616  *
1617  * @see ewk_view_paint_contents()
1618  * @see ewk_view_paint_context_paint()
1619  *
1620  * @note this is not for general use but just for subclasses that want
1621  *       to define their own backing store.
1622  */
1623 EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
1624
1625 /**
1626  * Paint just contents using given graphics context the given area.
1627  *
1628  * This uses absolute coordinates for area and will just handle
1629  * contents, no scrollbars or extras. See ewk_view_paint() for the
1630  * alternative solution.
1631  *
1632  * @param priv private handle pointer of view to use as paint source.
1633  * @param cr cairo context to use as paint destination. Its state will
1634  *        be saved before operation and restored afterwards.
1635  * @param area absolute geometry to paint.
1636  *
1637  * @return @c EINA_TRUE on success and @c EINA_FALSE on failure, like
1638  *         incorrect parameters.
1639  *
1640  * @note this is an easy to use version, but internal structures are
1641  *       always created, then graphics context is clipped, then
1642  *       painted, restored and destroyed. This might not be optimum,
1643  *       so using #Ewk_View_Paint_Context may be a better solutions
1644  *       for large number of operations.
1645  *
1646  * @see ewk_view_paint()
1647  * @see ewk_view_paint_context_paint_contents()
1648  *
1649  * @note this is not for general use but just for subclasses that want
1650  *       to define their own backing store.
1651  */
1652 EAPI Eina_Bool ewk_view_paint_contents(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
1653
1654 /**
1655  * Gets attributes of viewport meta tag.
1656  *
1657  * @param o view.
1658  * @param w width.
1659  * @param h height.
1660  * @param init_scale initial Scale value.
1661  * @param max_scale maximum Scale value.
1662  * @param min_scale minimum Scale value.
1663  * @param device_pixel_ratio value.
1664  * @param user_scalable user Scalable value.
1665  */
1666 EAPI void ewk_view_viewport_attributes_get(Evas_Object *o, float *w, float *h, float *init_scale, float *max_scale, float *min_scale, float *device_pixel_ratio , Eina_Bool *user_scalable);
1667
1668 /**
1669  * Sets the zoom range.
1670  *
1671  * @param o view.
1672  * @param min_scale minimum value of zoom range.
1673  * @param max_scale maximum value of zoom range.
1674  *
1675  * @return @c EINA_TRUE if zoom range is changed, @c EINA_FALSE if not or failure.
1676  */
1677 EAPI Eina_Bool ewk_view_zoom_range_set(Evas_Object *o, float min_scale, float max_scale);
1678
1679 /**
1680  * Gets the minimum value of zoom range.
1681  *
1682  * @param o view.
1683  *
1684  * @return minimum value of zoom range, or @c -1.0 on failure.
1685  */
1686 EAPI float ewk_view_zoom_range_min_get(Evas_Object *o);
1687
1688 /**
1689  * Gets the maximum value of zoom range.
1690  *
1691  * @param o view.
1692  *
1693  * @return maximum value of zoom range, or @c -1.0 on failure.
1694  */
1695 EAPI float ewk_view_zoom_range_max_get(Evas_Object *o);
1696
1697 /**
1698  * Sets if zoom is enabled.
1699  *
1700  * @param o view.
1701  * @param user_scalable boolean pointer in which to enable zoom. It defaults
1702  * to @c EINA_TRUE.
1703  *
1704  * @return @c EINA_TRUE on success, or @c EINA_FALSE on failure
1705  */
1706 EAPI Eina_Bool ewk_view_user_scalable_set(Evas_Object *o, Eina_Bool user_scalable);
1707
1708 /**
1709  * Gets if zoom is enabled.
1710  *
1711  * @param o view.
1712  * @param user_scalable where to return the current user scalable value.
1713  *
1714  * @return @c EINA_TRUE if zoom is enabled, @c EINA_FALSE if not or on failure.
1715  */
1716 EAPI Eina_Bool ewk_view_user_scalable_get(Evas_Object *o);
1717
1718 /**
1719  * Gets device pixel ratio value.
1720  *
1721  * @param o view.
1722  * @param user_scalable where to return the current user scalable value.
1723  *
1724  * @return device pixel ratio or @c -1.0 on failure.
1725  */
1726 EAPI float ewk_view_device_pixel_ratio_get(Evas_Object *o);
1727
1728 /**
1729  * Sets view mode. The view-mode media feature describes the mode in which the
1730  * Web application is being shown as a running application.
1731  *
1732  * @param o view object to change view mode.
1733  * @param view_mode page view mode to be set
1734  *
1735  * @return @c EINA_TRUE if view mode is set as view_mode, @c EINA_FALSE otherwise.
1736  */
1737 EAPI Eina_Bool ewk_view_mode_set(Evas_Object *o, Ewk_View_Mode view_mode);
1738
1739 /**
1740  * Gets view mode. The view-mode media feature describes the mode in which the
1741  * Web application is being shown as a running application.
1742  *
1743  * @param o view object to query view mode.
1744  *
1745  * @return enum value of Ewk_View_Mode that indicates current view mode.
1746  */
1747 EAPI Ewk_View_Mode ewk_view_mode_get(Evas_Object *o);
1748 #ifdef __cplusplus
1749 }
1750 #endif
1751 #endif // ewk_view_h