| 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 "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 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 46 flattened->set(1, m.m21()); | 46 flattened->set(1, m.m21()); |
| 47 flattened->set(2, m.m41()); | 47 flattened->set(2, m.m41()); |
| 48 flattened->set(3, m.m12()); | 48 flattened->set(3, m.m12()); |
| 49 flattened->set(4, m.m22()); | 49 flattened->set(4, m.m22()); |
| 50 flattened->set(5, m.m42()); | 50 flattened->set(5, m.m42()); |
| 51 flattened->set(6, m.m14()); | 51 flattened->set(6, m.m14()); |
| 52 flattened->set(7, m.m24()); | 52 flattened->set(7, m.m24()); |
| 53 flattened->set(8, m.m44()); | 53 flattened->set(8, m.m44()); |
| 54 } | 54 } |
| 55 | 55 |
| 56 bool isScaleAndTranslate(const SkMatrix& matrix) |
| 57 { |
| 58 return SkScalarNearlyZero(matrix[SkMatrix::kMSkewX]) && |
| 59 SkScalarNearlyZero(matrix[SkMatrix::kMSkewY]) && |
| 60 SkScalarNearlyZero(matrix[SkMatrix::kMPersp0]) && |
| 61 SkScalarNearlyZero(matrix[SkMatrix::kMPersp1]) && |
| 62 SkScalarNearlyZero(matrix[SkMatrix::kMPersp2] - 1.0f); |
| 63 } |
| 64 |
| 56 } // anonymous namespace | 65 } // anonymous namespace |
| 57 | 66 |
| 58 PassOwnPtr<CCRendererSoftware> CCRendererSoftware::create(CCRendererClient* clie
nt, CCResourceProvider* resourceProvider, WebCompositorSoftwareOutputDevice* out
putDevice) | 67 PassOwnPtr<CCRendererSoftware> CCRendererSoftware::create(CCRendererClient* clie
nt, CCResourceProvider* resourceProvider, WebCompositorSoftwareOutputDevice* out
putDevice) |
| 59 { | 68 { |
| 60 return adoptPtr(new CCRendererSoftware(client, resourceProvider, outputDevic
e)); | 69 return adoptPtr(new CCRendererSoftware(client, resourceProvider, outputDevic
e)); |
| 61 } | 70 } |
| 62 | 71 |
| 63 CCRendererSoftware::CCRendererSoftware(CCRendererClient* client, CCResourceProvi
der* resourceProvider, WebCompositorSoftwareOutputDevice* outputDevice) | 72 CCRendererSoftware::CCRendererSoftware(CCRendererClient* client, CCResourceProvi
der* resourceProvider, WebCompositorSoftwareOutputDevice* outputDevice) |
| 64 : CCDirectRenderer(client, resourceProvider) | 73 : CCDirectRenderer(client, resourceProvider) |
| 65 , m_visible(true) | 74 , m_visible(true) |
| (...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 171 void CCRendererSoftware::drawQuad(DrawingFrame& frame, const CCDrawQuad* quad) | 180 void CCRendererSoftware::drawQuad(DrawingFrame& frame, const CCDrawQuad* quad) |
| 172 { | 181 { |
| 173 WebTransformationMatrix quadRectMatrix; | 182 WebTransformationMatrix quadRectMatrix; |
| 174 quadRectTransform(&quadRectMatrix, quad->quadTransform(), quad->quadRect()); | 183 quadRectTransform(&quadRectMatrix, quad->quadTransform(), quad->quadRect()); |
| 175 WebTransformationMatrix contentsDeviceTransform = (frame.windowMatrix * fram
e.projectionMatrix * quadRectMatrix).to2dTransform(); | 184 WebTransformationMatrix contentsDeviceTransform = (frame.windowMatrix * fram
e.projectionMatrix * quadRectMatrix).to2dTransform(); |
| 176 SkMatrix skDeviceMatrix; | 185 SkMatrix skDeviceMatrix; |
| 177 toSkMatrix(&skDeviceMatrix, contentsDeviceTransform); | 186 toSkMatrix(&skDeviceMatrix, contentsDeviceTransform); |
| 178 m_skCurrentCanvas->setMatrix(skDeviceMatrix); | 187 m_skCurrentCanvas->setMatrix(skDeviceMatrix); |
| 179 | 188 |
| 180 m_skCurrentPaint.reset(); | 189 m_skCurrentPaint.reset(); |
| 190 if (!isScaleAndTranslate(skDeviceMatrix)) { |
| 191 m_skCurrentPaint.setAntiAlias(true); |
| 192 m_skCurrentPaint.setFilterBitmap(true); |
| 193 } |
| 181 if (quad->needsBlending()) { | 194 if (quad->needsBlending()) { |
| 182 m_skCurrentPaint.setAlpha(quad->opacity() * 255); | 195 m_skCurrentPaint.setAlpha(quad->opacity() * 255); |
| 183 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode); | 196 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrcOver_Mode); |
| 184 } else { | 197 } else { |
| 185 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrc_Mode); | 198 m_skCurrentPaint.setXfermodeMode(SkXfermode::kSrc_Mode); |
| 186 } | 199 } |
| 187 | 200 |
| 188 switch (quad->material()) { | 201 switch (quad->material()) { |
| 189 case CCDrawQuad::DebugBorder: | 202 case CCDrawQuad::DebugBorder: |
| 190 drawDebugBorderQuad(frame, CCDebugBorderDrawQuad::materialCast(quad)); | 203 drawDebugBorderQuad(frame, CCDebugBorderDrawQuad::materialCast(quad)); |
| (...skipping 144 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 335 } | 348 } |
| 336 | 349 |
| 337 void CCRendererSoftware::setVisible(bool visible) | 350 void CCRendererSoftware::setVisible(bool visible) |
| 338 { | 351 { |
| 339 if (m_visible == visible) | 352 if (m_visible == visible) |
| 340 return; | 353 return; |
| 341 m_visible = visible; | 354 m_visible = visible; |
| 342 } | 355 } |
| 343 | 356 |
| 344 } | 357 } |
| OLD | NEW |