void MapEditor::finalise_lightmap() { bool is_cancelled = compile_thread->is_cancelled(); delete compile_thread; compile_thread = 0; if (!is_cancelled) { /* write PNG */ create_directory("maps", home_workdir); std::string filename = home_workdir + dir_separator + "maps" + dir_separator + wmap->get_name() + ".lmp"; FILE *f = fopen(filename.c_str(), "wb"); if (!f) { show_messagebox(Gui::MessageBoxIconError, "Light Map", "Saving failed: " + std::string(strerror(errno))); return; } png_structp png_ptr = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0); png_infop info_ptr = png_create_info_struct(png_ptr); png_init_io(png_ptr, f); png_set_IHDR(png_ptr, info_ptr, lightmap_w, lightmap_h, 8, PNG_COLOR_TYPE_RGB_ALPHA, PNG_INTERLACE_NONE, PNG_COMPRESSION_TYPE_BASE, PNG_FILTER_TYPE_BASE); png_write_info(png_ptr, info_ptr); /* delete image after writing each row */ for (int y = 0; y < lightmap_h; y++) { png_write_row(png_ptr, lightmap[y]); delete[] lightmap[y]; } delete[] lightmap; /* close file */ png_write_end(png_ptr, 0); if (info_ptr) { png_free_data(png_ptr, info_ptr, PNG_FREE_ALL, -1); } if (png_ptr) { png_destroy_write_struct(&png_ptr, &info_ptr); } fclose(f); if (wmap) { wmap->create_lightmap(); } } else { delete[] lightmap; } pop_window(); }
si_t right_click_menu_NEW_FILE (void * bt, void * msg) { switch(message_get_type(msg)) { case MESSAGE_TYPE_MOUSE_PRESS: save_or_rename_flag=1; create_new_file(); pop_window(); desktop_flush(); right_click_menu_cancel(); break; default: button_default_callback(bt, msg); break; } return 0; }
si_t right_click_menu_rename (void * bt, void * msg) { union message* m = (union message*)msg; switch(message_get_type(msg)) { case MESSAGE_TYPE_MOUSE_PRESS: if(sh_temp_ptr!=NULL){ save_or_rename_flag=2; pop_window(); desktop_flush(); right_click_menu_cancel(); } break; default: button_default_callback(bt, msg); break; } return 0; }
static void on_washrooms_data(void* context) { if (current_window == splash_window_get_base(splash_window)) { pop_window(false); } }
void Client::window_close_click() { pop_window(); }