stratagus-cvs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Stratagus-CVS] stratagus/src/video linedraw.c


From: Nehal Mistry
Subject: [Stratagus-CVS] stratagus/src/video linedraw.c
Date: Thu, 20 Nov 2003 21:10:51 -0500

CVSROOT:        /cvsroot/stratagus
Module name:    stratagus
Branch:         
Changes by:     Nehal Mistry <address@hidden>   03/11/20 21:10:51

Modified files:
        src/video      : linedraw.c 

Log message:
        can draw circles now

Patches:
Index: stratagus/src/video/linedraw.c
diff -u stratagus/src/video/linedraw.c:1.45 stratagus/src/video/linedraw.c:1.46
--- stratagus/src/video/linedraw.c:1.45 Thu Nov 20 20:26:11 2003
+++ stratagus/src/video/linedraw.c      Thu Nov 20 21:10:50 2003
@@ -27,7 +27,7 @@
 //      Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
 //      02111-1307, USA.
 //
-//     $Id: linedraw.c,v 1.45 2003/11/21 01:26:11 nehalmistry Exp $
+//     $Id: linedraw.c,v 1.46 2003/11/21 02:10:50 nehalmistry Exp $
 
 //@{
 
@@ -780,28 +780,104 @@
     VideoFillRectangle(color, x, y, w, h);
 }
 
-global void VideoDrawCircleClip(SDL_Color color, int x, int y,
-    int w)
+global void VideoDrawCircle(SDL_Color color, int x, int y, int r)
 {
-//    DebugCheck(1);
+    int p;
+    int px;
+    int py;
+
+    p = 1 - r;
+    py = r;
+
+    for (px = 0; px <= py + 1; ++px) {
+       VideoDrawPixel(color, x + px, y + py);
+       VideoDrawPixel(color, x + px, y - py);
+       VideoDrawPixel(color, x - px, y + py);
+       VideoDrawPixel(color, x - px, y - py);
+
+       VideoDrawPixel(color, x + py, y + px);
+       VideoDrawPixel(color, x + py, y - px);
+       VideoDrawPixel(color, x - py, y + px);
+       VideoDrawPixel(color, x - py, y - px);
+
+       if (p < 0) {
+           p += 2 * px + 3;
+       } else {
+           p += 2 * (px - py) + 5;
+           py -= 1;
+       }
+    }
+}
+
+global void VideoDrawCircleClip(SDL_Color color, int x, int y, int r)
+{
+    // FIXME: clip
+    VideoDrawCircle(color, x, y, r);
 }
 
 global void VideoDrawTransCircleClip(SDL_Color color, int x, int y,
-    int w, unsigned char alpha)
+    int r, unsigned char alpha)
 {
-//    DebugCheck(1);
+    // FIXME: clip, trans
+    VideoDrawCircle(color, x, y, r);
+}
+
+global void VideoFillCircle(SDL_Color color, int x, int y, int r)
+{
+    int p;
+    int px;
+    int py;
+    int f;
+
+    p = 1 - r;
+    py = r;
+
+    for (px = 0; px <= py + 1; ++px) {
+       VideoDrawPixel(color, x + px, y + py);
+       VideoDrawPixel(color, x + px, y - py);
+       VideoDrawPixel(color, x - px, y + py);
+       VideoDrawPixel(color, x - px, y - py);
+
+       VideoDrawPixel(color, x + py, y + px);
+       VideoDrawPixel(color, x + py, y - px);
+       VideoDrawPixel(color, x - py, y + px);
+       VideoDrawPixel(color, x - py, y - px);
+
+       // Fill It
+       for (f = 0; f < py; ++f) {
+           VideoDrawPixel(color, x + px, y + f);
+           VideoDrawPixel(color, x + px, y - f);
+           VideoDrawPixel(color, x - px, y + f);
+           VideoDrawPixel(color, x - px, y - f);
+       }
+       for (f = 0; f < px; ++f) {
+           VideoDrawPixel(color, x + py, y + f);
+           VideoDrawPixel(color, x + py, y - f);
+           VideoDrawPixel(color, x - py, y + f);
+           VideoDrawPixel(color, x - py, y - f);
+       }
+
+
+       if (p < 0) {
+           p += 2 * px + 3;
+       } else {
+           p += 2 * (px - py) + 5;
+           py -= 1;
+       }
+    }
 }
 
-global void VideoFillCircleClip(SDL_Color color, int x, int y,
-    int w)
+global void VideoFillCircleClip(SDL_Color color, int x, int y, int r)
 {
-//    DebugCheck(1);
+    // FIXME: clip
+    VideoFillCircle(color, x, y, r);
 }
 
 global void VideoFillTransCircleClip(SDL_Color color, int x, int y,
-    int w, unsigned char alpha)
+    int r, unsigned char alpha)
 {
-//    DebugCheck(1);
+    // FIXME: clip, trans
+    VideoFillCircle(color, x, y, r);
 }
 
 global void DebugTestDisplayLines(void)




reply via email to

[Prev in Thread] Current Thread [Next in Thread]