From d03dd0aa069a4e655f29f2216e84ac9a47dc66f8 Mon Sep 17 00:00:00 2001 From: "gtm.daemon" Date: Mon, 9 Nov 2009 22:05:33 +0000 Subject: [Author: dmaclach] Add animation duration controls to GTM. R=thomasvl DELTA=106 (106 added, 0 deleted, 0 changed) --- AppKit/GTMNSAnimation+Duration.m | 55 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 55 insertions(+) create mode 100644 AppKit/GTMNSAnimation+Duration.m (limited to 'AppKit/GTMNSAnimation+Duration.m') diff --git a/AppKit/GTMNSAnimation+Duration.m b/AppKit/GTMNSAnimation+Duration.m new file mode 100644 index 0000000..f8d0ced --- /dev/null +++ b/AppKit/GTMNSAnimation+Duration.m @@ -0,0 +1,55 @@ +// +// GTMNSAnimation+Duration.m +// +// Copyright 2009 Google Inc. +// +// Licensed under the Apache License, Version 2.0 (the "License"); you may not +// use this file except in compliance with the License. You may obtain a copy +// of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT +// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the +// License for the specific language governing permissions and limitations under +// the License. +// + +#import "GTMNSAnimation+Duration.h" + +static NSTimeInterval GTMCurrentDurationMultiplier(void) { + NSEvent *event = [NSApp currentEvent]; + NSUInteger modifiers = [event modifierFlags]; + NSTimeInterval duration = 1.0; + if (modifiers & NSShiftKeyMask) { + duration *= 0.2; + } + // These are additive, so shift+control returns 0.1 * duration. + if (modifiers & NSControlKeyMask) { + duration *= 0.5; + } + return duration; +} + +@implementation NSAnimation (GTMNSAnimationDurationAdditions) + +- (void)gtm_setDuration:(NSTimeInterval)duration { + duration = duration * GTMCurrentDurationMultiplier(); + [self setDuration:duration]; +} + +@end + +#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 + +@implementation CAAnimation (GTMCAAnimationDurationAdditions) + +- (void)gtm_setDuration:(CFTimeInterval)duration { + duration = duration * GTMCurrentDurationMultiplier(); + [self setDuration:duration]; +} + +@end + +#endif // MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 -- cgit v1.2.3