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

Side by Side Diff: cc/software_renderer.cc

Issue 11189043: cc: Rename cc classes and members to match filenames (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 8 years, 2 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 unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 The Chromium Authors. All rights reserved. 1 // Copyright 2012 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 "config.h" 5 #include "config.h"
6 6
7 #include "CCRendererSoftware.h" 7 #include "CCRendererSoftware.h"
8 8
9 #include "CCDebugBorderDrawQuad.h" 9 #include "CCDebugBorderDrawQuad.h"
10 #include "CCSolidColorDrawQuad.h" 10 #include "CCSolidColorDrawQuad.h"
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after
57 { 57 {
58 return SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) && 58 return SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) &&
59 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) && 59 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) &&
60 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) && 60 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) &&
61 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) && 61 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) &&
62 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f); 62 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f);
63 } 63 }
64 64
65 } // anonymous namespace 65 } // anonymous namespace
66 66
67 scoped_ptr<CCRendererSoftware> CCRendererSoftware::create(CCRendererClient* clie nt, CCResourceProvider* resourceProvider, WebCompositorSoftwareOutputDevice* out putDevice) 67 scoped_ptr<SoftwareRenderer> SoftwareRenderer::create(RendererClient* client, Re sourceProvider* resourceProvider, WebCompositorSoftwareOutputDevice* outputDevic e)
68 { 68 {
69 return make_scoped_ptr(new CCRendererSoftware(client, resourceProvider, outp utDevice)); 69 return make_scoped_ptr(new SoftwareRenderer(client, resourceProvider, output Device));
70 } 70 }
71 71
72 CCRendererSoftware::CCRendererSoftware(CCRendererClient* client, CCResourceProvi der* resourceProvider, WebCompositorSoftwareOutputDevice* outputDevice) 72 SoftwareRenderer::SoftwareRenderer(RendererClient* client, ResourceProvider* res ourceProvider, WebCompositorSoftwareOutputDevice* outputDevice)
73 : CCDirectRenderer(client, resourceProvider) 73 : DirectRenderer(client, resourceProvider)
74 , m_visible(true) 74 , m_visible(true)
75 , m_outputDevice(outputDevice) 75 , m_outputDevice(outputDevice)
76 , m_skCurrentCanvas(0) 76 , m_skCurrentCanvas(0)
77 { 77 {
78 m_resourceProvider->setDefaultResourceType(CCResourceProvider::Bitmap); 78 m_resourceProvider->setDefaultResourceType(ResourceProvider::Bitmap);
79 79
80 m_capabilities.maxTextureSize = INT_MAX; 80 m_capabilities.maxTextureSize = INT_MAX;
81 m_capabilities.bestTextureFormat = GraphicsContext3D::RGBA; 81 m_capabilities.bestTextureFormat = GraphicsContext3D::RGBA;
82 m_capabilities.contextHasCachedFrontBuffer = true; 82 m_capabilities.contextHasCachedFrontBuffer = true;
83 m_capabilities.usingSetVisibility = true; 83 m_capabilities.usingSetVisibility = true;
84 84
85 viewportChanged(); 85 viewportChanged();
86 } 86 }
87 87
88 CCRendererSoftware::~CCRendererSoftware() 88 SoftwareRenderer::~SoftwareRenderer()
89 { 89 {
90 } 90 }
91 91
92 const RendererCapabilities& CCRendererSoftware::capabilities() const 92 const RendererCapabilities& SoftwareRenderer::capabilities() const
93 { 93 {
94 return m_capabilities; 94 return m_capabilities;
95 } 95 }
96 96
97 void CCRendererSoftware::viewportChanged() 97 void SoftwareRenderer::viewportChanged()
98 { 98 {
99 m_outputDevice->didChangeViewportSize(WebSize(viewportSize().width(), viewpo rtSize().height())); 99 m_outputDevice->didChangeViewportSize(WebSize(viewportSize().width(), viewpo rtSize().height()));
100 } 100 }
101 101
102 void CCRendererSoftware::beginDrawingFrame(DrawingFrame& frame) 102 void SoftwareRenderer::beginDrawingFrame(DrawingFrame& frame)
103 { 103 {
104 m_skRootCanvas = make_scoped_ptr(new SkCanvas(m_outputDevice->lock(true)->ge tSkBitmap())); 104 m_skRootCanvas = make_scoped_ptr(new SkCanvas(m_outputDevice->lock(true)->ge tSkBitmap()));
105 } 105 }
106 106
107 void CCRendererSoftware::finishDrawingFrame(DrawingFrame& frame) 107 void SoftwareRenderer::finishDrawingFrame(DrawingFrame& frame)
108 { 108 {
109 m_currentFramebufferLock.reset(); 109 m_currentFramebufferLock.reset();
110 m_skCurrentCanvas = 0; 110 m_skCurrentCanvas = 0;
111 m_skRootCanvas.reset(); 111 m_skRootCanvas.reset();
112 m_outputDevice->unlock(); 112 m_outputDevice->unlock();
113 } 113 }
114 114
115 bool CCRendererSoftware::flippedFramebuffer() const 115 bool SoftwareRenderer::flippedFramebuffer() const
116 { 116 {
117 return false; 117 return false;
118 } 118 }
119 119
120 void CCRendererSoftware::finish() 120 void SoftwareRenderer::finish()
121 { 121 {
122 } 122 }
123 123
124 void CCRendererSoftware::bindFramebufferToOutputSurface(DrawingFrame& frame) 124 void SoftwareRenderer::bindFramebufferToOutputSurface(DrawingFrame& frame)
125 { 125 {
126 m_currentFramebufferLock.reset(); 126 m_currentFramebufferLock.reset();
127 m_skCurrentCanvas = m_skRootCanvas.get(); 127 m_skCurrentCanvas = m_skRootCanvas.get();
128 } 128 }
129 129
130 bool CCRendererSoftware::bindFramebufferToTexture(DrawingFrame& frame, const CCS copedTexture* texture, const IntRect& framebufferRect) 130 bool SoftwareRenderer::bindFramebufferToTexture(DrawingFrame& frame, const Scope dTexture* texture, const IntRect& framebufferRect)
131 { 131 {
132 m_currentFramebufferLock = make_scoped_ptr(new CCResourceProvider::ScopedWri teLockSoftware(m_resourceProvider, texture->id())); 132 m_currentFramebufferLock = make_scoped_ptr(new ResourceProvider::ScopedWrite LockSoftware(m_resourceProvider, texture->id()));
133 m_skCurrentCanvas = m_currentFramebufferLock->skCanvas(); 133 m_skCurrentCanvas = m_currentFramebufferLock->skCanvas();
134 initializeMatrices(frame, framebufferRect, false); 134 initializeMatrices(frame, framebufferRect, false);
135 setDrawViewportSize(framebufferRect.size()); 135 setDrawViewportSize(framebufferRect.size());
136 136
137 return true; 137 return true;
138 } 138 }
139 139
140 void CCRendererSoftware::enableScissorTestRect(const IntRect& scissorRect) 140 void SoftwareRenderer::enableScissorTestRect(const IntRect& scissorRect)
141 { 141 {
142 m_skCurrentCanvas->clipRect(toSkRect(scissorRect), SkRegion::kReplace_Op); 142 m_skCurrentCanvas->clipRect(toSkRect(scissorRect), SkRegion::kReplace_Op);
143 } 143 }
144 144
145 void CCRendererSoftware::disableScissorTest() 145 void SoftwareRenderer::disableScissorTest()
146 { 146 {
147 IntRect canvasRect(IntPoint(), viewportSize()); 147 IntRect canvasRect(IntPoint(), viewportSize());
148 m_skCurrentCanvas->clipRect(toSkRect(canvasRect), SkRegion::kReplace_Op); 148 m_skCurrentCanvas->clipRect(toSkRect(canvasRect), SkRegion::kReplace_Op);
149 } 149 }
150 150
151 void CCRendererSoftware::clearFramebuffer(DrawingFrame& frame) 151 void SoftwareRenderer::clearFramebuffer(DrawingFrame& frame)
152 { 152 {
153 if (frame.currentRenderPass->hasTransparentBackground()) { 153 if (frame.currentRenderPass->hasTransparentBackground()) {
154 m_skCurrentCanvas->clear(SkColorSetARGB(0, 0, 0, 0)); 154 m_skCurrentCanvas->clear(SkColorSetARGB(0, 0, 0, 0));
155 } else { 155 } else {
156 #ifndef NDEBUG 156 #ifndef NDEBUG
157 // On DEBUG builds, opaque render passes are cleared to blue to easily s ee regions that were not drawn on the screen. 157 // On DEBUG builds, opaque render passes are cleared to blue to easily s ee regions that were not drawn on the screen.
158 m_skCurrentCanvas->clear(SkColorSetARGB(255, 0, 0, 255)); 158 m_skCurrentCanvas->clear(SkColorSetARGB(255, 0, 0, 255));
159 #endif 159 #endif
160 } 160 }
161 } 161 }
162 162
163 void CCRendererSoftware::setDrawViewportSize(const IntSize& viewportSize) 163 void SoftwareRenderer::setDrawViewportSize(const IntSize& viewportSize)
164 { 164 {
165 } 165 }
166 166
167 bool CCRendererSoftware::isSoftwareResource(CCResourceProvider::ResourceId id) c onst 167 bool SoftwareRenderer::isSoftwareResource(ResourceProvider::ResourceId id) const
168 { 168 {
169 switch (m_resourceProvider->resourceType(id)) { 169 switch (m_resourceProvider->resourceType(id)) {
170 case CCResourceProvider::GLTexture: 170 case ResourceProvider::GLTexture:
171 return false; 171 return false;
172 case CCResourceProvider::Bitmap: 172 case ResourceProvider::Bitmap:
173 return true; 173 return true;
174 } 174 }
175 175
176 CRASH(); 176 CRASH();
177 return false; 177 return false;
178 } 178 }
179 179
180 void CCRendererSoftware::drawQuad(DrawingFrame& frame, const CCDrawQuad* quad) 180 void SoftwareRenderer::drawQuad(DrawingFrame& frame, const DrawQuad* quad)
181 { 181 {
182 WebTransformationMatrix quadRectMatrix; 182 WebTransformationMatrix quadRectMatrix;
183 quadRectTransform(&quadRectMatrix, quad->quadTransform(), quad->quadRect()); 183 quadRectTransform(&quadRectMatrix, quad->quadTransform(), quad->quadRect());
184 WebTransformationMatrix contentsDeviceTransform = (frame.windowMatrix * fram e.projectionMatrix * quadRectMatrix).to2dTransform(); 184 WebTransformationMatrix contentsDeviceTransform = (frame.windowMatrix * fram e.projectionMatrix * quadRectMatrix).to2dTransform();
185 SkMatrix skDeviceMatrix; 185 SkMatrix skDeviceMatrix;
186 toSkMatrix(&skDeviceMatrix, contentsDeviceTransform); 186 toSkMatrix(&skDeviceMatrix, contentsDeviceTransform);
187 m_skCurrentCanvas->setMatrix(skDeviceMatrix); 187 m_skCurrentCanvas->setMatrix(skDeviceMatrix);
188 188
189 m_skCurrentPaint.reset(); 189 m_skCurrentPaint.reset();
190 if (!isScaleAndTranslate(skDeviceMatrix)) { 190 if (!isScaleAndTranslate(skDeviceMatrix)) {
191 m_skCurrentPaint.setAntiAlias(true); 191 m_skCurrentPaint.setAntiAlias(true);
192 m_skCurrentPaint.setFilterBitmap(true); 192 m_skCurrentPaint.setFilterBitmap(true);
193 } 193 }
194 if (quad->needsBlending()) { 194 if (quad->needsBlending()) {
195 m_skCurrentPaint.setAlpha(quad->opacity() * 255); 195 m_skCurrentPaint.setAlpha(quad->opacity() * 255);
196 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode); 196 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
197 } else { 197 } else {
198 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrc_Mode); 198 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrc_Mode);
199 } 199 }
200 200
201 switch (quad->material()) { 201 switch (quad->material()) {
202 case CCDrawQuad::DebugBorder: 202 case DrawQuad::DebugBorder:
203 drawDebugBorderQuad(frame, CCDebugBorderDrawQuad::materialCast(quad)); 203 drawDebugBorderQuad(frame, DebugBorderDrawQuad::materialCast(quad));
204 break; 204 break;
205 case CCDrawQuad::SolidColor: 205 case DrawQuad::SolidColor:
206 drawSolidColorQuad(frame, CCSolidColorDrawQuad::materialCast(quad)); 206 drawSolidColorQuad(frame, SolidColorDrawQuad::materialCast(quad));
207 break; 207 break;
208 case CCDrawQuad::TextureContent: 208 case DrawQuad::TextureContent:
209 drawTextureQuad(frame, CCTextureDrawQuad::materialCast(quad)); 209 drawTextureQuad(frame, TextureDrawQuad::materialCast(quad));
210 break; 210 break;
211 case CCDrawQuad::TiledContent: 211 case DrawQuad::TiledContent:
212 drawTileQuad(frame, CCTileDrawQuad::materialCast(quad)); 212 drawTileQuad(frame, TileDrawQuad::materialCast(quad));
213 break; 213 break;
214 case CCDrawQuad::RenderPass: 214 case DrawQuad::RenderPass:
215 drawRenderPassQuad(frame, CCRenderPassDrawQuad::materialCast(quad)); 215 drawRenderPassQuad(frame, RenderPassDrawQuad::materialCast(quad));
216 break; 216 break;
217 default: 217 default:
218 drawUnsupportedQuad(frame, quad); 218 drawUnsupportedQuad(frame, quad);
219 break; 219 break;
220 } 220 }
221 221
222 m_skCurrentCanvas->resetMatrix(); 222 m_skCurrentCanvas->resetMatrix();
223 } 223 }
224 224
225 void CCRendererSoftware::drawDebugBorderQuad(const DrawingFrame& frame, const CC DebugBorderDrawQuad* quad) 225 void SoftwareRenderer::drawDebugBorderQuad(const DrawingFrame& frame, const Debu gBorderDrawQuad* quad)
226 { 226 {
227 // We need to apply the matrix manually to have pixel-sized stroke width. 227 // We need to apply the matrix manually to have pixel-sized stroke width.
228 SkPoint vertices[4]; 228 SkPoint vertices[4];
229 toSkRect(quadVertexRect()).toQuad(vertices); 229 toSkRect(quadVertexRect()).toQuad(vertices);
230 SkPoint transformedVertices[4]; 230 SkPoint transformedVertices[4];
231 m_skCurrentCanvas->getTotalMatrix().mapPoints(transformedVertices, vertices, 4); 231 m_skCurrentCanvas->getTotalMatrix().mapPoints(transformedVertices, vertices, 4);
232 m_skCurrentCanvas->resetMatrix(); 232 m_skCurrentCanvas->resetMatrix();
233 233
234 m_skCurrentPaint.setColor(quad->color()); 234 m_skCurrentPaint.setColor(quad->color());
235 m_skCurrentPaint.setAlpha(quad->opacity() * SkColorGetA(quad->color())); 235 m_skCurrentPaint.setAlpha(quad->opacity() * SkColorGetA(quad->color()));
236 m_skCurrentPaint.setStyle(SkPaint::kStroke_Style); 236 m_skCurrentPaint.setStyle(SkPaint::kStroke_Style);
237 m_skCurrentPaint.setStrokeWidth(quad->width()); 237 m_skCurrentPaint.setStrokeWidth(quad->width());
238 m_skCurrentCanvas->drawPoints(SkCanvas::kPolygon_PointMode, 4, transformedVe rtices, m_skCurrentPaint); 238 m_skCurrentCanvas->drawPoints(SkCanvas::kPolygon_PointMode, 4, transformedVe rtices, m_skCurrentPaint);
239 } 239 }
240 240
241 void CCRendererSoftware::drawSolidColorQuad(const DrawingFrame& frame, const CCS olidColorDrawQuad* quad) 241 void SoftwareRenderer::drawSolidColorQuad(const DrawingFrame& frame, const Solid ColorDrawQuad* quad)
242 { 242 {
243 m_skCurrentPaint.setColor(quad->color()); 243 m_skCurrentPaint.setColor(quad->color());
244 m_skCurrentPaint.setAlpha(quad->opacity() * SkColorGetA(quad->color())); 244 m_skCurrentPaint.setAlpha(quad->opacity() * SkColorGetA(quad->color()));
245 m_skCurrentCanvas->drawRect(toSkRect(quadVertexRect()), m_skCurrentPaint); 245 m_skCurrentCanvas->drawRect(toSkRect(quadVertexRect()), m_skCurrentPaint);
246 } 246 }
247 247
248 void CCRendererSoftware::drawTextureQuad(const DrawingFrame& frame, const CCText ureDrawQuad* quad) 248 void SoftwareRenderer::drawTextureQuad(const DrawingFrame& frame, const TextureD rawQuad* quad)
249 { 249 {
250 if (!isSoftwareResource(quad->resourceId())) { 250 if (!isSoftwareResource(quad->resourceId())) {
251 drawUnsupportedQuad(frame, quad); 251 drawUnsupportedQuad(frame, quad);
252 return; 252 return;
253 } 253 }
254 254
255 // FIXME: Add support for non-premultiplied alpha. 255 // FIXME: Add support for non-premultiplied alpha.
256 CCResourceProvider::ScopedReadLockSoftware quadResourceLock(m_resourceProvid er, quad->resourceId()); 256 ResourceProvider::ScopedReadLockSoftware quadResourceLock(m_resourceProvider , quad->resourceId());
257 FloatRect uvRect = quad->uvRect(); 257 FloatRect uvRect = quad->uvRect();
258 uvRect.scale(quad->quadRect().width(), quad->quadRect().height()); 258 uvRect.scale(quad->quadRect().width(), quad->quadRect().height());
259 SkIRect skUvRect = toSkIRect(enclosingIntRect(uvRect)); 259 SkIRect skUvRect = toSkIRect(enclosingIntRect(uvRect));
260 if (quad->flipped()) 260 if (quad->flipped())
261 m_skCurrentCanvas->scale(1, -1); 261 m_skCurrentCanvas->scale(1, -1);
262 m_skCurrentCanvas->drawBitmapRect(*quadResourceLock.skBitmap(), &skUvRect, t oSkRect(quadVertexRect()), &m_skCurrentPaint); 262 m_skCurrentCanvas->drawBitmapRect(*quadResourceLock.skBitmap(), &skUvRect, t oSkRect(quadVertexRect()), &m_skCurrentPaint);
263 } 263 }
264 264
265 void CCRendererSoftware::drawTileQuad(const DrawingFrame& frame, const CCTileDra wQuad* quad) 265 void SoftwareRenderer::drawTileQuad(const DrawingFrame& frame, const TileDrawQua d* quad)
266 { 266 {
267 ASSERT(isSoftwareResource(quad->resourceId())); 267 ASSERT(isSoftwareResource(quad->resourceId()));
268 CCResourceProvider::ScopedReadLockSoftware quadResourceLock(m_resourceProvid er, quad->resourceId()); 268 ResourceProvider::ScopedReadLockSoftware quadResourceLock(m_resourceProvider , quad->resourceId());
269 269
270 SkIRect uvRect = toSkIRect(IntRect(quad->textureOffset(), quad->quadRect().s ize())); 270 SkIRect uvRect = toSkIRect(IntRect(quad->textureOffset(), quad->quadRect().s ize()));
271 m_skCurrentCanvas->drawBitmapRect(*quadResourceLock.skBitmap(), &uvRect, toS kRect(quadVertexRect()), &m_skCurrentPaint); 271 m_skCurrentCanvas->drawBitmapRect(*quadResourceLock.skBitmap(), &uvRect, toS kRect(quadVertexRect()), &m_skCurrentPaint);
272 } 272 }
273 273
274 void CCRendererSoftware::drawRenderPassQuad(const DrawingFrame& frame, const CCR enderPassDrawQuad* quad) 274 void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende rPassDrawQuad* quad)
275 { 275 {
276 CachedTexture* contentsTexture = m_renderPassTextures.get(quad->renderPassId ()); 276 CachedTexture* contentsTexture = m_renderPassTextures.get(quad->renderPassId ());
277 if (!contentsTexture || !contentsTexture->id()) 277 if (!contentsTexture || !contentsTexture->id())
278 return; 278 return;
279 279
280 ASSERT(isSoftwareResource(contentsTexture->id())); 280 ASSERT(isSoftwareResource(contentsTexture->id()));
281 CCResourceProvider::ScopedReadLockSoftware contentsTextureLock(m_resourcePro vider, contentsTexture->id()); 281 ResourceProvider::ScopedReadLockSoftware contentsTextureLock(m_resourceProvi der, contentsTexture->id());
282 282
283 const SkBitmap* bitmap = contentsTextureLock.skBitmap(); 283 const SkBitmap* bitmap = contentsTextureLock.skBitmap();
284 284
285 SkRect sourceRect; 285 SkRect sourceRect;
286 bitmap->getBounds(&sourceRect); 286 bitmap->getBounds(&sourceRect);
287 287
288 SkRect destRect = toSkRect(quadVertexRect()); 288 SkRect destRect = toSkRect(quadVertexRect());
289 289
290 SkMatrix matrix; 290 SkMatrix matrix;
291 matrix.setRectToRect(sourceRect, destRect, SkMatrix::kFill_ScaleToFit); 291 matrix.setRectToRect(sourceRect, destRect, SkMatrix::kFill_ScaleToFit);
292 292
293 SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(*bitmap, 293 SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(*bitmap,
294 SkShader::kClamp_ TileMode, 294 SkShader::kClamp_ TileMode,
295 SkShader::kClamp_ TileMode)); 295 SkShader::kClamp_ TileMode));
296 shader->setLocalMatrix(matrix); 296 shader->setLocalMatrix(matrix);
297 m_skCurrentPaint.setShader(shader); 297 m_skCurrentPaint.setShader(shader);
298 298
299 if (quad->maskResourceId()) { 299 if (quad->maskResourceId()) {
300 CCResourceProvider::ScopedReadLockSoftware maskResourceLock(m_resourcePr ovider, quad->maskResourceId()); 300 ResourceProvider::ScopedReadLockSoftware maskResourceLock(m_resourceProv ider, quad->maskResourceId());
301 const SkBitmap* maskBitmap = maskResourceLock.skBitmap(); 301 const SkBitmap* maskBitmap = maskResourceLock.skBitmap();
302 302
303 SkMatrix maskMat; 303 SkMatrix maskMat;
304 maskMat.setRectToRect(toSkRect(quad->quadRect()), destRect, SkMatrix::kF ill_ScaleToFit); 304 maskMat.setRectToRect(toSkRect(quad->quadRect()), destRect, SkMatrix::kF ill_ScaleToFit);
305 maskMat.postTranslate(quad->maskTexCoordOffsetX(), quad->maskTexCoordOff setY()); 305 maskMat.postTranslate(quad->maskTexCoordOffsetX(), quad->maskTexCoordOff setY());
306 306
307 SkAutoTUnref<SkShader> maskShader(SkShader::CreateBitmapShader(*maskBitm ap, 307 SkAutoTUnref<SkShader> maskShader(SkShader::CreateBitmapShader(*maskBitm ap,
308 SkShader: :kClamp_TileMode, 308 SkShader: :kClamp_TileMode,
309 SkShader: :kClamp_TileMode)); 309 SkShader: :kClamp_TileMode));
310 maskShader->setLocalMatrix(maskMat); 310 maskShader->setLocalMatrix(maskMat);
311 311
312 SkPaint maskPaint; 312 SkPaint maskPaint;
313 maskPaint.setShader(maskShader); 313 maskPaint.setShader(maskShader);
314 314
315 SkAutoTUnref<SkLayerRasterizer> maskRasterizer(new SkLayerRasterizer); 315 SkAutoTUnref<SkLayerRasterizer> maskRasterizer(new SkLayerRasterizer);
316 maskRasterizer->addLayer(maskPaint); 316 maskRasterizer->addLayer(maskPaint);
317 317
318 m_skCurrentPaint.setRasterizer(maskRasterizer); 318 m_skCurrentPaint.setRasterizer(maskRasterizer);
319 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint); 319 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint);
320 } else { 320 } else {
321 // FIXME: Apply background filters and blend with contents 321 // FIXME: Apply background filters and blend with contents
322 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint); 322 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint);
323 } 323 }
324 } 324 }
325 325
326 void CCRendererSoftware::drawUnsupportedQuad(const DrawingFrame& frame, const CC DrawQuad* quad) 326 void SoftwareRenderer::drawUnsupportedQuad(const DrawingFrame& frame, const Draw Quad* quad)
327 { 327 {
328 m_skCurrentPaint.setColor(SK_ColorMAGENTA); 328 m_skCurrentPaint.setColor(SK_ColorMAGENTA);
329 m_skCurrentPaint.setAlpha(quad->opacity() * 255); 329 m_skCurrentPaint.setAlpha(quad->opacity() * 255);
330 m_skCurrentCanvas->drawRect(toSkRect(quadVertexRect()), m_skCurrentPaint); 330 m_skCurrentCanvas->drawRect(toSkRect(quadVertexRect()), m_skCurrentPaint);
331 } 331 }
332 332
333 bool CCRendererSoftware::swapBuffers() 333 bool SoftwareRenderer::swapBuffers()
334 { 334 {
335 if (CCProxy::hasImplThread()) 335 if (Proxy::hasImplThread())
336 m_client->onSwapBuffersComplete(); 336 m_client->onSwapBuffersComplete();
337 return true; 337 return true;
338 } 338 }
339 339
340 void CCRendererSoftware::getFramebufferPixels(void *pixels, const IntRect& rect) 340 void SoftwareRenderer::getFramebufferPixels(void *pixels, const IntRect& rect)
341 { 341 {
342 SkBitmap fullBitmap = m_outputDevice->lock(false)->getSkBitmap(); 342 SkBitmap fullBitmap = m_outputDevice->lock(false)->getSkBitmap();
343 SkBitmap subsetBitmap; 343 SkBitmap subsetBitmap;
344 SkIRect invertRect = SkIRect::MakeXYWH(rect.x(), viewportSize().height() - r ect.maxY(), rect.width(), rect.height()); 344 SkIRect invertRect = SkIRect::MakeXYWH(rect.x(), viewportSize().height() - r ect.maxY(), rect.width(), rect.height());
345 fullBitmap.extractSubset(&subsetBitmap, invertRect); 345 fullBitmap.extractSubset(&subsetBitmap, invertRect);
346 subsetBitmap.copyPixelsTo(pixels, rect.width() * rect.height() * 4, rect.wid th() * 4); 346 subsetBitmap.copyPixelsTo(pixels, rect.width() * rect.height() * 4, rect.wid th() * 4);
347 m_outputDevice->unlock(); 347 m_outputDevice->unlock();
348 } 348 }
349 349
350 void CCRendererSoftware::setVisible(bool visible) 350 void SoftwareRenderer::setVisible(bool visible)
351 { 351 {
352 if (m_visible == visible) 352 if (m_visible == visible)
353 return; 353 return;
354 m_visible = visible; 354 m_visible = visible;
355 } 355 }
356 356
357 } 357 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698