MCPcopy Create free account
hub / github.com/Tencent/libpag / GetShapeGroup

Function GetShapeGroup

exporter/src/export/data/Shape.cpp:51–101  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

49static pag::ShapeElement* GetShape(const AEGP_StreamRefH& streamHandle, int& gradientIndex);
50
51static 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
103static pag::ShapeElement* GetRectangle(const AEGP_StreamRefH& streamHandle) {
104 auto element = new pag::RectangleElement();

Callers 1

GetShapeFunction · 0.85

Calls 6

GetSuitesFunction · 0.85
GetPluginIDFunction · 0.85
GetValueFunction · 0.85
GetPropertyFunction · 0.85
GetShapeFunction · 0.85
push_backMethod · 0.80

Tested by

no test coverage detected