Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(334)

Unified Diff: ui/views/demo/main.cc

Issue 6286013: V2 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: '' Created 9 years, 11 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « no previous file | ui/views/events/context_menu_controller.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/views/demo/main.cc
===================================================================
--- ui/views/demo/main.cc (revision 0)
+++ ui/views/demo/main.cc (revision 0)
@@ -0,0 +1,177 @@
+// Copyright (c) 2011 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 <windows.h>
+#include <atlbase.h>
+#include <atlapp.h>
+#include <atlcrack.h>
+#include <atlmisc.h>
+
+#include "base/at_exit.h"
+#include "base/message_loop.h"
+#include "gfx/canvas.h"
+#include "ui/views/view.h"
+#include "ui/views/widget/widget.h"
+#include "ui/views/widget/native_widget_win.h"
+
+class V2DemoDispatcher : public MessageLoopForUI::Dispatcher {
+ public:
+ V2DemoDispatcher() {}
+ virtual ~V2DemoDispatcher() {}
+
+ private:
+ // Overridden from MessageLoopForUI::Dispatcher:
+ virtual bool Dispatch(const MSG& msg) {
+ TranslateMessage(&msg);
+ DispatchMessage(&msg);
+ return true;
+ }
+
+ DISALLOW_COPY_AND_ASSIGN(V2DemoDispatcher);
+};
+
+class ColorView : public ui::View {
+ public:
+ explicit ColorView(SkColor color) : color_(color) {
+ }
+ ColorView() : color_(SK_ColorBLACK) {}
+ virtual ~ColorView() {}
+
+ protected:
+ SkColor color() const { return color_; }
+ void set_color(SkColor color) { color_ = color; }
+
+ private:
+ // Overridden from ui::View:
+ virtual void OnPaint(gfx::Canvas* canvas) {
+ canvas->FillRectInt(color_, 0, 0, width(), height());
+ }
+ virtual bool OnMousePressed(const ui::MouseEvent& event) {
+ color_ = color_ == SK_ColorBLACK ? SK_ColorWHITE : SK_ColorBLACK;
+ Invalidate();
+ return true;
+ }
+ virtual void OnMouseReleased(const ui::MouseEvent& event, bool canceled) {
+ color_ = color_ == SK_ColorWHITE ? SK_ColorMAGENTA : SK_ColorGREEN;
+ Invalidate();
+ }
+ virtual void OnMouseMoved(const ui::MouseEvent& event) {
+ U8CPU r = SkColorGetR(color_);
+ color_ = SkColorSetRGB(++r % 255, SkColorGetG(color_),
+ SkColorGetB(color_));
+ Invalidate();
+ }
+ virtual bool OnMouseDragged(const ui::MouseEvent& event) {
+ U8CPU g = SkColorGetG(color_);
+ color_ = SkColorSetRGB(SkColorGetR(color_), ++g % 255,
+ SkColorGetB(color_));
+ Invalidate();
+ return true;
+ }
+
+ SkColor color_;
+
+ DISALLOW_COPY_AND_ASSIGN(ColorView);
+};
+
+class FancyPantsView : public ColorView {
+ public:
+ FancyPantsView()
+ : ColorView(SK_ColorMAGENTA),
+ c1_(new ColorView(SK_ColorGREEN)),
+ c2_(new ColorView(SK_ColorRED)) {
+ AddChildView(c1_);
+ AddChildView(c2_);
+ }
+ virtual ~FancyPantsView() {}
+
+ // Overridden from ui::View:
+ virtual void Layout() {
+ c1_->SetBounds(20, 20, width() - 40, height() - 40);
+ c2_->SetBounds(50, 50, 50, 50);
+ Invalidate();
+ }
+ virtual bool OnMousePressed(const ui::MouseEvent& event) {
+ old_color_ = color();
+ set_color(SK_ColorWHITE);
+ mouse_offset_ = event.location();
+ return true;
+ }
+ virtual bool OnMouseDragged(const ui::MouseEvent& event) {
+ gfx::Rect old_bounds = bounds();
+ SetPosition(gfx::Point(event.x() - mouse_offset_.x(),
+ event.y() - mouse_offset_.y()));
+ gfx::Rect new_bounds = bounds();
+ parent()->InvalidateRect(old_bounds.Union(new_bounds));
+ return true;
+ }
+ virtual void OnMouseReleased(const ui::MouseEvent& event) {
+ set_color(old_color_);
+ }
+ virtual void OnMouseCaptureLost() {
+ set_color(SK_ColorYELLOW);
+ }
+
+ private:
+ View* c1_;
+ View* c2_;
+
+ gfx::Point mouse_offset_;
+ SkColor old_color_;
+
+ DISALLOW_COPY_AND_ASSIGN(FancyPantsView);
+};
+
+
+
+class ContentsView : public ColorView {
+ public:
+ ContentsView()
+ : c1_(new ColorView(SK_ColorBLUE)),
+ c2_(new ColorView(SK_ColorGREEN)),
+ c3_(new FancyPantsView()),
+ ColorView(SK_ColorRED) {
+ set_parent_owned(false);
+ AddChildView(c1_);
+ AddChildView(c2_);
+ c3_->SetPosition(gfx::Point(200, 200));
+ AddChildView(c3_);
+ }
+
+ virtual ~ContentsView() {}
+
+ void Init() {
+ //c3_->SetHasLayer(true);
+ }
+
+ private:
+ // Overridden from ui::View:
+ virtual void Layout() {
+ c1_->SetBounds(20, 20, width() - 40, height() - 40);
+ c2_->SetBounds(50, 50, 50, 50);
+ c3_->SetSize(gfx::Size(75, 75));
+ Invalidate();
+ }
+
+ View* c1_;
+ View* c2_;
+ FancyPantsView* c3_;
+};
+
+int main(int argc, char **argv) {
+ OleInitialize(NULL);
+ base::AtExitManager exit_manager;
+ MessageLoop main_message_loop(MessageLoop::TYPE_UI);
+
+ ContentsView cv;
+ ui::Widget widget(&cv);
+ widget.InitWithNativeViewParent(NULL, gfx::Rect(20, 20, 400, 400));
+ cv.Init();
+ widget.Show();
+
+ V2DemoDispatcher dispatcher;
+ MessageLoopForUI::current()->Run(&dispatcher);
+
+ OleUninitialize();
+}
« no previous file with comments | « no previous file | ui/views/events/context_menu_controller.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698