rnd-20030126-2-src
authorHolger Schemel <info@artsoft.org>
Sun, 26 Jan 2003 01:08:30 +0000 (02:08 +0100)
committerHolger Schemel <info@artsoft.org>
Sat, 30 Aug 2014 08:40:02 +0000 (10:40 +0200)
src/conftime.h
src/init.c
src/libgame/msdos.c
src/libgame/msdos.h
src/libgame/sdl.c
src/libgame/sdl.h
src/libgame/system.c
src/libgame/system.h
src/libgame/x11.c
src/libgame/x11.h

index ec7ca768564aad531fa665e2c34636f7351ee152..9f661ab5a9d9a997d74571a3c427ead60d4697a4 100644 (file)
@@ -1 +1 @@
-#define COMPILE_DATE_STRING "[2003-01-26 00:14]"
+#define COMPILE_DATE_STRING "[2003-01-26 02:06]"
index 448a2876bfbfa6ca171d9242a73e2824edeb4851..34673f372ffffac791b2c965d24ea1414262beac 100644 (file)
@@ -264,6 +264,20 @@ static void ReinitializeGraphics()
 
   /* !!! TEST ONLY !!! */
 
+#if 1
+
+  {
+    Bitmap *tst_bitmap = graphic_info[IMG_SAND].bitmap;
+    Bitmap *tmp_bitmap = ZoomBitmap(tst_bitmap,
+                                   tst_bitmap->width / 2,
+                                   tst_bitmap->height / 2);
+
+    BlitBitmap(tmp_bitmap, tst_bitmap, 0, 0, 256, 224, 0, 448);
+
+    FreeBitmap(tmp_bitmap);
+  }
+
+#else
 #ifdef TARGET_SDL
 
   {
@@ -285,6 +299,7 @@ static void ReinitializeGraphics()
               0, 0, 512, 448,
               0, 448, 256, 224);
 
+#endif
 #endif
 }
 
index 29cc036028c7981817f400fa1f6e40037a342974..9cd4ddcc6f0a162998437fe8527348195c8fddcb 100644 (file)
@@ -917,6 +917,14 @@ Pixel AllegroGetPixel(Drawable d, int x, int y)
   return getpixel((BITMAP *)d, x, y);
 }
 
