/********** * 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() **/
/********** * 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() **/
/********** * _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); } }