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

Unified Diff: ash/app_list/app_list_bubble_border.cc

Issue 10388032: Move app list from ash to ui. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: fix win_aura bot and comments in #5 Created 8 years, 7 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 | « ash/app_list/app_list_bubble_border.h ('k') | ash/app_list/app_list_item_model.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ash/app_list/app_list_bubble_border.cc
===================================================================
--- ash/app_list/app_list_bubble_border.cc (revision 135932)
+++ ash/app_list/app_list_bubble_border.cc (working copy)
@@ -1,213 +0,0 @@
-// 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.
-
-#include "ash/app_list/app_list_bubble_border.h"
-
-#include "third_party/skia/include/core/SkPath.h"
-#include "third_party/skia/include/core/SkPaint.h"
-#include "third_party/skia/include/effects/SkBlurDrawLooper.h"
-#include "third_party/skia/include/effects/SkGradientShader.h"
-#include "ui/gfx/canvas.h"
-
-namespace {
-
-const int kCornerRadius = 3;
-
-const int kArrowHeight = 10;
-const int kArrowWidth = 20;
-
-const SkColor kBorderColor = SkColorSetARGB(0xFF, 0, 0, 0);
-const int kBorderSize = 1;
-
-const SkColor kShadowColor = SkColorSetARGB(0xFF, 0, 0, 0);
-const int kShadowRadius = 4;
-
-const SkColor kModelViewGradientColor1 = SkColorSetARGB(0xFF, 0xFE, 0xFE, 0xFE);
-const SkColor kModelViewGradientColor2 = SkColorSetARGB(0xFF, 0xF8, 0xF8, 0xF8);
-const int kModelViewGradientSize = 10;
-
-const SkColor kFooterBorderGradientColor1 =
- SkColorSetARGB(0xFF, 0xA0, 0xA0, 0xA0);
-const SkColor kFooterBorderGradientColor2 =
- SkColorSetARGB(0xFF, 0xD4, 0xD4, 0xD4);
-const int kFooterBorderSize = 3;
-const SkColor kFooterBackground = SkColorSetARGB(0xFF, 0xDC, 0xDC, 0xDC);
-
-// TODO(xiyuan): Merge this with the one in skia_util.
-SkShader* CreateVerticalGradientShader(int start_point,
- int end_point,
- SkColor start_color,
- SkColor end_color,
- SkShader::TileMode mode) {
- SkColor grad_colors[2] = { start_color, end_color};
- SkPoint grad_points[2];
- grad_points[0].iset(0, start_point);
- grad_points[1].iset(0, end_point);
-
- return SkGradientShader::CreateLinear(grad_points,
- grad_colors,
- NULL,
- 2,
- mode);
-}
-
-// Builds a bubble shape for given |bounds|.
-void BuildShape(const gfx::Rect& bounds,
- SkScalar padding,
- SkScalar arrow_offset,
- SkPath* path) {
- const SkScalar left = SkIntToScalar(bounds.x()) + padding;
- const SkScalar top = SkIntToScalar(bounds.y()) + padding;
- const SkScalar right = SkIntToScalar(bounds.right()) - padding;
- const SkScalar bottom = SkIntToScalar(bounds.bottom()) - padding;
-
- const SkScalar center_x = SkIntToScalar((bounds.x() + bounds.right()) / 2);
- const SkScalar center_y = SkIntToScalar((bounds.y() + bounds.bottom()) / 2);
-
- const SkScalar half_array_width = SkIntToScalar(kArrowWidth / 2);
- const SkScalar arrow_height = SkIntToScalar(kArrowHeight) - padding;
-
- path->reset();
- path->incReserve(12);
-
- path->moveTo(center_x, top);
- path->arcTo(left, top, left, center_y, SkIntToScalar(kCornerRadius));
- path->arcTo(left, bottom, center_x - half_array_width, bottom,
- SkIntToScalar(kCornerRadius));
- path->lineTo(center_x + arrow_offset - half_array_width, bottom);
- path->lineTo(center_x + arrow_offset, bottom + arrow_height);
- path->lineTo(center_x + arrow_offset + half_array_width, bottom);
- path->arcTo(right, bottom, right, center_y, SkIntToScalar(kCornerRadius));
- path->arcTo(right, top, center_x, top, SkIntToScalar(kCornerRadius));
- path->close();
-}
-
-} // namespace
-
-namespace ash {
-
-AppListBubbleBorder::AppListBubbleBorder(views::View* app_list_view)
- : views::BubbleBorder(views::BubbleBorder::BOTTOM_RIGHT,
- views::BubbleBorder::NO_SHADOW),
- app_list_view_(app_list_view),
- arrow_offset_(0) {
-}
-
-AppListBubbleBorder::~AppListBubbleBorder() {
-}
-
-void AppListBubbleBorder::PaintModelViewBackground(
- gfx::Canvas* canvas,
- const gfx::Rect& bounds) const {
- const views::View* page_switcher = app_list_view_->child_at(1);
- const gfx::Rect page_switcher_bounds =
- app_list_view_->ConvertRectToWidget(page_switcher->bounds());
- gfx::Rect rect(bounds.x(),
- bounds.y(),
- bounds.width(),
- page_switcher_bounds.y() - bounds.y());
-
- SkPaint paint;
- paint.setStyle(SkPaint::kFill_Style);
- SkSafeUnref(paint.setShader(CreateVerticalGradientShader(
- rect.y(),
- rect.y() + kModelViewGradientSize,
- kModelViewGradientColor1,
- kModelViewGradientColor2,
- SkShader::kClamp_TileMode)));
- canvas->DrawRect(rect, paint);
-}
-
-void AppListBubbleBorder::PaintPageSwitcherBackground(
- gfx::Canvas* canvas,
- const gfx::Rect& bounds) const {
- const views::View* page_switcher = app_list_view_->child_at(1);
- const gfx::Rect page_switcher_bounds =
- app_list_view_->ConvertRectToWidget(page_switcher->bounds());
-
- gfx::Rect rect(bounds.x(),
- page_switcher_bounds.y(),
- bounds.width(),
- kFooterBorderSize);
- SkPaint paint;
- paint.setStyle(SkPaint::kFill_Style);
- SkSafeUnref(paint.setShader(CreateVerticalGradientShader(
- rect.y(),
- rect.bottom(),
- kFooterBorderGradientColor1,
- kFooterBorderGradientColor2,
- SkShader::kClamp_TileMode)));
- canvas->DrawRect(rect, paint);
-
- rect.set_y(rect.bottom());
- rect.set_height(bounds.bottom() - rect.y() + kArrowHeight - kBorderSize);
- canvas->FillRect(rect, kFooterBackground);
-}
-
-void AppListBubbleBorder::GetInsets(gfx::Insets* insets) const {
- insets->Set(kShadowRadius + kBorderSize,
- kShadowRadius + kBorderSize,
- kShadowRadius + kBorderSize + kArrowHeight,
- kShadowRadius + kBorderSize);
-}
-
-gfx::Rect AppListBubbleBorder::GetBounds(
- const gfx::Rect& position_relative_to,
- const gfx::Size& contents_size) const {
- gfx::Size border_size(contents_size);
- gfx::Insets insets;
- GetInsets(&insets);
- border_size.Enlarge(insets.width(), insets.height());
-
- int anchor_x = (position_relative_to.x() + position_relative_to.right()) / 2;
- int arrow_tip_x = border_size.width() / 2 + arrow_offset_;
-
- return gfx::Rect(
- gfx::Point(anchor_x - arrow_tip_x,
- position_relative_to.y() - border_size.height() +
- kShadowRadius),
- border_size);
-}
-
-void AppListBubbleBorder::Paint(const views::View& view,
- gfx::Canvas* canvas) const {
- gfx::Insets insets;
- GetInsets(&insets);
-
- gfx::Rect bounds = view.bounds();
- bounds.Inset(insets);
-
- SkPath path;
-
- SkPaint paint;
- paint.setAntiAlias(true);
- paint.setStyle(SkPaint::kStroke_Style);
- paint.setColor(kBorderColor);
- SkSafeUnref(paint.setLooper(
- new SkBlurDrawLooper(kShadowRadius,
- 0, 0,
- kShadowColor,
- SkBlurDrawLooper::kHighQuality_BlurFlag)));
- // Pads with 0.5 pixel since anti alias is used.
- BuildShape(bounds,
- SkDoubleToScalar(0.5),
- SkIntToScalar(arrow_offset_),
- &path);
- canvas->DrawPath(path, paint);
-
- // Pads with kBoprderSize pixels to leave space for border lines.
- BuildShape(bounds,
- SkIntToScalar(kBorderSize),
- SkIntToScalar(arrow_offset_),
- &path);
- canvas->Save();
- canvas->ClipPath(path);
-
- PaintModelViewBackground(canvas, bounds);
- PaintPageSwitcherBackground(canvas, bounds);
-
- canvas->Restore();
-}
-
-} // namespace ash
« no previous file with comments | « ash/app_list/app_list_bubble_border.h ('k') | ash/app_list/app_list_item_model.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698