Home | History | Annotate | Download | only in aura
      1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
      2 // Use of this source code is governed by a BSD-style license that can be
      3 // found in the LICENSE file.
      4 
      5 #ifndef CONTENT_BROWSER_WEB_CONTENTS_AURA_IMAGE_WINDOW_DELEGATE_H_
      6 #define CONTENT_BROWSER_WEB_CONTENTS_AURA_IMAGE_WINDOW_DELEGATE_H_
      7 
      8 #include "content/common/content_export.h"
      9 #include "ui/aura/window_delegate.h"
     10 #include "ui/gfx/image/image.h"
     11 #include "ui/gfx/size.h"
     12 
     13 namespace content {
     14 
     15 // An ImageWindowDelegate paints an image for a Window. The delegate destroys
     16 // itself when the Window is destroyed. The delegate does not consume any event.
     17 class CONTENT_EXPORT ImageWindowDelegate : public aura::WindowDelegate {
     18  public:
     19   ImageWindowDelegate();
     20 
     21   void SetImage(const gfx::Image& image);
     22   bool has_image() const { return !image_.IsEmpty(); }
     23 
     24  protected:
     25   virtual ~ImageWindowDelegate();
     26 
     27   // Overridden from aura::WindowDelegate:
     28   virtual gfx::Size GetMinimumSize() const OVERRIDE;
     29   virtual gfx::Size GetMaximumSize() const OVERRIDE;
     30   virtual void OnBoundsChanged(const gfx::Rect& old_bounds,
     31                                const gfx::Rect& new_bounds) OVERRIDE;
     32   virtual gfx::NativeCursor GetCursor(const gfx::Point& point) OVERRIDE;
     33   virtual int GetNonClientComponent(const gfx::Point& point) const OVERRIDE;
     34   virtual bool ShouldDescendIntoChildForEventHandling(
     35       aura::Window* child,
     36       const gfx::Point& location) OVERRIDE;
     37   virtual bool CanFocus() OVERRIDE;
     38   virtual void OnCaptureLost() OVERRIDE;
     39   virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
     40   virtual void OnDeviceScaleFactorChanged(float device_scale_factor) OVERRIDE;
     41   virtual void OnWindowDestroying(aura::Window* window) OVERRIDE;
     42   virtual void OnWindowDestroyed(aura::Window* window) OVERRIDE;
     43   virtual void OnWindowTargetVisibilityChanged(bool visible) OVERRIDE;
     44   virtual bool HasHitTestMask() const OVERRIDE;
     45   virtual void GetHitTestMask(gfx::Path* mask) const OVERRIDE;
     46 
     47  protected:
     48   gfx::Image image_;
     49   gfx::Size window_size_;
     50 
     51   // Keeps track of whether the window size matches the image size or not. If
     52   // the image size is smaller than the window size, then the delegate paints a
     53   // white background for the missing regions.
     54   bool size_mismatch_;
     55 
     56   DISALLOW_COPY_AND_ASSIGN(ImageWindowDelegate);
     57 };
     58 
     59 }  // namespace content
     60 
     61 #endif  // CONTENT_BROWSER_WEB_CONTENTS_AURA_IMAGE_WINDOW_DELEGATE_H_
     62