| 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();
|
| +}
|
|
|