1require "theme" 2 3local type = stead.type 4 5stead.font_load = instead_font_load 6stead.font_free = instead_font_free 7stead.font_scaled_size = instead_font_scaled_size 8stead.sprite_alpha = instead_sprite_alpha 9stead.sprite_dup = instead_sprite_dup 10stead.sprite_scale = instead_sprite_scale 11stead.sprite_rotate = instead_sprite_rotate 12stead.sprite_text = instead_sprite_text 13stead.sprite_text_size = instead_sprite_text_size 14stead.sprite_draw = instead_sprite_draw 15stead.sprite_copy = instead_sprite_copy 16stead.sprite_compose = instead_sprite_compose 17stead.sprite_fill = instead_sprite_fill 18stead.sprite_pixel = instead_sprite_pixel 19stead.sprite_load = instead_sprite_load 20stead.sprite_free = instead_sprite_free 21stead.sprite_size = instead_sprite_size 22stead.sprites_free = instead_sprites_free 23stead.sprite_colorkey = instead_sprite_colorkey 24stead.sprite_pixels = instead_sprite_pixels 25 26sprite = { 27 nam = 'sprites'; 28 object_type = true; 29 system_type = true; 30 31 screen = function(s) 32 if theme.get 'scr.gfx.mode' ~= 'direct' then 33 return 34 end 35 return 'screen' 36 end; 37 38 font_scaled_size = function(size) 39 return stead.font_scaled_size(size); 40 end; 41 font = function(font, size, ...) 42 return stead.font_load(font, size, ...); 43 end; 44 free_font = function(font) 45 return stead.font_free(font); 46 end; 47 font_height = function(font) 48 local w,h = stead.sprite_text_size(font) 49 return h 50 end; 51 alpha = function(name, alpha, ...) 52 return stead.sprite_alpha(name, alpha, ...); 53 end; 54 colorkey = function(name, color, ...) 55 return stead.sprite_colorkey(name, color, ...); 56 end; 57 dup = function(name, ...) 58 return stead.sprite_dup(name, ...); 59 end; 60 scale = function(name, xs, ys, smooth, ...) 61 if smooth == nil then 62 smooth = true -- default is on 63 end 64 return stead.sprite_scale(name, xs, ys, smooth,...); 65 end; 66 rotate = function(name, angle, smooth, ...) 67 if smooth == nil then 68 smooth = true -- default is on 69 end 70 return stead.sprite_rotate(name, angle, smooth, ...); 71 end; 72 text = function(font, text, col, style, ...) 73 return stead.sprite_text(font, text, col, style, ...); 74 end; 75 size = function(spr) 76 return stead.sprite_size(spr); 77 end; 78 text_size = function(fnt, ...) 79 return stead.sprite_text_size(fnt, ...); 80 end; 81 draw = function(s, fx, fy, fw, fh, d, x, y, alpha) 82 if d == nil and x == nil and y == nil then 83 d, x, y, alpha = fx, fy, fw, fh 84 fx, fy, fw, fh = 0, 0, -1, -1 85 end 86 return stead.sprite_draw(s, fx, fy, fw, fh, d, x, y, alpha); 87 end; 88 copy = function(s, fx, fy, fw, fh, d, x, y, alpha) 89 if d == nil and x == nil and y == nil then 90 d, x, y, alpha = fx, fy, fw, fh 91 fx, fy, fw, fh = 0, 0, -1, -1 92 end 93 if alpha then 94 local ss = stead.sprite_alpha(s, alpha) 95 local r = stead.sprite_copy(ss, fx, fy, fw, fh, d, x, y, alpha); 96 stead.sprite_free(ss) 97 return r 98 end 99 return stead.sprite_copy(s, fx, fy, fw, fh, d, x, y, alpha); 100 end; 101 compose = function(s, fx, fy, fw, fh, d, x, y, alpha) 102 if d == nil and x == nil and y == nil then 103 d, x, y, alpha = fx, fy, fw, fh 104 fx, fy, fw, fh = 0, 0, -1, -1 105 end 106 if alpha then 107 local ss = stead.sprite_alpha(s, alpha) 108 local r = stead.sprite_compose(ss, fx, fy, fw, fh, d, x, y, alpha); 109 stead.sprite_free(ss) 110 return r 111 end 112 return stead.sprite_compose(s, fx, fy, fw, fh, d, x, y, alpha); 113 end; 114 fill = function(d, x, y, w, h, col) 115 if h == nil and col == nil then 116 return stead.sprite_fill(d, 0, 0, -1, -1, x); 117 end 118 return stead.sprite_fill(d, x, y, w, h, col); 119 end; 120 pixel = function(d, x, y, col, alpha) 121 return stead.sprite_pixel(d, x, y, col, alpha) 122 end; 123 load = function(fname, ...) 124 return stead.sprite_load(fname, ...); 125 end; 126 blank = function(w, h, ...) 127 local t = 'blank:'..stead.tostr(stead.math.floor(w))..'x'..stead.tostr(stead.math.floor(h)) 128 return stead.sprite_load(t, ...) 129 end; 130 box = function(w, h, col, alpha, ...) 131 local t = 'box:'..stead.tostr(stead.math.floor(w))..'x'..stead.tostr(stead.math.floor(h)) 132 if col then 133 t = t..','..stead.tostr(col) 134 end 135 if alpha then 136 t = t..','..stead.tostr(alpha) 137 end 138 return stead.sprite_load(t, ...) 139 end; 140 free = function(key) 141 return stead.sprite_free(key); 142 end; 143} 144 145stead.module_done(function() 146 stead.sprites_free(); 147end) 148 149local function compat_api() 150 if not stead.api_atleast(1, 7, 1) then 151 font_load = instead_font_load 152 font_free = instead_font_free 153 font_scaled_size = instead_font_scaled_size 154 155 sprite_alpha = instead_sprite_alpha 156 sprite_dup = instead_sprite_dup 157 sprite_scale = instead_sprite_scale 158 sprite_rotate = instead_sprite_rotate 159 sprite_text = instead_sprite_text 160 sprite_text_size = instead_sprite_text_size 161 sprite_draw = instead_sprite_draw 162 sprite_copy = instead_sprite_copy 163 sprite_compose = instead_sprite_compose 164 sprite_fill = instead_sprite_fill 165 sprite_pixel = instead_sprite_pixel 166 sprite_load = instead_sprite_load 167 sprite_free = instead_sprite_free 168 sprite_size = instead_sprite_size 169 sprites_free = instead_sprites_free 170 end 171end 172 173stead.module_start(function(load) 174 if compat_api and not load then 175 compat_api() 176 compat_api = nil 177 end 178end) 179