RubberGroup::RubberGroup (Painter* p, Canvas* c) : (p, c, 0, 0) { list = cur = new RubberList; } void RubberGroup::Draw () { for (RubberList* r = list->Next(); r != list->End(); r = r->Next()) { r->rub->Draw(); } } void RubberGroup::Erase () { for (RubberList* r = list->Next(); r != list->End(); r = r->Next()) { r->rub->Erase(); } } void RubberGroup::Track (Coord x, Coord y) { for (RubberList* r = list->Next(); r != list->End(); r = r->Next()) { r->rub->Track(x, y); } } RubberGroup::~RubberGroup () { delete list; } void RubberGroup::SetPainter (Painter* p) { Rubberband::SetPainter(p); for (RubberList* r = list->Next(); r != list->End(); r = r->Next()) { r->rub->SetPainter(p); } }
void RubberGroup::SetCanvas(Canvas* c) { Rubberband::SetCanvas(c); for (RubberList* r = rlist->Next(); r != rlist->End(); r = r->Next()) { r->rub->SetCanvas(c); } }
void RubberGroup::SetPainter(Painter* p) { Rubberband::SetPainter(p); for (RubberList* r = rlist->Next(); r != rlist->End(); r = r->Next()) { r->rub->SetPainter(p); } }
RubberList* RubberList::Find(Rubberband* target) { RubberList* r; for (r = Next(); r != this; r = r->Next()) { if (r->rub == target) { return r; } } return nil; }
void RubberGroup::Track(IntCoord x, IntCoord y) { for (RubberList* r = rlist->Next(); r != rlist->End(); r = r->Next()) { r->rub->Track(x, y); } }
void RubberGroup::Erase() { for (RubberList* r = rlist->Next(); r != rlist->End(); r = r->Next()) { r->rub->Erase(); } }