| 93 | } |
| 94 | |
| 95 | static pag::Point GetImageMaxScale(pag::Composition* composition, pag::ID imageID) { |
| 96 | if (composition->type() != pag::CompositionType::Vector) { |
| 97 | return pag::Point::Zero(); |
| 98 | } |
| 99 | |
| 100 | pag::Point maxFactor = pag::Point::Zero(); |
| 101 | for (auto layer : static_cast<pag::VectorComposition*>(composition)->layers) { |
| 102 | pag::Point factor = pag::Point::Make(1.0f, 1.0f); |
| 103 | |
| 104 | if (layer->type() != pag::LayerType::Image) { |
| 105 | continue; |
| 106 | } |
| 107 | if (static_cast<pag::ImageLayer*>(layer)->imageBytes->id != imageID) { |
| 108 | continue; |
| 109 | } |
| 110 | if (layer->type() == pag::LayerType::PreCompose) { |
| 111 | factor = GetImageMaxScale(static_cast<pag::PreComposeLayer*>(layer)->composition, imageID); |
| 112 | } |
| 113 | |
| 114 | auto layerFactor = layer->getMaxScaleFactor(); |
| 115 | factor.x *= layerFactor.x; |
| 116 | factor.y *= layerFactor.y; |
| 117 | maxFactor.x = std::max(maxFactor.x, factor.x); |
| 118 | maxFactor.y = std::max(maxFactor.y, factor.y); |
| 119 | } |
| 120 | |
| 121 | return maxFactor; |
| 122 | } |
| 123 | |
| 124 | static pag::Point GetBitmapCompositionMaxScale(pag::Composition* composition, |
| 125 | pag::ID compositionID) { |
no test coverage detected