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 #ifndef CCDrawQuad_h | 5 #ifndef CCDrawQuad_h |
6 #define CCDrawQuad_h | 6 #define CCDrawQuad_h |
7 | 7 |
8 #include "CCSharedQuadState.h" | 8 #include "CCSharedQuadState.h" |
9 | 9 |
10 namespace cc { | 10 namespace cc { |
11 | 11 |
12 // WARNING! All CCXYZDrawQuad classes must remain PODs (plain old data). | 12 // WARNING! All XYZDrawQuad classes must remain PODs (plain old data). |
13 // They are intended to be "serializable" by copying their raw bytes, so they | 13 // They are intended to be "serializable" by copying their raw bytes, so they |
14 // must not contain any non-bit-copyable member variables! | 14 // must not contain any non-bit-copyable member variables! |
15 // | 15 // |
16 // Furthermore, the class members need to be packed so they are aligned | 16 // Furthermore, the class members need to be packed so they are aligned |
17 // properly and don't have paddings/gaps, otherwise memory check tools | 17 // properly and don't have paddings/gaps, otherwise memory check tools |
18 // like Valgrind will complain about uninitialized memory usage when | 18 // like Valgrind will complain about uninitialized memory usage when |
19 // transferring these classes over the wire. | 19 // transferring these classes over the wire. |
20 #pragma pack(push, 4) | 20 #pragma pack(push, 4) |
21 | 21 |
22 // CCDrawQuad is a bag of data used for drawing a quad. Because different | 22 // DrawQuad is a bag of data used for drawing a quad. Because different |
23 // materials need different bits of per-quad data to render, classes that derive | 23 // materials need different bits of per-quad data to render, classes that derive |
24 // from CCDrawQuad store additional data in their derived instance. The Material | 24 // from DrawQuad store additional data in their derived instance. The Material |
25 // enum is used to "safely" downcast to the derived class. | 25 // enum is used to "safely" downcast to the derived class. |
26 class CCDrawQuad { | 26 class DrawQuad { |
27 public: | 27 public: |
28 enum Material { | 28 enum Material { |
29 Invalid, | 29 Invalid, |
30 Checkerboard, | 30 Checkerboard, |
31 DebugBorder, | 31 DebugBorder, |
32 IOSurfaceContent, | 32 IOSurfaceContent, |
33 RenderPass, | 33 RenderPass, |
34 TextureContent, | 34 TextureContent, |
35 SolidColor, | 35 SolidColor, |
36 TiledContent, | 36 TiledContent, |
(...skipping 15 matching lines...) Expand all Loading... |
52 void setQuadVisibleRect(const IntRect&); | 52 void setQuadVisibleRect(const IntRect&); |
53 IntRect quadVisibleRect() const { return m_quadVisibleRect; } | 53 IntRect quadVisibleRect() const { return m_quadVisibleRect; } |
54 bool isDebugQuad() const { return m_material == DebugBorder; } | 54 bool isDebugQuad() const { return m_material == DebugBorder; } |
55 | 55 |
56 Material material() const { return m_material; } | 56 Material material() const { return m_material; } |
57 | 57 |
58 // Returns transfer size of this object based on the derived class (by | 58 // Returns transfer size of this object based on the derived class (by |
59 // looking at the material type). | 59 // looking at the material type). |
60 unsigned size() const; | 60 unsigned size() const; |
61 | 61 |
62 scoped_ptr<CCDrawQuad> copy(const CCSharedQuadState* copiedSharedQuadState)
const; | 62 scoped_ptr<DrawQuad> copy(const SharedQuadState* copiedSharedQuadState) cons
t; |
63 | 63 |
64 const CCSharedQuadState* sharedQuadState() const { return m_sharedQuadState;
} | 64 const SharedQuadState* sharedQuadState() const { return m_sharedQuadState; } |
65 int sharedQuadStateId() const { return m_sharedQuadStateId; } | 65 int sharedQuadStateId() const { return m_sharedQuadStateId; } |
66 void setSharedQuadState(const CCSharedQuadState*); | 66 void setSharedQuadState(const SharedQuadState*); |
67 | 67 |
68 protected: | 68 protected: |
69 CCDrawQuad(const CCSharedQuadState*, Material, const IntRect&); | 69 DrawQuad(const SharedQuadState*, Material, const IntRect&); |
70 | 70 |
71 // Stores state common to a large bundle of quads; kept separate for memory | 71 // Stores state common to a large bundle of quads; kept separate for memory |
72 // efficiency. There is special treatment to reconstruct these pointers | 72 // efficiency. There is special treatment to reconstruct these pointers |
73 // during serialization. | 73 // during serialization. |
74 const CCSharedQuadState* m_sharedQuadState; | 74 const SharedQuadState* m_sharedQuadState; |
75 int m_sharedQuadStateId; | 75 int m_sharedQuadStateId; |
76 | 76 |
77 Material m_material; | 77 Material m_material; |
78 IntRect m_quadRect; | 78 IntRect m_quadRect; |
79 IntRect m_quadVisibleRect; | 79 IntRect m_quadVisibleRect; |
80 | 80 |
81 // By default, the shared quad state determines whether or not this quad is | 81 // By default, the shared quad state determines whether or not this quad is |
82 // opaque or needs blending. Derived classes can override with these | 82 // opaque or needs blending. Derived classes can override with these |
83 // variables. | 83 // variables. |
84 bool m_quadOpaque; | 84 bool m_quadOpaque; |
85 bool m_needsBlending; | 85 bool m_needsBlending; |
86 | 86 |
87 // Be default, this rect is empty. It is used when the shared quad state and
above | 87 // Be default, this rect is empty. It is used when the shared quad state and
above |
88 // variables determine that the quad is not fully opaque but may be partiall
y opaque. | 88 // variables determine that the quad is not fully opaque but may be partiall
y opaque. |
89 IntRect m_opaqueRect; | 89 IntRect m_opaqueRect; |
90 }; | 90 }; |
91 | 91 |
92 #pragma pack(pop) | 92 #pragma pack(pop) |
93 | 93 |
94 } | 94 } |
95 | 95 |
96 #endif | 96 #endif |
OLD | NEW |