| OLD | NEW |
| (Empty) |
| 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 | |
| 3 // found in the LICENSE file. | |
| 4 | |
| 5 #include "config.h" | |
| 6 #include "CCDrawQuad.h" | |
| 7 | |
| 8 #include "CCCheckerboardDrawQuad.h" | |
| 9 #include "CCDebugBorderDrawQuad.h" | |
| 10 #include "CCIOSurfaceDrawQuad.h" | |
| 11 #include "CCRenderPassDrawQuad.h" | |
| 12 #include "CCSolidColorDrawQuad.h" | |
| 13 #include "CCStreamVideoDrawQuad.h" | |
| 14 #include "CCTextureDrawQuad.h" | |
| 15 #include "CCTileDrawQuad.h" | |
| 16 #include "CCYUVVideoDrawQuad.h" | |
| 17 #include "IntRect.h" | |
| 18 | |
| 19 namespace cc { | |
| 20 | |
| 21 CCDrawQuad::CCDrawQuad(const CCSharedQuadState* sharedQuadState, Material materi
al, const IntRect& quadRect) | |
| 22 : m_sharedQuadState(sharedQuadState) | |
| 23 , m_sharedQuadStateId(sharedQuadState->id) | |
| 24 , m_material(material) | |
| 25 , m_quadRect(quadRect) | |
| 26 , m_quadVisibleRect(quadRect) | |
| 27 , m_quadOpaque(true) | |
| 28 , m_needsBlending(false) | |
| 29 { | |
| 30 ASSERT(m_sharedQuadState); | |
| 31 ASSERT(m_material != Invalid); | |
| 32 } | |
| 33 | |
| 34 IntRect CCDrawQuad::opaqueRect() const | |
| 35 { | |
| 36 if (opacity() != 1) | |
| 37 return IntRect(); | |
| 38 if (m_sharedQuadState->opaque && m_quadOpaque) | |
| 39 return m_quadRect; | |
| 40 return m_opaqueRect; | |
| 41 } | |
| 42 | |
| 43 void CCDrawQuad::setQuadVisibleRect(const IntRect& quadVisibleRect) | |
| 44 { | |
| 45 IntRect intersection = quadVisibleRect; | |
| 46 intersection.intersect(m_quadRect); | |
| 47 m_quadVisibleRect = intersection; | |
| 48 } | |
| 49 | |
| 50 unsigned CCDrawQuad::size() const | |
| 51 { | |
| 52 switch (material()) { | |
| 53 case Checkerboard: | |
| 54 return sizeof(CCCheckerboardDrawQuad); | |
| 55 case DebugBorder: | |
| 56 return sizeof(CCDebugBorderDrawQuad); | |
| 57 case IOSurfaceContent: | |
| 58 return sizeof(CCIOSurfaceDrawQuad); | |
| 59 case TextureContent: | |
| 60 return sizeof(CCTextureDrawQuad); | |
| 61 case SolidColor: | |
| 62 return sizeof(CCSolidColorDrawQuad); | |
| 63 case TiledContent: | |
| 64 return sizeof(CCTileDrawQuad); | |
| 65 case StreamVideoContent: | |
| 66 return sizeof(CCStreamVideoDrawQuad); | |
| 67 case RenderPass: | |
| 68 return sizeof(CCRenderPassDrawQuad); | |
| 69 case YUVVideoContent: | |
| 70 return sizeof(CCYUVVideoDrawQuad); | |
| 71 case Invalid: | |
| 72 break; | |
| 73 } | |
| 74 | |
| 75 CRASH(); | |
| 76 return sizeof(CCDrawQuad); | |
| 77 } | |
| 78 | |
| 79 scoped_ptr<CCDrawQuad> CCDrawQuad::copy(const CCSharedQuadState* copiedSharedQua
dState) const | |
| 80 { | |
| 81 // RenderPass quads have their own copy() method. | |
| 82 ASSERT(material() != RenderPass); | |
| 83 | |
| 84 unsigned bytes = size(); | |
| 85 ASSERT(bytes); | |
| 86 | |
| 87 scoped_ptr<CCDrawQuad> copyQuad(reinterpret_cast<CCDrawQuad*>(new char[bytes
])); | |
| 88 memcpy(copyQuad.get(), this, bytes); | |
| 89 copyQuad->setSharedQuadState(copiedSharedQuadState); | |
| 90 | |
| 91 return copyQuad.Pass(); | |
| 92 } | |
| 93 | |
| 94 void CCDrawQuad::setSharedQuadState(const CCSharedQuadState* sharedQuadState) | |
| 95 { | |
| 96 m_sharedQuadState = sharedQuadState; | |
| 97 m_sharedQuadStateId = sharedQuadState->id; | |
| 98 } | |
| 99 | |
| 100 } | |
| OLD | NEW |