changeset 450:22a56b65872b

Trying to get the old QD demo to work.
author Tomas Lindquist Olsen <tomas.l.olsen@gmail.com>
date Fri, 01 Aug 2008 21:55:57 +0200
parents 56265fa07c7d
children 4d9108f1fbf4
files demos/qd.d demos/qd1.d
diffstat 2 files changed, 49 insertions(+), 21 deletions(-) [+]
line wrap: on
line diff
--- a/demos/qd.d	Fri Aug 01 21:54:40 2008 +0200
+++ b/demos/qd.d	Fri Aug 01 21:55:57 2008 +0200
@@ -1,5 +1,7 @@
 module qd;
 
+alias char[] string;
+
 extern(C) {
   struct SDL_Rect {
     short x, y;
@@ -107,6 +109,7 @@
   SDL_GetRGBA(*bufp, display.format, &(*col)[0], &(*col)[1], &(*col)[2], &(*col)[3]);
 }
 
+align(1)
 struct rgb {
   ubyte[3] values;
   ubyte r() { return values[0]; }
@@ -288,14 +291,23 @@
   }
 }
 
-pragma(LLVM_internal, "intrinsic", "llvm.sqrt.f32") {
-    float sqrt(float val);
+import llvmdc.intrinsics;
+alias llvm_sqrt_f32 sqrt;
+alias llvm_sqrt_f64 sqrt;
+version(X86)
+{
+    alias llvm_sqrt_f80 sqrt;
 }
-pragma(LLVM_internal, "intrinsic", "llvm.sqrt.f64") {
-    double sqrt(double val);
-    real sqrt(real val);
+else
+{
+    static import tango.stdc.math;
+    real sqrt(real x)
+    {
+        return tango.stdc.math.sqrtl(x);
+    }
 }
 
+
 template circle_bresenham_pass(bool first) {
   const string xy=(first?"x":"y");
   const string yx=(first?"y":"x");
@@ -326,7 +338,6 @@
   ";
 }
 
-import std.stdio;
 void circle(T...)(T t) {
   static assert(T.length!<3, "Circle: Needs x, y and radius");
   int cx=t[0], cy=t[1], xradius=t[2];
@@ -434,7 +445,7 @@
         if (key) key(evt.key.keysym.sym, false);
         break;
       case SDL_EventType.Quit:
-        throw new Error("Quit");
+        throw new Exception("Quit");
         break;
       default: break;
     }
@@ -454,3 +465,10 @@
 void events(void delegate(int, bool) key, void delegate(int, int) mouse) {
   events(key, (int x, int y, ubyte b, bool p) { mouse(x, y); });
 }
+
+void sleep(float secs)
+{
+    assert(secs >= 0);
+    uint ms = cast(uint)(secs * 1000);
+    SDL_Delay(ms);
+}
--- a/demos/qd1.d	Fri Aug 01 21:54:40 2008 +0200
+++ b/demos/qd1.d	Fri Aug 01 21:55:57 2008 +0200
@@ -1,19 +1,29 @@
 module qd1;
 import qd;
-import std.c.time: sleep;
 void main() {
   screen(640, 480);
-  pset(10, 10);
-  line(0, 0, 100, 100, Box, Back(Red~Black));
-  for (int i=0; i<=100; i+=10) {
-    line(i, 0, 100-i, 100);
-    line(0, i, 100, 100-i);
-  }
-  circle(100, 100, 50, 15, White~Black, Fill=White~Black);
-  paint(200, 200, Red, Back=White);
-  circle(100, 100, 50, 15, White);
-  paint(200, 200, Black);
-  pset(10, 11); pset(10, 11, Black);
-  pset(10, 10);
-  sleep(5);
+  sleep(1);
+
+  cls(Red);
+  sleep(1);
+
+  cls(Green);
+  sleep(1);
+
+  cls(Blue);
+  sleep(1);
+
+//   pset(10, 10);
+//   line(0, 0, 100, 100, Box, Back(Red~Black));
+//   for (int i=0; i<=100; i+=10) {
+//     line(i, 0, 100-i, 100);
+//     line(0, i, 100, 100-i);
+//   }
+//   circle(100, 100, 50, 15, White~Black, Fill=White~Black);
+//   paint(200, 200, Red, Back=White);
+//   circle(100, 100, 50, 15, White);
+//   paint(200, 200, Black);
+//   pset(10, 11); pset(10, 11, Black);
+//   pset(10, 10);
+//   sleep(1);
 }