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

Unified Diff: chrome/browser/android/vr_shell/textures/url_bar_texture.cc

Issue 2877673005: VR: Avoiding regeneration of RenderText objects for texture rendering (Closed)
Patch Set: removing unnecessary comment Created 3 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 | « chrome/browser/android/vr_shell/textures/url_bar_texture.h ('k') | no next file » | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: chrome/browser/android/vr_shell/textures/url_bar_texture.cc
diff --git a/chrome/browser/android/vr_shell/textures/url_bar_texture.cc b/chrome/browser/android/vr_shell/textures/url_bar_texture.cc
index 160e26d593c665e0f198eeb0503104b1b05c84b3..c045a12ad3d74589cb2f308505fc4e0e4b20e6ae 100644
--- a/chrome/browser/android/vr_shell/textures/url_bar_texture.cc
+++ b/chrome/browser/android/vr_shell/textures/url_bar_texture.cc
@@ -12,6 +12,7 @@
#include "ui/gfx/font_list.h"
#include "ui/gfx/geometry/rect.h"
#include "ui/gfx/paint_vector_icon.h"
+#include "ui/gfx/render_text.h"
#include "ui/gfx/vector_icon_types.h"
#include "ui/vector_icons/vector_icons.h"
@@ -19,7 +20,6 @@ namespace vr_shell {
namespace {
-static constexpr SkColor kTextureBackground = 0x00AAAAAA;
static constexpr SkColor kBackground = 0xCCAAAAAA;
static constexpr SkColor kBackgroundHover = 0xCCDDDDDD;
static constexpr SkColor kForeground = 0xCC444444;
@@ -88,8 +88,6 @@ void UrlBarTexture::Draw(SkCanvas* canvas, const gfx::Size& texture_size) {
cc::SkiaPaintCanvas paint_canvas(canvas);
gfx::Canvas gfx_canvas(&paint_canvas, 1.0f);
- canvas->drawColor(kTextureBackground);
-
// Back button area.
SkRRect round_rect;
SkVector rounded_corner = {kHeight / 2, kHeight / 2};
@@ -121,8 +119,7 @@ void UrlBarTexture::Draw(SkCanvas* canvas, const gfx::Size& texture_size) {
canvas->restore();
// Site security state icon.
- // TODO(cjgrant): Plug in the correct icons based on security level.
- if (!gurl_.spec().empty()) {
+ if (!gurl_.is_empty()) {
canvas->save();
canvas->translate(
kBackButtonWidth + kSeparatorWidth + kSecurityFieldWidth / 2,
@@ -138,16 +135,24 @@ void UrlBarTexture::Draw(SkCanvas* canvas, const gfx::Size& texture_size) {
canvas->restore();
- // Draw text based on pixel sizes rather than meters, for correct font sizing.
- int pixel_font_height = texture_size.height() * kFontHeight / kHeight;
- int text_flags = gfx::Canvas::TEXT_ALIGN_LEFT;
- float url_x = kBackButtonWidth + kSeparatorWidth + kSecurityFieldWidth;
- float url_width = kWidth - url_x - kUrlRightMargin;
- gfx_canvas.DrawStringRectWithFlags(
- base::UTF8ToUTF16(gurl_.spec()), GetDefaultFontList(pixel_font_height),
- SK_ColorBLACK,
- gfx::Rect(ToPixels(url_x), 0, ToPixels(url_width), ToPixels(kHeight)),
- text_flags);
+ if (!gurl_.is_empty()) {
+ if (last_drawn_gurl_ != gurl_) {
+ // Draw text based on pixel sizes rather than meters, for correct font
+ // sizing.
+ int pixel_font_height = texture_size.height() * kFontHeight / kHeight;
+ float url_x = kBackButtonWidth + kSeparatorWidth + kSecurityFieldWidth;
+ float url_width = kWidth - url_x - kUrlRightMargin;
+ gfx::Rect text_bounds(ToPixels(url_x), 0, ToPixels(url_width),
+ ToPixels(kHeight));
+ gurl_render_texts_ =
+ PrepareDrawStringRect(base::UTF8ToUTF16(gurl_.spec()),
+ GetDefaultFontList(pixel_font_height),
+ SK_ColorBLACK, &text_bounds, TEXT_ALIGN_LEFT);
+ last_drawn_gurl_ = gurl_;
+ }
+ for (auto& render_text : gurl_render_texts_)
+ render_text->Draw(&gfx_canvas);
+ }
}
gfx::Size UrlBarTexture::GetPreferredTextureSize(int maximum_width) const {
« no previous file with comments | « chrome/browser/android/vr_shell/textures/url_bar_texture.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698