// 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. #ifndef CONTENT_BROWSER_WEB_CONTENTS_AURA_IMAGE_WINDOW_DELEGATE_H_ #define CONTENT_BROWSER_WEB_CONTENTS_AURA_IMAGE_WINDOW_DELEGATE_H_ #include "ui/aura/window_delegate.h" #include "ui/gfx/image/image.h" #include "ui/gfx/size.h" namespace content { // An ImageWindowDelegate paints an image for a Window. The delegate destroys // itself when the Window is destroyed. The delegate does not consume any event. class ImageWindowDelegate : public aura::WindowDelegate { public: ImageWindowDelegate(); void SetImage(const gfx::Image& image); bool has_image() const { return !image_.IsEmpty(); } protected: virtual ~ImageWindowDelegate(); // Overridden from aura::WindowDelegate: virtual gfx::Size GetMinimumSize() const OVERRIDE; virtual gfx::Size GetMaximumSize() const OVERRIDE; virtual void OnBoundsChanged(const gfx::Rect& old_bounds, const gfx::Rect& new_bounds) OVERRIDE; virtual gfx::NativeCursor GetCursor(const gfx::Point& point) OVERRIDE; virtual int GetNonClientComponent(const gfx::Point& point) const OVERRIDE; virtual bool ShouldDescendIntoChildForEventHandling( aura::Window* child, const gfx::Point& location) OVERRIDE; virtual bool CanFocus() OVERRIDE; virtual void OnCaptureLost() OVERRIDE; virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE; virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE; virtual void OnWindowDestroying() OVERRIDE; virtual void OnWindowDestroyed() OVERRIDE; virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE; virtual bool HasHitTestMask() const OVERRIDE; virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE; virtual scoped_refptr CopyTexture() OVERRIDE; protected: gfx::Image image_; gfx::Size window_size_; // Keeps track of whether the window size matches the image size or not. If // the image size is smaller than the window size, then the delegate paints a // white background for the missing regions. bool size_mismatch_; DISALLOW_COPY_AND_ASSIGN(ImageWindowDelegate); }; } // namespace content #endif // CONTENT_BROWSER_WEB_CONTENTS_AURA_IMAGE_WINDOW_DELEGATE_H_