Exemple #1
0
/**********
 * main:
 *
 **********/
int main
  (int				argc,
   char				**argv)
{

  vprefSetArgs(argc, argv);
  vapplicationStartup();
  vwindowStartup();
  vbuttonStartup();
  vcontrolStartup();
  vdialogStartup();
  vdomainitemStartup();
  vmenuStartup();
  vmenubarStartup();
  vsliderStartup();
  vtextitemStartup();

  srand(time((time_t *)NULL));
  objectDataPool = vpoolCreate(sizeof(objectData));

  demoLoadImages();
  demoLoad();
  demoOpen();

  /* Process events until the window is closed */

  veventProcess();

  demoUnload();
  demoUnloadImages();
  vpoolDestroy(objectDataPool);

  exit( EXIT_SUCCESS );
  return EXIT_FAILURE;
}  /**  main()  **/
Exemple #2
0
/**********
 * demoOpen:
 *
 **********/
void demoOpen
  (void)
{
  int		w, h;

  if (demoDialog == NULL)
    demoLoad();

  vdialogCalcMinSize(demoDialog, &w, &h);
  vdialogResize(demoDialog, w, h);
  vwindowPlace(vdialogGetWindow(demoDialog), vwindowGetRoot(),
	       vrectPLACE_INSET | vrectPLACE_LEFT, vrectPLACE_CENTER);
  vdialogOpen(demoDialog);

}  /**  demoOpen()  **/
Exemple #3
0
/**********
 * _demoAddObjects:
 *
 **********/
static void _demoAddObjects
  (long					count)
{
  register long				i;
  vdomainObjectSet			*objectSet;
  vrect					*bounds;
  vrect					rect;
  vdomainObject				*object;
  vcolorSpec				 spec;
  vcolor				*color;
  vimage				*image;
  objectData				*data;
  int					 imageIndex;

  if (demoDialog == NULL)
    demoLoad();

  objectSet = vdomainCreateObjectSet(NULL);

  vcolorInitSpec(&spec);

  for (i = 0; i < count; i++)
    {
      imageIndex = (i % imageArrayCount);
      image  = imageArray[imageIndex];
      bounds = vdomainGetBounds(demoDomain);

      switch (drawType)
      {
        case demoDRAW_BOXES:
	  vrectSet(rand() % (bounds->w - 50),
		   rand() % (bounds->h - 50),
		   rand() % 100 + 2, rand() % 100 + 2, &rect);
	  break;

        case demoDRAW_IMAGES:
	  vrectSet(rand() % (bounds->w - vimageGetWidth(image) - 4),
		   rand() % (bounds->h - vimageGetHeight(image) - 4),
		   vimageGetWidth(image) + 4,
		   vimageGetHeight(image) + 4, &rect);
	  break;

        case demoDRAW_TEXT:
	  vrectSet(rand() % (bounds->w - 50),
		   rand() % (bounds->h - 50),
		   rand() % 100 + 2, rand() % 100 + 2, &rect);
	  break;
      }

      object = vdomainAddObject(demoDomain);
      vdomainSetObjectBounds(demoDomain, vdomainObjectToSet(object), &rect);
      vcolorSetSpecRGB(&spec, 
		       rand() % vcolorCOMPONENT_MAX,
		       rand() % vcolorCOMPONENT_MAX,
		       rand() % vcolorCOMPONENT_MAX);
      color = vcolorInternSpec(&spec);

      data = vpoolAlloc(objectDataPool);
      data->color = color;
      data->position = i;
      data->imageIndex = imageIndex;

      vdomainSetObjectData(demoDomain, vdomainObjectToSet(object), data);

      vdomainAddToObjectSet(&objectSet, object);
    }

  vcolorDestroySpec(&spec);

  vdomainShowObjects(demoDomain, objectSet);

  vdomainDestroyObjectSet(objectSet);

}  /**  _demoAddObjects()  **/
int main(int argc, char **argv)
{
    demoLoad(argc, argv);
    Window window = createWindow("Teapots");
    Graphics graphics(window);
    Graphics::Flags flags;
    if (!graphics.init(flags)) {
        return 1;
    }
    il_pos pos = il_pos_new(&graphics.space);
    il_pos_setPosition(&pos, il_vec3_new(0, -4, 0));
    Teapot teapot;
    Teapots drawable(pos.id, teapot);
    graphics.drawables.push_back(&drawable);

    char *error;
    if (!teapot.build(graphics.rm, &error)) {
        il_error("Teapot: %s", error);
        free(error);
        return 1;
    }

    il_pos_setPosition(&graphics.space.camera, il_vec3_new(0, 0, 20));

    il_pos lightp = il_pos_new(&graphics.space);
    il_pos_setPosition(&lightp, il_vec3_new(20, 3, 20));

    ilG_light lightl;
    lightl.color = il_vec3_new(.8f*2, .7f*2, .2f*2);
    lightl.radius = 50;

    State state;

    unsigned lightp_id = lightp.id;
    state.sunlight_locs = &lightp_id;
    state.sunlight_lights = &lightl;
    state.sunlight_count = 1;

    typedef std::chrono::steady_clock clock;
    typedef std::chrono::duration<double> duration;

    clock::time_point start = clock::now();
    while (1) {
        SDL_Event ev;
        while (SDL_PollEvent(&ev)) {
            switch (ev.type) {
            case SDL_QUIT:
                il_log("Stopping");
                window.close();
                return 0;
            }
        }

        duration delta = clock::now() - start;
        const double secs = 5.0;
        const int scale = 20;
        il_vec3 v;
        v.x = float(sin(delta.count() * M_PI * 2.0 / secs) * scale);
        v.y = 0.f;
        v.z = float(cos(delta.count() * M_PI * 2.0 / secs) * scale);
        il_quat q = il_quat_fromAxisAngle(0, 1, 0, float(delta.count() * M_PI * 2.0 / secs));
        il_pos_setPosition(&graphics.space.camera, v);
        il_pos_setRotation(&graphics.space.camera, q);

        graphics.draw(state);
    }
}