sprite.c 768 B

123456789101112131415161718192021222324252627
  1. #include <compression.h>
  2. #include "sprite.h"
  3. #include <debug.h>
  4. #define Sprite_log(msg) dbg_sprintf(dbgout, "[Sprite] %s\n", msg)
  5. void Sprite_resize(struct Sprite* self, int width, int height){
  6. gfx_sprite_t* resized_data = gfx_MallocSprite(width, height);
  7. gfx_ScaleSprite(self->data, resized_data);
  8. free(self->data);
  9. self->data = resized_data;
  10. }
  11. void free_Sprite(Sprite* self){
  12. Sprite_log("Freeing sprite");
  13. free(self->data);
  14. free(self);
  15. }
  16. Sprite* new_Sprite(int width, int height, void* compressed_data){
  17. gfx_sprite_t* data = gfx_MallocSprite(width, height);
  18. Sprite* self = (Sprite*)malloc(sizeof(Sprite));
  19. zx7_Decompress(data, compressed_data);
  20. self->data = data;
  21. self->resize = &Sprite_resize;
  22. return self;
  23. }