Skip to content

Instantly share code, notes, and snippets.

@a2
Forked from matthewtole/bitmap-loader.c
Last active August 29, 2015 13:58
Show Gist options
  • Save a2/10411466 to your computer and use it in GitHub Desktop.
Save a2/10411466 to your computer and use it in GitHub Desktop.
/***
* Bitmap Loader
* Copyright © 2013 Matthew Tole
*
* Version 2.0.2
***/
#include <pebble.h>
#include "bitmap-loader.h"
typedef struct AppBitmap AppBitmap;
struct AppBitmap {
uint32_t res_id;
GBitmap* bitmap;
AppBitmap* next;
};
static AppBitmap* get_app_bitmap_by_res_id(uint32_t res_id);
static AppBitmap* get_app_bitmap_tail(void);
static AppBitmap* bitmaps = NULL;
GBitmap* bitmaps_get_bitmap(uint32_t res_id) {
AppBitmap* app_bmp = get_app_bitmap_by_res_id(res_id);
if (app_bmp == NULL) {
app_bmp = malloc(sizeof(AppBitmap));
app_bmp->res_id = res_id;
app_bmp->bitmap = gbitmap_create_with_resource(app_bmp->res_id);
app_bmp->next = NULL;
AppBitmap* last = get_app_bitmap_tail();
if (last == NULL) {
bitmaps = app_bmp;
}
else {
last->next = app_bmp;
}
}
return app_bmp->bitmap;
}
void bitmaps_cleanup(void) {
AppBitmap* current = bitmaps;
while (current != NULL) {
gbitmap_destroy(current->bitmap);
AppBitmap* tmp = current->next;
free(current);
current = tmp;
}
bitmaps = NULL;
}
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - //
AppBitmap* get_app_bitmap_by_res_id(uint32_t res_id) {
AppBitmap* current = bitmaps;
while (current != NULL) {
if (current->res_id == res_id) {
return current;
}
current = current->next;
}
return NULL;
}
AppBitmap* get_app_bitmap_tail(void) {
AppBitmap* current = bitmaps;
while (current != NULL) {
if (current->next == NULL) {
return current;
}
current = current->next;
}
return NULL;
}
/***
* Bitmap Loader
* Copyright © 2013 Matthew Tole
*
* Version 2.0.2
***/
#pragma once
#include <pebble.h>
GBitmap* bitmaps_get_bitmap(uint32_t res_id);
void bitmaps_cleanup(void);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment