void findThreadInIms() { thread_vision_searched = true; //will run search until this length thread_vision.set_max_length(MAX_LENGTH_VIS); //clear debugging displays thread_vision.clear_display(); updateIms(_start_pt, _start_tan, _end_pt, _end_tan); thread_vision.clearStartData(); thread_vision.addStartData(_start_pt, _start_tan); //thread_vision.addStartData(_end_pt, _end_tan); //updates images in thread_vision class, runs canny //Also generates initial hypotheses thread_vision.initThreadSearch(); if (thread_vision.runThreadSearch()) { std::cout << "Found thread full opt" << std::endl; showThread(thread_vision.curr_thread()); } }
//assumes one thread already found, just tries to find the next one void findThreadInIms_next() { thread_ind++; thread_vision.clear_display(); #ifdef FAKEIMS showThread(&saved_trajectory[thread_ind], truthThread); #endif updateIms(_start_pt, _start_tan, _end_pt, _end_tan); //thread_vision.clearStartData(); //thread_vision.addStartData(_start_pt, _start_tan); // for (int i = 0; i < 11; i++) // thread_vision.generateNextSetOfHypoths(); thread_vision.runThreadSearch_nextIms(); showThread(thread_vision.curr_thread()); }
void showSubreddit(const char *subreddit) { char *line; LinkScreen *screen; RedditListType listType = REDDIT_HOT; // Default RedditListType for screen is 'hot' DEBUG_PRINT(L"Loading Subreddit %s\n", subreddit); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); //And print the screen! int c; while((c = wgetch(stdscr))) { switch(c) { case 'k': case KEY_UP: linkScreenUp(screen); drawScreen(screen); break; case 'j': case KEY_DOWN: linkScreenDown(screen); drawScreen(screen); break; case 'K': linkScreenTextScrollUp(screen); drawScreen(screen); break; case 'J': linkScreenTextScrollDown(screen); drawScreen(screen); break; case 'q': if (screen->linkOpen) { linkScreenCloseLink(screen); drawScreen(screen); } else { goto cleanup; } break; case 'u': redditLinkListFreeLinks(screen->list); redditGetListing(screen->list); screen->offset = 0; screen->selected = 0; drawScreen(screen); break; case 'l': case '\n': case KEY_ENTER: if (screen->helpOpen) linkScreenCloseHelp(screen); else linkScreenToggleLink(screen); drawScreen(screen); break; case 'o': line = alloc_sprintf("xdg-open %s", screen->list->links[screen->selected]->url); system(line); free(line); redditLinkListFree(screen->list); linkScreenFree(screen); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); break; case 'L': redditGetListing(screen->list); drawScreen(screen); break; case 'c': showThread(screen->list->links[screen->selected]); drawScreen(screen); break; case '?': linkScreenToggleHelp(screen); if (screen->helpOpen) linkScreenOpenLink(screen); drawScreen(screen); break; case '1': if (screen->list->type != REDDIT_HOT) { listType = REDDIT_HOT; redditLinkListFree(screen->list); linkScreenFree(screen); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); } break; case '2': if (screen->list->type != REDDIT_NEW) { listType = REDDIT_NEW; redditLinkListFree(screen->list); linkScreenFree(screen); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); } break; case '3': if (screen->list->type != REDDIT_RISING) { listType = REDDIT_RISING; redditLinkListFree(screen->list); linkScreenFree(screen); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); } break; case '4': if (screen->list->type != REDDIT_CONTR) { listType = REDDIT_CONTR; redditLinkListFree(screen->list); linkScreenFree(screen); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); } break; case '5': if (screen->list->type != REDDIT_TOP) { listType = REDDIT_TOP; redditLinkListFree(screen->list); linkScreenFree(screen); screen = linkScreenNew(); linkScreenSetup(screen, subreddit, listType); drawScreen(screen); } break; } } cleanup:; redditLinkListFree(screen->list); linkScreenFree(screen); }
void processNormalKeys(unsigned char key, int x, int y) { if (key == 't') { key_pressed = MOVETAN; } else if (key == 'm') { key_pressed = MOVEPOS; } else if (key == 'r') { key_pressed = ROTATETAN; } else if (key == 'n') { next_thread(); } else if (key == 'b') { prev_thread(); } else if (key == 'v') { findThreadInIms(); glutPostRedisplay(); } else if (key == 'z') { /* Step */ if (thread_vision.hasInit) { if (!thread_vision.isDone()) { thread_vision.generateNextSetOfHypoths(); showThread(thread_vision.curr_thread()); } else { cout << "Search already finished" << endl; } } else { // Taken from start of findThreadInIms(); thread_vision_searched = true; thread_vision.set_max_length(MAX_LENGTH_VIS); thread_vision.clear_display(); updateIms(_start_pt, _start_tan, _end_pt, _end_tan); thread_vision.clearStartData(); thread_vision.addStartData(_start_pt, _start_tan); thread_vision.initThreadSearch(); //cout << "Thread Vision not initialized. Press 'v' to init" << endl; } } else if (key == 'q') { cout << "Flip to prev hypoth" << endl; thread_vision.prev_hypoth(); showThread(thread_vision.curr_thread()); } else if (key == 'w') { cout << "Flip to next hypoth" << endl; thread_vision.next_hypoth(); showThread(thread_vision.curr_thread()); } else if (key == '1' && key <= '1' + NUM_THREADS_DISPLAY) { show_threads[((int)key-'1')] = !show_threads[((int)key-'1')]; // } else if (key == 's') { // /* Save current trajectory */ // cout << "Saving...\n"; // cout << "Please enter destination file name (without extension): "; // char *dstFileName = new char[256]; // cin >> dstFileName; // char *fullPath = new char[256]; // sprintf(fullPath, "%s%s", "saved_threads/", dstFileName); // // traj_recorder.setFileName(fullPath); // // Thread *newThread = glThreads[currentThread]->getThread(); // Thread copiedThread(*newThread); // traj_recorder.add_thread_to_list(copiedThread); // traj_recorder.write_threads_to_file(); } /* Run through all threads, generate guess, save image in test_images */ else if (key == 'p') { thread_ind = -1; while (true) { next_thread(); DrawStuff(); cout << endl << "testing thread " << thread_ind << endl << endl; start_timer(); findThreadInIms(); glutPostRedisplay(); stop_timer(); wait(2); thread_differences[thread_ind] = thread_difference(glThreads[truthThread]->getThread(), thread_vision.curr_thread()); generation_times[thread_ind] = seconds_elapsed(); printf("thread %2d |\t runtime (s): %05.3f | difference: %05.3f\n", thread_ind, generation_times[thread_ind], thread_differences[thread_ind]); DrawStuff(); save_opengl_image(); if (thread_ind == NUM_THREADS-1) break; } cout << endl << "-------------------" << endl; cout << "PERFORMANCE SUMMARY" << endl; cout << "-------------------" << endl; for (int i = 1; i < NUM_THREADS; i++) { printf("thread %2d |\t runtime (s): %05.3f | difference: %05.3f\n", i, generation_times[i], thread_differences[i]); } } else if (key == 27) { exit(0); } lastx_R = x; lasty_R = y; }
void showSubreddit(const char *subreddit) { LinkScreen *screen; DEBUG_PRINT(L"Loading Subreddit %s\n", subreddit); screen = linkScreenNew(); screen->list = redditLinkListNew(); screen->list->subreddit = redditCopyString(subreddit); screen->list->type = REDDIT_HOT; redditGetListing(screen->list); screen->displayed = LINES - 1; screen->linkOpenSize = (screen->displayed / 5) * 4; screen->offset = 0; screen->selected = 0; /* Assign help-screen text */ screen->helpText = linkScreenHelp; screen->helpLineCount = 19; drawScreen(screen); //And print the screen! int c; while((c = wgetch(stdscr))) { switch(c) { case 'k': case KEY_UP: linkScreenUp(screen); drawScreen(screen); break; case 'j': case KEY_DOWN: linkScreenDown(screen); drawScreen(screen); break; case 'q': if (screen->linkOpen) { linkScreenCloseLink(screen); drawScreen(screen); } else { goto cleanup; } break; case 'u': redditLinkListFreeLinks(screen->list); redditGetListing(screen->list); screen->offset = 0; screen->selected = 0; drawScreen(screen); break; case 'l': case '\n': case KEY_ENTER: if (screen->helpOpen) linkScreenCloseHelp(screen); else linkScreenToggleLink(screen); drawScreen(screen); break; case 'L': redditGetListing(screen->list); drawScreen(screen); break; case 'c': showThread(screen->list->links[screen->selected]); drawScreen(screen); break; case '?': linkScreenToggleHelp(screen); if (screen->helpOpen) linkScreenOpenLink(screen); drawScreen(screen); break; } } cleanup:; redditLinkListFree(screen->list); linkScreenFree(screen); }