Index: ios/chrome/browser/ui/stack_view/page_animation_util.h |
diff --git a/ios/chrome/browser/ui/stack_view/page_animation_util.h b/ios/chrome/browser/ui/stack_view/page_animation_util.h |
new file mode 100644 |
index 0000000000000000000000000000000000000000..d967b44f5d1a84feed9d8ab98c466d331a4e9be3 |
--- /dev/null |
+++ b/ios/chrome/browser/ui/stack_view/page_animation_util.h |
@@ -0,0 +1,108 @@ |
+// Copyright 2012 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 IOS_CHROME_BROWSER_UI_STACK_VIEW_PAGE_ANIMATION_UTIL_H_ |
+#define IOS_CHROME_BROWSER_UI_STACK_VIEW_PAGE_ANIMATION_UTIL_H_ |
+ |
+#import <CoreGraphics/CoreGraphics.h> |
+#import <QuartzCore/QuartzCore.h> |
+ |
+@class CardView; |
+@class UIView; |
+ |
+// Utilities for handling the animations of a page opening or closing. |
+// The expected use is to create a view with the same size and position as the |
+// page content area, add it to the view hierarchy, then call the appropriate |
+// animation method. |
+namespace ios_internal { |
+ |
+namespace page_animation_util { |
+ |
+// The standard margin between a card and the edge of the content view, in |
+// pixels. |
+extern const CGFloat kCardMargin; |
+ |
+// Animation start positions. |
+enum TabStartPosition { |
+ // From offscreen on the right. |
+ START_RIGHT, |
+ // From offscreen on the left. |
+ START_LEFT |
+}; |
+ |
+// Applies a transformation that moves |view| to the new tab animation start |
+// position. The new tab starts translated down; if |start| is RIGHT, it is |
+// rotated clockwise and translated to the right; if LEFT, it is rotated |
+// counter-clockwise and translated to the left. |
+void SetTabAnimationStartPositionForView(UIView* view, TabStartPosition start); |
+ |
+// Adjusts the position of |view| to where a card (pre-MD) animate-in effect |
+// should start, then animates the view back to its original position (calling |
+// |extraAnimation| in the same animation context), and finally calls the given |
+// completion block when finished. For MD, this is still used when a card is |
+// added in the background while in the stack view. |
+void AnimateInCardWithAnimationAndCompletion(UIView* view, |
+ void (^extraAnimation)(void), |
+ void (^completion)(void)); |
+ |
+// Adjusts the position of |view| to |origin|, then animates with a MD |
+// animate-in effect, animating the view back to its original position (calling |
+// |extraAnimation| in the same animation context), and finally calls the given |
+// completion block when finished. |paperOffset| and |contentOffset| describe |
+// the vertical offset for the paper animation and the |view| animation |
+// respectively. |
+void AnimateInPaperWithAnimationAndCompletion(UIView* view, |
+ CGFloat paperOffset, |
+ CGFloat contentOffset, |
+ CGPoint origin, |
+ BOOL isOffTheRecord, |
+ void (^extraAnimation)(void), |
+ void (^completion)(void)); |
+ |
+// Sets |currentPageCard| to the size of |displayFrame|, animates it into a |
+// standard inset CardView (just as in the appearance of a single-stack |
+// StackViewController), and out again. Creates and moves a paper card into the |
+// center of the screen, and then slides it offscreen. |completion| is |
+// called at the end of the sequence. |displayFrame| gives the frame within |
+// which the animation will take place. |
+void AnimateNewBackgroundPageWithCompletion(CardView* currentPageCard, |
+ CGRect displayFrame, |
+ BOOL isPortrait, |
+ void (^completion)(void)); |
+ |
+// Sets |currentPageCard| to the size of |displayFrame|, animates it into a |
+// standard inset CardView (just as in the appearance of a single-stack |
+// StackViewController), and out again. Moves |newCard| offscreen, then rotates |
+// it into its given position, and finally slides it offscreen. |completion| is |
+// called at the end of the sequence. |displayFrame| gives the frame within |
+// which the animation will take place. |
+void AnimateNewBackgroundTabWithCompletion(CardView* currentPageCard, |
+ CardView* newCard, |
+ CGRect displayFrame, |
+ BOOL isPortrait, |
+ void (^completion)(void)); |
+ |
+// Animates |view| to its final position following |delay| seconds, then calls |
+// the given completion block when finished. |
+void AnimateOutWithCompletion(UIView* view, |
+ NSTimeInterval delay, |
+ BOOL clockwise, |
+ BOOL isPortrait, |
+ void (^completion)(void)); |
+ |
+// Returns a transform to rotate and translate the view in the proper direction |
+// and |fraction| of |kAnimateInInitialHorizontalOffset|, |
+// |kAnimateInInitialVerticalOffset| and |kCardRotationAnimationStart|. |
+CGAffineTransform AnimateOutTransform(CGFloat fraction, |
+ BOOL clockwise, |
+ BOOL isPortrait); |
+ |
+// Returns the breadth of the animation-out transform. |
+CGFloat AnimateOutTransformBreadth(); |
+ |
+} // namespace page_animation_util |
+ |
+} // namespace ios_internal |
+ |
+#endif // IOS_CHROME_BROWSER_UI_STACK_VIEW_PAGE_ANIMATION_UTIL_H_ |