diff options
author | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-11 23:46:04 +0000 |
---|---|---|
committer | ben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-02-11 23:46:04 +0000 |
commit | 5a9bb950970d732b3d9f0ed4ecc052c6d213bde4 (patch) | |
tree | a48897126b35d149d0651f4fd53cf789c99af2b7 /app | |
parent | 1525c68ec291218d831e29ea34aaf5a516daf855 (diff) | |
download | chromium_src-5a9bb950970d732b3d9f0ed4ecc052c6d213bde4.zip chromium_src-5a9bb950970d732b3d9f0ed4ecc052c6d213bde4.tar.gz chromium_src-5a9bb950970d732b3d9f0ed4ecc052c6d213bde4.tar.bz2 |
Make clicking on side tabs to select them work.
Use a simple round rect for the visual treatment.
Add some rect conversion utils.
http://crbug.com/34509
TEST=none
Review URL: http://codereview.chromium.org/597012
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@38856 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'app')
-rw-r--r-- | app/app_base.gypi | 2 | ||||
-rw-r--r-- | app/gfx/canvas.cc | 8 | ||||
-rw-r--r-- | app/gfx/canvas.h | 2 | ||||
-rw-r--r-- | app/gfx/skia_util.cc | 42 | ||||
-rw-r--r-- | app/gfx/skia_util.h | 34 |
5 files changed, 88 insertions, 0 deletions
diff --git a/app/app_base.gypi b/app/app_base.gypi index fdc8854..81305aa 100644 --- a/app/app_base.gypi +++ b/app/app_base.gypi @@ -150,6 +150,8 @@ 'gfx/scrollbar_size.h', 'gfx/skbitmap_operations.cc', 'gfx/skbitmap_operations.h', + 'gfx/skia_util.cc', + 'gfx/skia_util.h', 'gfx/text_elider.cc', 'gfx/text_elider.h', 'gtk_dnd_util.cc', diff --git a/app/gfx/canvas.cc b/app/gfx/canvas.cc index 306531c4..420c984 100644 --- a/app/gfx/canvas.cc +++ b/app/gfx/canvas.cc @@ -221,6 +221,14 @@ void Canvas::DrawStringInt(const std::wstring& text, l10n_util::DefaultCanvasTextAlignment()); } +void Canvas::DrawStringInt(const std::wstring& text, + const gfx::Font& font, + const SkColor& color, + const gfx::Rect& display_rect) { + DrawStringInt(text, font, color, display_rect.x(), display_rect.y(), + display_rect.width(), display_rect.height()); +} + void Canvas::TileImageInt(const SkBitmap& bitmap, int x, int y, int w, int h) { TileImageInt(bitmap, 0, 0, x, y, w, h); } diff --git a/app/gfx/canvas.h b/app/gfx/canvas.h index e59db16..79eed9c 100644 --- a/app/gfx/canvas.h +++ b/app/gfx/canvas.h @@ -163,6 +163,8 @@ class Canvas : public skia::PlatformCanvas { // text is too big, it is truncated and '...' is added to the end. void DrawStringInt(const std::wstring& text, const gfx::Font& font, const SkColor& color, int x, int y, int w, int h); + void DrawStringInt(const std::wstring& text, const gfx::Font& font, + const SkColor& color, const gfx::Rect& display_rect); // Draws text with the specified color, font and location. The last argument // specifies flags for how the text should be rendered. It can be one of diff --git a/app/gfx/skia_util.cc b/app/gfx/skia_util.cc new file mode 100644 index 0000000..fa6ec24 --- /dev/null +++ b/app/gfx/skia_util.cc @@ -0,0 +1,42 @@ +// Copyright (c) 2010 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 "app/gfx/skia_util.h" + +#include "base/gfx/rect.h" +#include "third_party/skia/include/core/SkColorPriv.h" +#include "third_party/skia/include/core/SkShader.h" +#include "third_party/skia/include/effects/SkGradientShader.h" + +namespace gfx { + +SkRect RectToSkRect(const gfx::Rect& rect) { + SkRect r; + r.set(SkIntToScalar(rect.x()), SkIntToScalar(rect.y()), + SkIntToScalar(rect.right()), SkIntToScalar(rect.bottom())); + return r; +} + +gfx::Rect SkRectToRect(const SkRect& rect) { + return gfx::Rect(SkScalarToFixed(rect.fLeft), + SkScalarToFixed(rect.fTop), + SkScalarToFixed(rect.width()), + SkScalarToFixed(rect.height())); +} + +SkShader* CreateGradientShader(int start_point, + int end_point, + SkColor start_color, + SkColor end_color) { + SkColor grad_colors[2] = { start_color, end_color}; + SkPoint grad_points[2]; + grad_points[0].set(SkIntToScalar(0), SkIntToScalar(start_point)); + grad_points[1].set(SkIntToScalar(0), SkIntToScalar(end_point)); + + return SkGradientShader::CreateLinear( + grad_points, grad_colors, NULL, 2, SkShader::kRepeat_TileMode); +} + +} // namespace gfx + diff --git a/app/gfx/skia_util.h b/app/gfx/skia_util.h new file mode 100644 index 0000000..66a8aeb --- /dev/null +++ b/app/gfx/skia_util.h @@ -0,0 +1,34 @@ +// Copyright (c) 2010 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 APP_GFX_SKIA_UTIL_H_ +#define APP_GFX_SKIA_UTIL_H_ + +#include "third_party/skia/include/core/SkColor.h" +#include "third_party/skia/include/core/SkRect.h" + +class SkShader; + +namespace gfx { + +class Rect; + +// Convert between Skia and gfx rect types. +SkRect RectToSkRect(const gfx::Rect& rect); +gfx::Rect SkRectToRect(const SkRect& rect); + +// Creates a vertical gradient shader. The caller owns the shader. +// Example usage to avoid leaks: +// paint.setShader(gfx::CreateGradientShader(0, 10, red, blue))->safeUnref(); +// +// (The old shader in the paint, if any, needs to be freed, and safeUnref will +// handle the NULL case.) +SkShader* CreateGradientShader(int start_point, + int end_point, + SkColor start_color, + SkColor end_color); + +} // namespace gfx; + +#endif // APP_GFX_SKIA_UTIL_H_ |