"const SDL_Surface *s = surface;"
"return s->format->BytesPerPixel;")
-(defcfun "int gacela_resize_surface (int surface, int width, int height)" 0
- "const SDL_Surface *s = surface;"
- "if (s->w == width && s->h == height) {"
- " return s;"
- "} else {"
- " return zoomSurface (s, width / s->w, height / s->h, 0);"
- "}")
-
;(defentry apply-surface2 (int int int int int int int int int) (void "apply_surface"))
;(defentry render-text2 (int string int int int) (int "render_text"))
;(defentry box-collision (int int int int int int) (int "box_collision"))
(defentry surface-h (int) (int "gacela_surface_h"))
(defentry surface-pixels (int) (int "gacela_surface_pixels"))
(defentry surface-format-BytesPerPixel (int) (int "gacela_surface_format_BytesPerPixel"))
-(defentry resize-surface (int int int) (int "gacela_resize_surface"))
(SDL_FreeSurface image)
(cond ((/= resized-image 0) (values resized-image width height))))))))))
+(defun resize-surface (surface width height)
+ (let ((old-width (surface-w surface)) (old-height (surface-h surface)))
+ (cond ((and (= width old-width) (= height old-height)) surface)
+ (t (let ((zoomx (/ (+ width 0.5) old-width)) (zoomy (/ (+ height 0.5) old-height)))
+ (zoomSurface surface zoomx zoomy 0))))))
+
(defun load-texture (filename &key (min-filter GL_LINEAR) (mag-filter GL_LINEAR) static)
(let ((key (make-resource-texture :filename filename :min-filter min-filter :mag-filter mag-filter)))
(cond ((get-resource key) key)