summaryrefslogtreecommitdiffstats
path: root/app
diff options
context:
space:
mode:
authorben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-11 23:46:04 +0000
committerben@chromium.org <ben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-02-11 23:46:04 +0000
commit5a9bb950970d732b3d9f0ed4ecc052c6d213bde4 (patch)
treea48897126b35d149d0651f4fd53cf789c99af2b7 /app
parent1525c68ec291218d831e29ea34aaf5a516daf855 (diff)
downloadchromium_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.gypi2
-rw-r--r--app/gfx/canvas.cc8
-rw-r--r--app/gfx/canvas.h2
-rw-r--r--app/gfx/skia_util.cc42
-rw-r--r--app/gfx/skia_util.h34
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_