MCPcopy Create free account
hub / github.com/IppClub/Dora-SSR / xmlSAX2StartElement

Method xmlSAX2StartElement

Source/Cache/ModelCache.cpp:44–279  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

42}
43
44void ModelCache::Parser::xmlSAX2StartElement(std::string_view name, const std::vector<std::string_view>& attrs) {
45 switch (Xml::Model::Element(name[0])) {
46 case Xml::Model::Element::Dorothy: {
47 for (int i = 0; !attrs[i].empty(); i++) {
48 switch (Xml::Model::Dorothy(attrs[i][0])) {
49 case Xml::Model::Dorothy::File: {
50 Slice file(attrs[++i]);
51 std::string localFile = Path::concat({_path, file});
52 _item->_clip = SharedContent.exist(localFile) ? localFile : file.toString();
53 break;
54 }
55 case Xml::Model::Dorothy::Size:
56 getPosFromStr(attrs[++i], _item->_size.width, _item->_size.height);
57 break;
58 }
59 }
60 break;
61 }
62 case Xml::Model::Element::Sprite: {
63 SpriteDef* spriteDef = new SpriteDef();
64 for (int i = 0; !attrs[i].empty(); i++) {
65 switch (Xml::Model::Sprite(attrs[i][0])) {
66 case Xml::Model::Sprite::Key:
67 getPosFromStr(attrs[++i], spriteDef->anchorX, spriteDef->anchorY);
68 break;
69 case Xml::Model::Sprite::Opacity:
70 spriteDef->opacity = s_cast<float>(std::atof(attrs[++i].data()));
71 break;
72 case Xml::Model::Sprite::Position:
73 getPosFromStr(attrs[++i], spriteDef->x, spriteDef->y);
74 break;
75 case Xml::Model::Sprite::Scale:
76 getPosFromStr(attrs[++i], spriteDef->scaleX, spriteDef->scaleY);
77 break;
78 case Xml::Model::Sprite::Rotation:
79 spriteDef->rotation = s_cast<float>(std::atof(attrs[++i].data()));
80 break;
81 case Xml::Model::Sprite::Skew:
82 getPosFromStr(attrs[++i], spriteDef->skewX, spriteDef->skewY);
83 break;
84 case Xml::Model::Sprite::Name:
85 spriteDef->name = Slice(attrs[++i]).toString();
86 break;
87 case Xml::Model::Sprite::Clip:
88 spriteDef->clip = Slice(attrs[++i]).toString();
89 break;
90 case Xml::Model::Sprite::Front:
91 spriteDef->front = std::atoi(attrs[++i].data()) != 0;
92 break;
93 }
94 }
95 _nodeStack.push(MakeOwn(spriteDef));
96 break;
97 }
98 case Xml::Model::Element::KeyFrame: {
99 auto keyFrameDef = New<KeyFrameDef>();
100 KeyAnimationDef* animationDef = getCurrentKeyAnimation();
101 Slice duration;

Callers

nothing calls this directly

Calls 15

DorothyEnum · 0.85
atofFunction · 0.85
atoiFunction · 0.85
MakeOwnFunction · 0.85
KeyFrameEnum · 0.85
moveFunction · 0.85
FrameAnimationEnum · 0.85
AnimationNameEnum · 0.85
LookNameEnum · 0.85
KeyPointEnum · 0.85
topMethod · 0.80
getLastFrameDefMethod · 0.80

Tested by

no test coverage detected