#ifndef ewk_view_h
#define ewk_view_h
#include <Evas.h>
#include <cairo.h>
#include <ewk_history.h>
#ifdef __cplusplus
extern "C" {
#endif
typedef struct _Ewk_View_Smart_Data Ewk_View_Smart_Data;
typedef struct _Ewk_View_Smart_Class Ewk_View_Smart_Class;
struct _Ewk_View_Smart_Class {
Evas_Smart_Class sc;
unsigned long version;
Evas_Object *(*window_create)(Ewk_View_Smart_Data *sd);
Evas_Object *(*backing_store_add)(Ewk_View_Smart_Data *sd);
Eina_Bool (*scrolls_process)(Ewk_View_Smart_Data *sd);
Eina_Bool (*repaints_process)(Ewk_View_Smart_Data *sd);
Eina_Bool (*contents_resize)(Ewk_View_Smart_Data *sd, int w, int h);
Eina_Bool (*zoom_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
Eina_Bool (*zoom_weak_set)(Ewk_View_Smart_Data *sd, float zoom, Evas_Coord cx, Evas_Coord cy);
void (*zoom_weak_smooth_scale_set)(Ewk_View_Smart_Data *sd, Eina_Bool smooth_scale);
void (*bg_color_set)(Ewk_View_Smart_Data *sd, unsigned char r, unsigned char g, unsigned char b, unsigned char a);
void (*flush)(Ewk_View_Smart_Data *sd);
Eina_Bool (*pre_render_region)(Ewk_View_Smart_Data *sd, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h, float zoom);
void (*pre_render_cancel)(Ewk_View_Smart_Data *sd);
Eina_Bool (*focus_in)(Ewk_View_Smart_Data *sd);
Eina_Bool (*focus_out)(Ewk_View_Smart_Data *sd);
Eina_Bool (*mouse_wheel)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Wheel *ev);
Eina_Bool (*mouse_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Down *ev);
Eina_Bool (*mouse_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Up *ev);
Eina_Bool (*mouse_move)(Ewk_View_Smart_Data *sd, const Evas_Event_Mouse_Move *ev);
Eina_Bool (*key_down)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Down *ev);
Eina_Bool (*key_up)(Ewk_View_Smart_Data *sd, const Evas_Event_Key_Up *ev);
void (*add_console_message)(Ewk_View_Smart_Data *sd, const char *message, unsigned int lineNumber, const char *sourceID);
void (*run_javascript_alert)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
Eina_Bool (*run_javascript_confirm)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message);
Eina_Bool (*run_javascript_prompt)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *message, const char *defaultValue, char **value);
Eina_Bool (*should_interrupt_javascript)(Ewk_View_Smart_Data *sd);
void (*exceeded_database_quota)(Ewk_View_Smart_Data *sd, Evas_Object *frame, const char *databaseName);
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);
};
#define EWK_VIEW_SMART_CLASS_VERSION 1UL
#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}
#define EWK_VIEW_SMART_CLASS_INIT_NULL EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NULL)
#define EWK_VIEW_SMART_CLASS_INIT_VERSION EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_VERSION)
#define EWK_VIEW_SMART_CLASS_INIT_NAME_VERSION(name) EWK_VIEW_SMART_CLASS_INIT(EVAS_SMART_CLASS_INIT_NAME_VERSION(name))
typedef struct _Ewk_View_Private_Data Ewk_View_Private_Data;
enum _Ewk_Menu_Item_Type {
EWK_MENU_SEPARATOR,
EWK_MENU_GROUP,
EWK_MENU_OPTION
};
typedef enum _Ewk_Menu_Item_Type Ewk_Menu_Item_Type;
typedef struct _Ewk_Menu_Item Ewk_Menu_Item;
struct _Ewk_Menu_Item {
const char *text;
Ewk_Menu_Item_Type type;
};
typedef struct _Ewk_Menu Ewk_Menu;
struct _Ewk_Menu {
Eina_List* items;
int x;
int y;
int width;
int height;
};
typedef struct _Ewk_Download Ewk_Download;
struct _Ewk_Download {
const char* url;
};
typedef struct _Ewk_Scroll_Request Ewk_Scroll_Request;
struct _Ewk_Scroll_Request {
Evas_Coord dx, dy;
Evas_Coord x, y, w, h, x2, y2;
Eina_Bool main_scroll;
};
struct _Ewk_View_Smart_Data {
Evas_Object_Smart_Clipped_Data base;
const Ewk_View_Smart_Class *api;
Evas_Object *self;
Evas_Object *main_frame;
Evas_Object *backing_store;
Ewk_View_Private_Data *_priv;
struct {
Evas_Coord x, y, w, h;
} view;
struct {
struct {
float start;
float end;
float current;
} zoom;
} animated_zoom;
struct {
unsigned char r, g, b, a;
} bg_color;
Eina_Bool zoom_weak_smooth_scale:1;
struct {
Eina_Bool any:1;
Eina_Bool size:1;
Eina_Bool position:1;
Eina_Bool frame_rect:1;
} changed;
};
EAPI Eina_Bool ewk_view_base_smart_set(Ewk_View_Smart_Class *api);
EAPI Eina_Bool ewk_view_single_smart_set(Ewk_View_Smart_Class *api);
EAPI Evas_Object *ewk_view_single_add(Evas *e);
EAPI void ewk_view_fixed_layout_size_set(Evas_Object *o, Evas_Coord w, Evas_Coord h);
EAPI void ewk_view_fixed_layout_size_get(Evas_Object *o, Evas_Coord *w, Evas_Coord *h);
EAPI void ewk_view_theme_set(Evas_Object *o, const char *path);
EAPI const char *ewk_view_theme_get(Evas_Object *o);
EAPI Evas_Object *ewk_view_frame_main_get(const Evas_Object *o);
EAPI Evas_Object *ewk_view_frame_focused_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_uri_set(Evas_Object *o, const char *uri);
EAPI const char *ewk_view_uri_get(const Evas_Object *o);
EAPI const char *ewk_view_title_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_editable_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_editable_set(Evas_Object *o, Eina_Bool editable);
EAPI void ewk_view_bg_color_set(Evas_Object *o, int r, int g, int b, int a);
EAPI void ewk_view_bg_color_get(const Evas_Object *o, int *r, int *g, int *b, int *a);
EAPI char *ewk_view_selection_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_select_none(Evas_Object *o);
EAPI Eina_Bool ewk_view_select_all(Evas_Object *o);
EAPI Eina_Bool ewk_view_select_paragraph(Evas_Object *o);
EAPI Eina_Bool ewk_view_select_sentence(Evas_Object *o);
EAPI Eina_Bool ewk_view_select_line(Evas_Object *o);
EAPI Eina_Bool ewk_view_select_word(Evas_Object *o);
EAPI void ewk_view_popup_selected_set(Evas_Object *o, int index);
EAPI Eina_Bool ewk_view_popup_destroy(Evas_Object *o);
EAPI Eina_Bool ewk_view_text_search(const Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool forward, Eina_Bool wrap);
EAPI unsigned int ewk_view_text_matches_mark(Evas_Object *o, const char *string, Eina_Bool case_sensitive, Eina_Bool highlight, unsigned int limit);
EAPI Eina_Bool ewk_view_text_matches_unmark_all(Evas_Object *o);
EAPI Eina_Bool ewk_view_text_matches_highlight_set(Evas_Object *o, Eina_Bool highlight);
EAPI Eina_Bool ewk_view_text_matches_highlight_get(const Evas_Object *o);
EAPI double ewk_view_load_progress_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_stop(Evas_Object *o);
EAPI Eina_Bool ewk_view_reload(Evas_Object *o);
EAPI Eina_Bool ewk_view_reload_full(Evas_Object *o);
EAPI Eina_Bool ewk_view_back(Evas_Object *o);
EAPI Eina_Bool ewk_view_forward(Evas_Object *o);
EAPI Eina_Bool ewk_view_navigate(Evas_Object *o, int steps);
EAPI Eina_Bool ewk_view_back_possible(Evas_Object *o);
EAPI Eina_Bool ewk_view_forward_possible(Evas_Object *o);
EAPI Eina_Bool ewk_view_navigate_possible(Evas_Object *o, int steps);
EAPI Eina_Bool ewk_view_history_enable_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_history_enable_set(Evas_Object *o, Eina_Bool enable);
EAPI Ewk_History *ewk_view_history_get(const Evas_Object *o);
EAPI float ewk_view_zoom_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_zoom_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
EAPI Eina_Bool ewk_view_zoom_weak_smooth_scale_get(const Evas_Object *o);
EAPI void ewk_view_zoom_weak_smooth_scale_set(Evas_Object *o, Eina_Bool smooth_scale);
EAPI Eina_Bool ewk_view_zoom_weak_set(Evas_Object *o, float zoom, Evas_Coord cx, Evas_Coord cy);
EAPI Eina_Bool ewk_view_zoom_animated_mark_start(Evas_Object *o, float zoom);
EAPI Eina_Bool ewk_view_zoom_animated_mark_end(Evas_Object *o, float zoom);
EAPI Eina_Bool ewk_view_zoom_animated_mark_current(Evas_Object *o, float zoom);
EAPI Eina_Bool ewk_view_zoom_animated_mark_stop(Evas_Object *o);
EAPI Eina_Bool ewk_view_zoom_animated_set(Evas_Object *o, float zoom, float duration, Evas_Coord cx, Evas_Coord cy);
EAPI Eina_Bool ewk_view_zoom_text_only_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_zoom_text_only_set(Evas_Object *o, Eina_Bool setting);
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);
EAPI void ewk_view_pre_render_cancel(Evas_Object *o);
EAPI const char *ewk_view_setting_user_agent_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_user_agent_set(Evas_Object *o, const char *user_agent);
EAPI Eina_Bool ewk_view_setting_auto_load_images_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_auto_load_images_set(Evas_Object *o, Eina_Bool automatic);
EAPI Eina_Bool ewk_view_setting_auto_shrink_images_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_auto_shrink_images_set(Evas_Object *o, Eina_Bool automatic);
EAPI Eina_Bool ewk_view_setting_enable_scripts_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_enable_scripts_set(Evas_Object *o, Eina_Bool enable);
EAPI Eina_Bool ewk_view_setting_enable_plugins_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_enable_plugins_set(Evas_Object *o, Eina_Bool enable);
EAPI Eina_Bool ewk_view_setting_scripts_window_open_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_scripts_window_open_set(Evas_Object *o, Eina_Bool allow);
EAPI Eina_Bool ewk_view_setting_resizable_textareas_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_resizable_textareas_set(Evas_Object *o, Eina_Bool enable);
EAPI const char *ewk_view_setting_user_stylesheet_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_user_stylesheet_set(Evas_Object *o, const char *uri);
EAPI Eina_Bool ewk_view_setting_private_browsing_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_private_browsing_set(Evas_Object *o, Eina_Bool enable);
EAPI Eina_Bool ewk_view_setting_caret_browsing_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_caret_browsing_set(Evas_Object *o, Eina_Bool enable);
EAPI const char *ewk_view_setting_encoding_custom_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_encoding_custom_set(Evas_Object *o, const char *encoding);
EAPI const char *ewk_view_setting_encoding_default_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_encoding_default_set(Evas_Object *o, const char *encoding);
EAPI int ewk_view_setting_font_minimum_size_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_minimum_size_set(Evas_Object *o, int size);
EAPI int ewk_view_setting_font_minimum_logical_size_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_minimum_logical_size_set(Evas_Object *o, int size);
EAPI int ewk_view_setting_font_default_size_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_default_size_set(Evas_Object *o, int size);
EAPI int ewk_view_setting_font_monospace_size_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_monospace_size_set(Evas_Object *o, int size);
EAPI const char *ewk_view_setting_font_standard_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_standard_set(Evas_Object *o, const char *family);
EAPI const char *ewk_view_setting_font_cursive_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_cursive_set(Evas_Object *o, const char *family);
EAPI const char *ewk_view_setting_font_monospace_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_monospace_set(Evas_Object *o, const char *family);
EAPI const char *ewk_view_setting_font_fantasy_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_fantasy_set(Evas_Object *o, const char *family);
EAPI const char *ewk_view_setting_font_serif_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_serif_set(Evas_Object *o, const char *family);
EAPI const char *ewk_view_setting_font_sans_serif_get(const Evas_Object *o);
EAPI Eina_Bool ewk_view_setting_font_sans_serif_set(Evas_Object *o, const char *family);
EAPI Ewk_View_Smart_Data *ewk_view_smart_data_get(const Evas_Object *o);
EAPI const Eina_Rectangle *ewk_view_repaints_get(const Ewk_View_Private_Data *priv, size_t *count);
EAPI const Ewk_Scroll_Request *ewk_view_scroll_requests_get(const Ewk_View_Private_Data *priv, size_t *count);
EAPI void ewk_view_repaint_add(Ewk_View_Private_Data *priv, Evas_Coord x, Evas_Coord y, Evas_Coord w, Evas_Coord h);
EAPI void ewk_view_layout_if_needed_recursive(Ewk_View_Private_Data *priv);
EAPI void ewk_view_scrolls_process(Ewk_View_Smart_Data *sd);
typedef struct _Ewk_View_Paint_Context Ewk_View_Paint_Context;
EAPI Ewk_View_Paint_Context *ewk_view_paint_context_new(Ewk_View_Private_Data *priv, cairo_t *cr);
EAPI void ewk_view_paint_context_free(Ewk_View_Paint_Context *ctxt);
EAPI void ewk_view_paint_context_save(Ewk_View_Paint_Context *ctxt);
EAPI void ewk_view_paint_context_restore(Ewk_View_Paint_Context *ctxt);
EAPI void ewk_view_paint_context_clip(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
EAPI void ewk_view_paint_context_paint(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
EAPI void ewk_view_paint_context_paint_contents(Ewk_View_Paint_Context *ctxt, const Eina_Rectangle *area);
EAPI void ewk_view_paint_context_scale(Ewk_View_Paint_Context *ctxt, float scale_x, float scale_y);
EAPI void ewk_view_paint_context_translate(Ewk_View_Paint_Context *ctxt, float x, float y);
EAPI Eina_Bool ewk_view_paint(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
EAPI Eina_Bool ewk_view_paint_contents(Ewk_View_Private_Data *priv, cairo_t *cr, const Eina_Rectangle *area);
#ifdef __cplusplus
}
#endif
#endif // ewk_view_h