// // draw(): // void PedigreeSet::draw(const DataTable *const pedigreeTable){ std::cout << "Start of draw" << std::endl; // // Make a note if there is only one pedigree to be drawn: // if( _pedigrees.size()==1 ) DrawingMetrics::setHasOnlyOnePedigreeState(true); // // Instantiate a LabelSet object for a pedigree set: // LabelSet labelSet(pedigreeTable); std::cout << "No of labels: " << labelSet.getNumberOfLabels() << std::endl; // // Iterate over the pedigrees and draw them: // std::set<Pedigree*,comparePedigrees>::const_iterator it = _pedigrees.begin(); while(it != _pedigrees.end()){ (*it)->draw(&labelSet); // // If --outputpedtable flag is set print the core/non-core fields to a tab delimited file with the name "FAMILY_ID"input.txt // if(DrawingMetrics::getHasOutputPedTable()) pedigreeTable->printPedigreeTableAsTabDelimited((*it)->getId()+"input.txt"); // // If --outputdatatable flag is set print the input pedigree file as a tab delimited file with the name "FAMILY_ID"data.txt // if(DrawingMetrics::getHasOutputDataTable()) pedigreeTable->printInputTableAsTabDelimited((*it)->getId()+"data.txt"); ++it; } std::cout << "End of draw" << std::endl; }
// // draw(): // std::string PedigreeSet::drawPedigreeImg(const DataTable *const pedigreeTable){ std::string pedigreeSvg; std::cout << "Start of draw output" << std::endl; // // Make a note if there is only one pedigree to be drawn: // if( _pedigrees.size()==1 ) DrawingMetrics::setHasOnlyOnePedigreeState(true); // // Instantiate a LabelSet object for a pedigree set: // LabelSet labelSet(pedigreeTable); std::cout << "No of labels: " << labelSet.getNumberOfLabels() << std::endl; // // Iterate over the pedigrees and draw them: // std::set<Pedigree*,comparePedigrees>::const_iterator it = _pedigrees.begin(); while(it != _pedigrees.end()){ //(*it)->draw(&labelSet); pedigreeSvg += (*it)->drawPedigreeImg(&labelSet); ++it; } std::cout << "End of draw" << std::endl; return pedigreeSvg; }
int main(int argc, char* argv[]){ display.create(640, 480); // Load geometry data // GLuint bo_vertex, bo_index; glGenBuffers(1, &bo_vertex); glGenBuffers(1, &bo_index); GLuint* count_nodes = rawdimp("../wtetris/scene.rawd", bo_vertex, bo_index); Geom* nodes = (Geom*)(count_nodes + 1); Geom* goem_border = nodes; Geom* geom_digits = nodes + 1; // Create and load shader programs // char* src_vs = file.loadText("../wtetris/shaders/base.vs"); char* src_fs = file.loadText("../wtetris/shaders/base.fs"); GLuint vs = gl.createShader(GL_VERTEX_SHADER, src_vs); GLuint fs = gl.createShader(GL_FRAGMENT_SHADER, src_fs); GLuint program = gl.createProgram(vs, fs); glUseProgram(program); // Get handle to shader vars // GLint loc_world = glGetUniformLocation(program, "world"); GLint loc_view = glGetUniformLocation(program, "view"); GLint loc_proj = glGetUniformLocation(program, "proj"); // Camera setup - projecton and initial position Camera cam; cam.loc_view = loc_view; cam.loc_proj = loc_proj; matIdent(cam.mat_world); toggleProjection(&cam); float* p = &cam.mat_world[12]; p[0] = 12; p[1] = 30; p[2] = 40; // Hide mouse, and set to center mouse.hide(); mouse.setPos(display.getWidth()/2, display.getHeight()/2); // Persistent OpenGL state glEnable(GL_CULL_FACE); glCullFace(GL_BACK); glFrontFace(GL_CCW); glPolygonMode(GL_FRONT, GL_LINE); // Core struct init // scene.cam = &cam; Array objects; arrayInit(&objects, 5); scene.objects = &objects; // Visible objects =================================== Board board; boardInit(&board, goem_border, 20, 12); arrayAppend(&objects, &board); Label title; labelInit(&title, -12.5, 30, geom_digits); char text_title[] = "wtetris"; labelSet(&title, text_title); labelScaleSet(&title, 5); arrayAppend(&objects, &title); Label info; labelInit(&info, -3.5, 20, geom_digits); char text_info[] = "start:enter\nquit:q"; labelSet(&info, text_info); labelScaleSet(&info, 2); arrayAppend(&objects, &info); Label time; labelInit(&time, -16.5, -18.0, geom_digits); char score_text[] = "time:\n2501"; labelSet(&time, score_text); labelScaleSet(&time, 2); arrayAppend(&objects, &time); Label score; labelInit(&score, 26, -18.0, geom_digits); char text[] = "score:\n0000"; labelSet(&score, text); labelScaleSet(&score, 2); arrayAppend(&objects, &score); // =================================================== Wave wave; wave.amp = 2; wave.wlen = 2; wave.time = 1000; waveLocsSet(&wave, program); wavePosSet(&wave, &board.piece); scene.wave = &wave; Renderer renderer; renderer.loc_world = loc_world; // Initial game state // scene.state = st_title; // LOOP ----------------------------------------------------------------------- while (1){ events.process(); if (keyboard.keyHit('q')){ break; } if (keyboard.keyHit('r')){ toggleProjection(&cam); } //fpscont(&cam); scene.state(&board); wave.time += 0.2; waveToProg(&wave); cameraWorldToView(&cam); glUniformMatrix4fv(loc_view, 1, 0, cam.mat_view); render(&renderer, &scene); display.update(); SDL_Delay(16); } return 0; }