Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(3735)

Unified Diff: chrome/browser/chromeos/ui/accessibility_focus_ring.h

Issue 557393003: Introduce AccessibilityFocusRing. (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@accessibility_private_histograms
Patch Set: Address last feedback Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | chrome/browser/chromeos/ui/accessibility_focus_ring.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/chromeos/ui/accessibility_focus_ring.h
diff --git a/chrome/browser/chromeos/ui/accessibility_focus_ring.h b/chrome/browser/chromeos/ui/accessibility_focus_ring.h
new file mode 100644
index 0000000000000000000000000000000000000000..915472144c0f6cb6290ce00f0ee7d08df4360aa8
--- /dev/null
+++ b/chrome/browser/chromeos/ui/accessibility_focus_ring.h
@@ -0,0 +1,89 @@
+// Copyright 2014 The Chromium Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+#ifndef CHROME_BROWSER_CHROMEOS_UI_ACCESSIBILITY_FOCUS_RING_H_
+#define CHROME_BROWSER_CHROMEOS_UI_ACCESSIBILITY_FOCUS_RING_H_
+
+#include "ui/gfx/point.h"
+#include "ui/gfx/rect.h"
+
+namespace chromeos {
+
+// An AccessibilityFocusRing is a special type of shape designed to
+// outline the focused object on the screen for users with visual
+// impairments. It's specifically designed to outline text ranges that
+// span multiple lines (we'll call this a "paragraph" shape from here on,
+// but it works for any text range), so it can outline a shape defined by a
+// few words from the first line, the complete contents of more lines,
+// followed by a few words from the last line. See the figure below.
+// When highlighting any other object, it outlines a rectangular shape.
+//
+// The outline is outset from the object it's highlighting by a few pixels;
+// this margin distance also determines its border radius for rounded
+// corners.
+//
+// An AccessibilityFocusRing can be initialized with either a rectangle
+// defining the bounds of an object, or a paragraph-shape with three
+// rectangles defining a top line, a body, and a bottom line, which are
+// assumed to be adjacent to one another.
+//
+// Initializing an AccessibilityFocusRing computes the following 36 points
+// that completely define the shape's outline. This shape can be traced
+// using Skia or any other drawing utility just by drawing alternating
+// straight lines and quadratic curves (e.g. a line from 0 to 1, a curve
+// from 1 to 3 with 2 as a control point, then a line from 3 to 4, and so on.
+//
+// The same path should be used even if the focus ring was initialized with
+// a rectangle and not a paragraph shape - this makes it possible to
+// smoothly animate between one object and the next simply by interpolating
+// points.
+//
+// Noncontiguous shapes should be handled by drawing multiple focus rings.
+//
+// The 36 points are defined as follows:
+//
+// 2 3------------------------------4 5
+// / \
Chirantan Ekbote 2014/09/12 02:39:13 This is a pretty diagram but unfortunately the bac
+// 1 6
+// | First line of paragraph |
+// 0 7
+// / \
+// 32 33-34 35 8 9---------------10 11
+// / \
+// 31 Middle line of paragraph.......................... 12
+// | |
+// | |
+// | Middle line of paragraph.......................... |
+// | |
+// | |
+// 30 Middle line of paragraph.......................... 13
+// \ /
+// 29 28---------27 26 17 16---------15 14
+// \ /
+// 25 18
+// | Last line of paragraph |
+// 24 19
+// \ /
+// 23 22-----------------------21 20
+
+struct AccessibilityFocusRing {
+ // Construct an AccessibilityFocusRing that outlines a rectangular object.
+ static AccessibilityFocusRing CreateWithRect(
+ const gfx::Rect& bounds, int margin);
+
+ // Construct an AccessibilityFocusRing that outlines a paragraph-shaped
+ // object.
+ static AccessibilityFocusRing CreateWithParagraphShape(
+ const gfx::Rect& top_line,
+ const gfx::Rect& body,
+ const gfx::Rect& bottom_line,
+ int margin);
+
+ gfx::Point points[36];
+ gfx::Rect GetBounds() const;
+};
+
+} // namespace chromeos
+
+#endif // CHROME_BROWSER_CHROMEOS_UI_ACCESSIBILITY_FOCUS_RING_H_
« no previous file with comments | « no previous file | chrome/browser/chromeos/ui/accessibility_focus_ring.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698