summaryrefslogtreecommitdiff
path: root/trunk/example.c
diff options
context:
space:
mode:
Diffstat (limited to 'trunk/example.c')
-rw-r--r--trunk/example.c48
1 files changed, 35 insertions, 13 deletions
diff --git a/trunk/example.c b/trunk/example.c
index c42756d..6db17fe 100644
--- a/trunk/example.c
+++ b/trunk/example.c
@@ -55,6 +55,38 @@ int load_file_to_memory(const char *filename, uint8_t **result)
return size;
}
+int create_file_context(char* filename, void** result)
+{
+ FILE *f = fopen(filename, "rb");
+ if (!f) {
+ *result = NULL;
+ return -1;
+ }
+
+ struct rosprite_file_context* ctx;
+ if (rosprite_create_file_context(f, &ctx) != ROSPRITE_OK) {
+ return -1;
+ }
+ *result = ctx;
+
+ return 0;
+}
+
+int create_mem_context(char* filename, void** result)
+{
+ uint8_t* content;
+
+ int size = load_file_to_memory(filename, &content);
+ if (size < 0) return -1;
+ struct rosprite_mem_context* ctx;
+ if (rosprite_create_mem_context(content, size, &ctx) != ROSPRITE_OK) {
+ return -1;
+ }
+ *result = ctx;
+
+ return 0;
+}
+
int main(int argc, char *argv[])
{
if (argc < 2) {
@@ -69,21 +101,11 @@ int main(int argc, char *argv[])
atexit(SDL_Quit);
char* filename = argv[1];
- uint8_t* content;
-
- int size = load_file_to_memory(filename, &content);
- if (size < 0) {
- printf("Can't load spritefile %s\n", filename);
- exit(EXIT_FAILURE);
- } else {
- printf("Loaded file of size %d into memory", size);
- }
-
- struct rosprite_mem_context* ctx = rosprite_create_mem_context(content, size);
-
+ void* ctx;
+ create_file_context(filename, &ctx);
printf("Loading %s\n", filename);
- struct rosprite_area* sprite_area = rosprite_load(rosprite_mem_reader, ctx);
+ struct rosprite_area* sprite_area = rosprite_load(rosprite_file_reader, ctx);
printf("sprite_count %u\n", sprite_area->sprite_count);
printf("extension_size %u\n", sprite_area->extension_size);