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 |