+void AllegroZoomBitmap(Drawable src, Drawable dst,
+                      int src_width, int src_height,
+                      int dst_width, int dst_height)
+{
+  stretch_blit((BITMAP *)src, (BITMAP *)dst,
+              0, 0, src_width, src_height, 0, 0, dst_width, dst_height);
+}
+
 void MSDOSOpenAudio(void)
 {
   if (allegro_init_audio())
index 5ddb3eef42aea353ed8e7ab3eeafd492d01143f3..e976420e06f0931e9ee23c0df69753d1fbe36de6 100644 (file)
@@ -747,6 +747,8 @@ void XAutoRepeatOff(Display *);
 void AllegroDrawLine(Drawable, int, int, int, int, Pixel);
 Pixel AllegroGetPixel(Drawable, int, int);
 
+void AllegroZoomBitmap(Drawable, Drawable, int, int, int, int);
+
 void MSDOSOpenAudio(void);
 void MSDOSCloseAudio(void);
 
index c6f4da020f4defcf35b43eb20f2bdd331ddcb9d1..46e41d78a3e0524a1b2710102cee0ccbaa6d7cb5 100644 (file)
@@ -829,14 +829,6 @@ void sge_LineRGB(SDL_Surface *Surface, Sint16 x1, Sint16 y1, Sint16 x2,
 /* http://www.ferzkopp.net/Software/SDL_gfx-2.0/index.html                   */
 /* ========================================================================= */
 
-typedef struct
-{
-  Uint8 r;
-  Uint8 g;
-  Uint8 b;
-  Uint8 a;
-} tColorRGBA;
-
 /*
   -----------------------------------------------------------------------------
   32 bit zoomer
@@ -845,6 +837,14 @@ typedef struct
   -----------------------------------------------------------------------------
 */
 
+typedef struct
+{
+  Uint8 r;
+  Uint8 g;
+  Uint8 b;
+  Uint8 a;
+} tColorRGBA;
+
 int zoomSurfaceRGBA(SDL_Surface *src, SDL_Surface *dst)
 {
   int x, y, sx, sy, *sax, *say, *csax, *csay, csx, csy;
@@ -1028,32 +1028,10 @@ int zoomSurfaceY(SDL_Surface * src, SDL_Surface * dst)
   -----------------------------------------------------------------------------
 */
 
-void zoomSurfaceSize(int width, int height, float zoom_x, float zoom_y,
-                    int *dst_width, int *dst_height)
-{
-  const float value_limit = 0.001;
-
-  /* sanity check zoom factors */
-  if (zoom_x < value_limit)
-    zoom_x = value_limit;
-  if (zoom_y < value_limit)
-    zoom_y = value_limit;
-
-  /* calculate target size */
-  *dst_width  = (int) ((float) width  * zoom_x);
-  *dst_height = (int) ((float) height * zoom_y);
-
-  if (*dst_width < 1)
-    *dst_width = 1;
-  if (*dst_height < 1)
-    *dst_height = 1;
-}
-
-SDL_Surface *zoomSurface(SDL_Surface *src, float zoom_x, float zoom_y)
+SDL_Surface *zoomSurface(SDL_Surface *src, int dst_width, int dst_height)
 {
   SDL_Surface *zoom_src = NULL;
   SDL_Surface *zoom_dst = NULL;
-  int dst_width, dst_height;
   boolean is_converted = FALSE;
   boolean is_32bit;
   int i;
@@ -1079,10 +1057,6 @@ SDL_Surface *zoomSurface(SDL_Surface *src, float zoom_x, float zoom_y)
     is_converted = TRUE;
   }
 
-  /* get size of destination surface */
-  zoomSurfaceSize(zoom_src->w, zoom_src->h, zoom_x, zoom_y,
-                 &dst_width, &dst_height);
-
   /* allocate surface to completely contain the zoomed surface */
   if (is_32bit)
   {
@@ -1131,9 +1105,14 @@ SDL_Surface *zoomSurface(SDL_Surface *src, float zoom_x, float zoom_y)
   return zoom_dst;
 }
 
-SDL_Surface *SDLZoomSurface(SDL_Surface *src, float zoom_x, float zoom_y)
+void SDLZoomBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap)
 {
-  return zoomSurface(src, zoom_x, zoom_y);
+  int dst_width = dst_bitmap->width;
+  int dst_height = dst_bitmap->height;
+
+  SDL_FreeSurface(dst_bitmap->surface);
+
+  dst_bitmap->surface = zoomSurface(src_bitmap->surface, dst_width,dst_height);
 }
 
 
index 8d9f09415d8029961af71584389b73b5e615ee70..4b4f34d31beb0c37dbe7b5afffcba920f831a81e 100644 (file)
@@ -330,7 +330,7 @@ inline void SDLDrawSimpleLine(Bitmap *, int, int, int, int, unsigned int);
 inline void SDLDrawLine(Bitmap *, int, int, int, int, Uint32);
 inline Pixel SDLGetPixel(Bitmap *, int, int);
 
-SDL_Surface *SDLZoomSurface(SDL_Surface *, float, float);
+void SDLZoomBitmap(Bitmap *, Bitmap *);
 
 Bitmap *SDLLoadImage(char *);
 
index 301cb271d28c69b065bd17ead43b8b544d3ba4a7..1fbafd7818052124b5e0b17847bfc5a35f1d6258 100644 (file)
@@ -865,6 +865,19 @@ void ReloadCustomImage(Bitmap *bitmap, char *basename)
   free(new_bitmap);
 }
 
+Bitmap *ZoomBitmap(Bitmap *src_bitmap, int zoom_width, int zoom_height)
+{
+  Bitmap *dst_bitmap = CreateBitmap(zoom_width, zoom_height, DEFAULT_DEPTH);
+
+#if defined(TARGET_SDL)
+  SDLZoomBitmap(src_bitmap, dst_bitmap);
+#else
+  X11ZoomBitmap(src_bitmap, dst_bitmap);
+#endif
+
+  return dst_bitmap;
+}
+
 
 /* ========================================================================= */
 /* audio functions                                                           */
index a08edfc63a3719c2d05f6e1093028410e7066f0d..086b5afad879c989e2370e2922cdc7cdf73f91f9 100644 (file)
@@ -651,6 +651,8 @@ Bitmap *LoadImage(char *);
 Bitmap *LoadCustomImage(char *);
 void ReloadCustomImage(Bitmap *, char *);
 
+Bitmap *ZoomBitmap(Bitmap *, int, int);
+
 inline void OpenAudio(void);
 inline void CloseAudio(void);
 inline void SetAudioMode(boolean);
index 6c2942d1f00b5128fdd447aa33a470cf2d2e6577..d8e5186398c603e502c12190793d7bfddba10964 100644 (file)
@@ -232,6 +232,21 @@ static DrawWindow *X11InitWindow()
   return new_window;
 }
 
+inline void X11NativeZoomBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap)
+{
+}
+
+void X11ZoomBitmap(Bitmap *src_bitmap, Bitmap *dst_bitmap)
+{
+#if defined(TARGET_ALLEGRO)
+  AllegroZoomBitmap(src_bitmap->drawable, dst_bitmap->drawable,
+                   src_bitmap->width, src_bitmap->height,
+                   dst_bitmap->width, dst_bitmap->height);
+#else
+  X11NativeZoomBitmap(src_bitmap, dst_bitmap);
+#endif
+}
+
 static void SetImageDimensions(Bitmap *bitmap)
 {
 #if defined(TARGET_ALLEGRO)
index c643dc72255e8ca587d5106fad00f61ca5a2293b..3db9bae3aac2427a7329a46eaf8535e1a1341ef6 100644 (file)
@@ -304,6 +304,9 @@ struct XY
 
 inline void X11InitVideoDisplay(void);
 inline void X11InitVideoBuffer(DrawBuffer **, DrawWindow **);
+
+void X11ZoomBitmap(Bitmap *, Bitmap *);
+
 Bitmap *X11LoadImage(char *);
 
 #endif /* X11_H */