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