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

Side by Side Diff: ui/gfx/render_text_win.cc

Issue 8515012: Avoid unnecessary work in |RenderTextWin::UpdateLayout()| if there are no runs. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 9 years, 1 month 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 unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "ui/gfx/render_text_win.h" 5 #include "ui/gfx/render_text_win.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <map> 8 #include <map>
9 9
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 298 matching lines...) Expand 10 before | Expand all | Expand 10 after
309 size_t start = run->range.start(); 309 size_t start = run->range.start();
310 if (position == start) 310 if (position == start)
311 return true; 311 return true;
312 return run->logical_clusters[position - start] != 312 return run->logical_clusters[position - start] !=
313 run->logical_clusters[position - start - 1]; 313 run->logical_clusters[position - start - 1];
314 } 314 }
315 315
316 void RenderTextWin::UpdateLayout() { 316 void RenderTextWin::UpdateLayout() {
317 // TODO(msw): Skip complex processing if ScriptIsComplex returns false. 317 // TODO(msw): Skip complex processing if ScriptIsComplex returns false.
318 ItemizeLogicalText(); 318 ItemizeLogicalText();
319 HDC hdc = CreateCompatibleDC(NULL); 319 if (!runs_.empty()) {
320 LayoutVisualText(hdc); 320 HDC hdc = CreateCompatibleDC(NULL);
sky 2011/11/10 21:49:04 nit: use ScopedCreateDC.
Alexei Svitkine (slow) 2011/11/10 22:10:35 Done.
321 DeleteDC(hdc); 321 LayoutVisualText(hdc);
322 DeleteDC(hdc);
323 }
322 } 324 }
323 325
324 size_t RenderTextWin::IndexOfAdjacentGrapheme(size_t index, bool next) { 326 size_t RenderTextWin::IndexOfAdjacentGrapheme(size_t index, bool next) {
325 size_t run_index = GetRunContainingPosition(index); 327 size_t run_index = GetRunContainingPosition(index);
326 internal::TextRun* run = run_index < runs_.size() ? runs_[run_index] : NULL; 328 internal::TextRun* run = run_index < runs_.size() ? runs_[run_index] : NULL;
327 int start = run ? run->range.start() : 0; 329 int start = run ? run->range.start() : 0;
328 int length = run ? run->range.length() : text().length(); 330 int length = run ? run->range.length() : text().length();
329 int ch = index - start; 331 int ch = index - start;
330 WORD cluster = run ? run->logical_clusters[ch] : 0; 332 WORD cluster = run ? run->logical_clusters[ch] : 0;
331 333
(...skipping 334 matching lines...) Expand 10 before | Expand all | Expand 10 after
666 Rect r(GetUpdatedCursorBounds()); 668 Rect r(GetUpdatedCursorBounds());
667 canvas->DrawRectInt(kCursorColor, r.x(), r.y(), r.width(), r.height()); 669 canvas->DrawRectInt(kCursorColor, r.x(), r.y(), r.width(), r.height());
668 } 670 }
669 } 671 }
670 672
671 RenderText* RenderText::CreateRenderText() { 673 RenderText* RenderText::CreateRenderText() {
672 return new RenderTextWin; 674 return new RenderTextWin;
673 } 675 }
674 676
675 } // namespace gfx 677 } // namespace gfx
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698