diff options
author | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-11-09 22:05:33 +0000 |
---|---|---|
committer | gtm.daemon <gtm.daemon@7dc7ac4e-7543-0410-b95c-c1676fc8e2a3> | 2009-11-09 22:05:33 +0000 |
commit | d03dd0aa069a4e655f29f2216e84ac9a47dc66f8 (patch) | |
tree | 05848232b32cef3932fa354a5627b430c66b24d6 /AppKit/GTMNSAnimation+Duration.m | |
parent | e2d01bf4bbfebd3ee8205238b230990aa326dc05 (diff) |
[Author: dmaclach]
Add animation duration controls to GTM.
R=thomasvl
DELTA=106 (106 added, 0 deleted, 0 changed)
Diffstat (limited to 'AppKit/GTMNSAnimation+Duration.m')
-rw-r--r-- | AppKit/GTMNSAnimation+Duration.m | 55 |
1 files changed, 55 insertions, 0 deletions
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 |