Index: chrome/browser/chromeos/ui/accessibility_focus_ring.cc |
diff --git a/chrome/browser/chromeos/ui/accessibility_focus_ring.cc b/chrome/browser/chromeos/ui/accessibility_focus_ring.cc |
index 676170500078c7192106d37a6b0c3e4cdf7f77bc..e60c6e39ea0aa5f5f19f523d8e03f21edf32aa4e 100644 |
--- a/chrome/browser/chromeos/ui/accessibility_focus_ring.cc |
+++ b/chrome/browser/chromeos/ui/accessibility_focus_ring.cc |
@@ -4,21 +4,41 @@ |
#include "chrome/browser/chromeos/ui/accessibility_focus_ring.h" |
+#include "base/logging.h" |
+ |
namespace chromeos { |
// static |
AccessibilityFocusRing AccessibilityFocusRing::CreateWithRect( |
const gfx::Rect& bounds, int margin) { |
+ // Compute the height of the top and bottom cap. |
+ int cap_height = std::min(bounds.height() / 2, margin * 2); |
+ |
gfx::Rect top(bounds.x(), bounds.y(), |
- bounds.width(), bounds.height() / 4); |
+ bounds.width(), cap_height); |
+ gfx::Rect bottom(bounds.x(), bounds.bottom() - cap_height, |
+ bounds.width(), cap_height); |
gfx::Rect body(bounds.x(), top.bottom(), |
- bounds.width(), bounds.height() / 2); |
- gfx::Rect bottom(bounds.x(), body.bottom(), |
- bounds.width(), bounds.bottom() - body.bottom()); |
+ bounds.width(), bottom.y() - top.bottom()); |
+ |
return CreateWithParagraphShape(top, body, bottom, margin); |
} |
// static |
+AccessibilityFocusRing AccessibilityFocusRing::Interpolate( |
+ const AccessibilityFocusRing& r1, |
+ const AccessibilityFocusRing& r2, |
+ double fraction) { |
+ AccessibilityFocusRing dst; |
+ for (int i = 0; i < 36; i++) { |
xiyuan
2014/09/24 19:40:35
nit: ++i
dmazzoni
2014/09/24 21:40:56
Done.
|
+ dst.points[i] = gfx::Point( |
+ r1.points[i].x() * (1 - fraction) + r2.points[i].x() * fraction, |
+ r1.points[i].y() * (1 - fraction) + r2.points[i].y() * fraction); |
+ } |
+ return dst; |
+} |
+ |
+// static |
AccessibilityFocusRing AccessibilityFocusRing::CreateWithParagraphShape( |
const gfx::Rect& orig_top_line, |
const gfx::Rect& orig_body, |
@@ -28,6 +48,9 @@ AccessibilityFocusRing AccessibilityFocusRing::CreateWithParagraphShape( |
gfx::Rect middle = orig_body; |
gfx::Rect bottom = orig_bottom_line; |
+ int min_height = std::min(top.height(), bottom.height()); |
+ margin = std::min(margin, min_height / 2); |
+ |
if (top.x() <= middle.x() + 2 * margin) { |
top.set_width(top.width() + top.x() - middle.x()); |
top.set_x(middle.x()); |
@@ -44,6 +67,10 @@ AccessibilityFocusRing AccessibilityFocusRing::CreateWithParagraphShape( |
bottom.set_width(middle.right() - bottom.x()); |
} |
+ LogRect("Top2", top); |
+ LogRect("Body2", middle); |
+ LogRect("Bottom2", bottom); |
xiyuan
2014/09/24 19:40:35
Where is LogRect defined?
dmazzoni
2014/09/24 21:40:56
Sorry, left that in while debugging. Gone.
|
+ |
AccessibilityFocusRing ring; |
ring.points[0] = gfx::Point(top.x(), top.bottom() - margin); |
ring.points[1] = gfx::Point(top.x(), top.y() + margin); |