//----------------------------------------------------------------------------- /// Handle freeze/unfreeze void Profiler::onClick(const core::vector2di& mouse_pos) { video::IVideoDriver* driver = irr_driver->getVideoDriver(); const core::dimension2d<u32>& screen_size = driver->getScreenSize(); core::rect<s32>background_rect((int)(MARGIN_X * screen_size.Width), (int)(MARGIN_Y * screen_size.Height), (int)((1.0-MARGIN_X) * screen_size.Width), (int)((MARGIN_Y + 3.0f*LINE_HEIGHT) * screen_size.Height)); if(!background_rect.isPointInside(mouse_pos)) return; switch(m_freeze_state) { case UNFROZEN: m_freeze_state = WAITING_FOR_FREEZE; break; case FROZEN: m_freeze_state = WAITING_FOR_UNFREEZE; break; case WAITING_FOR_FREEZE: case WAITING_FOR_UNFREEZE: // the user should not be that quick, and we prefer avoiding to introduce // bugs by unfrozing it while it has not frozen yet. // Same the other way around. break; } }
//----------------------------------------------------------------------------- /// Helper to draw a white background void Profiler::drawBackground() { video::IVideoDriver* driver = irr_driver->getVideoDriver(); const core::dimension2d<u32>& screen_size = driver->getScreenSize(); core::rect<s32>background_rect((int)(MARGIN_X * screen_size.Width), (int)((MARGIN_Y + 0.25f) * screen_size.Height), (int)((1.0-MARGIN_X) * screen_size.Width), (int)((MARGIN_Y + 1.75f*LINE_HEIGHT) * screen_size.Height)); video::SColor color(0x88, 0xFF, 0xFF, 0xFF); GL32_draw2DRectangle(color, background_rect); }
int main(int argc,char** argv) { DPipe tryba1_rect(200,200,100,40); DPipe tryba2_rect(400,400,100,40); DPipe background_rect(350,350,700,700); DPipe kletka_rect(200,200,100,100); DPipe kletka2_rect(400,400,100,100); setlocale(LC_ALL,"RUSSIAN"); //------создаем окно с фоном и парой труб--------// SDL_DisplayMode displayMode; if (SDL_Init(SDL_INIT_EVERYTHING) != 0) { cout << "SDL_Init Error: " << SDL_GetError() << endl; return 1; } int request = SDL_GetDesktopDisplayMode(0,&displayMode); //создаем монитор SDL_Window *win = SDL_CreateWindow("Trubi", 300, 300,SCREEN_WIDTH, SCREEN_HEIGHT, SDL_WINDOW_SHOWN); if (win == nullptr) { cout << "SDL_CreateWindow Error: " << SDL_GetError() << endl; return 1; } //создаем рендерер SDL_Renderer *ren = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC); if (ren == nullptr) { cout << "SDL_CreateRenderer Error: " << SDL_GetError() << endl; return 1; } SDL_Surface *BMP_TRYBA=SDL_LoadBMP("kletka.bmp"); if (BMP_TRYBA == nullptr) { cout << "SDL_LoadBMP Error: " << SDL_GetError() << endl; return 1; } SDL_Texture *TRYBA = SDL_CreateTextureFromSurface(ren, BMP_TRYBA); SDL_RenderClear(ren); background_rect.default_create(ren,"project.bmp"); kletka_rect.default_create(ren,"kletka.bmp"); kletka2_rect.default_create(ren,"kletka.bmp"); tryba1_rect.default_create(ren,"text1.bmp"); tryba2_rect.default_create(ren,"text1.bmp"); SDL_RenderPresent(ren); SDL_Event event; bool quit=false; int trybi=2; while(!quit) { while(SDL_PollEvent(&event)) { SDL_PumpEvents(); // обработчик событий. //крестик if(event.type == SDL_QUIT) quit=true; else if(event.type==SDL_MOUSEBUTTONDOWN && event.button.button==SDL_BUTTON_LEFT) { if((event.button.x>=kletka_rect.center().x-kletka_rect.width()/2 && event.button.x<=kletka_rect.center().x+kletka_rect.width()/2) && (event.button.y>=kletka_rect.center().y-kletka_rect.height()/2 && event.button.y<=kletka_rect.center().y+kletka_rect.height()/2)) { SDL_RenderClear(ren); background_rect.default_create(ren,"project.bmp"); kletka_rect.default_create(ren,"kletka.bmp"); kletka2_rect.default_create(ren,"kletka.bmp"); tryba2_rect.upgrade(ren); tryba1_rect.spin(ren); SDL_RenderPresent(ren); } else if((event.button.x>=kletka2_rect.center().x-kletka2_rect.width()/2 && event.button.x<=kletka2_rect.center().x+kletka2_rect.width()/2) && (event.button.y>=kletka2_rect.center().y-kletka2_rect.height()/2 && event.button.y<=kletka2_rect.center().y+kletka2_rect.height()/2)) { SDL_RenderClear(ren); background_rect.default_create(ren,"project.bmp"); kletka_rect.default_create(ren,"kletka.bmp"); kletka2_rect.default_create(ren,"kletka.bmp"); tryba1_rect.upgrade(ren); tryba2_rect.spin(ren); SDL_RenderPresent(ren); } } } } return 1; }