void ControllerAxisEventThrower::publish(ControllerAxisEventThrower *src, ControllerAxisEventArgs *args) { std::list<ControllerAxisEventListener*>::iterator lit(axisListeners.begin()), lend(axisListeners.end()); for(;lit!=lend;++lit) { (*lit)->handleEvent(src, args); } }
SpriteFile::~SpriteFile() { std::vector<SDL_Surface*>::iterator lit(surfaces.begin()), lend(surfaces.end()); for(;lit!=lend;++lit) { SDL_FreeSurface((*lit)); } }
void Buffer::clear(void) { std::list<Chunk*>::iterator lit(chunks.begin()), lend(chunks.end()); for(;lit!=lend;++lit) { delete (*lit); } chunks.clear(); }
unsigned int Buffer::count(void) { unsigned int length = 0; std::list<Chunk*>::iterator lit(chunks.begin()), lend(chunks.end()); for(;lit!=lend;++lit) { length += (*lit)->getLength(); } return length; }
Pile * Calculatrice::pileActive(){ QLabel *fileNameLabel = ui->tabWidget->currentWidget()->findChild<QLabel *>(AFFICHAGE_NAME); std::list<Pile>::const_iterator lit (onglet.begin()), lend(onglet.end()); for(;lit!=lend;++lit) { Pile p = (*lit); if(p.affichage==fileNameLabel){ return &p; } } }
Chunk* Buffer::getChunk(void) { unsigned int length = count(); unsigned int current = 0; char *data = new char[length]; std::list<Chunk*>::iterator lit(chunks.begin()), lend(chunks.end()); for(;lit!=lend;++lit) { char *c_data = (*lit)->getData(); unsigned int c_length = (*lit)->getLength(); for(int i=0; i<c_length; i++) { data[current+i] = c_data[i]; } current += c_length; } Chunk *chunk = new Chunk(data, length); return chunk; }
void ResourceFile::save(std::string destination) { std::ofstream of (destination.c_str(), std::ofstream::binary); std::map<std::string, std::string>::iterator lit(resourcesPath.begin()), lend(resourcesPath.end()); for(;lit!=lend;++lit) { ResourceMarker marker = ResourceMarker(); std::ifstream img (lit->second.c_str(), std::ifstream::binary); img.seekg(0, img.end); int length = img.tellg(); img.seekg(0, img.beg); char * buffer = new char[length]; img.read(buffer, length); img.close(); marker.length = length; marker.name[lit->first.size()] = 0; memcpy(marker.name, lit->first.c_str(), lit->first.size()); of.write(reinterpret_cast<char*>(&marker), sizeof(ResourceMarker)); of.write(buffer, length); delete buffer; } of.close(); }
void List::onClick(Point *relpt) { Rectangle rectUp = Rectangle(width - upArrow->getWidth(), 0, upArrow->getWidth(), upArrow->getHeight()); Rectangle rectDown = Rectangle(width - downArrow->getWidth(), height - downArrow->getHeight(), downArrow->getWidth(), downArrow->getHeight()); if((rectUp.contains(relpt) || rectDown.contains(relpt)) && _showScrollButtons) { if(rectUp.contains(relpt)) { //list drawing start -- if(viewIndex > 0) { viewIndex--; } } else if(rectDown.contains(relpt)) { //list drawing start ++ if(viewIndex < values.size() - height / lineHeight) { viewIndex++; } } } else { //item selection click int i = relpt->getY() / lineHeight; i += viewIndex; if(i < values.size()) { selectedIndex = i; //todo event throwing!! if(containListeners()) { ValueObject *vo; std::vector<ValueObject*>::iterator lit(values.begin()), lend(values.end()); int vo_i=0; for(;lit!=lend;++lit) { if(vo_i == i) { vo = (*lit); break; } vo_i++; } SelectionEventArgs *args = new SelectionEventArgs(vo); publish(this, args); delete args; } } } }
Surface* List::render(void) { Surface *buffer = new Surface(width, height); buffer->fill(background); std::vector<ValueObject*>::iterator lit(values.begin()), lend(values.end()); int i=0; int cy = 0; SDL_Rect *src = new SDL_Rect(); SDL_Rect *dst = new SDL_Rect(); PRect rect = PRect(); rect.setX(0); rect.setWidth(width); rect.setHeight(lineHeight); if(_showScrollButtons) { rect.setWidth(width - upArrow->getWidth()); } for(;lit!=lend;++lit) { if(i >= viewIndex) { Surface *str_sur; ValueObject *vo = (*lit); bool free_str = false; if(i == selectedIndex) { free_str = true; str_sur = font->renderText(vo->getText(), highlightForeground); rect.setY(cy); rect.fill(buffer->getSDLSurface(), highlightBackground); } else { str_sur = strBuffers[vo->getId()]; } str_sur->updateSDLRect(src); str_sur->updateSDLRect(dst, 0, cy); buffer->blit(str_sur, src, dst); if(free_str) { delete str_sur; } cy += lineHeight; } i++; if(cy > height - lineHeight && viewIndex == 0) { _showScrollButtons = true; break; } } if(cy < height && viewIndex == 0) { _showScrollButtons = false; } if(_showScrollButtons) { upArrow->updateSDLRect(src); upArrow->updateSDLRect(dst, width - upArrow->getWidth(), 0); buffer->blit(upArrow, src, dst); downArrow->updateSDLRect(src); downArrow->updateSDLRect(dst, width - downArrow->getWidth(), height - downArrow->getHeight()); buffer->blit(downArrow, src, dst); } if(drawBorder) { PRect border = PRect(0, 0, width, height); buffer->draw(&border, foreground); } delete src; delete dst; return buffer; }