static void drawElementLabels(drawContext *ctx, GEntity *e, std::vector<T*> &elements, int forceColor=0, unsigned int color=0) { unsigned col = forceColor ? color : getColorByEntity(e); glColor4ubv((GLubyte *) & col); int labelStep = CTX::instance()->mesh.labelSampling; if(labelStep <= 0) labelStep = 1; for(unsigned int i = 0; i < elements.size(); i++){ MElement *ele = elements[i]; if(!isElementVisible(ele)) continue; if(i % labelStep == 0) { SPoint3 pc = ele->barycenter(); char str[256]; if(CTX::instance()->mesh.labelType == 4) sprintf(str, "(%g,%g,%g)", pc.x(), pc.y(), pc.z()); else if(CTX::instance()->mesh.labelType == 3) sprintf(str, "%d", ele->getPartition()); else if(CTX::instance()->mesh.labelType == 2){ int np = e->physicals.size(); int p = np ? e->physicals[np - 1] : 0; sprintf(str, "%d", p); } else if(CTX::instance()->mesh.labelType == 1) sprintf(str, "%d", e->tag()); else sprintf(str, "%d", ele->getNum()); glRasterPos3d(pc.x(), pc.y(), pc.z()); ctx->drawString(str); } } }
static void partitionRegions(std::vector<MElement*> &elements, std::vector<std::vector<MElement*> > ®ions) { for (unsigned int i = 0; i < elements.size(); ++i){ MElement *e = elements[i]; int part = e->getPartition(); regions[part-1].push_back(e); } std::vector<std::vector<MElement*> > allRegions; for (unsigned int k = 0; k < regions.size(); ++k){ std::vector<std::vector<MElement*> > conRegions; conRegions.clear(); connectedRegions (regions[k], conRegions); for (unsigned int j = 0; j < conRegions.size(); j++) allRegions.push_back(conRegions[j]); } regions.clear(); regions.resize(allRegions.size()); regions = allRegions; }