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 |