Chromium Code Reviews| OLD | NEW |
|---|---|
| 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 29 matching lines...) Expand all Loading... | |
| 40 m_theme = painter.m_theme; | 40 m_theme = painter.m_theme; |
| 41 m_scrollbar = painter.m_scrollbar; | 41 m_scrollbar = painter.m_scrollbar; |
| 42 m_deviceScaleFactor = painter.m_deviceScaleFactor; | 42 m_deviceScaleFactor = painter.m_deviceScaleFactor; |
| 43 } | 43 } |
| 44 | 44 |
| 45 void WebScrollbarThemePainter::reset() | 45 void WebScrollbarThemePainter::reset() |
| 46 { | 46 { |
| 47 m_scrollbar = nullptr; | 47 m_scrollbar = nullptr; |
| 48 } | 48 } |
| 49 | 49 |
| 50 static void playbackIfNeeded(SkPictureBuilder* builder, WebCanvas* canvas) | |
|
chrishtr
2016/03/29 22:42:23
the "IfNeeded" suffix is now deprecated :)
wkorman
2016/03/29 22:52:02
Removed suffix.
| |
| 51 { | |
| 52 RefPtr<const SkPicture> recording = builder->endRecording(); | |
| 53 if (recording) | |
| 54 recording->playback(canvas); | |
| 55 } | |
| 56 | |
| 50 void WebScrollbarThemePainter::paintScrollbarBackground(WebCanvas* canvas, const WebRect& rect) | 57 void WebScrollbarThemePainter::paintScrollbarBackground(WebCanvas* canvas, const WebRect& rect) |
| 51 { | 58 { |
| 52 SkRect clip = SkRect::MakeXYWH(rect.x, rect.y, rect.width, rect.height); | 59 SkRect clip = SkRect::MakeXYWH(rect.x, rect.y, rect.width, rect.height); |
| 53 canvas->clipRect(clip); | 60 canvas->clipRect(clip); |
| 54 | 61 |
| 55 IntRect intRect(rect); | 62 IntRect intRect(rect); |
| 56 SkPictureBuilder pictureBuilder(intRect); | 63 SkPictureBuilder pictureBuilder(intRect); |
| 57 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 64 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 58 m_theme->paintScrollbarBackground(pictureBuilder.context(), *m_scrollbar); | 65 m_theme->paintScrollbarBackground(pictureBuilder.context(), *m_scrollbar); |
| 59 pictureBuilder.endRecording()->playback(canvas); | 66 playbackIfNeeded(&pictureBuilder, canvas); |
| 60 } | 67 } |
| 61 | 68 |
| 62 void WebScrollbarThemePainter::paintTrackBackground(WebCanvas* canvas, const Web Rect& rect) | 69 void WebScrollbarThemePainter::paintTrackBackground(WebCanvas* canvas, const Web Rect& rect) |
| 63 { | 70 { |
| 64 IntRect intRect(rect); | 71 IntRect intRect(rect); |
| 65 SkPictureBuilder pictureBuilder(intRect); | 72 SkPictureBuilder pictureBuilder(intRect); |
| 66 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 73 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 67 m_theme->paintTrackBackground(pictureBuilder.context(), *m_scrollbar, intRec t); | 74 m_theme->paintTrackBackground(pictureBuilder.context(), *m_scrollbar, intRec t); |
| 68 pictureBuilder.endRecording()->playback(canvas); | 75 playbackIfNeeded(&pictureBuilder, canvas); |
| 69 if (!m_theme->shouldRepaintAllPartsOnInvalidation()) | 76 if (!m_theme->shouldRepaintAllPartsOnInvalidation()) |
| 70 m_scrollbar->clearTrackNeedsRepaint(); | 77 m_scrollbar->clearTrackNeedsRepaint(); |
| 71 } | 78 } |
| 72 | 79 |
| 73 void WebScrollbarThemePainter::paintBackTrackPart(WebCanvas* canvas, const WebRe ct& rect) | 80 void WebScrollbarThemePainter::paintBackTrackPart(WebCanvas* canvas, const WebRe ct& rect) |
| 74 { | 81 { |
| 75 IntRect intRect(rect); | 82 IntRect intRect(rect); |
| 76 SkPictureBuilder pictureBuilder(intRect); | 83 SkPictureBuilder pictureBuilder(intRect); |
| 77 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 84 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 78 m_theme->paintTrackPiece(pictureBuilder.context(), *m_scrollbar, intRect, Ba ckTrackPart); | 85 m_theme->paintTrackPiece(pictureBuilder.context(), *m_scrollbar, intRect, Ba ckTrackPart); |
| 79 pictureBuilder.endRecording()->playback(canvas); | 86 playbackIfNeeded(&pictureBuilder, canvas); |
| 80 } | 87 } |
| 81 | 88 |
| 82 void WebScrollbarThemePainter::paintForwardTrackPart(WebCanvas* canvas, const We bRect& rect) | 89 void WebScrollbarThemePainter::paintForwardTrackPart(WebCanvas* canvas, const We bRect& rect) |
| 83 { | 90 { |
| 84 IntRect intRect(rect); | 91 IntRect intRect(rect); |
| 85 SkPictureBuilder pictureBuilder(intRect); | 92 SkPictureBuilder pictureBuilder(intRect); |
| 86 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 93 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 87 m_theme->paintTrackPiece(pictureBuilder.context(), *m_scrollbar, intRect, Fo rwardTrackPart); | 94 m_theme->paintTrackPiece(pictureBuilder.context(), *m_scrollbar, intRect, Fo rwardTrackPart); |
| 88 pictureBuilder.endRecording()->playback(canvas); | 95 playbackIfNeeded(&pictureBuilder, canvas); |
| 89 } | 96 } |
| 90 | 97 |
| 91 void WebScrollbarThemePainter::paintBackButtonStart(WebCanvas* canvas, const Web Rect& rect) | 98 void WebScrollbarThemePainter::paintBackButtonStart(WebCanvas* canvas, const Web Rect& rect) |
| 92 { | 99 { |
| 93 IntRect intRect(rect); | 100 IntRect intRect(rect); |
| 94 SkPictureBuilder pictureBuilder(intRect); | 101 SkPictureBuilder pictureBuilder(intRect); |
| 95 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 102 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 96 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, BackBu ttonStartPart); | 103 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, BackBu ttonStartPart); |
| 97 pictureBuilder.endRecording()->playback(canvas); | 104 playbackIfNeeded(&pictureBuilder, canvas); |
| 98 } | 105 } |
| 99 | 106 |
| 100 void WebScrollbarThemePainter::paintBackButtonEnd(WebCanvas* canvas, const WebRe ct& rect) | 107 void WebScrollbarThemePainter::paintBackButtonEnd(WebCanvas* canvas, const WebRe ct& rect) |
| 101 { | 108 { |
| 102 IntRect intRect(rect); | 109 IntRect intRect(rect); |
| 103 SkPictureBuilder pictureBuilder(intRect); | 110 SkPictureBuilder pictureBuilder(intRect); |
| 104 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 111 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 105 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, BackBu ttonEndPart); | 112 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, BackBu ttonEndPart); |
| 106 pictureBuilder.endRecording()->playback(canvas); | 113 playbackIfNeeded(&pictureBuilder, canvas); |
| 107 } | 114 } |
| 108 | 115 |
| 109 void WebScrollbarThemePainter::paintForwardButtonStart(WebCanvas* canvas, const WebRect& rect) | 116 void WebScrollbarThemePainter::paintForwardButtonStart(WebCanvas* canvas, const WebRect& rect) |
| 110 { | 117 { |
| 111 IntRect intRect(rect); | 118 IntRect intRect(rect); |
| 112 SkPictureBuilder pictureBuilder(intRect); | 119 SkPictureBuilder pictureBuilder(intRect); |
| 113 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 120 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 114 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, Forwar dButtonStartPart); | 121 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, Forwar dButtonStartPart); |
| 115 pictureBuilder.endRecording()->playback(canvas); | 122 playbackIfNeeded(&pictureBuilder, canvas); |
| 116 } | 123 } |
| 117 | 124 |
| 118 void WebScrollbarThemePainter::paintForwardButtonEnd(WebCanvas* canvas, const We bRect& rect) | 125 void WebScrollbarThemePainter::paintForwardButtonEnd(WebCanvas* canvas, const We bRect& rect) |
| 119 { | 126 { |
| 120 IntRect intRect(rect); | 127 IntRect intRect(rect); |
| 121 SkPictureBuilder pictureBuilder(intRect); | 128 SkPictureBuilder pictureBuilder(intRect); |
| 122 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 129 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 123 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, Forwar dButtonEndPart); | 130 m_theme->paintButton(pictureBuilder.context(), *m_scrollbar, intRect, Forwar dButtonEndPart); |
| 124 pictureBuilder.endRecording()->playback(canvas); | 131 playbackIfNeeded(&pictureBuilder, canvas); |
| 125 } | 132 } |
| 126 | 133 |
| 127 void WebScrollbarThemePainter::paintTickmarks(WebCanvas* canvas, const WebRect& rect) | 134 void WebScrollbarThemePainter::paintTickmarks(WebCanvas* canvas, const WebRect& rect) |
| 128 { | 135 { |
| 129 IntRect intRect(rect); | 136 IntRect intRect(rect); |
| 130 SkPictureBuilder pictureBuilder(intRect); | 137 SkPictureBuilder pictureBuilder(intRect); |
| 131 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 138 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 132 m_theme->paintTickmarks(pictureBuilder.context(), *m_scrollbar, intRect); | 139 m_theme->paintTickmarks(pictureBuilder.context(), *m_scrollbar, intRect); |
| 133 pictureBuilder.endRecording()->playback(canvas); | 140 playbackIfNeeded(&pictureBuilder, canvas); |
| 134 } | 141 } |
| 135 | 142 |
| 136 void WebScrollbarThemePainter::paintThumb(WebCanvas* canvas, const WebRect& rect ) | 143 void WebScrollbarThemePainter::paintThumb(WebCanvas* canvas, const WebRect& rect ) |
| 137 { | 144 { |
| 138 IntRect intRect(rect); | 145 IntRect intRect(rect); |
| 139 SkPictureBuilder pictureBuilder(intRect); | 146 SkPictureBuilder pictureBuilder(intRect); |
| 140 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); | 147 pictureBuilder.context().setDeviceScaleFactor(m_deviceScaleFactor); |
| 141 m_theme->paintThumb(pictureBuilder.context(), *m_scrollbar, intRect); | 148 m_theme->paintThumb(pictureBuilder.context(), *m_scrollbar, intRect); |
| 142 pictureBuilder.endRecording()->playback(canvas); | 149 playbackIfNeeded(&pictureBuilder, canvas); |
| 143 if (!m_theme->shouldRepaintAllPartsOnInvalidation()) | 150 if (!m_theme->shouldRepaintAllPartsOnInvalidation()) |
| 144 m_scrollbar->clearThumbNeedsRepaint(); | 151 m_scrollbar->clearThumbNeedsRepaint(); |
| 145 } | 152 } |
| 146 | 153 |
| 147 WebScrollbarThemePainter::WebScrollbarThemePainter(ScrollbarTheme& theme, Scroll bar& scrollbar, float deviceScaleFactor) | 154 WebScrollbarThemePainter::WebScrollbarThemePainter(ScrollbarTheme& theme, Scroll bar& scrollbar, float deviceScaleFactor) |
| 148 : m_theme(&theme) | 155 : m_theme(&theme) |
| 149 , m_scrollbar(&scrollbar) | 156 , m_scrollbar(&scrollbar) |
| 150 , m_deviceScaleFactor(deviceScaleFactor) | 157 , m_deviceScaleFactor(deviceScaleFactor) |
| 151 { | 158 { |
| 152 } | 159 } |
| 153 | 160 |
| 154 float WebScrollbarThemePainter::thumbOpacity() const | 161 float WebScrollbarThemePainter::thumbOpacity() const |
| 155 { | 162 { |
| 156 return m_theme->thumbOpacity(*m_scrollbar); | 163 return m_theme->thumbOpacity(*m_scrollbar); |
| 157 } | 164 } |
| 158 | 165 |
| 159 bool WebScrollbarThemePainter::trackNeedsRepaint() const | 166 bool WebScrollbarThemePainter::trackNeedsRepaint() const |
| 160 { | 167 { |
| 161 return m_scrollbar->trackNeedsRepaint(); | 168 return m_scrollbar->trackNeedsRepaint(); |
| 162 } | 169 } |
| 163 | 170 |
| 164 bool WebScrollbarThemePainter::thumbNeedsRepaint() const | 171 bool WebScrollbarThemePainter::thumbNeedsRepaint() const |
| 165 { | 172 { |
| 166 return m_scrollbar->thumbNeedsRepaint(); | 173 return m_scrollbar->thumbNeedsRepaint(); |
| 167 } | 174 } |
| 168 | 175 |
| 169 } // namespace blink | 176 } // namespace blink |
| OLD | NEW |