OLD | NEW |
| (Empty) |
1 /* libs/graphics/animator/SkDisplayType.h | |
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 #ifndef SkDisplayType_DEFINED | |
19 #define SkDisplayType_DEFINED | |
20 | |
21 #include "SkMath.h" | |
22 #include "SkScalar.h" | |
23 | |
24 #ifdef SK_DEBUG | |
25 #ifdef SK_CAN_USE_FLOAT | |
26 #define SK_DUMP_ENABLED | |
27 #endif | |
28 #ifdef SK_BUILD_FOR_MAC | |
29 #define SK_FIND_LEAKS | |
30 #endif | |
31 #endif | |
32 | |
33 #define SK_LITERAL_STR_EQUAL(str, token, len) (sizeof(str) - 1 == len \ | |
34 && strncmp(str, token, sizeof(str) - 1) == 0) | |
35 | |
36 class SkAnimateMaker; | |
37 class SkDisplayable; | |
38 struct SkMemberInfo; | |
39 | |
40 enum SkDisplayTypes { | |
41 SkType_Unknown, | |
42 SkType_Math, // for ecmascript compatible Math functions and constants | |
43 SkType_Number, // for for ecmascript compatible Number functions and consta
nts | |
44 SkType_Add, | |
45 SkType_AddCircle, | |
46 SkType_AddGeom, | |
47 SkType_AddMode, | |
48 SkType_AddOval, | |
49 SkType_AddPath, | |
50 SkType_AddRect, // path part | |
51 SkType_AddRoundRect, | |
52 SkType_Align, | |
53 SkType_Animate, | |
54 SkType_AnimateBase, // base type for animate, set | |
55 SkType_Apply, | |
56 SkType_ApplyMode, | |
57 SkType_ApplyTransition, | |
58 SkType_Array, | |
59 SkType_ARGB, | |
60 SkType_Base64, | |
61 SkType_BaseBitmap, | |
62 SkType_BaseClassInfo, | |
63 SkType_Bitmap, | |
64 SkType_BitmapEncoding, | |
65 SkType_BitmapFormat, | |
66 SkType_BitmapShader, | |
67 SkType_Blur, | |
68 SkType_Boolean, // can have values -1 (uninitialized), 0, 1 | |
69 SkType_Boundable, | |
70 SkType_Bounds, | |
71 SkType_Cap, | |
72 SkType_Clear, | |
73 SkType_Clip, | |
74 SkType_Close, | |
75 SkType_Color, | |
76 SkType_CubicTo, | |
77 SkType_Dash, | |
78 SkType_Data, | |
79 SkType_Discrete, | |
80 SkType_Displayable, | |
81 SkType_Drawable, | |
82 SkType_DrawTo, | |
83 SkType_Dump, | |
84 SkType_DynamicString, // evaluate at draw time | |
85 SkType_Emboss, | |
86 SkType_Event, | |
87 SkType_EventCode, | |
88 SkType_EventKind, | |
89 SkType_EventMode, | |
90 SkType_FillType, | |
91 SkType_FilterType, | |
92 SkType_Float, | |
93 SkType_FontStyle, | |
94 SkType_FromPath, | |
95 SkType_FromPathMode, | |
96 SkType_Full, | |
97 SkType_Gradient, | |
98 SkType_Group, | |
99 SkType_HitClear, | |
100 SkType_HitTest, | |
101 SkType_Image, | |
102 SkType_Include, | |
103 SkType_Input, | |
104 SkType_Int, | |
105 SkType_Join, | |
106 SkType_Line, // simple line primitive | |
107 SkType_LineTo, // used as part of path construction | |
108 SkType_LinearGradient, | |
109 SkType_MaskFilter, | |
110 SkType_MaskFilterBlurStyle, | |
111 SkType_MaskFilterLight, | |
112 SkType_Matrix, | |
113 SkType_MemberFunction, | |
114 SkType_MemberProperty, | |
115 SkType_Move, | |
116 SkType_MoveTo, | |
117 SkType_Movie, | |
118 SkType_MSec, | |
119 SkType_Oval, | |
120 SkType_Paint, | |
121 SkType_Path, | |
122 SkType_PathDirection, | |
123 SkType_PathEffect, | |
124 SkType_Point, // used inside other structures, no vtable | |
125 SkType_DrawPoint, // used to draw points, has a vtable | |
126 SkType_PolyToPoly, | |
127 SkType_Polygon, | |
128 SkType_Polyline, | |
129 SkType_Post, | |
130 SkType_QuadTo, | |
131 SkType_RCubicTo, | |
132 SkType_RLineTo, | |
133 SkType_RMoveTo, | |
134 SkType_RQuadTo, | |
135 SkType_RadialGradient, | |
136 SkType_Random, | |
137 SkType_Rect, | |
138 SkType_RectToRect, | |
139 SkType_Remove, | |
140 SkType_Replace, | |
141 SkType_Rotate, | |
142 SkType_RoundRect, | |
143 SkType_Save, | |
144 SkType_SaveLayer, | |
145 SkType_Scale, | |
146 SkType_Screenplay, | |
147 SkType_Set, | |
148 SkType_Shader, | |
149 SkType_Skew, | |
150 SkType_3D_Camera, | |
151 SkType_3D_Patch, | |
152 SkType_3D_Point, | |
153 SkType_Snapshot, | |
154 SkType_String, // pointer to SkString | |
155 SkType_Style, | |
156 SkType_Text, | |
157 SkType_TextBox, | |
158 SkType_TextBoxAlign, | |
159 SkType_TextBoxMode, | |
160 SkType_TextOnPath, | |
161 SkType_TextToPath, | |
162 SkType_TileMode, | |
163 SkType_Translate, | |
164 SkType_TransparentShader, | |
165 SkType_Typeface, | |
166 SkType_Xfermode, | |
167 kNumberOfTypes | |
168 }; | |
169 | |
170 struct TypeNames { | |
171 const char* fName; | |
172 SkDisplayTypes fType; | |
173 #if defined SK_DEBUG || defined SK_BUILD_CONDENSED | |
174 bool fDrawPrefix; | |
175 bool fDisplayPrefix; | |
176 #endif | |
177 }; | |
178 | |
179 #ifdef SK_DEBUG | |
180 typedef SkDisplayTypes SkFunctionParamType; | |
181 #else | |
182 typedef unsigned char SkFunctionParamType; | |
183 #endif | |
184 | |
185 extern const TypeNames gTypeNames[]; | |
186 extern const int kTypeNamesSize; | |
187 | |
188 class SkDisplayType { | |
189 public: | |
190 static SkDisplayTypes Find(SkAnimateMaker* , const SkMemberInfo* ); | |
191 static const SkMemberInfo* GetMember(SkAnimateMaker* , SkDisplayTypes , cons
t char** ); | |
192 static const SkMemberInfo* GetMembers(SkAnimateMaker* , SkDisplayTypes , int
* infoCountPtr); | |
193 static SkDisplayTypes GetParent(SkAnimateMaker* , SkDisplayTypes ); | |
194 static bool IsDisplayable(SkAnimateMaker* , SkDisplayTypes ); | |
195 static bool IsEnum(SkAnimateMaker* , SkDisplayTypes ); | |
196 static bool IsStruct(SkAnimateMaker* , SkDisplayTypes ); | |
197 static SkDisplayTypes RegisterNewType(); | |
198 static SkDisplayTypes Resolve(const char[] , const SkMemberInfo** ); | |
199 #ifdef SK_DEBUG | |
200 static bool IsAnimate(SkDisplayTypes type ) { return type == SkType_Animate
|| | |
201 type == SkType_Set; } | |
202 static const char* GetName(SkAnimateMaker* , SkDisplayTypes ); | |
203 #endif | |
204 #ifdef SK_SUPPORT_UNITTEST | |
205 static void UnitTest(); | |
206 #endif | |
207 #if defined SK_DEBUG || defined SK_BUILD_CONDENSED | |
208 static void BuildCondensedInfo(SkAnimateMaker* ); | |
209 #endif | |
210 static SkDisplayTypes GetType(SkAnimateMaker* , const char[] , size_t len); | |
211 static SkDisplayable* CreateInstance(SkAnimateMaker* , SkDisplayTypes ); | |
212 private: | |
213 static SkDisplayTypes gNewTypes; | |
214 }; | |
215 | |
216 #endif // SkDisplayType_DEFINED | |
OLD | NEW |