temperary load in spritesheet from file
This commit is contained in:
parent
5de968688c
commit
7bd7cc4aa5
3 changed files with 39 additions and 4 deletions
|
|
@ -9,9 +9,14 @@ extern "C" {
|
|||
#include "arc/math/point.h"
|
||||
#include "arc/math/rectangle.h"
|
||||
#include "arc/graphics/renderer.h"
|
||||
#include "arc/std/string.h"
|
||||
|
||||
typedef struct ARC_Spritesheet ARC_Spritesheet;
|
||||
|
||||
void ARC_Spritesheet_CreateFromFile(ARC_Spritesheet **spritesheet, ARC_Renderer *renderer, ARC_String *path);
|
||||
|
||||
void ARC_Spritesheet_Destroy(ARC_Spritesheet *spritesheet);
|
||||
|
||||
void ARC_Spritesheet_RenderArea(ARC_Spritesheet *spritesheet, ARC_Rect *sheetBounds, ARC_Renderer *renderer, ARC_Rect *renderBounds);
|
||||
|
||||
ARC_Point ARC_Spritesheet_GetSize(ARC_Spritesheet *spritesheet);
|
||||
|
|
|
|||
|
|
@ -30,10 +30,12 @@ void ARC_Renderer_Destroy(ARC_Renderer *renderer){
|
|||
}
|
||||
|
||||
void ARC_Renderer_Clear(ARC_Renderer *renderer){
|
||||
SDL_SetRenderDrawColor((SDL_Renderer *)renderer, 0x1c, 0x2c, 0x3c, 0x00);
|
||||
//TODO: changed for school, also need to add the ability to change render draw color
|
||||
//SDL_SetRenderDrawColor((SDL_Renderer *)renderer, 0x1c, 0x2c, 0x3c, 0x00);
|
||||
SDL_SetRenderDrawColor((SDL_Renderer *)renderer, 0x15, 0x2a, 0x26, 0x00);
|
||||
SDL_RenderClear((SDL_Renderer *)renderer);
|
||||
}
|
||||
|
||||
void ARC_Renderer_Render(ARC_Renderer *renderer){
|
||||
SDL_RenderPresent((SDL_Renderer *)renderer);
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -3,7 +3,35 @@
|
|||
#include "spritesheet.h"
|
||||
#include "renderer.h"
|
||||
#include "arc/math/point.h"
|
||||
#include <SDL_render.h>
|
||||
#include <SDL.h>
|
||||
#include <SDL_image.h>
|
||||
#include <stdlib.h>
|
||||
|
||||
//TODO: Temp function
|
||||
void ARC_Spritesheet_CreateFromFile(ARC_Spritesheet **spritesheet, ARC_Renderer *renderer, ARC_String *path){
|
||||
*spritesheet = (ARC_Spritesheet *)malloc(sizeof(ARC_Spritesheet));
|
||||
|
||||
IMG_Init(IMG_INIT_PNG);
|
||||
SDL_Surface *surface = IMG_Load(path->data);
|
||||
if(!surface){
|
||||
printf("Error: reading png '%s'\nSDL_Image Error: %s", path->data, IMG_GetError());
|
||||
}
|
||||
|
||||
SDL_BlendMode tempMode;
|
||||
SDL_GetSurfaceBlendMode(surface, &tempMode);
|
||||
(*spritesheet)->texture = SDL_CreateTextureFromSurface((SDL_Renderer *)renderer, surface);
|
||||
SDL_GetTextureBlendMode((*spritesheet)->texture, &tempMode);
|
||||
|
||||
SDL_FreeSurface(surface);
|
||||
IMG_Quit();
|
||||
|
||||
ARC_Spritesheet_GetSize(*spritesheet);
|
||||
}
|
||||
|
||||
void ARC_Spritesheet_Destroy(ARC_Spritesheet *spritesheet){
|
||||
SDL_DestroyTexture(spritesheet->texture);
|
||||
free(spritesheet);
|
||||
}
|
||||
|
||||
void ARC_Spritesheet_RenderArea(ARC_Spritesheet *spritesheet, ARC_Rect *sheetBounds, ARC_Renderer *renderer, ARC_Rect *renderBounds){
|
||||
SDL_RenderCopy((SDL_Renderer *)renderer, spritesheet->texture, (SDL_Rect *)sheetBounds, (SDL_Rect *)renderBounds);
|
||||
|
|
@ -17,4 +45,4 @@ ARC_Point ARC_Spritesheet_GetSize(ARC_Spritesheet *spritesheet){
|
|||
|
||||
uint32_t *ARC_Spritesheet_GetTileSize(ARC_Spritesheet *spritesheet){
|
||||
return spritesheet->size;
|
||||
}
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue