static int write_meta(int fd, int ibuf, int nbuf) { unsigned long long nsamples = (unsigned long long)nbuf * maxlen / SSIZE; char buf[128]; snprintf(buf, 128, "IBUF=%d\n" "NBUF=%d\n" "NSAMPLES=%llu\n" "HTIME=%.3f\n", ibuf, nbuf, nsamples, htime()); write(fd, buf, strlen(buf)); }
void april_init(const harray<hstr>& args) { srand((unsigned int)htime()); april::init(new CustomRenderSystem(), new CustomWindow()); april::createRenderSystem(); april::createWindow((int)drawRect.w, (int)drawRect.h, false, "APRIL: Simple Interface"); april::window->setUpdateDelegate(&updateDelegate); april::window->setSystemDelegate(&systemDelegate); april::window->setMouseDelegate(&mouseDelegate); texture = april::rendersys->createTextureFromResource(RESOURCE_PATH "jpt_final", april::Texture::TYPE_MANAGED); textureRect.setSize(texture->getWidth() * 0.5f, texture->getHeight() * 0.5f); textureRect.x = -textureRect.w / 2; textureRect.y = -textureRect.h / 2; }
void april_init(const harray<hstr>& args) { #ifdef __APPLE__ // On MacOSX, the current working directory is not set by // the Finder, since you are expected to use Core Foundation // or ObjC APIs to find files. // So, when porting you probably want to set the current working // directory to something sane (e.g. .../Resources/ in the app // bundle). // In this case, we set it to parent of the .app bundle. { // curly braces in order to localize variables CFURLRef url = CFBundleCopyBundleURL(CFBundleGetMainBundle()); CFStringRef path = CFURLCopyFileSystemPath(url, kCFURLPOSIXPathStyle); // let's hope chdir() will be happy with utf8 encoding const char* cpath = CFStringGetCStringPtr(path, kCFStringEncodingUTF8); char* cpath_alloc = NULL; if (cpath == NULL) { // CFStringGetCStringPtr is allowed to return NULL. bummer. // we need to use CFStringGetCString instead. cpath_alloc = (char*)malloc(CFStringGetLength(path) + 1); CFStringGetCString(path, cpath_alloc, CFStringGetLength(path) + 1, kCFStringEncodingUTF8); } else { // even though it didn't return NULL, we still want to slice off bundle name. cpath_alloc = (char*)malloc(CFStringGetLength(path) + 1); strcpy(cpath_alloc, cpath); } // just in case / is appended to .app path for some reason if (cpath_alloc[CFStringGetLength(path) - 1] == '/') { cpath_alloc[CFStringGetLength(path) - 1] = 0; } // replace pre-.app / with a null character, thus // cutting off .app's name and getting parent of .app. strrchr(cpath_alloc, '/')[0] = 0; // change current dir using posix api chdir(cpath_alloc); free(cpath_alloc); // even if null, still ok CFRelease(path); CFRelease(url); } #endif srand((unsigned int)htime()); updateDelegate = new UpdateDelegate(); systemDelegate = new SystemDelegate(); mouseDelegate = new MouseDelegate(); #if defined(_ANDROID) || defined(_IOS) || defined(_WINRT) drawRect.setSize(april::getSystemInfo().displayResolution); #endif april::init(april::RenderSystemType::Default, april::WindowType::Default); april::createRenderSystem(); april::createWindow((int)drawRect.w, (int)drawRect.h, false, "APRIL: Tic Tac Toe Demo"); #ifdef _WINRT april::window->setParam("cursor_mappings", "101 " RESOURCE_PATH "cursor\n102 " RESOURCE_PATH "simple"); #endif april::window->setUpdateDelegate(updateDelegate); april::window->setSystemDelegate(systemDelegate); april::window->setMouseDelegate(mouseDelegate); cursor = april::window->createCursorFromResource(RESOURCE_PATH "cursor"); april::window->setCursor(cursor); background = april::rendersys->createTextureFromResource(RESOURCE_PATH "texture"); x_symbol = april::rendersys->createTextureFromResource(RESOURCE_PATH "x"); o_symbol = april::rendersys->createTextureFromResource(RESOURCE_PATH "o"); line_horz = april::rendersys->createTextureFromResource(RESOURCE_PATH "line_horz"); line_vert = april::rendersys->createTextureFromResource(RESOURCE_PATH "line_vert"); line45 = april::rendersys->createTextureFromResource(RESOURCE_PATH "line45"); line315 = april::rendersys->createTextureFromResource(RESOURCE_PATH "line315"); }