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);
}
Example #2
0
File: glide.c Project: Elive/ecomp
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;
}
Example #3
0
File: dream.c Project: Elive/ecomp
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);
}
Example #4
0
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);
}