blob: 3790ba0d5976bc53e5378ba061cd3d950957435a [file] [log] [blame]
// Copyright (c) 2013 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.
#import "chrome/browser/ui/cocoa/tabs/tab_audio_indicator_view_mac.h"
#include "chrome/browser/ui/tabs/tab_audio_indicator.h"
#include "ui/gfx/canvas_skia_paint.h"
#include "ui/gfx/image/image.h"
#include "ui/gfx/rect.h"
class TabAudioIndicatorDelegateMac : public TabAudioIndicator::Delegate {
public:
explicit TabAudioIndicatorDelegateMac(TabAudioIndicatorViewMac* view)
: view_(view) {
}
virtual ~TabAudioIndicatorDelegateMac() {}
virtual void ScheduleAudioIndicatorPaint() OVERRIDE {
[view_ setNeedsDisplay:YES];
}
private:
TabAudioIndicatorViewMac* view_;
DISALLOW_COPY_AND_ASSIGN(TabAudioIndicatorDelegateMac);
};
@interface TabAudioIndicatorViewMac ()
@end
@implementation TabAudioIndicatorViewMac
- (id)initWithFrame:(NSRect)frame {
if ((self = [super initWithFrame:frame])) {
delegate_.reset(new TabAudioIndicatorDelegateMac(self));
tabAudioIndicator_.reset(new TabAudioIndicator(delegate_.get()));
}
return self;
}
- (void)setIsPlayingAudio:(BOOL)isPlayingAudio {
tabAudioIndicator_->SetIsPlayingAudio(isPlayingAudio);
}
- (void)setBackgroundImage:(NSImage*)backgroundImage {
gfx::Image image([backgroundImage retain]);
tabAudioIndicator_->set_favicon(*image.ToImageSkia());
}
- (void)setAnimationContainer:(gfx::AnimationContainer*)animationContainer {
tabAudioIndicator_->SetAnimationContainer(animationContainer);
}
- (BOOL)isAnimating {
return tabAudioIndicator_->IsAnimating();
}
- (void)drawRect:(NSRect)rect {
gfx::CanvasSkiaPaint canvas(rect, false);
canvas.set_composite_alpha(true);
tabAudioIndicator_->Paint(&canvas, gfx::Rect(NSRectToCGRect([self bounds])));
}
@end