animWidth = (1 - animationProgress) * WIN_REAL_WIDTH(PREV_TOP_TAB(gw->group)) + animationProgress * WIN_REAL_WIDTH(TOP_TAB(gw->group)); animHeight = (1 - animationProgress) * WIN_REAL_HEIGHT(PREV_TOP_TAB(gw->group)) + animationProgress * WIN_REAL_HEIGHT(TOP_TAB(gw->group)); animScaleX = animWidth / WIN_REAL_WIDTH(w); animScaleY = animHeight / WIN_REAL_HEIGHT(w); matrixScale(&wTransform, animScaleX, animScaleY, 1.0f / w->screen->width); matrixTranslate(&wTransform, animScaleX * (WIN_REAL_X(w) + WIN_REAL_WIDTH(w) / 2.0f), 0.0f, 0.0f); matrixRotate(&wTransform, rotateAngle, 0.0f, 1.0f, 0.0f); matrixTranslate(&wTransform, -animScaleX * (WIN_REAL_X(w) + WIN_REAL_WIDTH(w) / 2.0f), 0.0f, 0.0f);