int main() { screen next_screen = HOME; populate_values(); snprintf(msg, MSG_LEN, "-"); n_keys = 0; while (next_screen != EXIT) { switch (next_screen) { case HOME: next_screen = home_screen(); break; case ABOUT: next_screen = about_screen(); break; case RUN: next_screen = run_screen(); break; case RUNNING: next_screen = running_screen(); break; case EXIT: break; } } snprintf(msg, MSG_LEN, " Saindo da aplicação"); goodbye(); return 0; }
//Toggle between zoom in and zoom out void do_zoom(){ Point sel = {0,0}; if (zoom_level == ZOOM_IN){ zoom_level = ZOOM_OUT; } else { zoom_level = ZOOM_IN; do{ sel = GetPress(); } while(sel.y > image_height[ZOOM_OUT] || sel.x > image_width[ZOOM_OUT]); sel = convert_pnt_to_zoom_in(sel); //we pass draw_image in the top left corner, sel should be the centre of the image sel.x -= DISPLAY_WIDTH/2; sel.y -= DISPLAY_HEIGHT/2; if(sel.x < 0) sel.x = 0; else if(sel.x > (image_width[ZOOM_IN] - DISPLAY_WIDTH)) sel.x = image_width[ZOOM_IN] - DISPLAY_WIDTH; if(sel.y < 0) sel.y = 0; else if(sel.y > (image_height[ZOOM_IN] - DISPLAY_HEIGHT)) sel.y = image_height[ZOOM_IN] - DISPLAY_HEIGHT; } curr_image_pos = sel; draw_full_image(); about_screen(); ZOOM_BUTT.prs_p(ZOOM_BUTT); re_draw_path(); }
// Ask for a start and end node and find the best directions void do_dir(){ int start_node = get_start_node(); if (road_only && !vertex_had_road_edge(full_map_graph, start_node)){ draw_information_box("YOUR CURRENT LOCATION HAS NO ROAD ACCESS. PLEASE TURN OFF THE ROADS BUTTON."); DIR_BUTT.prs_p(DIR_BUTT); return; } draw_information_box("PLEASE SELECT DESTINATION"); end_node = get_node(full_map_graph); if (end_node == -1){ DIR_BUTT.prs_p(DIR_BUTT); about_screen(); return; } if (road_only && !vertex_had_road_edge(full_map_graph, end_node)){ draw_information_box("YOUR SELECTED LOCATION HAS NO ROAD ACCESS. PLEASE TURN OFF THE ROADS BUTTON."); DIR_BUTT.prs_p(DIR_BUTT); return; } load_and_draw_graph_path(full_map_graph, start_node, end_node, road_only, PURPLEPIZZAZZ); draw_information_box("HAVE A FUN TRIP!"); DIR_BUTT.prs_p(DIR_BUTT); }
// Display info of the next node touched void do_info(){ draw_information_box("SELECT A MAP POINT TO OBTAIN ITS INFORMATION."); char* info = get_node_info(full_map_graph); if (info == NULL) { about_screen(); INFO_BUTT.prs_p(INFO_BUTT); return; } free(info); info_screen(info); INFO_BUTT.prs_p(INFO_BUTT); }
// Leave search mode and redraw the map void do_back(){ reset_query(); destroy_matches(); draw_full_image(); about_screen(); }
// Display app about void do_about(void* nothing){ about_screen(); }