void Horizontal_paned::Handle_event(const ALLEGRO_EVENT& event) { Vector2 p = Get_position(); Vector2 s = Get_size(); float pane_size = Get_value(PANE); if(event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) { float pane_x_diff = event.mouse.x-(p.x + pane_position); if(event.mouse.y >= p.y && event.mouse.y <= p.y + s.y && pane_x_diff >= 0 && pane_x_diff < pane_size) { holding_pane = pane_x_diff; } } if(event.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP) { holding_pane = -1; } if(event.type == ALLEGRO_EVENT_MOUSE_AXES) { if(holding_pane != -1) { float new_x = (event.mouse.x - p.x) - holding_pane; float max_x = Get_size().x-pane_size; Set_pane_fraction(new_x/max_x); Organise(); } } if(left) left->Handle_event(event); if(right) right->Handle_event(event); }
void Vertical_paned::Handle_event(const ALLEGRO_EVENT& event) { Vector2 p = Get_position(); Vector2 s = Get_size(); float pane_size = Get_value(PANE); if(event.type == ALLEGRO_EVENT_MOUSE_BUTTON_DOWN) { float pane_y_diff = event.mouse.y-(p.y + pane_position); if(event.mouse.x >= p.x && event.mouse.x <= p.x + s.x && pane_y_diff >= 0 && pane_y_diff < pane_size) { holding_pane = pane_y_diff; } } if(event.type == ALLEGRO_EVENT_MOUSE_BUTTON_UP) { holding_pane = -1; } if(event.type == ALLEGRO_EVENT_MOUSE_AXES) { if(holding_pane != -1) { float new_y = (event.mouse.y - p.y) - holding_pane; float max_y = Get_size().y-pane_size; Set_pane_fraction(new_y/max_y); Organise(); } } if(top) top->Handle_event(event); if(bottom) bottom->Handle_event(event); }
void Communicator::Irecv_all(Message* msgs, CommunicationTAG tag) { for (int i=0; i<Get_size(); i++) { if (i == Get_rank()) continue; Irecv(i, &msgs[i], tag); } }
void Vertical_paned::Set_pane_fraction(float p) { float pane_size = Get_value(PANE); float max_y = Get_size().y-pane_size; float pp = p*max_y; pane_position = pp<0?0:pp>max_y?max_y:pp; pane_reference = p; }
void Vertical_paned::Set_pane_position(float p) { float pane_size = Get_value(PANE); float max_y = Get_size().y-pane_size; pane_position = p<0?0:p>max_y?max_y:p; pane_reference = pane_position/max_y; Organise(); }
void Horizontal_paned::Set_pane_fraction(float p) { float pane_size = Get_value(PANE); float max_x = Get_size().x-pane_size; float pp = p*max_x; pane_position = pp<0?0:pp>max_x?max_x:pp; pane_reference = p; }
void Horizontal_paned::Set_pane_position(float p) { float pane_size = Get_value(PANE); float max_x = Get_size().x-pane_size; pane_position = p<0?0:p>max_x?max_x:p; pane_reference = pane_position/max_x; Organise(); }
void Communicator::Allgather(ConstData in,Data out){ #if defined(__PLUMED_MPI) plumed_massert(initialized(),"you are trying to use an MPI function, but MPI is not initialized"); void*s=const_cast<void*>((const void*)in.pointer); void*r=const_cast<void*>((const void*)out.pointer); if(s==NULL)s=MPI_IN_PLACE; MPI_Allgather(s,in.size,in.type,r,out.size/Get_size(),out.type,communicator); #else (void) in; (void) out; plumed_merror("you are trying to use an MPI function, but PLUMED has been compiled without MPI support"); #endif }
bool Communicator::Test_all(CommunicationTAG tag) { bool received = true; for (int i=0; i<Get_size(); i++) { if (i == Get_rank()) continue; MPI::Request* request = Get_request(i, tag); if (!request->Test()) { received = false; break; } } return received; }
void Expander::Organise() { float indent = Get_value(INDENT); Vector2 p = Get_position(); p.y += Get_value(SELF_HEIGHT); Vector2 s = Get_size(); s.y -= Get_value(SELF_HEIGHT); if(child) { child->Set_size(s); child->Set_position(p); } Calculate_request_size(); }
void Horizontal_paned::Organise() { Vector2 position = Get_position(); Vector2 size = Get_size(); float pane_size = Get_value(PANE); float leftsize = pane_position; float rightsize = size.x-pane_size-leftsize; if(left) { left->Set_position(position); left->Set_size(Vector2(leftsize, size.y)); } if(right) { right->Set_position(Vector2(position.x+leftsize+pane_size, position.y)); right->Set_size(Vector2(rightsize, size.y)); } }
void Vertical_paned::Organise() { Vector2 position = Get_position(); Vector2 size = Get_size(); float topsize = pane_position; float pane_size = Get_value(PANE); float bottomsize = size.y-pane_size-topsize; if(top) { top->Set_position(position); top->Set_size(Vector2(size.x, topsize)); } if(bottom) { bottom->Set_position(Vector2(position.x, position.y+topsize+pane_size)); bottom->Set_size(Vector2(size.x, bottomsize)); } Calculate_request_size(); }
void Create_Bubble(const char *package, const char* name){ char appid[10]; fstream file; file.open(package,ios::in|ios::binary); if(!file.fail()){ file.seekg(55, ios::beg); file.read(appid,9); file.close(); } char files[256]; for(;f1<sizeof(Hex);f1++, f2=0){ for(;f2<sizeof(Hex);f2++){ sprintf(files,"/dev_hdd0/vsh/task/000000%c%c",Hex[f1],Hex[f2]); if(sysLv2FsMkdir(files, S_IRWXO | S_IRWXU | S_IRWXG | S_IFDIR) == 0) goto copy; } } copy: Create_PDB(files,name,Get_size(package),package); sprintf(files,"%s/%s.pkg",files,appid); CopyFile(package, files); }
void Communicator::Send_all(Message msg, CommunicationTAG tag) { for (int i=0; i<Get_size(); i++) { if (i == Get_rank()) continue; Send(i, msg, tag); } }