int main(int argc, char* args[]) { if ( is_window_created() ) { // for "libpng warning: iCCP: known incorrect sRGB profile" // http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile // load sdl2_image int image_flags = IMG_INIT_PNG; if ( !(IMG_Init(image_flags) & image_flags) ) { printf("main: sdl2_image err: %s\n", IMG_GetError()); return 1; } // load sdl ttf: https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_8.html // if ( TTF_Init() == -1 ) { // printf("sdl2_ttf err: %s\n", TTF_GetError()); // return 1; // } if ( !load_media() ) { user_quit = true; } // the LOOP while ( !user_quit ) { process_events(&g_event); game_update(); } } // closing... // Deallocate textures texture_free(&g_up_texture); texture_free(&g_down_texture); texture_free(&g_left_texture); texture_free(&g_right_texture); texture_free(&g_press_texture); SDL_DestroyRenderer(g_render); SDL_DestroyWindow(g_window); g_window = 0; g_render = 0; // https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_10.html // TTF_Quit(); IMG_Quit(); SDL_Quit(); return 0; }
void melee_deinit(scene *scene) { animationplayer_free(&harplayer_a); animationplayer_free(&harplayer_b); for(int i = 0; i < 10; i++) { texture_free(&harportraits[i]); } texture_free(&feh); texture_free(&bleh); texture_free(&select_hilight); for(int i = 0;i < 2;i++) { progressbar_free(&bar_power[i]); progressbar_free(&bar_agility[i]); progressbar_free(&bar_endurance[i]); } }
void game_font_term() { int i; for (i = 0; i < 64*FONTS_COUNT; i++) { texture_free(&game.tex_font[i]); }; };
void font_free(struct font *f) { texture_free(f->tex); glDeleteVertexArrays(1, &f->vao); glDeleteBuffers(1, &f->vbo); free(f); }
void font_free(font *font) { font->size = FONT_UNDEFINED; iterator it; vector_iter_begin(&font->textures, &it); texture **tex = NULL; while((tex = iter_next(&it)) != NULL) { texture_free(*tex); free(*tex); } vector_free(&font->textures); }
void animation_free(animation *ani) { texture *ptr; iterator it; array_iter_begin(&ani->sprites, &it); while((ptr = iter_next(&it)) != 0) { texture_free(ptr); free(ptr); } array_free(&ani->sprites); ani->sdani = 0; ani->soundtable = 0; }
static void core_release() { texture_free(core_global->textures.none); monofont_free(&core_global->font_console); console_free(&core_global->console); /* Release game specific resources. */ if(core_global->release_callback != NULL) { core_global->release_callback(); } lodge_window_shutdown(); }
void component_texture_free(void* handle) { if (!handle) { debug_warning("[component_texture_free] handle cannot be NULL"); return; } component_texture* this = (component_texture*) handle; for (int i = 0; i < COMPONENT_TEXTURE_MAX_ANIM_COUNT; i++) { for (int j = 0; j < this->frame_count[i]; j++) { if (!this->texture_buffer[i][j]) { continue; } texture_free(this->texture_buffer[i] + j); } } h_free(this); }
void scene_free(scene *scene) { if(!scene) return; // Deinit scene if(scene->deinit != NULL) { scene->deinit(scene); } // Release background texture_free(&scene->background); // Free players iterator it; animationplayer *tmp = 0; list_iter_begin(&scene->child_players, &it); while((tmp = iter_next(&it)) != NULL) { animationplayer_free(tmp); } list_iter_begin(&scene->root_players, &it); while((tmp = iter_next(&it)) != NULL) { animationplayer_free(tmp); } list_free(&scene->child_players); list_free(&scene->root_players); // Free animations animation *ani = 0; array_iter_begin(&scene->animations, &it); while((ani = iter_next(&it)) != 0) { animation_free(ani); free(ani); } array_free(&scene->animations); // XXX do NOT free hars/controllers here! // Free BK sd_bk_delete(scene->bk); }
bool texture_load_font_string(texture* img, char* text, SDL_Color text_color) { // rm preexisting texture texture_free(img); // https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_43.html s_surface* text_surface = TTF_RenderText_Solid(g_font, text, text_color); if ( !text_surface ) { printf("texture_load_font_string: unable to render text, ttf err: %s\n", TTF_GetError()); } else { // create texture img->ref = SDL_CreateTextureFromSurface(g_render, text_surface); if ( !img->ref ) { printf("texture_load_font_string: unable to create text texture, err: %s\n", SDL_GetError()); } else { // get image dimensions img->w = text_surface->w; img->h = text_surface->h; } // flush surface SDL_FreeSurface(text_surface); } return img->ref != 0; }
void view_free_media() { texture_free(&digits_texture); }
void fbo_free(fbo *fbo) { glDeleteFramebuffers(1, &fbo->id); texture_free(&fbo->tex); rbo_free(&fbo->rbo); }
void progressbar_set(progress_bar *bar, unsigned int percentage) { bar->percentage = (percentage > 100 ? 100 : percentage); texture_free(&bar->block); progressbar_create_block(bar); }
void progressbar_free(progress_bar *bar) { texture_free(&bar->background); texture_free(&bar->block); }
int main(int argc, char* args[]) { if ( is_window_created() ) { // for "libpng warning: iCCP: known incorrect sRGB profile" // http://stackoverflow.com/questions/22745076/libpng-warning-iccp-known-incorrect-srgb-profile // load sdl2_image int image_flags = IMG_INIT_PNG; if ( !(IMG_Init(image_flags) & image_flags) ) { printf("main: sdl2_image err: %s\n", IMG_GetError()); return 1; } // http://www.libsdl.org/projects/SDL_mixer/docs/SDL_mixer_11.html if( Mix_OpenAudio( 44100, MIX_DEFAULT_FORMAT, 2, 2048 ) < 0 ) { printf( "main: SDL_mixer Error: %s\n", Mix_GetError() ); return 1; } // load sdl ttf: https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_8.html // if ( TTF_Init() == -1 ) { // printf("sdl2_ttf err: %s\n", TTF_GetError()); // return 1; // } if ( !load_media() ) { user_quit = true; } // the LOOP while ( !user_quit ) { process_events(&g_event); game_update(); } } /** closing **/ // Deallocate textures texture_free(&g_current_texture); // joystick // SDL_JoystickClose(g_gamepad); // g_gamepad = 0; // sfx Mix_FreeChunk( g_scratch ); Mix_FreeChunk( g_hig ); Mix_FreeChunk( g_med ); Mix_FreeChunk( g_low ); g_scratch = 0; g_hig = 0; g_med = 0; g_low = 0; // music Mix_FreeMusic( g_music ); g_music = 0; SDL_DestroyRenderer(g_render); SDL_DestroyWindow(g_window); g_window = 0; g_render = 0; // https://www.libsdl.org/projects/SDL_ttf/docs/SDL_ttf_10.html // TTF_Quit(); Mix_Quit(); IMG_Quit(); SDL_Quit(); return 0; }
void component_texture_load_animset(component_texture* output, char* animset_filename) { for (int i = 0; i < COMPONENT_TEXTURE_MAX_ANIM_COUNT; i++) { for (int j = 0; j < output->frame_count[i]; j++) { if (!output->texture_buffer[i][j]) { continue; } texture_free(output->texture_buffer[i] + j); } } FILE* anim_set_file = fopen(animset_filename, "r"); strcpy(output->texture_anim_setfile, animset_filename); if (!anim_set_file) { debug_critical("[component_texture_load_animset] cannot open anim set file %s", animset_filename); return; } /* Read the anim set file into the animation filename buffer. */ char anim_filename_buffer[COMPONENT_TEXTURE_MAX_ANIM_COUNT][COMPONENT_TEXTURE_MAX_ANIM_SETFILE] = {{0}}; unsigned int index = 0; while (fgets(anim_filename_buffer[index++], COMPONENT_TEXTURE_MAX_ANIM_SETFILE, anim_set_file)) { if (!strlen(anim_filename_buffer[index - 1])) { break; } char* target = anim_filename_buffer[index - 1]; target[strcspn(target, "\n")] = 0; } fclose(anim_set_file); anim_set_file = NULL; for (int anim_id = 0; anim_id < index - 1; anim_id++) { /* loading animation files */ FILE* file_handle = fopen(anim_filename_buffer[anim_id], "r"); if (file_handle == NULL) { debug_critical("[component_texture_load_animset] failed to open animation file [%s]", anim_filename_buffer[anim_id]); return; } /* file is good, we start to load in the initial data */ output->texture_anim_names[anim_id] = h_malloc(COMPONENT_TEXTURE_MAX_ANIM_NAME); memset(output->texture_anim_names[anim_id], 0, COMPONENT_TEXTURE_MAX_ANIM_NAME); fscanf(file_handle, "%s %d", output->texture_anim_names[anim_id], output->interval + anim_id); char texture_filename[COMPONENT_TEXTURE_MAX_FILENAME]; memset(texture_filename, 0, COMPONENT_TEXTURE_MAX_FILENAME); const char* texture_filename_prefix = "resource/materials/"; int i = 0; while (fscanf(file_handle, "%s", texture_filename) != EOF) { /* texture_filename should contain the next target texture */ char* texture_filename_full = h_malloc(COMPONENT_TEXTURE_MAX_FILENAME + strlen(texture_filename_prefix)); if (texture_filename_full == NULL) { debug_critical("[component_texture_load_animset] memory allocation failure"); return; } memset(texture_filename_full, 0, COMPONENT_TEXTURE_MAX_FILENAME + strlen(texture_filename_prefix)); memcpy(texture_filename_full, texture_filename_prefix, strlen(texture_filename_prefix)); strcat(texture_filename_full, texture_filename); texture_alloc(output->texture_buffer[anim_id] + i++, texture_filename_full, 0, 0); // set the next texture, assume these will not be tiled memset(texture_filename, 0, COMPONENT_TEXTURE_MAX_FILENAME); } if (i == 0) { debug_critical("[component_texture_load_animset] invalid animation file (no textures given) [%s]", anim_filename_buffer[anim_id]); return; } output->frame_count[anim_id] = i; fclose(file_handle); } }