OLD | NEW |
| (Empty) |
1 /* libs/graphics/animator/SkDrawRectangle.cpp | |
2 ** | |
3 ** Copyright 2006, The Android Open Source Project | |
4 ** | |
5 ** Licensed under the Apache License, Version 2.0 (the "License"); | |
6 ** you may not use this file except in compliance with the License. | |
7 ** You may obtain a copy of the License at | |
8 ** | |
9 ** http://www.apache.org/licenses/LICENSE-2.0 | |
10 ** | |
11 ** Unless required by applicable law or agreed to in writing, software | |
12 ** distributed under the License is distributed on an "AS IS" BASIS, | |
13 ** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
14 ** See the License for the specific language governing permissions and | |
15 ** limitations under the License. | |
16 */ | |
17 | |
18 #include "SkDrawRectangle.h" | |
19 #include "SkAnimateMaker.h" | |
20 #include "SkCanvas.h" | |
21 #include "SkMatrixParts.h" | |
22 #include "SkPaint.h" | |
23 #include "SkScript.h" | |
24 | |
25 enum SkRectangle_Properties { | |
26 SK_PROPERTY(height), | |
27 SK_PROPERTY(needsRedraw), | |
28 SK_PROPERTY(width) | |
29 }; | |
30 | |
31 #if SK_USE_CONDENSED_INFO == 0 | |
32 | |
33 const SkMemberInfo SkDrawRect::fInfo[] = { | |
34 SK_MEMBER_ALIAS(bottom, fRect.fBottom, Float), | |
35 SK_MEMBER_PROPERTY(height, Float), | |
36 SK_MEMBER_ALIAS(left, fRect.fLeft, Float), | |
37 SK_MEMBER_PROPERTY(needsRedraw, Boolean), | |
38 SK_MEMBER_ALIAS(right, fRect.fRight, Float), | |
39 SK_MEMBER_ALIAS(top, fRect.fTop, Float), | |
40 SK_MEMBER_PROPERTY(width, Float) | |
41 }; | |
42 | |
43 #endif | |
44 | |
45 DEFINE_GET_MEMBER(SkDrawRect); | |
46 | |
47 SkDrawRect::SkDrawRect() : fParent(NULL) { | |
48 fRect.setEmpty(); | |
49 } | |
50 | |
51 void SkDrawRect::dirty() { | |
52 if (fParent) | |
53 fParent->dirty(); | |
54 } | |
55 | |
56 bool SkDrawRect::draw(SkAnimateMaker& maker) { | |
57 SkBoundableAuto boundable(this, maker); | |
58 maker.fCanvas->drawRect(fRect, *maker.fPaint); | |
59 return false; | |
60 } | |
61 | |
62 #ifdef SK_DUMP_ENABLED | |
63 void SkDrawRect::dump(SkAnimateMaker* maker) { | |
64 dumpBase(maker); | |
65 SkDebugf("left=\"%g\" top=\"%g\" right=\"%g\" bottom=\"%g\" />\n", | |
66 SkScalarToFloat(fRect.fLeft), SkScalarToFloat(fRect.fTop), SkScalarToFlo
at(fRect.fRight), | |
67 SkScalarToFloat(fRect.fBottom)); | |
68 } | |
69 #endif | |
70 | |
71 SkDisplayable* SkDrawRect::getParent() const { | |
72 return fParent; | |
73 } | |
74 | |
75 bool SkDrawRect::getProperty(int index, SkScriptValue* value) const { | |
76 SkScalar result; | |
77 switch (index) { | |
78 case SK_PROPERTY(height): | |
79 result = fRect.height(); | |
80 break; | |
81 case SK_PROPERTY(needsRedraw): | |
82 value->fType = SkType_Boolean; | |
83 value->fOperand.fS32 = fBounds.isEmpty() == false; | |
84 return true; | |
85 case SK_PROPERTY(width): | |
86 result = fRect.width(); | |
87 break; | |
88 default: | |
89 SkASSERT(0); | |
90 return false; | |
91 } | |
92 value->fType = SkType_Float; | |
93 value->fOperand.fScalar = result; | |
94 return true; | |
95 } | |
96 | |
97 | |
98 bool SkDrawRect::setParent(SkDisplayable* parent) { | |
99 fParent = parent; | |
100 return false; | |
101 } | |
102 | |
103 bool SkDrawRect::setProperty(int index, SkScriptValue& value) { | |
104 SkScalar scalar = value.fOperand.fScalar; | |
105 switch (index) { | |
106 case SK_PROPERTY(height): | |
107 SkASSERT(value.fType == SkType_Float); | |
108 fRect.fBottom = scalar + fRect.fTop; | |
109 return true; | |
110 case SK_PROPERTY(needsRedraw): | |
111 return false; | |
112 case SK_PROPERTY(width): | |
113 SkASSERT(value.fType == SkType_Float); | |
114 fRect.fRight = scalar + fRect.fLeft; | |
115 return true; | |
116 default: | |
117 SkASSERT(0); | |
118 } | |
119 return false; | |
120 } | |
121 | |
122 #if SK_USE_CONDENSED_INFO == 0 | |
123 | |
124 const SkMemberInfo SkRoundRect::fInfo[] = { | |
125 SK_MEMBER_INHERITED, | |
126 SK_MEMBER(rx, Float), | |
127 SK_MEMBER(ry, Float), | |
128 }; | |
129 | |
130 #endif | |
131 | |
132 DEFINE_GET_MEMBER(SkRoundRect); | |
133 | |
134 SkRoundRect::SkRoundRect() : rx(0), ry(0) { | |
135 } | |
136 | |
137 bool SkRoundRect::draw(SkAnimateMaker& maker) { | |
138 SkBoundableAuto boundable(this, maker); | |
139 maker.fCanvas->drawRoundRect(fRect, rx, ry, *maker.fPaint); | |
140 return false; | |
141 } | |
142 | |
143 #ifdef SK_DUMP_ENABLED | |
144 void SkRoundRect::dump(SkAnimateMaker* maker) { | |
145 dumpBase(maker); | |
146 SkDebugf("left=\"%g\" top=\"%g\" right=\"%g\" bottom=\"%g\" rx=\"%g\" ry=\"%
g\" />\n", | |
147 SkScalarToFloat(fRect.fLeft), SkScalarToFloat(fRect.fTop), SkScalarT
oFloat(fRect.fRight), | |
148 SkScalarToFloat(fRect.fBottom), SkScalarToFloat(rx), SkScalarToFloat
(ry)); | |
149 } | |
150 #endif | |
151 | |
152 | |
153 | |
OLD | NEW |