| 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 <public/WebCompositorSoftwareOutputDevice.h> | 7 #include <public/WebCompositorSoftwareOutputDevice.h> |
| 8 #include <public/WebImage.h> | 8 #include <public/WebImage.h> |
| 9 #include <public/WebSize.h> | 9 #include <public/WebSize.h> |
| 10 | 10 |
| (...skipping 289 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 300 SkRect destRect = gfx::RectFToSkRect(quadVertexRect()); | 300 SkRect destRect = gfx::RectFToSkRect(quadVertexRect()); |
| 301 | 301 |
| 302 const SkBitmap* content = lock.skBitmap(); | 302 const SkBitmap* content = lock.skBitmap(); |
| 303 | 303 |
| 304 SkRect contentRect; | 304 SkRect contentRect; |
| 305 content->getBounds(&contentRect); | 305 content->getBounds(&contentRect); |
| 306 | 306 |
| 307 SkMatrix contentMat; | 307 SkMatrix contentMat; |
| 308 contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit); | 308 contentMat.setRectToRect(contentRect, destRect, SkMatrix::kFill_ScaleToFit); |
| 309 | 309 |
| 310 SkAutoTUnref<SkShader> shader(SkShader::CreateBitmapShader(*content, | 310 skia::RefPtr<SkShader> shader = skia::AdoptRef( |
| 311 SkShader::kClamp_
TileMode, | 311 SkShader::CreateBitmapShader(*content, |
| 312 SkShader::kClamp_
TileMode)); | 312 SkShader::kClamp_TileMode, |
| 313 SkShader::kClamp_TileMode)); |
| 313 shader->setLocalMatrix(contentMat); | 314 shader->setLocalMatrix(contentMat); |
| 314 m_skCurrentPaint.setShader(shader); | 315 m_skCurrentPaint.setShader(shader.get()); |
| 315 | 316 |
| 316 SkImageFilter* filter = renderPass->filter; | 317 SkImageFilter* filter = renderPass->filter.get(); |
| 317 if (filter) | 318 if (filter) |
| 318 m_skCurrentPaint.setImageFilter(filter); | 319 m_skCurrentPaint.setImageFilter(filter); |
| 319 | 320 |
| 320 if (quad->mask_resource_id) { | 321 if (quad->mask_resource_id) { |
| 321 ResourceProvider::ScopedReadLockSoftware maskLock(m_resourceProvider, qu
ad->mask_resource_id); | 322 ResourceProvider::ScopedReadLockSoftware maskLock(m_resourceProvider, qu
ad->mask_resource_id); |
| 322 | 323 |
| 323 const SkBitmap* mask = maskLock.skBitmap(); | 324 const SkBitmap* mask = maskLock.skBitmap(); |
| 324 | 325 |
| 325 SkRect maskRect = SkRect::MakeXYWH( | 326 SkRect maskRect = SkRect::MakeXYWH( |
| 326 quad->mask_tex_coord_offset_x * mask->width(), | 327 quad->mask_tex_coord_offset_x * mask->width(), |
| 327 quad->mask_tex_coord_offset_y * mask->height(), | 328 quad->mask_tex_coord_offset_y * mask->height(), |
| 328 quad->mask_tex_coord_scale_x * mask->width(), | 329 quad->mask_tex_coord_scale_x * mask->width(), |
| 329 quad->mask_tex_coord_scale_y * mask->height()); | 330 quad->mask_tex_coord_scale_y * mask->height()); |
| 330 | 331 |
| 331 SkMatrix maskMat; | 332 SkMatrix maskMat; |
| 332 maskMat.setRectToRect(maskRect, destRect, SkMatrix::kFill_ScaleToFit); | 333 maskMat.setRectToRect(maskRect, destRect, SkMatrix::kFill_ScaleToFit); |
| 333 | 334 |
| 334 SkAutoTUnref<SkShader> maskShader(SkShader::CreateBitmapShader(*mask, | 335 skia::RefPtr<SkShader> maskShader = skia::AdoptRef( |
| 335 SkShader:
:kClamp_TileMode, | 336 SkShader::CreateBitmapShader(*mask, |
| 336 SkShader:
:kClamp_TileMode)); | 337 SkShader::kClamp_TileMode, |
| 338 SkShader::kClamp_TileMode)); |
| 337 maskShader->setLocalMatrix(maskMat); | 339 maskShader->setLocalMatrix(maskMat); |
| 338 | 340 |
| 339 SkPaint maskPaint; | 341 SkPaint maskPaint; |
| 340 maskPaint.setShader(maskShader); | 342 maskPaint.setShader(maskShader.get()); |
| 341 | 343 |
| 342 SkAutoTUnref<SkLayerRasterizer> maskRasterizer(new SkLayerRasterizer); | 344 skia::RefPtr<SkLayerRasterizer> maskRasterizer = skia::AdoptRef(new SkLa
yerRasterizer); |
| 343 maskRasterizer->addLayer(maskPaint); | 345 maskRasterizer->addLayer(maskPaint); |
| 344 | 346 |
| 345 m_skCurrentPaint.setRasterizer(maskRasterizer); | 347 m_skCurrentPaint.setRasterizer(maskRasterizer.get()); |
| 346 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint); | 348 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint); |
| 347 } else { | 349 } else { |
| 348 // FIXME: Apply background filters and blend with content | 350 // FIXME: Apply background filters and blend with content |
| 349 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint); | 351 m_skCurrentCanvas->drawRect(destRect, m_skCurrentPaint); |
| 350 } | 352 } |
| 351 } | 353 } |
| 352 | 354 |
| 353 void SoftwareRenderer::drawUnsupportedQuad(const DrawingFrame& frame, const Draw
Quad* quad) | 355 void SoftwareRenderer::drawUnsupportedQuad(const DrawingFrame& frame, const Draw
Quad* quad) |
| 354 { | 356 { |
| 355 m_skCurrentPaint.setColor(SK_ColorMAGENTA); | 357 m_skCurrentPaint.setColor(SK_ColorMAGENTA); |
| (...skipping 20 matching lines...) Expand all Loading... |
| 376 } | 378 } |
| 377 | 379 |
| 378 void SoftwareRenderer::setVisible(bool visible) | 380 void SoftwareRenderer::setVisible(bool visible) |
| 379 { | 381 { |
| 380 if (m_visible == visible) | 382 if (m_visible == visible) |
| 381 return; | 383 return; |
| 382 m_visible = visible; | 384 m_visible = visible; |
| 383 } | 385 } |
| 384 | 386 |
| 385 } // namespace cc | 387 } // namespace cc |
| OLD | NEW |