Home | History | Annotate | Download | only in hwui

Lines Matching refs:frame

40     // When this frame is pop'd, this rect is mapped through the above transform
41 // and applied to the previous (aka parent) frame
103 LOG_ALWAYS_FATAL_IF(mHead->prev == mHead, "Cannot pop the root frame!");
128 void DamageAccumulator::applyMatrix4Transform(DirtyStack* frame) {
129 mapRect(frame->matrix4, frame->pendingDirty, &mHead->pendingDirty);
143 static DirtyStack* findParentRenderNode(DirtyStack* frame) {
144 while (frame->prev != frame) {
145 frame = frame->prev;
146 if (frame->type == TransformRenderNode) {
147 return frame;
153 static DirtyStack* findProjectionReceiver(DirtyStack* frame) {
154 if (frame) {
155 while (frame->prev != frame) {
156 frame = frame->prev;
157 if (frame->type == TransformRenderNode
158 && frame->renderNode->hasProjectionReceiver()) {
159 return frame;
166 static void applyTransforms(DirtyStack* frame, DirtyStack* end) {
167 SkRect* rect = &frame->pendingDirty;
168 while (frame != end) {
169 if (frame->type == TransformRenderNode) {
170 mapRect(frame->renderNode->properties(), *rect, rect);
172 mapRect(frame->matrix4, *rect, rect);
174 frame = frame->prev;
178 void DamageAccumulator::applyRenderNodeTransform(DirtyStack* frame) {
179 if (frame->pendingDirty.isEmpty()) {
183 const RenderProperties& props = frame->renderNode->properties();
189 if (props.getClipDamageToBounds() && !frame->pendingDirty.isEmpty()) {
190 if (!frame->pendingDirty.intersect(0, 0, props.getWidth(), props.getHeight())) {
191 frame->pendingDirty.setEmpty();
196 mapRect(props, frame->pendingDirty, &mHead->pendingDirty);
199 if (props.getProjectBackwards() && !frame->pendingDirty.isEmpty()) {
201 DirtyStack* parentNode = findParentRenderNode(frame);
205 applyTransforms(frame, projectionReceiver);
206 projectionReceiver->pendingDirty.join(frame->pendingDirty);
209 frame->pendingDirty.setEmpty();