| 42 | } |
| 43 | |
| 44 | void 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; |
nothing calls this directly
no test coverage detected