• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2  * Copyright (C) 2023 The Android Open Source Project
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 package com.android.internal.widget.remotecompose.core;
17 
18 import android.annotation.NonNull;
19 
20 import com.android.internal.widget.remotecompose.core.operations.BitmapData;
21 import com.android.internal.widget.remotecompose.core.operations.BitmapFontData;
22 import com.android.internal.widget.remotecompose.core.operations.ClickArea;
23 import com.android.internal.widget.remotecompose.core.operations.ClipPath;
24 import com.android.internal.widget.remotecompose.core.operations.ClipRect;
25 import com.android.internal.widget.remotecompose.core.operations.ColorAttribute;
26 import com.android.internal.widget.remotecompose.core.operations.ColorConstant;
27 import com.android.internal.widget.remotecompose.core.operations.ColorExpression;
28 import com.android.internal.widget.remotecompose.core.operations.ComponentValue;
29 import com.android.internal.widget.remotecompose.core.operations.ConditionalOperations;
30 import com.android.internal.widget.remotecompose.core.operations.DataListFloat;
31 import com.android.internal.widget.remotecompose.core.operations.DataListIds;
32 import com.android.internal.widget.remotecompose.core.operations.DataMapIds;
33 import com.android.internal.widget.remotecompose.core.operations.DataMapLookup;
34 import com.android.internal.widget.remotecompose.core.operations.DebugMessage;
35 import com.android.internal.widget.remotecompose.core.operations.DrawArc;
36 import com.android.internal.widget.remotecompose.core.operations.DrawBitmap;
37 import com.android.internal.widget.remotecompose.core.operations.DrawBitmapFontText;
38 import com.android.internal.widget.remotecompose.core.operations.DrawBitmapInt;
39 import com.android.internal.widget.remotecompose.core.operations.DrawBitmapScaled;
40 import com.android.internal.widget.remotecompose.core.operations.DrawCircle;
41 import com.android.internal.widget.remotecompose.core.operations.DrawContent;
42 import com.android.internal.widget.remotecompose.core.operations.DrawLine;
43 import com.android.internal.widget.remotecompose.core.operations.DrawOval;
44 import com.android.internal.widget.remotecompose.core.operations.DrawPath;
45 import com.android.internal.widget.remotecompose.core.operations.DrawRect;
46 import com.android.internal.widget.remotecompose.core.operations.DrawRoundRect;
47 import com.android.internal.widget.remotecompose.core.operations.DrawSector;
48 import com.android.internal.widget.remotecompose.core.operations.DrawText;
49 import com.android.internal.widget.remotecompose.core.operations.DrawTextAnchored;
50 import com.android.internal.widget.remotecompose.core.operations.DrawTextOnPath;
51 import com.android.internal.widget.remotecompose.core.operations.DrawTweenPath;
52 import com.android.internal.widget.remotecompose.core.operations.FloatConstant;
53 import com.android.internal.widget.remotecompose.core.operations.FloatExpression;
54 import com.android.internal.widget.remotecompose.core.operations.FloatFunctionCall;
55 import com.android.internal.widget.remotecompose.core.operations.FloatFunctionDefine;
56 import com.android.internal.widget.remotecompose.core.operations.HapticFeedback;
57 import com.android.internal.widget.remotecompose.core.operations.Header;
58 import com.android.internal.widget.remotecompose.core.operations.ImageAttribute;
59 import com.android.internal.widget.remotecompose.core.operations.IntegerExpression;
60 import com.android.internal.widget.remotecompose.core.operations.MatrixRestore;
61 import com.android.internal.widget.remotecompose.core.operations.MatrixRotate;
62 import com.android.internal.widget.remotecompose.core.operations.MatrixSave;
63 import com.android.internal.widget.remotecompose.core.operations.MatrixScale;
64 import com.android.internal.widget.remotecompose.core.operations.MatrixSkew;
65 import com.android.internal.widget.remotecompose.core.operations.MatrixTranslate;
66 import com.android.internal.widget.remotecompose.core.operations.NamedVariable;
67 import com.android.internal.widget.remotecompose.core.operations.PaintData;
68 import com.android.internal.widget.remotecompose.core.operations.ParticlesCreate;
69 import com.android.internal.widget.remotecompose.core.operations.ParticlesLoop;
70 import com.android.internal.widget.remotecompose.core.operations.PathAppend;
71 import com.android.internal.widget.remotecompose.core.operations.PathCombine;
72 import com.android.internal.widget.remotecompose.core.operations.PathCreate;
73 import com.android.internal.widget.remotecompose.core.operations.PathData;
74 import com.android.internal.widget.remotecompose.core.operations.PathTween;
75 import com.android.internal.widget.remotecompose.core.operations.RootContentBehavior;
76 import com.android.internal.widget.remotecompose.core.operations.RootContentDescription;
77 import com.android.internal.widget.remotecompose.core.operations.ShaderData;
78 import com.android.internal.widget.remotecompose.core.operations.TextAttribute;
79 import com.android.internal.widget.remotecompose.core.operations.TextData;
80 import com.android.internal.widget.remotecompose.core.operations.TextFromFloat;
81 import com.android.internal.widget.remotecompose.core.operations.TextLength;
82 import com.android.internal.widget.remotecompose.core.operations.TextLookup;
83 import com.android.internal.widget.remotecompose.core.operations.TextLookupInt;
84 import com.android.internal.widget.remotecompose.core.operations.TextMeasure;
85 import com.android.internal.widget.remotecompose.core.operations.TextMerge;
86 import com.android.internal.widget.remotecompose.core.operations.Theme;
87 import com.android.internal.widget.remotecompose.core.operations.TimeAttribute;
88 import com.android.internal.widget.remotecompose.core.operations.TouchExpression;
89 import com.android.internal.widget.remotecompose.core.operations.layout.CanvasContent;
90 import com.android.internal.widget.remotecompose.core.operations.layout.CanvasOperations;
91 import com.android.internal.widget.remotecompose.core.operations.layout.ClickModifierOperation;
92 import com.android.internal.widget.remotecompose.core.operations.layout.ComponentStart;
93 import com.android.internal.widget.remotecompose.core.operations.layout.ContainerEnd;
94 import com.android.internal.widget.remotecompose.core.operations.layout.ImpulseOperation;
95 import com.android.internal.widget.remotecompose.core.operations.layout.ImpulseProcess;
96 import com.android.internal.widget.remotecompose.core.operations.layout.LayoutComponentContent;
97 import com.android.internal.widget.remotecompose.core.operations.layout.LoopOperation;
98 import com.android.internal.widget.remotecompose.core.operations.layout.RootLayoutComponent;
99 import com.android.internal.widget.remotecompose.core.operations.layout.TouchCancelModifierOperation;
100 import com.android.internal.widget.remotecompose.core.operations.layout.TouchDownModifierOperation;
101 import com.android.internal.widget.remotecompose.core.operations.layout.TouchUpModifierOperation;
102 import com.android.internal.widget.remotecompose.core.operations.layout.animation.AnimationSpec;
103 import com.android.internal.widget.remotecompose.core.operations.layout.managers.BoxLayout;
104 import com.android.internal.widget.remotecompose.core.operations.layout.managers.CanvasLayout;
105 import com.android.internal.widget.remotecompose.core.operations.layout.managers.CollapsibleColumnLayout;
106 import com.android.internal.widget.remotecompose.core.operations.layout.managers.CollapsibleRowLayout;
107 import com.android.internal.widget.remotecompose.core.operations.layout.managers.ColumnLayout;
108 import com.android.internal.widget.remotecompose.core.operations.layout.managers.FitBoxLayout;
109 import com.android.internal.widget.remotecompose.core.operations.layout.managers.ImageLayout;
110 import com.android.internal.widget.remotecompose.core.operations.layout.managers.RowLayout;
111 import com.android.internal.widget.remotecompose.core.operations.layout.managers.StateLayout;
112 import com.android.internal.widget.remotecompose.core.operations.layout.managers.TextLayout;
113 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.BackgroundModifierOperation;
114 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.BorderModifierOperation;
115 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ClipRectModifierOperation;
116 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.CollapsiblePriorityModifierOperation;
117 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ComponentVisibilityOperation;
118 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.DrawContentOperation;
119 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.GraphicsLayerModifierOperation;
120 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.HeightInModifierOperation;
121 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.HeightModifierOperation;
122 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.HostActionMetadataOperation;
123 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.HostActionOperation;
124 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.HostNamedActionOperation;
125 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.MarqueeModifierOperation;
126 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.OffsetModifierOperation;
127 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.PaddingModifierOperation;
128 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.RippleModifierOperation;
129 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.RoundedClipRectModifierOperation;
130 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.RunActionOperation;
131 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ScrollModifierOperation;
132 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ValueFloatChangeActionOperation;
133 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ValueFloatExpressionChangeActionOperation;
134 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ValueIntegerChangeActionOperation;
135 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ValueIntegerExpressionChangeActionOperation;
136 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ValueStringChangeActionOperation;
137 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.WidthInModifierOperation;
138 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.WidthModifierOperation;
139 import com.android.internal.widget.remotecompose.core.operations.layout.modifiers.ZIndexModifierOperation;
140 import com.android.internal.widget.remotecompose.core.operations.utilities.IntMap;
141 import com.android.internal.widget.remotecompose.core.semantics.CoreSemantics;
142 import com.android.internal.widget.remotecompose.core.types.BooleanConstant;
143 import com.android.internal.widget.remotecompose.core.types.IntegerConstant;
144 import com.android.internal.widget.remotecompose.core.types.LongConstant;
145 
146 /** List of operations supported in a RemoteCompose document */
147 public class Operations {
148 
149     ////////////////////////////////////////
150     // Protocol
151     ////////////////////////////////////////
152     public static final int HEADER = 0;
153     public static final int LOAD_BITMAP = 4;
154     public static final int THEME = 63;
155     public static final int CLICK_AREA = 64;
156     public static final int ROOT_CONTENT_BEHAVIOR = 65;
157     public static final int ROOT_CONTENT_DESCRIPTION = 103;
158     // TODO reorder before submitting
159     public static final int ACCESSIBILITY_SEMANTICS = 250;
160     //    public static final int ACCESSIBILITY_CUSTOM_ACTION = 251;
161 
162     ////////////////////////////////////////
163     // Draw commands
164     ////////////////////////////////////////
165     public static final int DRAW_BITMAP = 44;
166     public static final int DRAW_BITMAP_INT = 66;
167     public static final int DATA_BITMAP = 101;
168     public static final int DATA_SHADER = 45;
169     public static final int DATA_TEXT = 102;
170     public static final int DATA_BITMAP_FONT = 167;
171 
172     ///////////////////////////// =====================
173     public static final int CLIP_PATH = 38;
174     public static final int CLIP_RECT = 39;
175     public static final int PAINT_VALUES = 40;
176     public static final int DRAW_RECT = 42;
177     public static final int DRAW_BITMAP_FONT_TEXT_RUN = 48;
178     public static final int DRAW_TEXT_RUN = 43;
179     public static final int DRAW_CIRCLE = 46;
180     public static final int DRAW_LINE = 47;
181     public static final int DRAW_ROUND_RECT = 51;
182     public static final int DRAW_SECTOR = 52;
183     public static final int DRAW_TEXT_ON_PATH = 53;
184     public static final int DRAW_OVAL = 56;
185     public static final int DATA_PATH = 123;
186     public static final int DRAW_PATH = 124;
187     public static final int DRAW_TWEEN_PATH = 125;
188     public static final int DRAW_CONTENT = 139;
189     public static final int MATRIX_SCALE = 126;
190     public static final int MATRIX_TRANSLATE = 127;
191     public static final int MATRIX_SKEW = 128;
192     public static final int MATRIX_ROTATE = 129;
193     public static final int MATRIX_SAVE = 130;
194     public static final int MATRIX_RESTORE = 131;
195     public static final int MATRIX_SET = 132;
196     public static final int DATA_FLOAT = 80;
197     public static final int ANIMATED_FLOAT = 81;
198     public static final int DRAW_TEXT_ANCHOR = 133;
199     public static final int COLOR_EXPRESSIONS = 134;
200     public static final int TEXT_FROM_FLOAT = 135;
201     public static final int TEXT_MERGE = 136;
202     public static final int NAMED_VARIABLE = 137;
203     public static final int COLOR_CONSTANT = 138;
204     public static final int DATA_INT = 140;
205     public static final int DATA_BOOLEAN = 143;
206     public static final int INTEGER_EXPRESSION = 144;
207     public static final int ID_MAP = 145;
208     public static final int ID_LIST = 146;
209     public static final int FLOAT_LIST = 147;
210     public static final int DATA_LONG = 148;
211     public static final int DRAW_BITMAP_SCALED = 149;
212     public static final int TEXT_LOOKUP = 151;
213     public static final int DRAW_ARC = 152;
214     public static final int TEXT_LOOKUP_INT = 153;
215     public static final int DATA_MAP_LOOKUP = 154;
216     public static final int TEXT_MEASURE = 155;
217     public static final int TEXT_LENGTH = 156;
218     public static final int TOUCH_EXPRESSION = 157;
219     public static final int PATH_TWEEN = 158;
220     public static final int PATH_CREATE = 159;
221     public static final int PATH_ADD = 160;
222     public static final int PARTICLE_DEFINE = 161;
223     public static final int PARTICLE_PROCESS = 162;
224     public static final int PARTICLE_LOOP = 163;
225     public static final int IMPULSE_START = 164;
226     public static final int IMPULSE_PROCESS = 165;
227     public static final int FUNCTION_CALL = 166;
228     public static final int FUNCTION_DEFINE = 168;
229     public static final int ATTRIBUTE_TEXT = 170;
230     public static final int ATTRIBUTE_IMAGE = 171;
231     public static final int ATTRIBUTE_TIME = 172;
232     public static final int CANVAS_OPERATIONS = 173;
233     public static final int MODIFIER_DRAW_CONTENT = 174;
234     public static final int PATH_COMBINE = 175;
235     public static final int HAPTIC_FEEDBACK = 177;
236     public static final int CONDITIONAL_OPERATIONS = 178;
237     public static final int DEBUG_MESSAGE = 179;
238     public static final int ATTRIBUTE_COLOR = 180;
239 
240     ///////////////////////////////////////// ======================
241 
242     ////////////////////////////////////////
243     // Layout commands
244     ////////////////////////////////////////
245 
246     public static final int LAYOUT_ROOT = 200;
247     public static final int LAYOUT_CONTENT = 201;
248     public static final int LAYOUT_BOX = 202;
249     public static final int LAYOUT_FIT_BOX = 176;
250     public static final int LAYOUT_ROW = 203;
251     public static final int LAYOUT_COLLAPSIBLE_ROW = 230;
252     public static final int LAYOUT_COLUMN = 204;
253     public static final int LAYOUT_COLLAPSIBLE_COLUMN = 233;
254     public static final int LAYOUT_CANVAS = 205;
255     public static final int LAYOUT_CANVAS_CONTENT = 207;
256     public static final int LAYOUT_TEXT = 208;
257     public static final int LAYOUT_STATE = 217;
258     public static final int LAYOUT_IMAGE = 234;
259 
260     public static final int COMPONENT_START = 2;
261 
262     public static final int MODIFIER_WIDTH = 16;
263     public static final int MODIFIER_HEIGHT = 67;
264     public static final int MODIFIER_WIDTH_IN = 231;
265     public static final int MODIFIER_HEIGHT_IN = 232;
266     public static final int MODIFIER_COLLAPSIBLE_PRIORITY = 235;
267     public static final int MODIFIER_BACKGROUND = 55;
268     public static final int MODIFIER_BORDER = 107;
269     public static final int MODIFIER_PADDING = 58;
270     public static final int MODIFIER_CLIP_RECT = 108;
271     public static final int MODIFIER_ROUNDED_CLIP_RECT = 54;
272 
273     public static final int MODIFIER_CLICK = 59;
274     public static final int MODIFIER_TOUCH_DOWN = 219;
275     public static final int MODIFIER_TOUCH_UP = 220;
276     public static final int MODIFIER_TOUCH_CANCEL = 225;
277 
278     public static final int CONTAINER_END = 214;
279 
280     public static final int MODIFIER_OFFSET = 221;
281     public static final int MODIFIER_ZINDEX = 223;
282     public static final int MODIFIER_GRAPHICS_LAYER = 224;
283     public static final int MODIFIER_SCROLL = 226;
284     public static final int MODIFIER_MARQUEE = 228;
285     public static final int MODIFIER_RIPPLE = 229;
286 
287     public static final int LOOP_START = 215;
288 
289     public static final int MODIFIER_VISIBILITY = 211;
290     public static final int HOST_ACTION = 209;
291     public static final int HOST_METADATA_ACTION = 216;
292     public static final int HOST_NAMED_ACTION = 210;
293     public static final int RUN_ACTION = 236;
294 
295     public static final int VALUE_INTEGER_CHANGE_ACTION = 212;
296     public static final int VALUE_STRING_CHANGE_ACTION = 213;
297     public static final int VALUE_INTEGER_EXPRESSION_CHANGE_ACTION = 218;
298     public static final int VALUE_FLOAT_CHANGE_ACTION = 222;
299     public static final int VALUE_FLOAT_EXPRESSION_CHANGE_ACTION = 227;
300 
301     public static final int ANIMATION_SPEC = 14;
302 
303     public static final int COMPONENT_VALUE = 150;
304 
305     @NonNull public static UniqueIntMap<CompanionOperation> map = new UniqueIntMap<>();
306 
307     static class UniqueIntMap<T> extends IntMap<T> {
308         @Override
put(int key, @NonNull T value)309         public T put(int key, @NonNull T value) {
310             assert null == get(key) : "Opcode " + key + " already used in Operations !";
311             return super.put(key, value);
312         }
313     }
314 
315     static {
map.put(HEADER, Header::read)316         map.put(HEADER, Header::read);
map.put(DRAW_BITMAP_INT, DrawBitmapInt::read)317         map.put(DRAW_BITMAP_INT, DrawBitmapInt::read);
map.put(DATA_BITMAP, BitmapData::read)318         map.put(DATA_BITMAP, BitmapData::read);
map.put(DATA_BITMAP_FONT, BitmapFontData::read)319         map.put(DATA_BITMAP_FONT, BitmapFontData::read);
map.put(DATA_TEXT, TextData::read)320         map.put(DATA_TEXT, TextData::read);
map.put(THEME, Theme::read)321         map.put(THEME, Theme::read);
map.put(CLICK_AREA, ClickArea::read)322         map.put(CLICK_AREA, ClickArea::read);
map.put(ROOT_CONTENT_BEHAVIOR, RootContentBehavior::read)323         map.put(ROOT_CONTENT_BEHAVIOR, RootContentBehavior::read);
map.put(ROOT_CONTENT_DESCRIPTION, RootContentDescription::read)324         map.put(ROOT_CONTENT_DESCRIPTION, RootContentDescription::read);
325 
map.put(DRAW_SECTOR, DrawSector::read)326         map.put(DRAW_SECTOR, DrawSector::read);
map.put(DRAW_BITMAP, DrawBitmap::read)327         map.put(DRAW_BITMAP, DrawBitmap::read);
map.put(DRAW_CIRCLE, DrawCircle::read)328         map.put(DRAW_CIRCLE, DrawCircle::read);
map.put(DRAW_LINE, DrawLine::read)329         map.put(DRAW_LINE, DrawLine::read);
map.put(DRAW_OVAL, DrawOval::read)330         map.put(DRAW_OVAL, DrawOval::read);
map.put(DRAW_PATH, DrawPath::read)331         map.put(DRAW_PATH, DrawPath::read);
map.put(DRAW_RECT, DrawRect::read)332         map.put(DRAW_RECT, DrawRect::read);
map.put(DRAW_ROUND_RECT, DrawRoundRect::read)333         map.put(DRAW_ROUND_RECT, DrawRoundRect::read);
map.put(DRAW_TEXT_ON_PATH, DrawTextOnPath::read)334         map.put(DRAW_TEXT_ON_PATH, DrawTextOnPath::read);
map.put(DRAW_TEXT_RUN, DrawText::read)335         map.put(DRAW_TEXT_RUN, DrawText::read);
map.put(DRAW_BITMAP_FONT_TEXT_RUN, DrawBitmapFontText::read)336         map.put(DRAW_BITMAP_FONT_TEXT_RUN, DrawBitmapFontText::read);
map.put(DRAW_TWEEN_PATH, DrawTweenPath::read)337         map.put(DRAW_TWEEN_PATH, DrawTweenPath::read);
map.put(DATA_PATH, PathData::read)338         map.put(DATA_PATH, PathData::read);
map.put(PAINT_VALUES, PaintData::read)339         map.put(PAINT_VALUES, PaintData::read);
map.put(MATRIX_RESTORE, MatrixRestore::read)340         map.put(MATRIX_RESTORE, MatrixRestore::read);
map.put(MATRIX_ROTATE, MatrixRotate::read)341         map.put(MATRIX_ROTATE, MatrixRotate::read);
map.put(MATRIX_SAVE, MatrixSave::read)342         map.put(MATRIX_SAVE, MatrixSave::read);
map.put(MATRIX_SCALE, MatrixScale::read)343         map.put(MATRIX_SCALE, MatrixScale::read);
map.put(MATRIX_SKEW, MatrixSkew::read)344         map.put(MATRIX_SKEW, MatrixSkew::read);
map.put(MATRIX_TRANSLATE, MatrixTranslate::read)345         map.put(MATRIX_TRANSLATE, MatrixTranslate::read);
map.put(CLIP_PATH, ClipPath::read)346         map.put(CLIP_PATH, ClipPath::read);
map.put(CLIP_RECT, ClipRect::read)347         map.put(CLIP_RECT, ClipRect::read);
map.put(DATA_SHADER, ShaderData::read)348         map.put(DATA_SHADER, ShaderData::read);
map.put(DATA_FLOAT, FloatConstant::read)349         map.put(DATA_FLOAT, FloatConstant::read);
map.put(ANIMATED_FLOAT, FloatExpression::read)350         map.put(ANIMATED_FLOAT, FloatExpression::read);
map.put(DRAW_TEXT_ANCHOR, DrawTextAnchored::read)351         map.put(DRAW_TEXT_ANCHOR, DrawTextAnchored::read);
map.put(COLOR_EXPRESSIONS, ColorExpression::read)352         map.put(COLOR_EXPRESSIONS, ColorExpression::read);
map.put(TEXT_FROM_FLOAT, TextFromFloat::read)353         map.put(TEXT_FROM_FLOAT, TextFromFloat::read);
map.put(TEXT_MERGE, TextMerge::read)354         map.put(TEXT_MERGE, TextMerge::read);
map.put(NAMED_VARIABLE, NamedVariable::read)355         map.put(NAMED_VARIABLE, NamedVariable::read);
map.put(COLOR_CONSTANT, ColorConstant::read)356         map.put(COLOR_CONSTANT, ColorConstant::read);
map.put(DATA_INT, IntegerConstant::read)357         map.put(DATA_INT, IntegerConstant::read);
map.put(INTEGER_EXPRESSION, IntegerExpression::read)358         map.put(INTEGER_EXPRESSION, IntegerExpression::read);
map.put(DATA_BOOLEAN, BooleanConstant::read)359         map.put(DATA_BOOLEAN, BooleanConstant::read);
map.put(ID_MAP, DataMapIds::read)360         map.put(ID_MAP, DataMapIds::read);
map.put(ID_LIST, DataListIds::read)361         map.put(ID_LIST, DataListIds::read);
map.put(FLOAT_LIST, DataListFloat::read)362         map.put(FLOAT_LIST, DataListFloat::read);
map.put(DATA_LONG, LongConstant::read)363         map.put(DATA_LONG, LongConstant::read);
map.put(DRAW_BITMAP_SCALED, DrawBitmapScaled::read)364         map.put(DRAW_BITMAP_SCALED, DrawBitmapScaled::read);
map.put(TEXT_LOOKUP, TextLookup::read)365         map.put(TEXT_LOOKUP, TextLookup::read);
map.put(TEXT_LOOKUP_INT, TextLookupInt::read)366         map.put(TEXT_LOOKUP_INT, TextLookupInt::read);
367 
map.put(LOOP_START, LoopOperation::read)368         map.put(LOOP_START, LoopOperation::read);
369 
370         // Layout
371 
map.put(COMPONENT_START, ComponentStart::read)372         map.put(COMPONENT_START, ComponentStart::read);
map.put(ANIMATION_SPEC, AnimationSpec::read)373         map.put(ANIMATION_SPEC, AnimationSpec::read);
374 
map.put(MODIFIER_WIDTH, WidthModifierOperation::read)375         map.put(MODIFIER_WIDTH, WidthModifierOperation::read);
map.put(MODIFIER_HEIGHT, HeightModifierOperation::read)376         map.put(MODIFIER_HEIGHT, HeightModifierOperation::read);
map.put(MODIFIER_WIDTH_IN, WidthInModifierOperation::read)377         map.put(MODIFIER_WIDTH_IN, WidthInModifierOperation::read);
map.put(MODIFIER_HEIGHT_IN, HeightInModifierOperation::read)378         map.put(MODIFIER_HEIGHT_IN, HeightInModifierOperation::read);
map.put(MODIFIER_COLLAPSIBLE_PRIORITY, CollapsiblePriorityModifierOperation::read)379         map.put(MODIFIER_COLLAPSIBLE_PRIORITY, CollapsiblePriorityModifierOperation::read);
map.put(MODIFIER_PADDING, PaddingModifierOperation::read)380         map.put(MODIFIER_PADDING, PaddingModifierOperation::read);
map.put(MODIFIER_BACKGROUND, BackgroundModifierOperation::read)381         map.put(MODIFIER_BACKGROUND, BackgroundModifierOperation::read);
map.put(MODIFIER_BORDER, BorderModifierOperation::read)382         map.put(MODIFIER_BORDER, BorderModifierOperation::read);
map.put(MODIFIER_ROUNDED_CLIP_RECT, RoundedClipRectModifierOperation::read)383         map.put(MODIFIER_ROUNDED_CLIP_RECT, RoundedClipRectModifierOperation::read);
map.put(MODIFIER_CLIP_RECT, ClipRectModifierOperation::read)384         map.put(MODIFIER_CLIP_RECT, ClipRectModifierOperation::read);
map.put(MODIFIER_CLICK, ClickModifierOperation::read)385         map.put(MODIFIER_CLICK, ClickModifierOperation::read);
map.put(MODIFIER_TOUCH_DOWN, TouchDownModifierOperation::read)386         map.put(MODIFIER_TOUCH_DOWN, TouchDownModifierOperation::read);
map.put(MODIFIER_TOUCH_UP, TouchUpModifierOperation::read)387         map.put(MODIFIER_TOUCH_UP, TouchUpModifierOperation::read);
map.put(MODIFIER_TOUCH_CANCEL, TouchCancelModifierOperation::read)388         map.put(MODIFIER_TOUCH_CANCEL, TouchCancelModifierOperation::read);
map.put(MODIFIER_VISIBILITY, ComponentVisibilityOperation::read)389         map.put(MODIFIER_VISIBILITY, ComponentVisibilityOperation::read);
map.put(MODIFIER_OFFSET, OffsetModifierOperation::read)390         map.put(MODIFIER_OFFSET, OffsetModifierOperation::read);
map.put(MODIFIER_ZINDEX, ZIndexModifierOperation::read)391         map.put(MODIFIER_ZINDEX, ZIndexModifierOperation::read);
map.put(MODIFIER_GRAPHICS_LAYER, GraphicsLayerModifierOperation::read)392         map.put(MODIFIER_GRAPHICS_LAYER, GraphicsLayerModifierOperation::read);
map.put(MODIFIER_SCROLL, ScrollModifierOperation::read)393         map.put(MODIFIER_SCROLL, ScrollModifierOperation::read);
map.put(MODIFIER_MARQUEE, MarqueeModifierOperation::read)394         map.put(MODIFIER_MARQUEE, MarqueeModifierOperation::read);
map.put(MODIFIER_RIPPLE, RippleModifierOperation::read)395         map.put(MODIFIER_RIPPLE, RippleModifierOperation::read);
map.put(MODIFIER_DRAW_CONTENT, DrawContentOperation::read)396         map.put(MODIFIER_DRAW_CONTENT, DrawContentOperation::read);
397 
map.put(CONTAINER_END, ContainerEnd::read)398         map.put(CONTAINER_END, ContainerEnd::read);
399 
map.put(RUN_ACTION, RunActionOperation::read)400         map.put(RUN_ACTION, RunActionOperation::read);
map.put(HOST_ACTION, HostActionOperation::read)401         map.put(HOST_ACTION, HostActionOperation::read);
map.put(HOST_METADATA_ACTION, HostActionMetadataOperation::read)402         map.put(HOST_METADATA_ACTION, HostActionMetadataOperation::read);
map.put(HOST_NAMED_ACTION, HostNamedActionOperation::read)403         map.put(HOST_NAMED_ACTION, HostNamedActionOperation::read);
map.put(VALUE_INTEGER_CHANGE_ACTION, ValueIntegerChangeActionOperation::read)404         map.put(VALUE_INTEGER_CHANGE_ACTION, ValueIntegerChangeActionOperation::read);
map.put( VALUE_INTEGER_EXPRESSION_CHANGE_ACTION, ValueIntegerExpressionChangeActionOperation::read)405         map.put(
406                 VALUE_INTEGER_EXPRESSION_CHANGE_ACTION,
407                 ValueIntegerExpressionChangeActionOperation::read);
map.put(VALUE_STRING_CHANGE_ACTION, ValueStringChangeActionOperation::read)408         map.put(VALUE_STRING_CHANGE_ACTION, ValueStringChangeActionOperation::read);
map.put(VALUE_FLOAT_CHANGE_ACTION, ValueFloatChangeActionOperation::read)409         map.put(VALUE_FLOAT_CHANGE_ACTION, ValueFloatChangeActionOperation::read);
map.put( VALUE_FLOAT_EXPRESSION_CHANGE_ACTION, ValueFloatExpressionChangeActionOperation::read)410         map.put(
411                 VALUE_FLOAT_EXPRESSION_CHANGE_ACTION,
412                 ValueFloatExpressionChangeActionOperation::read);
413 
map.put(LAYOUT_ROOT, RootLayoutComponent::read)414         map.put(LAYOUT_ROOT, RootLayoutComponent::read);
map.put(LAYOUT_CONTENT, LayoutComponentContent::read)415         map.put(LAYOUT_CONTENT, LayoutComponentContent::read);
map.put(LAYOUT_BOX, BoxLayout::read)416         map.put(LAYOUT_BOX, BoxLayout::read);
map.put(LAYOUT_FIT_BOX, FitBoxLayout::read)417         map.put(LAYOUT_FIT_BOX, FitBoxLayout::read);
map.put(LAYOUT_COLUMN, ColumnLayout::read)418         map.put(LAYOUT_COLUMN, ColumnLayout::read);
map.put(LAYOUT_COLLAPSIBLE_COLUMN, CollapsibleColumnLayout::read)419         map.put(LAYOUT_COLLAPSIBLE_COLUMN, CollapsibleColumnLayout::read);
map.put(LAYOUT_ROW, RowLayout::read)420         map.put(LAYOUT_ROW, RowLayout::read);
map.put(LAYOUT_COLLAPSIBLE_ROW, CollapsibleRowLayout::read)421         map.put(LAYOUT_COLLAPSIBLE_ROW, CollapsibleRowLayout::read);
map.put(LAYOUT_CANVAS, CanvasLayout::read)422         map.put(LAYOUT_CANVAS, CanvasLayout::read);
map.put(LAYOUT_CANVAS_CONTENT, CanvasContent::read)423         map.put(LAYOUT_CANVAS_CONTENT, CanvasContent::read);
map.put(LAYOUT_TEXT, TextLayout::read)424         map.put(LAYOUT_TEXT, TextLayout::read);
map.put(LAYOUT_IMAGE, ImageLayout::read)425         map.put(LAYOUT_IMAGE, ImageLayout::read);
map.put(LAYOUT_STATE, StateLayout::read)426         map.put(LAYOUT_STATE, StateLayout::read);
map.put(DRAW_CONTENT, DrawContent::read)427         map.put(DRAW_CONTENT, DrawContent::read);
428 
map.put(COMPONENT_VALUE, ComponentValue::read)429         map.put(COMPONENT_VALUE, ComponentValue::read);
map.put(DRAW_ARC, DrawArc::read)430         map.put(DRAW_ARC, DrawArc::read);
map.put(DATA_MAP_LOOKUP, DataMapLookup::read)431         map.put(DATA_MAP_LOOKUP, DataMapLookup::read);
map.put(TEXT_MEASURE, TextMeasure::read)432         map.put(TEXT_MEASURE, TextMeasure::read);
map.put(TEXT_LENGTH, TextLength::read)433         map.put(TEXT_LENGTH, TextLength::read);
map.put(TOUCH_EXPRESSION, TouchExpression::read)434         map.put(TOUCH_EXPRESSION, TouchExpression::read);
map.put(PATH_TWEEN, PathTween::read)435         map.put(PATH_TWEEN, PathTween::read);
map.put(PATH_CREATE, PathCreate::read)436         map.put(PATH_CREATE, PathCreate::read);
map.put(PATH_ADD, PathAppend::read)437         map.put(PATH_ADD, PathAppend::read);
map.put(IMPULSE_START, ImpulseOperation::read)438         map.put(IMPULSE_START, ImpulseOperation::read);
map.put(IMPULSE_PROCESS, ImpulseProcess::read)439         map.put(IMPULSE_PROCESS, ImpulseProcess::read);
map.put(PARTICLE_DEFINE, ParticlesCreate::read)440         map.put(PARTICLE_DEFINE, ParticlesCreate::read);
map.put(PARTICLE_LOOP, ParticlesLoop::read)441         map.put(PARTICLE_LOOP, ParticlesLoop::read);
map.put(FUNCTION_CALL, FloatFunctionCall::read)442         map.put(FUNCTION_CALL, FloatFunctionCall::read);
map.put(FUNCTION_DEFINE, FloatFunctionDefine::read)443         map.put(FUNCTION_DEFINE, FloatFunctionDefine::read);
map.put(CANVAS_OPERATIONS, CanvasOperations::read)444         map.put(CANVAS_OPERATIONS, CanvasOperations::read);
445 
map.put(ACCESSIBILITY_SEMANTICS, CoreSemantics::read)446         map.put(ACCESSIBILITY_SEMANTICS, CoreSemantics::read);
map.put(ATTRIBUTE_IMAGE, ImageAttribute::read)447         map.put(ATTRIBUTE_IMAGE, ImageAttribute::read);
map.put(ATTRIBUTE_TEXT, TextAttribute::read)448         map.put(ATTRIBUTE_TEXT, TextAttribute::read);
map.put(ATTRIBUTE_TIME, TimeAttribute::read)449         map.put(ATTRIBUTE_TIME, TimeAttribute::read);
map.put(PATH_COMBINE, PathCombine::read)450         map.put(PATH_COMBINE, PathCombine::read);
map.put(HAPTIC_FEEDBACK, HapticFeedback::read)451         map.put(HAPTIC_FEEDBACK, HapticFeedback::read);
map.put(CONDITIONAL_OPERATIONS, ConditionalOperations::read)452         map.put(CONDITIONAL_OPERATIONS, ConditionalOperations::read);
map.put(DEBUG_MESSAGE, DebugMessage::read)453         map.put(DEBUG_MESSAGE, DebugMessage::read);
map.put(ATTRIBUTE_COLOR, ColorAttribute::read)454         map.put(ATTRIBUTE_COLOR, ColorAttribute::read);
455 
456         //        map.put(ACCESSIBILITY_CUSTOM_ACTION, CoreSemantics::read);
457     }
458 }
459