]> git.jsancho.org Git - gacela.git/commitdiff
(no commit message)
authorjsancho <devnull@localhost>
Sun, 19 Sep 2010 19:12:17 +0000 (19:12 +0000)
committerjsancho <devnull@localhost>
Sun, 19 Sep 2010 19:12:17 +0000 (19:12 +0000)
gacela_SDL.lisp
gacela_draw.lisp

index eff4f1a6ddf942528b737ee13c278831de6c8440..5dd383eefed4f661033d5ea479c8ee4e3b36831b 100644 (file)
@@ -76,6 +76,7 @@
   "SDL_Quit ();")
 
 (defcfun "int gacela_SDL_SetVideoMode (int width, int height, int bpp, int flags)" 0
+  "close(2);"
   "return SDL_SetVideoMode (width, height, bpp, flags);")
 
 (defcfun "void gacela_SDL_WM_SetCaption (char *title, char *icon)" 0
   "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"))
index 93575a36b578178f578e4ab5ab6d425d7f875ed1..01181701575221b2b0dce1777b5e31bb32f99f56 100644 (file)
     (cond ((/= image 0)
           (let* ((width (surface-w image)) (height (surface-h image))
                  (power-2 (nearest-power-of-two (min width height)))
-                 zoomed-image)
+                 resized-image)
             (cond ((and (= width power-2) (= height power-2)) (values image width height))
-                  (t (setq zoomed-image (resize-image image power-2 power-2))
+                  (t (setq resized-image (resize-surface image power-2 power-2))
                      (SDL_FreeSurface image)
-                     (cond ((/= zoomed-image 0) (values zoomed-image width height))))))))))
-
-(defun resize-image (image width height)
-  (let ((old-width (surface-w image)) (old-height (surface-h image)))
-    (cond ((and (= width old-width) (= height old-height)) image)
-         (t (let ((zoomx (/ width old-width)) (zoomy (/ height old-height)) zoomed-image)
-              (setq zoomed-image (zoomSurface image zoomx zoomy 0))
-              (let ((new-width (surface-w zoomed-image)) (new-height (surface-h zoomed-image)))
-                (cond ((or (and (= width new-width) (= height new-height))
-                           (and (= old-width new-width) (= old-height new-height))) zoomed-image)
-                      (t (let (rezoomed)
-                           (setq rezoomed (resize-image zoomed-image width height))
-                           (SDL_FreeSurface zoomed-image)
-                           rezoomed)))))))))
+                     (cond ((/= resized-image 0) (values resized-image width height))))))))))
 
 (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)))