MCPcopy Create free account
hub / github.com/Snapchat/Valdi / setViewFrame

Method setViewFrame

valdi/src/valdi/snap_drawing/SnapDrawingViewTransaction.cpp:111–148  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

109}
110
111void SnapDrawingViewTransaction::setViewFrame(const Ref<View>& view,
112 const Frame& newFrame,
113 bool isRightToLeft,
114 const Ref<Animator>& animator) {
115 auto layer = toLayer(view);
116 if (layer == nullptr) {
117 return;
118 }
119 auto frame = makeViewFrame(newFrame, layer->getResources()->getDisplayScale());
120
121 auto typedAnimator =
122 Valdi::castOrNull<ValdiAnimator>(animator != nullptr ? animator->getNativeAnimator() : nullptr);
123 if (typedAnimator != nullptr) {
124 auto fromFrame = layer->getFrame();
125
126 Ref<IAnimation> animation;
127 if (typedAnimator->isSpringAnimation()) {
128 animation = Valdi::makeShared<SpringAnimation>(typedAnimator->getStiffness(),
129 typedAnimator->getDamping(),
130 MIN_VISIBLE_CHANGE_PIXEL,
131 [frame, fromFrame](Layer& view, double ratio) {
132 view.setFrame(interpolateValue(fromFrame, frame, ratio));
133 });
134 } else {
135 animation = Valdi::makeShared<Animation>(typedAnimator->getDuration(),
136 typedAnimator->getInterpolationFunction(),
137 [frame, fromFrame](Layer& view, double ratio) {
138 view.setFrame(interpolateValue(fromFrame, frame, ratio));
139 });
140 }
141
142 typedAnimator->appendAnimation(layer, animation, STRING_LITERAL("frame"));
143 } else {
144 layer->setFrame(frame);
145 }
146
147 layer->setRightToLeft(isRightToLeft);
148}
149
150void SnapDrawingViewTransaction::setViewScrollSpecs(const Ref<View>& view,
151 const Valdi::Point& directionDependentContentOffset,

Callers 1

onLayoutMethod · 0.45

Calls 13

toLayerFunction · 0.85
makeViewFrameFunction · 0.85
interpolateValueFunction · 0.85
getFrameMethod · 0.80
isSpringAnimationMethod · 0.80
getStiffnessMethod · 0.80
appendAnimationMethod · 0.80
setRightToLeftMethod · 0.80
getDisplayScaleMethod · 0.45
getDampingMethod · 0.45
setFrameMethod · 0.45

Tested by

no test coverage detected