Esempio n. 1
0
File: glide.c Progetto: Elive/ecomp
float
fxGlideAnimProgress(AnimWindow *aw)
{
   float forwardProgress = defaultAnimProgress(aw);

   return decelerateProgress(forwardProgress);
}
Esempio n. 2
0
File: dream.c Progetto: Elive/ecomp
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;
}
Esempio n. 3
0
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));
}
Esempio n. 5
0
File: dream.c Progetto: Elive/ecomp
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);
}
Esempio n. 7
0
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;
}