| 49 | static pag::ShapeElement* GetShape(const AEGP_StreamRefH& streamHandle, int& gradientIndex); |
| 50 | |
| 51 | static pag::ShapeElement* GetShapeGroup(const AEGP_StreamRefH& streamHandle) { |
| 52 | const auto& Suites = GetSuites(); |
| 53 | const auto& PluginID = GetPluginID(); |
| 54 | auto element = new pag::ShapeGroupElement(); |
| 55 | |
| 56 | element->blendMode = |
| 57 | GetValue(streamHandle, "ADBE Vector Blend Mode", AEStreamParser::ShapeBlendModeParser); |
| 58 | |
| 59 | AEGP_StreamRefH transformStreamHandle = nullptr; |
| 60 | Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByMatchname( |
| 61 | PluginID, streamHandle, "ADBE Vector Transform Group", &transformStreamHandle); |
| 62 | auto transform = new pag::ShapeTransform(); |
| 63 | transform->anchorPoint = |
| 64 | GetProperty(transformStreamHandle, "ADBE Vector Anchor", AEStreamParser::PointParser); |
| 65 | transform->position = |
| 66 | GetProperty(transformStreamHandle, "ADBE Vector Position", AEStreamParser::PointParser); |
| 67 | transform->scale = |
| 68 | GetProperty(transformStreamHandle, "ADBE Vector Scale", AEStreamParser::ScaleParser); |
| 69 | transform->skew = |
| 70 | GetProperty(transformStreamHandle, "ADBE Vector Skew", AEStreamParser::FloatParser); |
| 71 | transform->skewAxis = |
| 72 | GetProperty(transformStreamHandle, "ADBE Vector Skew Axis", AEStreamParser::FloatParser); |
| 73 | transform->rotation = |
| 74 | GetProperty(transformStreamHandle, "ADBE Vector Rotation", AEStreamParser::FloatParser); |
| 75 | transform->opacity = GetProperty(transformStreamHandle, "ADBE Vector Group Opacity", |
| 76 | AEStreamParser::Opacity0_100Parser); |
| 77 | element->transform = transform; |
| 78 | Suites->StreamSuite4()->AEGP_DisposeStream(transformStreamHandle); |
| 79 | |
| 80 | int gradientIndex = 0; |
| 81 | AEGP_StreamRefH contents = nullptr; |
| 82 | Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByMatchname(PluginID, streamHandle, |
| 83 | "ADBE Vectors Group", &contents); |
| 84 | A_long numElements = 0; |
| 85 | Suites->DynamicStreamSuite4()->AEGP_GetNumStreamsInGroup(contents, &numElements); |
| 86 | for (A_long index = 0; index < numElements; index++) { |
| 87 | AEGP_StreamRefH childStreamHandle = nullptr; |
| 88 | Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByIndex(PluginID, contents, index, |
| 89 | &childStreamHandle); |
| 90 | if (childStreamHandle == nullptr) { |
| 91 | continue; |
| 92 | } |
| 93 | auto shape = GetShape(childStreamHandle, gradientIndex); |
| 94 | if (shape != nullptr) { |
| 95 | element->elements.push_back(shape); |
| 96 | } |
| 97 | Suites->StreamSuite4()->AEGP_DisposeStream(childStreamHandle); |
| 98 | } |
| 99 | Suites->StreamSuite4()->AEGP_DisposeStream(contents); |
| 100 | return element; |
| 101 | } |
| 102 | |
| 103 | static pag::ShapeElement* GetRectangle(const AEGP_StreamRefH& streamHandle) { |
| 104 | auto element = new pag::RectangleElement(); |
no test coverage detected