void RectView::GetCorners (Coord* x, Coord* y) { SF_Rect* rect = (SF_Rect*) GetGraphic(); Coord tx[4], ty[4]; Transformer t; rect->GetOriginal(tx[0], ty[0], tx[2], ty[2]); rect->GetOriginal(tx[3], ty[1], tx[1], ty[3]); rect->TotalTransformation(t); t.TransformList((Coord*) tx, (Coord*) ty, 4, x, y); }
void RectView::Interpret (Command* cmd) { if (cmd->IsA(ALIGNTOGRID_CMD)) { SF_Rect* rect = (SF_Rect*) GetGraphic(); Transformer total; rect->TotalTransformation(total); Coord x0, y0, x1, y1; float tx0, ty0; rect->GetOriginal(x0, y0, x1, y1); total.Transform(float(x0), float(y0), tx0, ty0); ((AlignToGridCmd*) cmd)->Align(this, tx0, ty0); } else { GraphicView::Interpret(cmd); } }