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 RectComp::Write (ostream& out) { GraphicComp::Write(out); SF_Rect* rect = GetRect(); Coord x0, y0, x1, y1; rect->GetOriginal(x0, y0, x1, y1); out << x0 << " " << y0 << " " << x1 << " " << y1 << " "; WriteBgFilled(rect->BgFilled(), out); WriteColor(rect->GetFgColor(), out); WriteColor(rect->GetBgColor(), out); WriteBrush(rect->GetBrush(), out); WritePattern(rect->GetPattern(), out); WriteTransformer(rect->GetTransformer(), out); }
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); } }