Mercurial > projects > ldc
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); +}