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

Side by Side Diff: third_party/WebKit/Source/platform/exported/WebScrollbarThemePainter.cpp

Issue 1458703010: Mac: Don't repaint scrollbars every frame (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master2
Patch Set: Rebase and resolve Created 5 years 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2012 Google Inc. All rights reserved. 2 * Copyright (C) 2012 Google Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 7 *
8 * 1. Redistributions of source code must retain the above copyright 8 * 1. Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer. 9 * notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright 10 * 2. Redistributions in binary form must reproduce the above copyright
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after
61 pictureBuilder.endRecording()->playback(canvas); 61 pictureBuilder.endRecording()->playback(canvas);
62 } 62 }
63 63
64 void WebScrollbarThemePainter::paintTrackBackground(WebCanvas* canvas, const Web Rect& rect) 64 void WebScrollbarThemePainter::paintTrackBackground(WebCanvas* canvas, const Web Rect& rect)
65 { 65 {
66 IntRect intRect(rect); 66 IntRect intRect(rect);
67 SkPictureBuilder pictureBuilder(intRect); 67 SkPictureBuilder pictureBuilder(intRect);
68 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); 68 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor);
69 m_theme->paintTrackBackground(&pictureBuilder.context(), m_scrollbar.get(), intRect); 69 m_theme->paintTrackBackground(&pictureBuilder.context(), m_scrollbar.get(), intRect);
70 pictureBuilder.endRecording()->playback(canvas); 70 pictureBuilder.endRecording()->playback(canvas);
71 if (!m_theme->shouldRepaintAllPartsOnInvalidation())
72 m_scrollbar->setTrackNeedsRepaint(false);
71 } 73 }
72 74
73 void WebScrollbarThemePainter::paintBackTrackPart(WebCanvas* canvas, const WebRe ct& rect) 75 void WebScrollbarThemePainter::paintBackTrackPart(WebCanvas* canvas, const WebRe ct& rect)
74 { 76 {
75 IntRect intRect(rect); 77 IntRect intRect(rect);
76 SkPictureBuilder pictureBuilder(intRect); 78 SkPictureBuilder pictureBuilder(intRect);
77 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); 79 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor);
78 m_theme->paintTrackPiece(&pictureBuilder.context(), m_scrollbar.get(), intRe ct, BackTrackPart); 80 m_theme->paintTrackPiece(&pictureBuilder.context(), m_scrollbar.get(), intRe ct, BackTrackPart);
79 pictureBuilder.endRecording()->playback(canvas); 81 pictureBuilder.endRecording()->playback(canvas);
80 } 82 }
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after
133 pictureBuilder.endRecording()->playback(canvas); 135 pictureBuilder.endRecording()->playback(canvas);
134 } 136 }
135 137
136 void WebScrollbarThemePainter::paintThumb(WebCanvas* canvas, const WebRect& rect ) 138 void WebScrollbarThemePainter::paintThumb(WebCanvas* canvas, const WebRect& rect )
137 { 139 {
138 IntRect intRect(rect); 140 IntRect intRect(rect);
139 SkPictureBuilder pictureBuilder(intRect); 141 SkPictureBuilder pictureBuilder(intRect);
140 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); 142 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor);
141 m_theme->paintThumb(&pictureBuilder.context(), m_scrollbar.get(), intRect); 143 m_theme->paintThumb(&pictureBuilder.context(), m_scrollbar.get(), intRect);
142 pictureBuilder.endRecording()->playback(canvas); 144 pictureBuilder.endRecording()->playback(canvas);
145 if (!m_theme->shouldRepaintAllPartsOnInvalidation())
146 m_scrollbar->setThumbNeedsRepaint(false);
143 } 147 }
144 148
145 WebScrollbarThemePainter::WebScrollbarThemePainter(ScrollbarTheme* theme, Scroll bar* scrollbar, float deviceScaleFactor) 149 WebScrollbarThemePainter::WebScrollbarThemePainter(ScrollbarTheme* theme, Scroll bar* scrollbar, float deviceScaleFactor)
146 : m_theme(theme) 150 : m_theme(theme)
147 , m_scrollbar(scrollbar) 151 , m_scrollbar(scrollbar)
148 , m_deviceScaleFactor(deviceScaleFactor) 152 , m_deviceScaleFactor(deviceScaleFactor)
149 { 153 {
150 } 154 }
151 155
156 float WebScrollbarThemePainter::thumbOpacity() const
157 {
158 return m_theme->thumbOpacity(m_scrollbar.get());
159 }
160
161 bool WebScrollbarThemePainter::trackNeedsRepaint() const
162 {
163 return m_scrollbar->trackNeedsRepaint();
164 }
165
166 bool WebScrollbarThemePainter::thumbNeedsRepaint() const
167 {
168 return m_scrollbar->thumbNeedsRepaint();
169 }
170
152 } // namespace blink 171 } // namespace blink
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698