| 447 | } |
| 448 | |
| 449 | static std::vector<pag::TextAnimator*> GetTextAnimators(const AEGP_StreamRefH& streamHandle) { |
| 450 | const auto& Suites = GetSuites(); |
| 451 | std::vector<pag::TextAnimator*> animators = {}; |
| 452 | |
| 453 | A_long numStreams = 0; |
| 454 | Suites->DynamicStreamSuite4()->AEGP_GetNumStreamsInGroup(streamHandle, &numStreams); |
| 455 | for (A_long index = 0; index < numStreams; index++) { |
| 456 | AEGP_StreamRefH childStreamHandle = nullptr; |
| 457 | Suites->DynamicStreamSuite4()->AEGP_GetNewStreamRefByIndex(GetPluginID(), streamHandle, index, |
| 458 | &childStreamHandle); |
| 459 | if (childStreamHandle == nullptr) { |
| 460 | continue; |
| 461 | } |
| 462 | if (!IsStreamHidden(childStreamHandle) && IsStreamActive(childStreamHandle)) { |
| 463 | auto type = GetTextAnimatorsType(childStreamHandle); |
| 464 | if (type == TextAnimatorsType::Animator) { |
| 465 | auto animator = GetTextAnimator(childStreamHandle); |
| 466 | if (animator != nullptr) { |
| 467 | animators.push_back(animator); |
| 468 | } |
| 469 | } |
| 470 | } |
| 471 | Suites->StreamSuite4()->AEGP_DisposeStream(childStreamHandle); |
| 472 | } |
| 473 | |
| 474 | return animators; |
| 475 | } |
| 476 | |
| 477 | static pag::TextPathOptions* GetTextPathOptions(const AEGP_StreamRefH& streamHandle) { |
| 478 | auto pathOptions = new pag::TextPathOptions(); |
no test coverage detected