28 #ifndef ASSETMANAGER_H
29 #define ASSETMANAGER_H
31 #include "SDL_image.h"
41 ASSET_SELECTOR_ICON = 0,
42 ASSET_ATOM_SELECTOR_ICON,
50 ASSET_CHECKBOX_ICON_ON,
51 ASSET_CHECKBOX_ICON_OFF,
53 ASSET_SELECTOR_ICON_BIG,
54 ASSET_ATOM_SELECTOR_ICON_BIG,
55 ASSET_PENCIL_ICON_BIG,
56 ASSET_ERASER_ICON_BIG,
58 ASSET_BUCKET_ICON_BIG,
61 ASSET_AIRBRUSH_ICON_BIG,
67 FONT_ASSET_ELEMENT = 0,
68 FONT_ASSET_ELEMENT_BIG,
69 FONT_ASSET_HELPPANEL_BIG,
70 FONT_ASSET_HELPPANEL_SMALL,
79 static SDL_Surface* surfaces[ASSET_COUNT];
81 static TTF_Font* fonts[FONT_ASSET_COUNT];
83 static bool initialized;
85 static SDL_Surface* LoadImage(
const char* relativeFilename)
87 const u32 BUFFER_SIZE = 1024;
88 char filename[BUFFER_SIZE];
89 SDL_Surface* loaded = NULL;
90 SDL_Surface* opped = NULL;
92 if(Utils::GetReadableResourceFile(relativeFilename, filename, BUFFER_SIZE))
94 loaded = IMG_Load(filename);
98 opped = SDL_DisplayFormatAlpha(loaded);
100 SDL_FreeSurface(loaded);
102 LOG.
Debug(
"Surface %s loaded: %p, opped: %p", filename, loaded, opped);
106 LOG.
Error(
"Image %s not loaded : %s",
113 LOG.
Error(
"Cannot compute relative path to: %s", relativeFilename);
119 static TTF_Font* LoadFont(
const char* relativePath, u32 size)
121 const u32 BUFFER_SIZE = 1024;
122 TTF_Font* font = NULL;
123 char path[BUFFER_SIZE];
125 if(Utils::GetReadableResourceFile(relativePath, path, BUFFER_SIZE))
127 font = TTF_OpenFont(path, size);
131 LOG.
Error(
"Font %s not loaded: %s",
136 LOG.
Debug(
"Font %s loaded: %p", relativePath, font);
140 LOG.
Error(
"Cannot compute relative path to: %s", relativePath);
156 surfaces[ASSET_SELECTOR_ICON] = LoadImage(
"images/selector_icon.png");
157 surfaces[ASSET_ATOM_SELECTOR_ICON] = LoadImage(
"images/atom_selector_icon.png");
158 surfaces[ASSET_PENCIL_ICON] = LoadImage(
"images/pencil_icon.png");
159 surfaces[ASSET_ERASER_ICON] = LoadImage(
"images/eraser_icon.png");
160 surfaces[ASSET_BRUSH_ICON] = LoadImage(
"images/brush_icon.png");
161 surfaces[ASSET_BUCKET_ICON] = LoadImage(
"images/bucket_icon.png");
162 surfaces[ASSET_XRAY_ICON] = LoadImage(
"images/xray_icon.png");
163 surfaces[ASSET_CLONE_ICON] = LoadImage(
"images/clone_icon.png");
164 surfaces[ASSET_AIRBRUSH_ICON] = LoadImage(
"images/airbrush_icon.png");
165 surfaces[ASSET_CHECKBOX_ICON_ON] = LoadImage(
"images/checkbox_on.png");
166 surfaces[ASSET_CHECKBOX_ICON_OFF] = LoadImage(
"images/checkbox_off.png");
167 surfaces[ASSET_SLIDER_HANDLE] = LoadImage(
"images/slider_handle.png");
168 surfaces[ASSET_SELECTOR_ICON_BIG] = LoadImage(
"images/selector_icon_big.png");
169 surfaces[ASSET_ATOM_SELECTOR_ICON_BIG] = LoadImage(
"images/atom_selector_icon_big.png");
170 surfaces[ASSET_PENCIL_ICON_BIG] = LoadImage(
"images/pencil_icon_big.png");
171 surfaces[ASSET_ERASER_ICON_BIG] = LoadImage(
"images/eraser_icon_big.png");
172 surfaces[ASSET_BRUSH_ICON_BIG] = LoadImage(
"images/brush_icon_big.png");
173 surfaces[ASSET_BUCKET_ICON_BIG] = LoadImage(
"images/bucket_icon_big.png");
174 surfaces[ASSET_XRAY_ICON_BIG] = LoadImage(
"images/xray_icon_big.png");
175 surfaces[ASSET_CLONE_ICON_BIG] = LoadImage(
"images/clone_icon_big.png");
176 surfaces[ASSET_AIRBRUSH_ICON_BIG] = LoadImage(
"images/airbrush_icon_big.png");
178 fonts[FONT_ASSET_ELEMENT] = LoadFont(
"fonts/tiny.ttf", 24);
179 fonts[FONT_ASSET_ELEMENT_BIG] = LoadFont(
"fonts/tiny.ttf", 40);
180 fonts[FONT_ASSET_HELPPANEL_BIG] = LoadFont(
"fonts/tiny.ttf", 26);
181 fonts[FONT_ASSET_HELPPANEL_SMALL] = LoadFont(
"fonts/tiny.ttf", 16);
182 fonts[FONT_ASSET_LOGGER] = LoadFont(
"fonts/tiny.ttf", 15);
195 for(Asset i = ASSET_SELECTOR_ICON; i < ASSET_COUNT; i = (Asset)(i + 1))
197 SDL_FreeSurface(surfaces[i]);
201 for(FontAsset i = FONT_ASSET_ELEMENT; i < FONT_ASSET_COUNT; i = (FontAsset)(i + 1))
203 TTF_CloseFont(fonts[i]);
211 static SDL_Surface* Get(Asset a)
216 static TTF_Font* Get(FontAsset a)
void Error(const char *format,...)
Definition: Logger.h:259
Definition: AssetManager.h:75
void Debug(const char *format,...)
Definition: Logger.h:301
static void Destroy()
Definition: AssetManager.h:191
static void Initialize()
Definition: AssetManager.h:152