Berry

相変わらず全然進んで無いです、はい。

import std.stdio;
import berry;

extern (C) int captureKey(SDL_Event *e)
{
  switch (e.key.keysym.sym)
  {
    case SDLK_ESCAPE:
      SDL_Event q;
      q.type = SDL_QUIT;
///      q.quit.type = SDL_QUIT; ///どっちでもおkっぽい
      SDL_PushEvent(&q);
      break;
    default:
      break;
  }
  return 1;
}

int main(char[][] args)
{
  try
  {
    scope b = new Berry(SDL_INIT_VIDEO); ///this(ulong)
    b.createSurface(); ///default parameter 640x480x0(32)+SWSURFACE

    bool done = false;
    SDL_Event e;
    SDL_SetEventFilter(&captureKey);

    while (!done)
    {
      while (SDL_PollEvent(&e))
      {
        switch (e.type)
        {
          case SDL_QUIT:
            done = !done;
            break;
          default:
            break;
        }
      }
      SDL_Delay(1000/30); /// 33.333...
    }
  }
  catch (Error e)
  {
    writefln("(EE) failed: " ~ e.msg);
  }
  finally
  {
    SDL_Quit();
  }
  return 0;
}