OLD | NEW |
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 "cc/software_renderer.h" | 5 #include "cc/software_renderer.h" |
6 | 6 |
7 #include "base/debug/trace_event.h" | 7 #include "base/debug/trace_event.h" |
8 #include "cc/debug_border_draw_quad.h" | 8 #include "cc/debug_border_draw_quad.h" |
9 #include "cc/math_util.h" | 9 #include "cc/math_util.h" |
10 #include "cc/render_pass_draw_quad.h" | 10 #include "cc/render_pass_draw_quad.h" |
(...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
278 gfx::RectFToSkRect(quadVertexRect())
, | 278 gfx::RectFToSkRect(quadVertexRect())
, |
279 &m_skCurrentPaint); | 279 &m_skCurrentPaint); |
280 } | 280 } |
281 | 281 |
282 void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende
rPassDrawQuad* quad) | 282 void SoftwareRenderer::drawRenderPassQuad(const DrawingFrame& frame, const Rende
rPassDrawQuad* quad) |
283 { | 283 { |
284 CachedResource* contentTexture = m_renderPassTextures.get(quad->render_pass_
id); | 284 CachedResource* contentTexture = m_renderPassTextures.get(quad->render_pass_
id); |
285 if (!contentTexture || !contentTexture->id()) | 285 if (!contentTexture || !contentTexture->id()) |
286 return; | 286 return; |
287 | 287 |
288 const RenderPass* renderPass = frame.renderPassesById->get(quad->render_pass
_id); | |
289 DCHECK(renderPass); | |
290 if (!renderPass) | |
291 return; | |
292 | |
293 DCHECK(isSoftwareResource(contentTexture->id())); | 288 DCHECK(isSoftwareResource(contentTexture->id())); |
294 ResourceProvider::ScopedReadLockSoftware lock(m_resourceProvider, contentTex
ture->id()); | 289 ResourceProvider::ScopedReadLockSoftware lock(m_resourceProvider, contentTex
ture->id()); |
295 | 290 |
296 SkRect destRect = gfx::RectFToSkRect(quadVertexRect()); | 291 SkRect destRect = gfx::RectFToSkRect(quadVertexRect()); |
297 | 292 |
298 const SkBitmap* content = lock.skBitmap(); | 293 const SkBitmap* content = lock.skBitmap(); |
299 | 294 |
300 SkRect contentRect; | 295 SkRect contentRect; |
301 content->getBounds(&contentRect); | 296 content->getBounds(&contentRect); |
302 | 297 |
303 SkMatrix contentMat; | 298 SkMatrix contentMat; |
304 contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit); | 299 contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit); |
305 | 300 |
306 skia::RefPtr<SkShader> shader = skia::AdoptRef( | 301 skia::RefPtr<SkShader> shader = skia::AdoptRef( |
307 SkShader::CreateBitmapShader(*content, | 302 SkShader::CreateBitmapShader(*content, |
308 SkShader::kClamp_TileMode, | 303 SkShader::kClamp_TileMode, |
309 SkShader::kClamp_TileMode)); | 304 SkShader::kClamp_TileMode)); |
310 shader->setLocalMatrix(contentMat); | 305 shader->setLocalMatrix(contentMat); |
311 m_skCurrentPaint.setShader(shader.get()); | 306 m_skCurrentPaint.setShader(shader.get()); |
312 | 307 |
313 SkImageFilter* filter = renderPass->filter.get(); | 308 SkImageFilter* filter = quad->filter.get(); |
314 if (filter) | 309 if (filter) |
315 m_skCurrentPaint.setImageFilter(filter); | 310 m_skCurrentPaint.setImageFilter(filter); |
316 | 311 |
317 if (quad->mask_resource_id) { | 312 if (quad->mask_resource_id) { |
318 ResourceProvider::ScopedReadLockSoftware maskLock(m_resourceProvider, qu
ad->mask_resource_id); | 313 ResourceProvider::ScopedReadLockSoftware maskLock(m_resourceProvider, qu
ad->mask_resource_id); |
319 | 314 |
320 const SkBitmap* mask = maskLock.skBitmap(); | 315 const SkBitmap* mask = maskLock.skBitmap(); |
321 | 316 |
322 SkRect maskRect = SkRect::MakeXYWH( | 317 SkRect maskRect = SkRect::MakeXYWH( |
323 quad->mask_uv_rect.x() * mask->width(), | 318 quad->mask_uv_rect.x() * mask->width(), |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
374 } | 369 } |
375 | 370 |
376 void SoftwareRenderer::setVisible(bool visible) | 371 void SoftwareRenderer::setVisible(bool visible) |
377 { | 372 { |
378 if (m_visible == visible) | 373 if (m_visible == visible) |
379 return; | 374 return; |
380 m_visible = visible; | 375 m_visible = visible; |
381 } | 376 } |
382 | 377 |
383 } // namespace cc | 378 } // namespace cc |
OLD | NEW |