summaryrefslogtreecommitdiff
path: root/chromium/ash/wm/partial_screenshot_view.h
diff options
context:
space:
mode:
Diffstat (limited to 'chromium/ash/wm/partial_screenshot_view.h')
-rw-r--r--chromium/ash/wm/partial_screenshot_view.h75
1 files changed, 75 insertions, 0 deletions
diff --git a/chromium/ash/wm/partial_screenshot_view.h b/chromium/ash/wm/partial_screenshot_view.h
new file mode 100644
index 00000000000..8d799e3132b
--- /dev/null
+++ b/chromium/ash/wm/partial_screenshot_view.h
@@ -0,0 +1,75 @@
+// Copyright (c) 2012 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 ASH_WM_PARTIAL_SCREENSHOT_VIEW_H_
+#define ASH_WM_PARTIAL_SCREENSHOT_VIEW_H_
+
+#include <vector>
+
+#include "ash/ash_export.h"
+#include "base/compiler_specific.h"
+#include "base/gtest_prod_util.h"
+#include "ui/gfx/point.h"
+#include "ui/views/widget/widget_delegate.h"
+
+namespace ash {
+class ScreenshotDelegate;
+
+// The view of taking partial screenshot, i.e.: drawing region
+// rectangles during drag, and changing the mouse cursor to indicate
+// the current mode.
+class ASH_EXPORT PartialScreenshotView : public views::WidgetDelegateView {
+ public:
+ // Starts the UI for taking partial screenshot; dragging to select a region.
+ // PartialScreenshotViews manage their own lifetime so caller must not delete
+ // the returned PartialScreenshotViews.
+ static std::vector<PartialScreenshotView*>
+ StartPartialScreenshot(ScreenshotDelegate* screenshot_delegate);
+
+ private:
+ FRIEND_TEST_ALL_PREFIXES(PartialScreenshotViewTest, BasicMouse);
+ FRIEND_TEST_ALL_PREFIXES(PartialScreenshotViewTest, BasicTouch);
+
+ class OverlayDelegate;
+
+ PartialScreenshotView(OverlayDelegate* overlay_delegate,
+ ScreenshotDelegate* screenshot_delegate);
+ virtual ~PartialScreenshotView();
+
+ // Initializes partial screenshot UI widget for |root_window|.
+ void Init(aura::Window* root_window);
+
+ // Returns the currently selected region.
+ gfx::Rect GetScreenshotRect() const;
+
+ void OnSelectionStarted(const gfx::Point& position);
+ void OnSelectionChanged(const gfx::Point& position);
+ void OnSelectionFinished();
+
+ // Overridden from views::View:
+ virtual gfx::NativeCursor GetCursor(const ui::MouseEvent& event) OVERRIDE;
+ virtual void OnPaint(gfx::Canvas* canvas) OVERRIDE;
+ virtual bool OnMousePressed(const ui::MouseEvent& event) OVERRIDE;
+ virtual bool OnMouseDragged(const ui::MouseEvent& event) OVERRIDE;
+ virtual bool OnMouseWheel(const ui::MouseWheelEvent& event) OVERRIDE;
+ virtual void OnMouseReleased(const ui::MouseEvent& event) OVERRIDE;
+ virtual void OnMouseCaptureLost() OVERRIDE;
+ virtual void OnGestureEvent(ui::GestureEvent* event) OVERRIDE;
+
+ bool is_dragging_;
+ gfx::Point start_position_;
+ gfx::Point current_position_;
+
+ // The delegate to receive Cancel. No ownership.
+ OverlayDelegate* overlay_delegate_;
+
+ // ScreenshotDelegate to take the actual screenshot. No ownership.
+ ScreenshotDelegate* screenshot_delegate_;
+
+ DISALLOW_COPY_AND_ASSIGN(PartialScreenshotView);
+};
+
+} // namespace ash
+
+#endif // #ifndef ASH_WM_PARTIAL_SCREENSHOT_VIEW_H_