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

Function InitEffect

exporter/src/export/data/Effect.cpp:279–318  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

277}
278
279static void InitEffect(const AEGP_StreamRefH& streamHandle, pag::Effect* effect) {
280 if (effect == nullptr) {
281 return;
282 }
283
284 const auto Suites = GetSuites();
285 const auto PluginID = GetPluginID();
286 static char matchName[AEGP_MAX_STREAM_MATCH_NAME_SIZE] = {0};
287
288 A_long numParams = 0;
289 Suites->DynamicStreamSuite4()->AEGP_GetNumStreamsInGroup(streamHandle, &numParams);
290 AEGP_StreamRefH builtInParams = nullptr;
291 Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByIndex(PluginID, streamHandle, numParams - 1,
292 &builtInParams);
293 Suites->DynamicStreamSuite4()->AEGP_GetMatchName(builtInParams, matchName);
294 if (strcmp(matchName, "ADBE Effect Built In Params") != 0) {
295 Suites->StreamSuite4()->AEGP_DisposeStream(builtInParams);
296 return;
297 }
298 AEGP_StreamRefH masks = nullptr;
299 Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByIndex(PluginID, builtInParams, 0, &masks);
300 A_long numMasks = 0;
301 Suites->DynamicStreamSuite4()->AEGP_GetNumStreamsInGroup(masks, &numMasks);
302 for (int i = 0; i < numMasks; i++) {
303 AEGP_StreamRefH maskReference = nullptr;
304 Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByIndex(PluginID, masks, i, &maskReference);
305 auto maskID = GetValue(maskReference, AEStreamParser::MaskIDParser);
306 auto mask = new pag::MaskData();
307 mask->id = maskID;
308 Suites->StreamSuite4()->AEGP_DisposeStream(maskReference);
309 effect->maskReferences.push_back(mask);
310 }
311 Suites->StreamSuite4()->AEGP_DisposeStream(masks);
312 effect->effectOpacity = GetProperty(builtInParams, 1, AEStreamParser::Opacity0_100Parser);
313 Suites->StreamSuite4()->AEGP_DisposeStream(builtInParams);
314 if (!effect->effectOpacity->animatable() && effect->effectOpacity->value == pag::Opaque) {
315 delete effect->effectOpacity;
316 effect->effectOpacity = nullptr;
317 }
318}
319
320static pag::Effect* GetEffectByType(const AEGP_StreamRefH& streamHandle, AEEffectType type) {
321 pag::Effect* effect = nullptr;

Callers 1

GetEffectByTypeFunction · 0.85

Calls 6

GetSuitesFunction · 0.85
GetPluginIDFunction · 0.85
GetValueFunction · 0.85
GetPropertyFunction · 0.85
push_backMethod · 0.80
animatableMethod · 0.45

Tested by

no test coverage detected