1 #include "ge211_resource.h" 2 #include "ge211_error.h" 11 using namespace detail;
13 static const char* search_prefixes[] = {
21 std::vector<const char*> get_search_prefixes()
24 return vector<const char*>(begin(search_prefixes),
25 end(search_prefixes));
28 static void close_rwops(SDL_RWops* rwops)
33 delete_ptr<SDL_RWops> File_resource::open_rwops_(
const std::string& filename)
35 for (
auto prefix : search_prefixes) {
39 SDL_RWops* rwops = SDL_RWFromFile(path.c_str(),
"rb");
40 if (rwops)
return {rwops, &close_rwops};
43 throw File_error::could_not_open(filename);
46 File_resource::File_resource(
const std::string& filename)
47 : ptr_{open_rwops_(filename)}
52 delete_ptr<TTF_Font> Font::load_(
const std::string& filename,
56 TTF_Font* result = TTF_OpenFontRW(std::move(file).release(), 1, size);
57 if (result)
return {result, &TTF_CloseFont};
59 throw Font_error::could_not_load(filename);
63 : ptr_{
nullptr, &no_op_deleter}
65 File_resource fr(filename);
66 ptr_ = load_(filename, std::move(fr), size);
The game engine namespace.
Font(const std::string &filename, int size)
Loads a font from the specified TrueType font file, at the specified size.