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