float fxGlideAnimProgress(AnimWindow *aw) { float forwardProgress = defaultAnimProgress(aw); return decelerateProgress(forwardProgress); }
Bool fxDreamModelStep(CompScreen *s, CompWindow *w, float time) { if (!defaultAnimStep(s, w, time)) return FALSE; ANIM_SCREEN(s); ANIM_WINDOW(w); Model *model = aw->model; float forwardProgress; if ((aw->curWindowEvent == WindowEventMinimize || aw->curWindowEvent == WindowEventUnminimize) && animGetB(as, aw, ANIM_SCREEN_OPTION_DREAM_Z2TOM)) { float dummy; fxZoomAnimProgress(as, aw, &forwardProgress, &dummy, TRUE); } else forwardProgress = defaultAnimProgress(aw); int i; for (i = 0; i < model->numObjects; i++) fxDreamModelStepObject(w, model, &model->objects[i], forwardProgress); return TRUE; }
void fxFoldUpdateWindowAttrib(AnimScreen *as, CompWindow *w, WindowPaintAttrib *wAttrib) { ANIM_WINDOW(w); if (aw->curWindowEvent == WindowEventOpen || aw->curWindowEvent == WindowEventClose || ((aw->curWindowEvent == WindowEventMinimize || aw->curWindowEvent == WindowEventUnminimize) && ((aw->curAnimEffect == AnimEffectCurvedFold && !animGetB(as, aw, ANIM_SCREEN_OPTION_CURVED_FOLD_Z2TOM)) || (aw->curAnimEffect == AnimEffectHorizontalFolds && !animGetB(as, aw, ANIM_SCREEN_OPTION_HORIZONTAL_FOLDS_Z2TOM))))) { float forwardProgress = defaultAnimProgress(aw); wAttrib->opacity = (GLushort)(aw->storedOpacity * (1 - forwardProgress)); } else if ((aw->curWindowEvent == WindowEventMinimize || aw->curWindowEvent == WindowEventUnminimize) && ((aw->curAnimEffect == AnimEffectCurvedFold && animGetB(as, aw, ANIM_SCREEN_OPTION_CURVED_FOLD_Z2TOM)) || (aw->curAnimEffect == AnimEffectHorizontalFolds && animGetB(as, aw, ANIM_SCREEN_OPTION_HORIZONTAL_FOLDS_Z2TOM)))) { fxZoomUpdateWindowAttrib(as, w, wAttrib); } // if shade/unshade don't do anything }
void fxFadeUpdateWindowAttrib(CompWindow * w, WindowPaintAttrib * wAttrib) { ANIM_WINDOW(w); float forwardProgress = defaultAnimProgress (w); wAttrib->opacity = (GLushort) (aw->com.storedOpacity * (1 - forwardProgress)); }
void fxDreamUpdateWindowAttrib(AnimScreen *as, CompWindow *w, WindowPaintAttrib *wAttrib) { ANIM_WINDOW(w); if ((aw->curWindowEvent == WindowEventMinimize || aw->curWindowEvent == WindowEventUnminimize) && animGetB(as, aw, ANIM_SCREEN_OPTION_DREAM_Z2TOM)) { fxZoomUpdateWindowAttrib(as, w, wAttrib); return; } float forwardProgress = defaultAnimProgress(aw); wAttrib->opacity = (GLushort)(aw->storedOpacity * (1 - forwardProgress)); }
void fxDodgeAnimStep (CompWindow *w, float time) { XRectangle dodgeBox; defaultAnimStep (w, time); ANIM_WINDOW(w); aw->com.transformProgress = 0; float forwardProgress = defaultAnimProgress (w); if (forwardProgress > aw->com.transformStartProgress) { aw->com.transformProgress = (forwardProgress - aw->com.transformStartProgress) / (1 - aw->com.transformStartProgress); } if (!aw->isDodgeSubject && aw->com.transformProgress <= 0.5f && fxDodgeFindDodgeBox (w, &dodgeBox)) { // Update dodge amount if subject window has moved during dodge float newDodgeAmount = DODGE_AMOUNT_BOX(dodgeBox, w, aw->dodgeDirection); // Only update if amount got larger if (((newDodgeAmount > 0 && aw->dodgeMaxAmount > 0) || (newDodgeAmount < 0 && aw->dodgeMaxAmount < 0)) && abs(newDodgeAmount) > abs(aw->dodgeMaxAmount)) { aw->dodgeMaxAmount = newDodgeAmount; } } matrixGetIdentity (&aw->com.transform); applyDodgeTransform (w, &aw->com.transform); }
Bool fxCurvedFoldModelStep(CompScreen *s, CompWindow *w, float time) { if (!defaultAnimStep(s, w, time)) return FALSE; ANIM_SCREEN(s); ANIM_WINDOW(w); Model *model = aw->model; float forwardProgress; if ((aw->curWindowEvent == WindowEventMinimize || aw->curWindowEvent == WindowEventUnminimize) && animGetB(as, aw, ANIM_SCREEN_OPTION_CURVED_FOLD_Z2TOM)) { float dummy; fxZoomAnimProgress(as, aw, &forwardProgress, &dummy, TRUE); } else forwardProgress = defaultAnimProgress(aw); float curveMaxAmp = animGetF(as, aw, ANIM_SCREEN_OPTION_CURVED_FOLD_AMP) * WIN_W(w) * pow(WIN_H(w) / (s->height * 1.2f), 0.7); int i; for (i = 0; i < model->numObjects; i++) fxCurvedFoldModelStepObject (w, model, &model->objects[i], forwardProgress, curveMaxAmp); return TRUE; }