// 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. #include "ui/aura_extra/image_window_delegate.h" #include "ui/base/cursor/cursor.h" #include "ui/base/hit_test.h" #include "ui/compositor/compositor.h" #include "ui/compositor/paint_recorder.h" #include "ui/gfx/canvas.h" #include "ui/gfx/geometry/rect.h" #include "ui/gfx/geometry/size.h" #include "ui/gfx/image/image.h" #include "ui/gfx/image/image_skia.h" namespace aura_extra { ImageWindowDelegate::ImageWindowDelegate() : background_color_(SK_ColorWHITE), size_mismatch_(false) { } ImageWindowDelegate::~ImageWindowDelegate() { } void ImageWindowDelegate::SetImage(const gfx::Image& image) { image_ = image; if (!window_size_.IsEmpty() && !image_.IsEmpty()) size_mismatch_ = window_size_ != image_.AsImageSkia().size(); } gfx::Size ImageWindowDelegate::GetMinimumSize() const { return gfx::Size(); } gfx::Size ImageWindowDelegate::GetMaximumSize() const { return gfx::Size(); } void ImageWindowDelegate::OnBoundsChanged(const gfx::Rect& old_bounds, const gfx::Rect& new_bounds) { window_size_ = new_bounds.size(); if (!image_.IsEmpty()) size_mismatch_ = window_size_ != image_.AsImageSkia().size(); } gfx::NativeCursor ImageWindowDelegate::GetCursor(const gfx::Point& point) { return gfx::kNullCursor; } int ImageWindowDelegate::GetNonClientComponent(const gfx::Point& point) const { return HTNOWHERE; } bool ImageWindowDelegate::ShouldDescendIntoChildForEventHandling( aura::Window* child, const gfx::Point& location) { return false; } bool ImageWindowDelegate::CanFocus() { return false; } void ImageWindowDelegate::OnCaptureLost() { } void ImageWindowDelegate::OnPaint(const ui::PaintContext& context) { ui::PaintRecorder recorder(context, window_size_); if (background_color_ != SK_ColorTRANSPARENT && (image_.IsEmpty() || size_mismatch_ || !offset_.IsZero())) { recorder.canvas()->DrawColor(background_color_); } if (!image_.IsEmpty()) { recorder.canvas()->DrawImageInt(image_.AsImageSkia(), offset_.x(), offset_.y()); } } void ImageWindowDelegate::OnDeviceScaleFactorChanged(float scale_factor) { } void ImageWindowDelegate::OnWindowDestroying(aura::Window* window) { } void ImageWindowDelegate::OnWindowDestroyed(aura::Window* window) { delete this; } void ImageWindowDelegate::OnWindowTargetVisibilityChanged(bool visible) { } bool ImageWindowDelegate::HasHitTestMask() const { return false; } void ImageWindowDelegate::GetHitTestMask(gfx::Path* mask) const { } } // namespace aura_extra