diff options
author | David Reveman <davidr@novell.com> | 2006-11-22 15:20:27 -0500 |
---|---|---|
committer | David Reveman <davidr@novell.com> | 2006-11-22 15:20:27 -0500 |
commit | 577461d755a9a6e19dc4c623cc12e764a18b0453 (patch) | |
tree | 0248cc8ad6a7e58a713b1b45ee2cb204ae776701 /plugins/wobbly.c | |
parent | c06ad946569e6fb7c62038052e08bae064ff4ea1 (diff) |
Remove window scale.
Diffstat (limited to 'plugins/wobbly.c')
-rw-r--r-- | plugins/wobbly.c | 169 |
1 files changed, 30 insertions, 139 deletions
diff --git a/plugins/wobbly.c b/plugins/wobbly.c index b1f4a18c..5e50914b 100644 --- a/plugins/wobbly.c +++ b/plugins/wobbly.c @@ -98,9 +98,6 @@ typedef struct _Model { int numSprings; Object *anchorObject; float steps; - Vector scale; - Point scaleOrigin; - Bool transformed; Point topLeft; Point bottomRight; unsigned int edgeMask; @@ -214,8 +211,6 @@ typedef struct _WobblyScreen { DamageWindowRectProc damageWindowRect; AddWindowGeometryProc addWindowGeometry; DrawWindowGeometryProc drawWindowGeometry; - DrawWindowTextureProc drawWindowTexture; - SetWindowScaleProc setWindowScale; WindowResizeNotifyProc windowResizeNotify; WindowMoveNotifyProc windowMoveNotify; @@ -929,10 +924,7 @@ modelSetMiddleAnchor (Model *model, int width, int height) { - float gx, gy, x0, y0; - - x0 = model->scaleOrigin.x; - y0 = model->scaleOrigin.y; + float gx, gy; gx = ((GRID_WIDTH - 1) / 2 * width) / (float) (GRID_WIDTH - 1); gy = ((GRID_HEIGHT - 1) / 2 * height) / (float) (GRID_HEIGHT - 1); @@ -943,8 +935,8 @@ modelSetMiddleAnchor (Model *model, model->anchorObject = &model->objects[GRID_WIDTH * ((GRID_HEIGHT - 1) / 2) + (GRID_WIDTH - 1) / 2]; - model->anchorObject->position.x = x + (gx - x0) * model->scale.x + x0; - model->anchorObject->position.y = y + (gy - y0) * model->scale.y + y0; + model->anchorObject->position.x = x + gx; + model->anchorObject->position.y = y + gy; model->anchorObject->immobile = TRUE; } @@ -957,29 +949,25 @@ modelAddEdgeAnchors (Model *model, int height) { Object *o; - float x0, y0; - - x0 = model->scaleOrigin.x; - y0 = model->scaleOrigin.y; o = &model->objects[0]; - o->position.x = x + (0 - x0) * model->scale.x + x0; - o->position.y = y + (0 - y0) * model->scale.y + y0; + o->position.x = x; + o->position.y = y; o->immobile = TRUE; o = &model->objects[GRID_WIDTH - 1]; - o->position.x = x + (width - x0) * model->scale.x + x0; - o->position.y = y + (0 - y0) * model->scale.y + y0; + o->position.x = x + width; + o->position.y = y; o->immobile = TRUE; o = &model->objects[GRID_WIDTH * (GRID_HEIGHT - 1)]; - o->position.x = x + (0 - x0) * model->scale.x + x0; - o->position.y = y + (height - y0) * model->scale.y + y0; + o->position.x = x; + o->position.y = y + height; o->immobile = TRUE; o = &model->objects[model->numObjects - 1]; - o->position.x = x + (width - x0) * model->scale.x + x0; - o->position.y = y + (height - y0) * model->scale.y + y0; + o->position.x = x + width; + o->position.y = y + height; o->immobile = TRUE; if (!model->anchorObject) @@ -994,32 +982,28 @@ modelRemoveEdgeAnchors (Model *model, int height) { Object *o; - float x0, y0; - - x0 = model->scaleOrigin.x; - y0 = model->scaleOrigin.y; o = &model->objects[0]; - o->position.x = x + (0 - x0) * model->scale.x + x0; - o->position.y = y + (0 - y0) * model->scale.y + y0; + o->position.x = x; + o->position.y = y; if (o != model->anchorObject) o->immobile = FALSE; o = &model->objects[GRID_WIDTH - 1]; - o->position.x = x + (width - x0) * model->scale.x + x0; - o->position.y = y + (0 - y0) * model->scale.y + y0; + o->position.x = x + width; + o->position.y = y; if (o != model->anchorObject) o->immobile = FALSE; o = &model->objects[GRID_WIDTH * (GRID_HEIGHT - 1)]; - o->position.x = x + (0 - x0) * model->scale.x + x0; - o->position.y = y + (height - y0) * model->scale.y + y0; + o->position.x = x; + o->position.y = y + height; if (o != model->anchorObject) o->immobile = FALSE; o = &model->objects[model->numObjects - 1]; - o->position.x = x + (width - x0) * model->scale.x + x0; - o->position.y = y + (height - y0) * model->scale.y + y0; + o->position.x = x + width; + o->position.y = y + height; if (o != model->anchorObject) o->immobile = FALSE; } @@ -1033,12 +1017,8 @@ modelAdjustObjectPosition (Model *model, int height) { Object *o; - float x0, y0; int gridX, gridY, i = 0; - x0 = model->scaleOrigin.x; - y0 = model->scaleOrigin.y; - for (gridY = 0; gridY < GRID_HEIGHT; gridY++) { for (gridX = 0; gridX < GRID_WIDTH; gridX++) @@ -1046,12 +1026,8 @@ modelAdjustObjectPosition (Model *model, o = &model->objects[i]; if (o == object) { - o->position.x = x + - (((gridX * width) / (GRID_WIDTH - 1)) - x0) * - model->scale.x + x0; - o->position.y = y + - (((gridY * height) / (GRID_HEIGHT - 1)) - y0) * - model->scale.y + y0; + o->position.x = x + (gridX * width) / (GRID_WIDTH - 1); + o->position.y = y + (gridY * height) / (GRID_HEIGHT - 1); return; } @@ -1069,10 +1045,7 @@ modelInitObjects (Model *model, int height) { int gridX, gridY, i = 0; - float gw, gh, x0, y0; - - x0 = model->scaleOrigin.x; - y0 = model->scaleOrigin.y; + float gw, gh; gw = GRID_WIDTH - 1; gh = GRID_HEIGHT - 1; @@ -1082,10 +1055,8 @@ modelInitObjects (Model *model, for (gridX = 0; gridX < GRID_WIDTH; gridX++) { objectInit (&model->objects[i], - x + (((gridX * width) / gw) - x0) * - model->scale.x + x0, - y + (((gridY * height) / gh) - y0) * - model->scale.y + y0, + x + (gridX * width) / gw, + y + (gridY * height) / gh, 0, 0); i++; } @@ -1225,11 +1196,11 @@ modelAdjustObjectsForShiver (Model *model, { int gridX, gridY, i = 0; float vX, vY; - float scale; float w, h; + float scale; - w = (float) width * model->scale.x; - h = (float) height * model->scale.y; + w = width; + h = height; for (gridY = 0; gridY < GRID_HEIGHT; gridY++) { @@ -1266,8 +1237,8 @@ modelInitSprings (Model *model, model->numSprings = 0; - hpad = ((float) width * model->scale.x) / (GRID_WIDTH - 1); - vpad = ((float) height * model->scale.y) / (GRID_HEIGHT - 1); + hpad = ((float) width) / (GRID_WIDTH - 1); + vpad = ((float) height) / (GRID_HEIGHT - 1); for (gridY = 0; gridY < GRID_HEIGHT; gridY++) { @@ -1327,14 +1298,6 @@ createModel (int x, model->steps = 0; - model->scale.x = 1.0f; - model->scale.y = 1.0f; - - model->scaleOrigin.x = 0.0f; - model->scaleOrigin.y = 0.0f; - - model->transformed = FALSE; - memset (model->snapCnt, 0, sizeof (model->snapCnt)); model->edgeMask = edgeMask; @@ -1880,7 +1843,7 @@ wobblyPreparePaintScreen (CompScreen *s, ww->wobbly |= WobblyInitial; } } - else if (!ww->model->transformed) + else { ww->model = 0; @@ -2157,35 +2120,6 @@ wobblyDrawWindowGeometry (CompWindow *w) } } -static void -wobblyDrawWindowTexture (CompWindow *w, - CompTexture *texture, - const WindowPaintAttrib *attrib, - unsigned int mask) -{ - WOBBLY_SCREEN (w->screen); - WOBBLY_WINDOW (w); - - if (ww->wobbly) - { - WindowPaintAttrib wAttrib = *attrib; - - /* remove scale that is applied at the add geometry stage */ - wAttrib.xScale = attrib->xScale / ww->model->scale.x; - wAttrib.yScale = attrib->yScale / ww->model->scale.y; - - UNWRAP (ws, w->screen, drawWindowTexture); - (*w->screen->drawWindowTexture) (w, texture, &wAttrib, mask); - WRAP (ws, w->screen, drawWindowTexture, wobblyDrawWindowTexture); - } - else - { - UNWRAP (ws, w->screen, drawWindowTexture); - (*w->screen->drawWindowTexture) (w, texture, attrib, mask); - WRAP (ws, w->screen, drawWindowTexture, wobblyDrawWindowTexture); - } -} - static Bool wobblyPaintWindow (CompWindow *w, const WindowPaintAttrib *attrib, @@ -2539,45 +2473,6 @@ wobblyDamageWindowRect (CompWindow *w, } static void -wobblySetWindowScale (CompWindow *w, - float xScale, - float yScale) -{ - WOBBLY_WINDOW (w); - WOBBLY_SCREEN (w->screen); - - UNWRAP (ws, w->screen, setWindowScale); - (*w->screen->setWindowScale) (w, xScale, yScale); - WRAP (ws, w->screen, setWindowScale, wobblySetWindowScale); - - if (wobblyEnsureModel (w)) - { - if (ww->model->scale.x != xScale || - ww->model->scale.y != yScale) - { - ww->model->scale.x = xScale; - ww->model->scale.y = yScale; - - ww->model->scaleOrigin.x = w->output.left; - ww->model->scaleOrigin.y = w->output.top; - - modelInitObjects (ww->model, - WIN_X (w), WIN_Y (w), - WIN_W (w), WIN_H (w)); - - modelInitSprings (ww->model, - WIN_X (w), WIN_Y (w), - WIN_W (w), WIN_H (w)); - } - - if (ww->model->scale.x != 1.0f || ww->model->scale.y != 1.0f) - ww->model->transformed = 1; - else - ww->model->transformed = 0; - } -} - -static void wobblyWindowResizeNotify (CompWindow *w) { WOBBLY_SCREEN (w->screen); @@ -3017,8 +2912,6 @@ wobblyInitScreen (CompPlugin *p, WRAP (ws, s, damageWindowRect, wobblyDamageWindowRect); WRAP (ws, s, addWindowGeometry, wobblyAddWindowGeometry); WRAP (ws, s, drawWindowGeometry, wobblyDrawWindowGeometry); - WRAP (ws, s, drawWindowTexture, wobblyDrawWindowTexture); - WRAP (ws, s, setWindowScale, wobblySetWindowScale); WRAP (ws, s, windowResizeNotify, wobblyWindowResizeNotify); WRAP (ws, s, windowMoveNotify, wobblyWindowMoveNotify); WRAP (ws, s, windowGrabNotify, wobblyWindowGrabNotify); @@ -3047,8 +2940,6 @@ wobblyFiniScreen (CompPlugin *p, UNWRAP (ws, s, damageWindowRect); UNWRAP (ws, s, addWindowGeometry); UNWRAP (ws, s, drawWindowGeometry); - UNWRAP (ws, s, drawWindowTexture); - UNWRAP (ws, s, setWindowScale); UNWRAP (ws, s, windowResizeNotify); UNWRAP (ws, s, windowMoveNotify); UNWRAP (ws, s, windowGrabNotify); |