int CBUtils::getuiClearRegion(hwc_display_contents_1_t* list, hwc_rect_t &clearWormholeRect, LayerProp *layerProp) { size_t last = list->numHwLayers - 1; hwc_rect_t fbFrame = list->hwLayers[last].displayFrame; Rect fbFrameRect(fbFrame.left,fbFrame.top,fbFrame.right,fbFrame.bottom); Region wormholeRegion(fbFrameRect); if(cb_swap_rect::getInstance().checkSwapRectFeature_on() == true){ wormholeRegion.set(0,0); for(size_t i = 0 ; i < last; i++) { if(((list->hwLayers[i].blending == HWC_BLENDING_NONE) && (list->hwLayers[i].planeAlpha == 0xFF)) || !(layerProp[i].mFlags & HWC_COPYBIT) || (list->hwLayers[i].flags & HWC_SKIP_HWC_COMPOSITION)) continue ; hwc_rect_t displayFrame = list->hwLayers[i].displayFrame; Rect tmpRect(displayFrame.left,displayFrame.top, displayFrame.right,displayFrame.bottom); wormholeRegion.set(tmpRect); } }else{ for (size_t i = 0 ; i < last; i++) { // need to take care only in per pixel blending. // Restrict calculation only for copybit layers. if((list->hwLayers[i].blending != HWC_BLENDING_NONE) || (list->hwLayers[i].planeAlpha != 0xFF) || !(layerProp[i].mFlags & HWC_COPYBIT)) continue ; hwc_rect_t displayFrame = list->hwLayers[i].displayFrame; Rect tmpRect(displayFrame.left,displayFrame.top,displayFrame.right, displayFrame.bottom); Region tmpRegion(tmpRect); wormholeRegion.subtractSelf(wormholeRegion.intersect(tmpRegion)); } } if(wormholeRegion.isEmpty()){ return 0; } //TO DO :- 1. remove union and call clear for each rect. Region::const_iterator it = wormholeRegion.begin(); Region::const_iterator const end = wormholeRegion.end(); while (it != end) { const Rect& r = *it++; hwc_rect_t tmpWormRect = {r.left,r.top,r.right,r.bottom}; int dst_w = clearWormholeRect.right - clearWormholeRect.left; int dst_h = clearWormholeRect.bottom - clearWormholeRect.top; if (!(dst_w || dst_h)) clearWormholeRect = tmpWormRect; else getUnion(clearWormholeRect, tmpWormRect, clearWormholeRect); } return 1; }
PvObject PvObject::selectUnionField(const std::string& key, const std::string& fieldName) const { epics::pvData::PVUnionPtr pvUnionPtr = PyPvDataUtility::getUnionField(key, pvStructurePtr); try { epics::pvData::PVFieldPtr pvField = pvUnionPtr->select(fieldName); } catch (std::runtime_error e) { throw FieldNotFound("Unknown field name: %s", fieldName.c_str()); } return getUnion(key); }
void main() { data * start1, *start2, *startUnion; puts("\n Enter data in first link list."); start1 = create(); puts("\n Enter data in second link list."); start2 = create(); puts("\n First List:"); displayList(start1); puts("\n Second List:"); displayList(start2); startUnion = getUnion(start1, start2); puts("\n Union:"); displayList(startUnion); getch(); }
void evaluar() { int nota = 0; cout<<"Ejercicio agregarASet:\t\t\t"; set<int>s; agregarASet(&s,2); agregarASet(&s,5); set<int>s2; if( (*s.find(2)) == 2 && (*s.find(5)) == 5) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } set<int>sa; set<int>sb; sa.insert(2); sa.insert(4); sa.insert(5); sa.insert(6); sa.insert(8); sb.insert(1); sb.insert(2); sb.insert(3); sb.insert(4); sb.insert(5); sb.insert(6); cout<<"Ejercicio existe:\t\t\t"; if(existe(sa,2) && !existe(sa,1) && existe(sb,1) && existe(sa,6) && !existe(sb,7)) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio tamano:\t\t\t"; if(tamano(sa)==5 && tamano(sb)==6) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio getInserseccion:\t\t"; set<int> sc = getInserseccion(sa,sb); if(sc.find(1)==sc.end() && sc.find(2)!=sc.end() && sc.find(3)==sc.end() && sc.find(4)!=sc.end() && sc.find(5)!=sc.end() && sc.find(6)!=sc.end() && sc.find(7)==sc.end() && sc.find(8)==sc.end() && sc.find(9)==sc.end() && sc.find(10)==sc.end() && sc.find(0)==sc.end()) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio getUnion:\t\t\t"; set<int> sd = getUnion(sa,sb); if(sd.find(1)!=sd.end() && sd.find(2)!=sd.end() && sd.find(3)!=sd.end() && sd.find(4)!=sd.end() && sd.find(5)!=sd.end() && sd.find(6)!=sd.end() && sd.find(7)==sd.end() && sd.find(8)!=sd.end() && sd.find(9)==sd.end() && sd.find(10)==sd.end() && sd.find(0)==sd.end() ) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio esSubConjunto:\t\t"; set<int> se; set<int> sf; se.insert(2); se.insert(4); se.insert(8); if(esSubConjunto(sa,se)) { nota+=2; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } // cout<<endl<<"Nota: "<<nota<<"/7"<<endl; }
PvObject PvObject::getUnion() const { std::string key = PyPvDataUtility::getValueOrSingleFieldName(pvStructurePtr); return getUnion(key); }
void evaluar() { int nota = 0; cout<<"Ejercicio asignarValor:\t\t\t"; map<string,int>m; asignarValor(&m,"A",1); asignarValor(&m,"B",2); asignarValor(&m,"C",3); //set<int>s2; if( m["A"]==1 && m["B"]==2 && m["C"]==3) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } set<int>sa; set<int>sb; sa.insert(2); sa.insert(4); sa.insert(5); sa.insert(6); sa.insert(8); sb.insert(1); sb.insert(2); sb.insert(3); sb.insert(4); sb.insert(5); sb.insert(6); cout<<"Ejercicio obtenerValor:\t\t\t"; map<int,char> m2; m2[10] = 'x'; m2[20] = 'y'; m2[30] = 'z'; map<int,char> m3; m3[10] = 'a'; if(obtenerValor(m2,10) == 'x' && obtenerValor(m2,20) == 'y' && obtenerValor(m2,30) == 'z' && obtenerValor(m3,10) == 'a') { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio obtenerSemana:\t\t"; if(obtenerSemana()["lunes"]==1 && obtenerSemana()["martes"]==2 && obtenerSemana()["miercoles"]==3 && obtenerSemana()["jueves"]==4 && obtenerSemana()["viernes"]==5 && obtenerSemana()["sabado"]==6 && obtenerSemana()["domingo"]==7) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio getInserseccion:\t\t"; set<int> sc = getInserseccion(sa,sb); if(sc.find(1)==sc.end() && sc.find(2)!=sc.end() && sc.find(3)==sc.end() && sc.find(4)!=sc.end() && sc.find(5)!=sc.end() && sc.find(6)!=sc.end() && sc.find(7)==sc.end() && sc.find(8)==sc.end() && sc.find(9)==sc.end() && sc.find(10)==sc.end() && sc.find(0)==sc.end()) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio getUnion:\t\t\t"; set<int> sd = getUnion(sa,sb); if(sd.find(1)!=sd.end() && sd.find(2)!=sd.end() && sd.find(3)!=sd.end() && sd.find(4)!=sd.end() && sd.find(5)!=sd.end() && sd.find(6)!=sd.end() && sd.find(7)==sd.end() && sd.find(8)!=sd.end() && sd.find(9)==sd.end() && sd.find(10)==sd.end() && sd.find(0)==sd.end() ) { nota++; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } cout<<"Ejercicio esSubConjunto:\t\t"; set<int> se; set<int> sf; se.insert(2); se.insert(4); se.insert(8); if(esSubConjunto(sa,se)) { nota+=2; cout<<"Correcto"<<endl; }else { cout<<"Incorrecto"<<endl; } // cout<<endl<<"Nota: "<<nota<<"/7"<<endl; }
int * PlaceJoueur::placeJoueur(int ** carte, int largeur,int hauteur, int* peuple, int nbJoueurs) { vector< vector<Coordonnees> > tabZones; for(int i=0;i<nbJoueurs;i++) { vector<Coordonnees> tmp = findZone(carte,largeur,hauteur,peuple[i]); tabZones.push_back(tmp); } vector<Coordonnees> zoneAccessible = getUnion(tabZones); int * coord = new int[2*nbJoueurs]; Coordonnees coordJ1, coordJ2; int max=0; AStar * star = new AStar(); vector<Coordonnees>::iterator it = zoneAccessible.begin(); for(;it!=zoneAccessible.end();it++) { vector<Coordonnees>::iterator it2 = zoneAccessible.begin(); for(;it2!=zoneAccessible.end();it2++) { if (!(*it==*it2)) { if (verif[peuple[0]][carte[(*it).x()][(*it).y()]]) { vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[0],largeur,hauteur,(*it),(*it2)); if (res->size()>max) { max=res->size(); coordJ1 = (*it); coordJ2 = (*it2); } } } } } coord[0]=coordJ1.x(); coord[1]=coordJ1.y(); coord[2] = coordJ2.x(); coord[3] = coordJ2.y(); Coordonnees coordJ3; if (nbJoueurs>=3) { bool ok = false; int sigmaRef = 2; while (!ok) { double max=0; vector<Coordonnees>::iterator it = zoneAccessible.begin(); for(;it!=zoneAccessible.end();it++) { if (!((*it) == coordJ1 || (*it) == coordJ2)) { if (verif[peuple[2]][carte[(*it).x()][(*it).y()]]) { vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[2],largeur,hauteur,(*it),(coordJ1)); vector<Node*>* res2 = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[2],largeur,hauteur,(*it),(coordJ2)); if (std::abs((int)res->size()-(int)res2->size())<=2 && (res->size()+res2->size())/2>max) { max=(res->size()+res2->size())/2; coordJ3 = (*it); ok = true; } } } } sigmaRef++; } coord[4] = coordJ3.x(); coord[5] = coordJ3.y(); if (nbJoueurs==4) { Coordonnees coordJ4; bool ok = false; int sigmaRef = 3; while (!ok) { double max=0; vector<Coordonnees>::iterator it = zoneAccessible.begin(); for(;it!=zoneAccessible.end();it++) { if (!((*it) == coordJ1 || (*it) == coordJ2 || (*it) == coordJ3)) { if (verif[peuple[3]][carte[(*it).x()][(*it).y()]]) { vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[3],largeur,hauteur,(*it),(coordJ1)); vector<Node*>* res2 = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[3],largeur,hauteur,(*it),(coordJ2)); vector<Node*>* res3 = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple[3],largeur,hauteur,(*it),(coordJ3)); int sigtmp1 = std::abs((int)res->size()-(int)res2->size()); int sigtmp2 = std::abs((int)res2->size()-(int)res3->size()); int sigtmp3 = std::abs((int)res->size()-(int)res3->size()); if ((sigtmp1+sigtmp2+sigtmp3)/3<=sigmaRef && (res->size()+res2->size()+res3->size())/3>max) { max=(res->size()+res2->size()+res3->size())/3; coordJ4 = (*it); ok = true; } } } } sigmaRef++; } coord[6] = coordJ4.x(); coord[7] = coordJ4.y(); } } delete star; /* int nbJoueur = compteJoueurs(tabJoueurs,largeur,hauteur); srand (time(NULL)); int * coord = new int[2]; if (nbJoueur==0) { coord[0]=rand()%2*(largeur-1); coord[1]=rand()%2*(hauteur-1); int * coord2 = new int[2]; coord2[0] = (((largeur-1)-coord[0])/4)*4; coord2[1] = (((hauteur-1)-coord[1])/4)*4; AStar * star = new AStar(); vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple,largeur,hauteur,Coordonnees(coord[0],coord[1]),Coordonnees(coord2[0],coord2[1])); delete star; coord[0]=res->back()->getCoord().x(); coord[1]=res->back()->getCoord().y(); delete res; } else if(nbJoueur==1) { coord = getCoordJoueur1(tabJoueurs,largeur,hauteur); int * coord2 = new int[2]; coord2[0] = (((largeur-1)-coord[0])/4)*4; coord2[1] = (((hauteur-1)-coord[1])/4)*4; AStar * star = new AStar(); vector<Node*>* res = star->pathFinding(tabToVecor(carte,largeur,hauteur),peuple,largeur,hauteur,Coordonnees(coord[0],coord[1]),Coordonnees(coord2[0],coord2[1])); delete star; coord[0]=res->back()->getCoord().x(); coord[1]=res->back()->getCoord().y(); delete res; } else { do { coord[0]=rand()%2*(largeur-1); coord[1]=rand()%2*(hauteur-1); } while (tabJoueurs[coord[0]][coord[1]]!=0); } */ return coord; }