diff demos/qd.d @ 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 f869c636a113
children 6aaa3d3c1183
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);
+}