bool selected(k3d::face* face) { if (face->visible_selection) return true; k3d::split_edge* edge = face->first_edge; do { if (edge->visible_selection || edge->vertex->visible_selection || (edge->companion && (edge->companion->visible_selection || edge->companion->vertex->visible_selection))) return true; } while (edge != face->first_edge); return false; }