// Copyright (c) 2011 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 CHROME_BROWSER_UI_COCOA_ANIMATABLE_IMAGE_H_
#define CHROME_BROWSER_UI_COCOA_ANIMATABLE_IMAGE_H_

#import <Cocoa/Cocoa.h>
#import <QuartzCore/QuartzCore.h>

#include "base/mac/scoped_nsobject.h"

// This class helps animate an NSImage's frame and opacity. It works by creating
// a blank NSWindow in the size specified and giving it a layer on which the
// image can be animated. Clients are free to embed this object as a child
// window for easier window management. This class will clean itself up when
// the animation has finished. Clients that install this as a child window
// should listen for the NSWindowWillCloseNotification to perform any additional
// cleanup.
@interface AnimatableImage : NSWindow {
 @private
  // The image to animate.
  base::scoped_nsobject<NSImage> image_;

  // The frame of the image before and after the animation. This is in this
  // window's coordinate system.
  CGRect startFrame_;
  CGRect endFrame_;

  // Opacity values for the animation.
  CGFloat startOpacity_;
  CGFloat endOpacity_;

  // The amount of time it takes to animate the image.
  CGFloat duration_;
}

@property(nonatomic) CGRect startFrame;
@property(nonatomic) CGRect endFrame;
@property(nonatomic) CGFloat startOpacity;
@property(nonatomic) CGFloat endOpacity;
@property(nonatomic) CGFloat duration;

// Designated initializer. Do not use any other NSWindow initializers. Creates
// but does not show the blank animation window of the given size. The
// |animationFrame| should usually be big enough to contain the |startFrame|
// and |endFrame| properties of the animation.
- (id)initWithImage:(NSImage*)image
     animationFrame:(NSRect)animationFrame;

// Begins the animation.
- (void)startAnimation;

@end

#endif  // CHROME_BROWSER_UI_COCOA_ANIMATABLE_IMAGE_H_
