Bool fxZoomInit (CompWindow * w) { ANIM_WINDOW(w); if ((aw->com.curAnimEffect == AnimEffectSidekick && (animGetI (w, ANIM_SCREEN_OPTION_SIDEKICK_ZOOM_FROM_CENTER) == ZoomFromCenterOn || ((aw->com.curWindowEvent == WindowEventMinimize || aw->com.curWindowEvent == WindowEventUnminimize) && animGetI (w, ANIM_SCREEN_OPTION_SIDEKICK_ZOOM_FROM_CENTER) == ZoomFromCenterMin) || ((aw->com.curWindowEvent == WindowEventOpen || aw->com.curWindowEvent == WindowEventClose) && animGetI (w, ANIM_SCREEN_OPTION_SIDEKICK_ZOOM_FROM_CENTER) == ZoomFromCenterCreate))) || (aw->com.curAnimEffect == AnimEffectZoom && (animGetI (w, ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER) == ZoomFromCenterOn || ((aw->com.curWindowEvent == WindowEventMinimize || aw->com.curWindowEvent == WindowEventUnminimize) && animGetI (w, ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER) == ZoomFromCenterMin) || ((aw->com.curWindowEvent == WindowEventOpen || aw->com.curWindowEvent == WindowEventClose) && animGetI (w, ANIM_SCREEN_OPTION_ZOOM_FROM_CENTER) == ZoomFromCenterCreate)))) { aw->com.icon.x = WIN_X(w) + WIN_W(w) / 2 - aw->com.icon.width / 2; aw->com.icon.y = WIN_Y(w) + WIN_H(w) / 2 - aw->com.icon.height / 2; } // allow extra time for spring damping / deceleration if ((aw->com.curWindowEvent == WindowEventUnminimize || aw->com.curWindowEvent == WindowEventOpen) && fxZoomGetSpringiness (w) > 1e-4) { aw->com.animTotalTime /= SPRINGY_ZOOM_PERCEIVED_T; } else if ((aw->com.curAnimEffect == AnimEffectZoom || aw->com.curAnimEffect == AnimEffectSidekick) && (aw->com.curWindowEvent == WindowEventOpen || aw->com.curWindowEvent == WindowEventClose)) { aw->com.animTotalTime /= NONSPRINGY_ZOOM_PERCEIVED_T; } else { aw->com.animTotalTime /= ZOOM_PERCEIVED_T; } aw->com.animRemainingTime = aw->com.animTotalTime; aw->com.usingTransform = TRUE; return defaultAnimInit (w); }
void fxGlideInit(CompScreen *s, CompWindow *w) { ANIM_SCREEN(s); ANIM_WINDOW(w); if (fxGlideZoomToTaskBar(as, aw)) { aw->animTotalTime /= ZOOM_PERCEIVED_T; aw->animRemainingTime = aw->animTotalTime; } if (!fxGlideIsPolygonBased(as, aw)) { defaultAnimInit (s, w); return; // we're done with CompTransform-based glide initialization } // for polygon-based glide effect float finalDistFac; float finalRotAng; float thickness; fxGlideGetParams(as, aw, &finalDistFac, &finalRotAng, &thickness); PolygonSet *pset = aw->polygonSet; pset->includeShadows = (thickness < 1e-5); if (!tessellateIntoRectangles(w, 1, 1, thickness)) return; PolygonObject *p = pset->polygons; int i; for (i = 0; i < pset->nPolygons; i++, p++) { p->rotAxis.x = 1; p->rotAxis.y = 0; p->rotAxis.z = 0; p->finalRelPos.x = 0; p->finalRelPos.y = 0; p->finalRelPos.z = finalDistFac * 0.8 * DEFAULT_Z_CAMERA * s->width; p->finalRotAng = finalRotAng; } pset->allFadeDuration = 1.0f; pset->backAndSidesFadeDur = 0.2f; pset->doLighting = TRUE; pset->correctPerspective = CorrectPerspectivePolygon; }
void fxDreamAnimInit(CompScreen *s, CompWindow *w) { ANIM_SCREEN(s); ANIM_WINDOW(w); if (animZoomToIcon(as, aw)) aw->animTotalTime /= ZOOM_PERCEIVED_T; else aw->animTotalTime /= DREAM_PERCEIVED_T; aw->animRemainingTime = aw->animTotalTime; defaultAnimInit(s, w); }
Bool fxZoomInit (CompWindow *w) { ANIM_WINDOW (w); const BananaValue * option_sidekick_zoom_from_center = bananaGetOption (bananaIndex, "sidekick_zoom_from_center", w->screen->screenNum); if ((aw->com.curAnimEffect == AnimEffectSidekick && (option_sidekick_zoom_from_center->i == 3 || ((aw->com.curWindowEvent == WindowEventMinimize || aw->com.curWindowEvent == WindowEventUnminimize) && option_sidekick_zoom_from_center->i == 1) || ((aw->com.curWindowEvent == WindowEventOpen || aw->com.curWindowEvent == WindowEventClose) && option_sidekick_zoom_from_center->i == 2))) || (aw->com.curAnimEffect == AnimEffectZoom && (option_sidekick_zoom_from_center->i == 3 || ((aw->com.curWindowEvent == WindowEventMinimize || aw->com.curWindowEvent == WindowEventUnminimize) && option_sidekick_zoom_from_center->i == 1) || ((aw->com.curWindowEvent == WindowEventOpen || aw->com.curWindowEvent == WindowEventClose) && option_sidekick_zoom_from_center->i == 2)))) { aw->com.icon.x = WIN_X (w) + WIN_W (w) / 2 - aw->com.icon.width / 2; aw->com.icon.y = WIN_Y (w) + WIN_H (w) / 2 - aw->com.icon.height / 2; } // allow extra time for spring damping / deceleration if ((aw->com.curWindowEvent == WindowEventUnminimize || aw->com.curWindowEvent == WindowEventOpen) && fxZoomGetSpringiness (w) > 1e-4) { aw->com.animTotalTime /= SPRINGY_ZOOM_PERCEIVED_T; } else if ((aw->com.curAnimEffect == AnimEffectZoom || aw->com.curAnimEffect == AnimEffectSidekick) && (aw->com.curWindowEvent == WindowEventOpen || aw->com.curWindowEvent == WindowEventClose)) { aw->com.animTotalTime /= NONSPRINGY_ZOOM_PERCEIVED_T; } else { aw->com.animTotalTime /= ZOOM_PERCEIVED_T; } aw->com.animRemainingTime = aw->com.animTotalTime; aw->com.usingTransform = TRUE; return defaultAnimInit (w); }