| OLD | NEW |
| 1 // Copyright 2012 The Chromium Authors. All rights reserved. | 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 | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import "ios/chrome/browser/ui/stack_view/page_animation_util.h" | 5 #import "ios/chrome/browser/ui/stack_view/page_animation_util.h" |
| 6 | 6 |
| 7 #import <QuartzCore/QuartzCore.h> | 7 #import <QuartzCore/QuartzCore.h> |
| 8 #import <UIKit/UIKit.h> | 8 #import <UIKit/UIKit.h> |
| 9 | 9 |
| 10 #import "base/mac/scoped_nsobject.h" | |
| 11 #import "ios/chrome/browser/ui/animation_util.h" | 10 #import "ios/chrome/browser/ui/animation_util.h" |
| 12 #include "ios/chrome/browser/ui/rtl_geometry.h" | 11 #include "ios/chrome/browser/ui/rtl_geometry.h" |
| 13 #import "ios/chrome/browser/ui/stack_view/card_view.h" | 12 #import "ios/chrome/browser/ui/stack_view/card_view.h" |
| 14 #import "ios/chrome/common/material_timing.h" | 13 #import "ios/chrome/common/material_timing.h" |
| 15 | 14 |
| 15 #if !defined(__has_feature) || !__has_feature(objc_arc) |
| 16 #error "This file requires ARC support." |
| 17 #endif |
| 18 |
| 16 using ios::material::TimingFunction; | 19 using ios::material::TimingFunction; |
| 17 | 20 |
| 18 namespace { | 21 namespace { |
| 19 | 22 |
| 20 const NSTimeInterval kAnimationDuration = 0.25; | 23 const NSTimeInterval kAnimationDuration = 0.25; |
| 21 const NSTimeInterval kAnimationHesitation = 0.2; | 24 const NSTimeInterval kAnimationHesitation = 0.2; |
| 22 | 25 |
| 23 // Constants used for rotating/translating in in transition-in animations and | 26 // Constants used for rotating/translating in in transition-in animations and |
| 24 // rotating/translating out in transition-out animations. | 27 // rotating/translating out in transition-out animations. |
| 25 const CGFloat kDefaultRotation = 0.2094; // 12 degrees. | 28 const CGFloat kDefaultRotation = 0.2094; // 12 degrees. |
| (...skipping 23 matching lines...) Expand all Loading... |
| 49 @end | 52 @end |
| 50 | 53 |
| 51 @implementation PaperView | 54 @implementation PaperView |
| 52 | 55 |
| 53 - (id)initWithFrame:(CGRect)frame { | 56 - (id)initWithFrame:(CGRect)frame { |
| 54 self = [super initWithFrame:frame]; | 57 self = [super initWithFrame:frame]; |
| 55 if (self) { | 58 if (self) { |
| 56 const UIEdgeInsets kShadowStretchInsets = {28.0, 28.0, 28.0, 28.0}; | 59 const UIEdgeInsets kShadowStretchInsets = {28.0, 28.0, 28.0, 28.0}; |
| 57 const UIEdgeInsets kShadowLayoutOutset = {-10.0, -11.0, -12.0, -11.0}; | 60 const UIEdgeInsets kShadowLayoutOutset = {-10.0, -11.0, -12.0, -11.0}; |
| 58 CGRect shadowFrame = UIEdgeInsetsInsetRect(frame, kShadowLayoutOutset); | 61 CGRect shadowFrame = UIEdgeInsetsInsetRect(frame, kShadowLayoutOutset); |
| 59 base::scoped_nsobject<UIImageView> frameShadowImageView( | 62 UIImageView* frameShadowImageView = |
| 60 [[UIImageView alloc] initWithFrame:shadowFrame]); | 63 [[UIImageView alloc] initWithFrame:shadowFrame]; |
| 61 [frameShadowImageView | 64 [frameShadowImageView |
| 62 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | | 65 setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | |
| 63 UIViewAutoresizingFlexibleHeight)]; | 66 UIViewAutoresizingFlexibleHeight)]; |
| 64 [self addSubview:frameShadowImageView]; | 67 [self addSubview:frameShadowImageView]; |
| 65 | 68 |
| 66 UIImage* image = [UIImage imageNamed:@"popup_background"]; | 69 UIImage* image = [UIImage imageNamed:@"popup_background"]; |
| 67 image = [image resizableImageWithCapInsets:kShadowStretchInsets]; | 70 image = [image resizableImageWithCapInsets:kShadowStretchInsets]; |
| 68 [frameShadowImageView setImage:image]; | 71 [frameShadowImageView setImage:image]; |
| 69 } | 72 } |
| 70 return self; | 73 return self; |
| (...skipping 25 matching lines...) Expand all Loading... |
| 96 BOOL isOffTheRecord, | 99 BOOL isOffTheRecord, |
| 97 void (^extraAnimation)(void), | 100 void (^extraAnimation)(void), |
| 98 void (^completion)(void)) { | 101 void (^completion)(void)) { |
| 99 CGRect endFrame = view.frame; | 102 CGRect endFrame = view.frame; |
| 100 UIView* parent = [view superview]; | 103 UIView* parent = [view superview]; |
| 101 NSInteger index = [[parent subviews] indexOfObject:view]; | 104 NSInteger index = [[parent subviews] indexOfObject:view]; |
| 102 | 105 |
| 103 // Create paper background. | 106 // Create paper background. |
| 104 CGRect paperFrame = CGRectOffset(endFrame, 0, paperOffset); | 107 CGRect paperFrame = CGRectOffset(endFrame, 0, paperOffset); |
| 105 paperFrame.size.height -= paperOffset; | 108 paperFrame.size.height -= paperOffset; |
| 106 base::scoped_nsobject<PaperView> paper( | 109 PaperView* paper = [[PaperView alloc] initWithFrame:paperFrame]; |
| 107 [[PaperView alloc] initWithFrame:paperFrame]); | |
| 108 [parent insertSubview:paper belowSubview:view]; | 110 [parent insertSubview:paper belowSubview:view]; |
| 109 [paper addSubview:view]; | 111 [paper addSubview:view]; |
| 110 [paper setBackgroundColor:isOffTheRecord | 112 [paper setBackgroundColor:isOffTheRecord |
| 111 ? [UIColor colorWithWhite:34 / 255 alpha:1] | 113 ? [UIColor colorWithWhite:34 / 255 alpha:1] |
| 112 : [UIColor whiteColor]]; | 114 : [UIColor whiteColor]]; |
| 113 | 115 |
| 114 [CATransaction begin]; | 116 [CATransaction begin]; |
| 115 [CATransaction setCompletionBlock:^{ | 117 [CATransaction setCompletionBlock:^{ |
| 116 | 118 |
| 117 // Put view back where it belongs, with its original frame. | 119 // Put view back where it belongs, with its original frame. |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 202 if (completion) | 204 if (completion) |
| 203 completion(); | 205 completion(); |
| 204 }]; | 206 }]; |
| 205 } | 207 } |
| 206 | 208 |
| 207 void AnimateNewBackgroundPageWithCompletion(CardView* currentPageCard, | 209 void AnimateNewBackgroundPageWithCompletion(CardView* currentPageCard, |
| 208 CGRect displayFrame, | 210 CGRect displayFrame, |
| 209 BOOL isPortrait, | 211 BOOL isPortrait, |
| 210 void (^completion)(void)) { | 212 void (^completion)(void)) { |
| 211 // Create paper background. | 213 // Create paper background. |
| 212 base::scoped_nsobject<PaperView> paper( | 214 PaperView* paper = [[PaperView alloc] initWithFrame:CGRectZero]; |
| 213 [[PaperView alloc] initWithFrame:CGRectZero]); | |
| 214 UIView* parent = [currentPageCard superview]; | 215 UIView* parent = [currentPageCard superview]; |
| 215 [parent insertSubview:paper aboveSubview:currentPageCard]; | 216 [parent insertSubview:paper aboveSubview:currentPageCard]; |
| 216 CGRect pageBounds = currentPageCard.bounds; | 217 CGRect pageBounds = currentPageCard.bounds; |
| 217 [paper setCenter:CGPointMake(CGRectGetMidX(pageBounds), | 218 [paper setCenter:CGPointMake(CGRectGetMidX(pageBounds), |
| 218 CGRectGetMidY(pageBounds))]; | 219 CGRectGetMidY(pageBounds))]; |
| 219 [paper setBackgroundColor:[UIColor whiteColor]]; | 220 [paper setBackgroundColor:[UIColor whiteColor]]; |
| 220 [paper setAlpha:0.0]; | 221 [paper setAlpha:0.0]; |
| 221 | 222 |
| 222 CGSize pageSize = currentPageCard.bounds.size; | 223 CGSize pageSize = currentPageCard.bounds.size; |
| 223 CGRect paperFrame = | 224 CGRect paperFrame = |
| (...skipping 241 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 465 return transform; | 466 return transform; |
| 466 } | 467 } |
| 467 | 468 |
| 468 CGFloat AnimateOutTransformBreadth() { | 469 CGFloat AnimateOutTransformBreadth() { |
| 469 return kDefaultShortSideAxisTranslation; | 470 return kDefaultShortSideAxisTranslation; |
| 470 } | 471 } |
| 471 | 472 |
| 472 } // namespace page_animation_util | 473 } // namespace page_animation_util |
| 473 | 474 |
| 474 } // namespace ios_internal | 475 } // namespace ios_internal |
| OLD | NEW |