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

Function ExportLayers

exporter/src/export/ExportLayer.cpp:382–500  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

380}
381
382std::vector<pag::Layer*> ExportLayers(std::shared_ptr<PAGExportSession> session,
383 const AEGP_CompH& compHandle) {
384 bool hasSoloLayer = false;
385 std::vector<bool> soloFlags = {};
386 std::vector<pag::Layer*> layers = {};
387
388 A_long numLayers = 0;
389 if (GetSuites()->LayerSuite6()->AEGP_GetCompNumLayers(compHandle, &numLayers) != A_Err_NONE) {
390 session->pushWarning(AlertInfoType::ExportAEError);
391 return layers;
392 }
393
394 for (int index = 0; index < numLayers; index++) {
395 AEGP_LayerH layerHandle = nullptr;
396 if (GetSuites()->LayerSuite6()->AEGP_GetCompLayerByIndex(compHandle, index, &layerHandle) !=
397 A_Err_NONE) {
398 session->pushWarning(AlertInfoType::ExportAEError);
399 continue;
400 }
401
402 if (layerHandle == nullptr) {
403 continue;
404 }
405
406 uint32_t layerID = GetLayerID(layerHandle);
407 session->layerHandleMap[layerID] = layerHandle;
408 ExportLayerType layerType = GetLayerType(layerHandle);
409 if (layerType == ExportLayerType::Audio && session->audioMarkers != nullptr &&
410 session->configParam.isTagCodeSupport(pag::TagCode::MarkerList)) {
411 auto markers = ExportMarkers(session, layerHandle);
412 session->audioMarkers->insert(session->audioMarkers->end(), markers.begin(), markers.end());
413 }
414 ScopedAssign<int> layerIndex(session->layerIndex, index);
415 auto layer = ExportLayer(layerHandle, session);
416 if (layer == nullptr) {
417 continue;
418 }
419 if (layer->trackMatteLayer != nullptr) {
420 soloFlags.push_back(false);
421 layers.push_back(layer->trackMatteLayer);
422 }
423 layers.push_back(layer);
424
425 AEGP_LayerFlags layerFlags = GetLayerFlags(layerHandle);
426 if (layerType == ExportLayerType::Audio || layerType == ExportLayerType::Unknown) {
427 layer->isActive = false;
428 } else {
429 layer->isActive = layerFlags & AEGP_LayerFlag_VIDEO_ACTIVE;
430 }
431 bool soloFlag = layer->isActive && (layerFlags & AEGP_LayerFlag_SOLO) &&
432 (layer->type() != pag::LayerType::Camera);
433 if (soloFlag) {
434 hasSoloLayer = true;
435 }
436 soloFlags.push_back(soloFlag);
437 }
438 if (session->stopExport) {
439 return layers;

Callers 1

ExportVectorCompositionFunction · 0.85

Calls 15

GetSuitesFunction · 0.85
GetLayerIDFunction · 0.85
GetLayerTypeFunction · 0.85
ExportMarkersFunction · 0.85
ExportLayerFunction · 0.85
GetLayerFlagsFunction · 0.85
GetCompItemHFunction · 0.85
AEDurationToFrameFunction · 0.85
IsLayerReferencedFunction · 0.85
isTagCodeSupportMethod · 0.80
insertMethod · 0.80
push_backMethod · 0.80

Tested by

no test coverage detected