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

Unified Diff: chrome/browser/views/tabs/tab_2.cc

Issue 42490: Experiments with a new tabstrip + animator (Closed) Base URL: svn://chrome-svn.corp.google.com/chrome/trunk/src/
Patch Set: '' Created 11 years, 5 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 | « chrome/browser/views/tabs/tab_2.h ('k') | chrome/browser/views/tabs/tab_strip_2.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/views/tabs/tab_2.cc
===================================================================
--- chrome/browser/views/tabs/tab_2.cc (revision 0)
+++ chrome/browser/views/tabs/tab_2.cc (revision 0)
@@ -0,0 +1,119 @@
+// Copyright (c) 2009 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 "chrome/browser/views/tabs/tab_2.h"
+
+#include "app/gfx/canvas.h"
+#include "app/gfx/font.h"
+#include "app/gfx/path.h"
+#include "views/animator.h"
+
+static const SkScalar kTabCapWidth = 15;
+static const SkScalar kTabTopCurveWidth = 4;
+static const SkScalar kTabBottomCurveWidth = 3;
+
+////////////////////////////////////////////////////////////////////////////////
+// Tab2, public:
+
+Tab2::Tab2(Tab2Model* model)
+ : model_(model),
+ dragging_(false),
+ removing_(false) {
+}
+
+Tab2::~Tab2() {
+}
+
+void Tab2::SetRemovingModel(Tab2Model* model) {
+ removing_model_.reset(model);
+ model_ = removing_model_.get();
+}
+
+bool Tab2::IsAnimating() const {
+ return animator_.get() && animator_->IsAnimating();
+}
+
+views::Animator* Tab2::GetAnimator() {
+ if (!animator_.get())
+ animator_.reset(new views::Animator(this, model_->AsAnimatorDelegate()));
+ return animator_.get();
+}
+
+// static
+gfx::Size Tab2::GetStandardSize() {
+ return gfx::Size(140, 27);
+}
+
+void Tab2::AddTabShapeToPath(gfx::Path* path) const {
+ SkScalar h = SkIntToScalar(height());
+ SkScalar w = SkIntToScalar(width());
+
+ path->moveTo(0, h);
+
+ // Left end cap.
+ path->lineTo(kTabBottomCurveWidth, h - kTabBottomCurveWidth);
+ path->lineTo(kTabCapWidth - kTabTopCurveWidth, kTabTopCurveWidth);
+ path->lineTo(kTabCapWidth, 0);
+
+ // Connect to the right cap.
+ path->lineTo(w - kTabCapWidth, 0);
+
+ // Right end cap.
+ path->lineTo(w - kTabCapWidth + kTabTopCurveWidth, kTabTopCurveWidth);
+ path->lineTo(w - kTabBottomCurveWidth, h - kTabBottomCurveWidth);
+ path->lineTo(w, h);
+
+ // Close out the path.
+ path->lineTo(0, h);
+ path->close();
+}
+
+////////////////////////////////////////////////////////////////////////////////
+// Tab2, views::View overrides:
+
+gfx::Size Tab2::GetPreferredSize() {
+ return gfx::Size();
+}
+
+void Tab2::Layout() {
+}
+
+void Tab2::Paint(gfx::Canvas* canvas) {
+ SkColor color = model_->IsSelected(this) ? SK_ColorRED : SK_ColorGREEN;
+
+ gfx::Path path;
+ AddTabShapeToPath(&path);
+ SkPaint paint;
+ paint.setAntiAlias(true);
+ paint.setColor(color);
+ canvas->drawPath(path, paint);
+
+ // TODO(beng): less ad-hoc
+ canvas->DrawStringInt(model_->GetTitle(this), gfx::Font(), SK_ColorBLACK,
+ 5, 3, 100, 20);
+}
+
+bool Tab2::OnMousePressed(const views::MouseEvent& event) {
+ if (event.IsLeftMouseButton()) {
+ model_->SelectTab(this);
+ model_->CaptureDragInfo(this, event);
+ }
+ return true;
+}
+
+bool Tab2::OnMouseDragged(const views::MouseEvent& event) {
+ dragging_ = true;
+ return model_->DragTab(this, event);
+}
+
+void Tab2::OnMouseReleased(const views::MouseEvent& event, bool canceled) {
+ if (dragging_) {
+ dragging_ = false;
+ model_->DragEnded(this);
+ }
+}
+
+void Tab2::DidChangeBounds(const gfx::Rect& previous,
+ const gfx::Rect& current) {
+}
Property changes on: chrome\browser\views\tabs\tab_2.cc
___________________________________________________________________
Added: svn:eol-style
+ LF
« no previous file with comments | « chrome/browser/views/tabs/tab_2.h ('k') | chrome/browser/views/tabs/tab_strip_2.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698