void Viewer::UseTool (Tool* t, Event& e) { Transformer* relative = ComputeRel(this, _graphic->GetTransformer()); Manipulator* m = t->CreateManipulator(this, e, relative); if (m != nil) { Manipulate(m, e); Command* cmd = t->InterpretManipulator(m); if (cmd != nil) { cmd->Execute(); if (cmd->Reversible()) { cmd->Log(); } else { delete cmd; } } delete m; } Unref(relative); }