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

Side by Side Diff: ios/chrome/browser/ui/tabs/tab_util.mm

Issue 2588733002: Upstream Chrome on iOS source code [9/11]. (Closed)
Patch Set: Created 4 years 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 unified diff | Download patch
« no previous file with comments | « ios/chrome/browser/ui/tabs/tab_util.h ('k') | ios/chrome/browser/ui/tabs/tab_view.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ios/chrome/browser/ui/tabs/tab_util.h"
6
7 #include <sys/sysctl.h>
8
9 namespace {
10
11 // Constants for inset and control points for tab shape.
12 const CGFloat kInsetMultiplier = 2.0 / 3.0;
13 const CGFloat kControlPoint1Multiplier = 1.0 / 3.0;
14 const CGFloat kControlPoint2Multiplier = 3.0 / 8.0;
15
16 } // anonymous namespace
17
18 namespace ios_internal {
19 namespace tab_util {
20
21 UIBezierPath* tabBezierPathForRect(CGRect rect) {
22 const CGFloat lineWidth = 1.0;
23 const CGFloat halfLineWidth = lineWidth / 2.0;
24
25 // Outset by halfLineWidth in order to draw on pixels rather than on borders
26 // (which would cause blurry pixels). Offset instead of outset vertically,
27 // otherwise clipping will occur.
28 rect = CGRectInset(rect, -halfLineWidth, 0);
29 rect.origin.y += halfLineWidth;
30
31 CGPoint bottomLeft =
32 CGPointMake(CGRectGetMinX(rect), CGRectGetMaxY(rect) - (2 * lineWidth));
33 CGPoint bottomRight =
34 CGPointMake(CGRectGetMaxX(rect), CGRectGetMaxY(rect) - (2 * lineWidth));
35 CGPoint topRight = CGPointMake(
36 CGRectGetMaxX(rect) - (kInsetMultiplier * CGRectGetHeight(rect)),
37 CGRectGetMinY(rect));
38 CGPoint topLeft = CGPointMake(
39 CGRectGetMinX(rect) + (kInsetMultiplier * CGRectGetHeight(rect)),
40 CGRectGetMinY(rect));
41
42 CGFloat baseControlPointOutset =
43 CGRectGetHeight(rect) * kControlPoint1Multiplier;
44 CGFloat bottomControlPointInset =
45 CGRectGetHeight(rect) * kControlPoint2Multiplier;
46
47 // Outset many of these values by lineWidth to cause the fill to bleed outside
48 // the clip area.
49 UIBezierPath* path = [UIBezierPath bezierPath];
50 [path moveToPoint:CGPointMake(bottomLeft.x - lineWidth,
51 bottomLeft.y + (2 * lineWidth))];
52 [path addLineToPoint:CGPointMake(bottomLeft.x - lineWidth, bottomLeft.y)];
53 [path addLineToPoint:bottomLeft];
54 [path addCurveToPoint:topLeft
55 controlPoint1:CGPointMake(bottomLeft.x + baseControlPointOutset,
56 bottomLeft.y)
57 controlPoint2:CGPointMake(topLeft.x - bottomControlPointInset,
58 topLeft.y)];
59 [path addLineToPoint:topRight];
60 [path addCurveToPoint:bottomRight
61 controlPoint1:CGPointMake(topRight.x + bottomControlPointInset,
62 topRight.y)
63 controlPoint2:CGPointMake(bottomRight.x - baseControlPointOutset,
64 bottomRight.y)];
65 [path addLineToPoint:CGPointMake(bottomRight.x + lineWidth, bottomRight.y)];
66 [path addLineToPoint:CGPointMake(bottomRight.x + lineWidth,
67 bottomRight.y + (2 * lineWidth))];
68 return path;
69 }
70
71 } // namespace tab_util
72 } // namespace ios_internal
OLDNEW
« no previous file with comments | « ios/chrome/browser/ui/tabs/tab_util.h ('k') | ios/chrome/browser/ui/tabs/tab_view.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698