diff options
author | Shimeng (Simon) Wang <swang@google.com> | 2010-12-07 17:22:45 -0800 |
---|---|---|
committer | Shimeng (Simon) Wang <swang@google.com> | 2010-12-22 14:15:40 -0800 |
commit | 4576aa36e9a9671459299c7963ac95aa94beaea9 (patch) | |
tree | 3863574e050f168c0126ecb47c83319fab0972d8 /WebKitTools/EWebLauncher/main.c | |
parent | 55323ac613cc31553107b68603cb627264d22bb0 (diff) | |
download | external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.zip external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.tar.gz external_webkit-4576aa36e9a9671459299c7963ac95aa94beaea9.tar.bz2 |
Merge WebKit at r73109: Initial merge by git.
Change-Id: I61f1a66d9642e3d8405d3ac6ccab2a53421c75d8
Diffstat (limited to 'WebKitTools/EWebLauncher/main.c')
-rw-r--r-- | WebKitTools/EWebLauncher/main.c | 67 |
1 files changed, 56 insertions, 11 deletions
diff --git a/WebKitTools/EWebLauncher/main.c b/WebKitTools/EWebLauncher/main.c index 8ba58d8..5f417d0 100644 --- a/WebKitTools/EWebLauncher/main.c +++ b/WebKitTools/EWebLauncher/main.c @@ -60,6 +60,7 @@ #define MAX_ZOOM_LEVEL 13 static int currentZoomLevel = DEFAULT_ZOOM_LEVEL; +static float currentZoom = 1.0; // the zoom values are chosen to be like in Mozilla Firefox 3 static int zoomLevels[] = {30, 50, 67, 80, 90, @@ -72,6 +73,12 @@ static Eina_List *windows = NULL; static char *themePath = NULL; +static const char *backingStores[] = { + "tiled", + "single", + NULL +}; + typedef struct _Window_Properties { Eina_Bool toolbarsVisible:1; Eina_Bool statusbarVisible:1; @@ -101,6 +108,8 @@ static const Ecore_Getopt options = { ECORE_GETOPT_CALLBACK_NOARGS ('E', "list-engines", "list ecore-evas engines.", ecore_getopt_callback_ecore_evas_list_engines, NULL), + ECORE_GETOPT_CHOICE + ('b', "backing-store", "choose backing store to use.", backingStores), ECORE_GETOPT_STORE_DEF_BOOL ('F', "fullscreen", "fullscreen mode.", 0), ECORE_GETOPT_CALLBACK_ARGS @@ -143,12 +152,13 @@ typedef struct _ELauncher { Evas_Object *browser; const char *theme; const char *userAgent; + const char *backingStore; Viewport viewport; } ELauncher; static void browserDestroy(Ecore_Evas *ee); static void closeWindow(Ecore_Evas *ee); -static int browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, unsigned char isFullscreen, const char *databasePath); +static int browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, const char *backingStore, unsigned char isFullscreen, const char *databasePath); static void print_history(Eina_List *list) @@ -183,7 +193,19 @@ print_history(Eina_List *list) } } -static void +static int +nearest_zoom_level_get(float factor) +{ + int i, intFactor = (int)(factor * 100.0); + for (i = 0; zoomLevels[i] <= intFactor; i++) { } + printf("factor=%f, intFactor=%d, zoomLevels[%d]=%d, zoomLevels[%d]=%d\n", + factor, intFactor, i-1, zoomLevels[i-1], i, zoomLevels[i]); + if (intFactor - zoomLevels[i-1] < zoomLevels[i] - intFactor) + return i - 1; + return i; +} + +static Eina_Bool zoom_level_set(Evas_Object *webview, int level) { float factor = ((float) zoomLevels[level]) / 100.0; @@ -192,7 +214,7 @@ zoom_level_set(Evas_Object *webview, int level) evas_object_geometry_get(webview, &ox, &oy, NULL, NULL); cx = mx - ox; cy = my - oy; - ewk_view_zoom_animated_set(webview, factor, 0.5, cx, cy); + return ewk_view_zoom_animated_set(webview, factor, 0.5, cx, cy); } static void @@ -284,6 +306,10 @@ on_load_finished(void *user_data, Evas_Object *webview, void *event_info) else info("Failed loading page: %d %s \"%s\", url=%s\n", err->code, err->domain, err->description, err->failing_url); + + currentZoom = ewk_view_zoom_get(webview); + currentZoomLevel = nearest_zoom_level_get(currentZoom); + info("WebCore Zoom=%f, currentZoomLevel=%d\n", currentZoom, currentZoomLevel); } static void @@ -557,17 +583,18 @@ on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) info("Command::keyboard navigation toggle\n");*/ } else if (!strcmp(ev->key, "F7")) { info("Zoom out (F7) was pressed.\n"); - if (currentZoomLevel > MIN_ZOOM_LEVEL) - zoom_level_set(obj, --currentZoomLevel); + if (currentZoomLevel > MIN_ZOOM_LEVEL && zoom_level_set(obj, currentZoomLevel - 1)) + currentZoomLevel--; } else if (!strcmp(ev->key, "F8")) { info("Zoom in (F8) was pressed.\n"); - if (currentZoomLevel < MAX_ZOOM_LEVEL) - zoom_level_set(obj, ++currentZoomLevel); + if (currentZoomLevel < MAX_ZOOM_LEVEL && zoom_level_set(obj, currentZoomLevel + 1)) + currentZoomLevel++; } else if (!strcmp(ev->key, "F9")) { info("Create new window (F9) was pressed.\n"); Eina_Rectangle geometry = {0, 0, 0, 0}; browserCreate("http://www.google.com", - app->theme, app->userAgent, geometry, NULL, 0, NULL); + app->theme, app->userAgent, geometry, app-> backingStore, + NULL, 0, NULL); } else if (!strcmp(ev->key, "F10")) { Evas_Coord x, y, w, h; Evas_Object *frame = ewk_view_frame_main_get(obj); @@ -580,6 +607,15 @@ on_key_down(void *data, Evas *e, Evas_Object *obj, void *event_info) h *= 4; info("Pre-render %d,%d + %dx%d\n", x, y, w, h); ewk_view_pre_render_region(obj, x, y, w, h, zoom); + } else if (!strcmp(ev->key, "F11")) { + info("Pre-render 1 extra column/row with current zoom"); + ewk_view_pre_render_relative_radius(obj, 1); + } else if (!strcmp(ev->key, "d")) { + info("Render suspended"); + ewk_view_disable_render(obj); + } else if (!strcmp(ev->key, "e")) { + info("Render resumed"); + ewk_view_enable_render(obj); } } @@ -622,7 +658,7 @@ quit(Eina_Bool success, const char *msg) } static int -browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, unsigned char isFullscreen, const char *databasePath) +browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Rectangle geometry, const char *engine, const char *backingStore, unsigned char isFullscreen, const char *databasePath) { if ((geometry.w <= 0) && (geometry.h <= 0)) { geometry.w = DEFAULT_WIDTH; @@ -652,6 +688,7 @@ browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Re app->theme = theme; app->userAgent = userAgent; + app->backingStore = backingStore; app->bg = evas_object_rectangle_add(app->evas); evas_object_name_set(app->bg, "bg"); @@ -660,8 +697,14 @@ browserCreate(const char *url, const char *theme, const char *userAgent, Eina_Re evas_object_resize(app->bg, geometry.w, geometry.h); evas_object_layer_set(app->bg, EVAS_LAYER_MIN); evas_object_show(app->bg); - app->browser = ewk_view_single_add(app->evas); + if (backingStore && !strcasecmp(backingStore, "single")) { + app->browser = ewk_view_single_add(app->evas); + info("backing store: single\n"); + } else { + app->browser = ewk_view_tiled_add(app->evas); + info("backing store: tiled\n"); + } ewk_view_theme_set(app->browser, theme); if (userAgent) ewk_view_setting_user_agent_set(app->browser, userAgent); @@ -783,6 +826,7 @@ main(int argc, char *argv[]) char *engine = NULL; char *theme = NULL; + char *backingStore = (char *)backingStores[0]; unsigned char quitOption = 0; unsigned char isFullscreen = 0; @@ -792,6 +836,7 @@ main(int argc, char *argv[]) Ecore_Getopt_Value values[] = { ECORE_GETOPT_VALUE_STR(engine), ECORE_GETOPT_VALUE_BOOL(quitOption), + ECORE_GETOPT_VALUE_STR(backingStore), ECORE_GETOPT_VALUE_BOOL(isFullscreen), ECORE_GETOPT_VALUE_PTR_CAST(geometry), ECORE_GETOPT_VALUE_STR(theme), @@ -847,7 +892,7 @@ main(int argc, char *argv[]) if (proxyUri) ewk_settings_proxy_uri_set(proxyUri); - browserCreate(url, themePath, userAgent, geometry, engine, isFullscreen, path); + browserCreate(url, themePath, userAgent, geometry, engine, backingStore, isFullscreen, path); ecore_event_handler_add(ECORE_EVENT_SIGNAL_EXIT, main_signal_exit, &windows); ecore_main_loop_begin(); |