Fixed scale problem of magnifier on WVGA mode
authorbunam.jeon <bunam.jeon@samsung.com>
Thu, 18 Apr 2013 05:12:18 +0000 (14:12 +0900)
committerbunam.jeon <bunam.jeon@samsung.com>
Thu, 18 Apr 2013 06:41:46 +0000 (15:41 +0900)
[Title] Fixed scale problem of magnifier on WVGA mode
[Issue#] N_SE-34915
[Problem] The magnifier does not shrink
[Cause] No code related to the scale applied.
[Solution] add code to adjust the scale dynamically.

Change-Id: If79401c0b3d4833e989c9b7466e87eb975095063

Source/WebKit2/UIProcess/API/efl/tizen/Magnifier.edc
Source/WebKit2/UIProcess/API/efl/tizen/TextSelectionMagnifier.cpp
Source/WebKit2/UIProcess/API/efl/tizen/TextSelectionMagnifier.h

index 78f7fd0..f7f1adb 100755 (executable)
@@ -15,7 +15,7 @@ group {
                 description {
                     state: "default" 0.0;
                     fixed: 1 1;
-                    min: 352 177;
+                    min: 332 177;
                     align: 0.5 0.0;
                     visible: 1;
                     color: 0 0 0 0;
@@ -31,7 +31,7 @@ group {
                     min: 146 177;
                     align: 0.0 0.0;
                     rel1 { relative: 0.0 0.0; to: "bg"; }
-                    rel2 { relative: 0.5 1.0; to: "bg"; offset: -20 -1;}
+                    rel2 { relative: 0.0 1.0; to: "bg"; }
                     image {
                         normal: "magnifier_left.png";
                         border: 21 1 20 44;
@@ -51,10 +51,10 @@ group {
                     max: 40 999999;
                     align: 0.0 0.0;
                     rel1 { relative: 1.0 0.0; to: "bg_left"; }
-                    rel2 { relative: 0.0 1.0; to: "bg_right"; }
+                    rel2 { relative: 1.0 1.0; to: "bg"; }
                     image {
                         normal: "magnifier_middle.png";
-                        border: 0 40 20 44;
+                        border: 0 0 20 44;
                     }
                     image.middle: 1;
                     fill.smooth: 0;
@@ -68,7 +68,7 @@ group {
                     state: "default" 0.0;
                     fixed: 1 1;
                     min: 146 177;
-                    rel1 { relative: 0.5 0.0; to: "bg"; offset: 21 0;}
+                    rel1 { relative: 1.0 0.0; to: "bg_middle";}
                     rel2.to: "bg";
                     image {
                         normal: "magnifier_right.png";
index 38f2c24..7d98fa1 100755 (executable)
@@ -42,8 +42,10 @@ TextSelectionMagnifier::TextSelectionMagnifier(EwkViewImpl* viewImpl)
     : m_viewImpl(viewImpl)
     , m_image(0)
     , m_magnifier(0)
-    , m_width(320)
-    , m_height(120)
+    , m_width(0)
+    , m_height(0)
+    , m_edjeWidth(0)
+    , m_edjeHeight(0)
 {
 }
 
@@ -54,6 +56,9 @@ TextSelectionMagnifier::~TextSelectionMagnifier()
     evas_object_del(m_magnifier);
 }
 
+static float s_widtheOffset = 32;
+static float s_heightOffset = 60;
+
 void TextSelectionMagnifier::update(const IntPoint& point)
 {
     if (!m_magnifier) {
@@ -63,6 +68,11 @@ void TextSelectionMagnifier::update(const IntPoint& point)
 
         m_magnifier = elm_layout_add(topWidget);
         elm_layout_file_set(m_magnifier, EDJE_DIR"/Magnifier.edj", "magnifier");
+
+        edje_object_part_geometry_get(elm_layout_edje_get(m_magnifier), "bg", 0, 0, &m_edjeWidth, &m_edjeHeight);
+
+        m_width = m_edjeWidth - s_widtheOffset;
+        m_height = m_edjeHeight - s_heightOffset;
     }
 
     int viewX, viewY, viewWidth, viewHeight;
@@ -127,6 +137,7 @@ void TextSelectionMagnifier::hide()
 
 static int s_magnifierMargin = 10;
 static int s_magnifierOffsetY = 220;
+static int s_defaultEdjeHeight = 177;
 
 void TextSelectionMagnifier::move(const IntPoint& point)
 {
@@ -139,7 +150,7 @@ void TextSelectionMagnifier::move(const IntPoint& point)
     if (xPosition > viewWidth - (m_width / 2))
         xPosition = viewWidth - (m_width / 2) - s_magnifierMargin;
 
-    int yPosition = point.y() - s_magnifierOffsetY;
+    int yPosition = point.y() - ((float)s_magnifierOffsetY * ((float)m_edjeHeight / s_defaultEdjeHeight));
     if (yPosition < (m_height / 2))
         yPosition = m_height / 2;
     if (yPosition > viewHeight - (m_height / 2))
index 90b3651..4525f23 100755 (executable)
@@ -57,6 +57,8 @@ private:
     Evas_Object* m_magnifier;
     int m_width;
     int m_height;
+    int m_edjeWidth;
+    int m_edjeHeight;
 };
 
 } // namespace WebKit