diff --git a/src/interface/info_window.ui b/src/interface/info_window.ui index 8ec4d5251d8f69d325f48d30d146629b45903a0e..032e20b9e3a70fdbca1de5992c1363e79c64ee4f 100644 --- a/src/interface/info_window.ui +++ b/src/interface/info_window.ui @@ -61,10 +61,6 @@ p, li { white-space: pre-wrap; } </widget> </item> </layout> - <zorder>info_trace_text</zorder> - <zorder>info_trace_clear</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>verticalLayoutWidget_2</zorder> </widget> </item> <item> @@ -122,15 +118,6 @@ p, li { white-space: pre-wrap; } </layout> </item> </layout> - <zorder>horizontalLayoutWidget</zorder> - <zorder>horizontalLayoutWidget</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>gridLayoutWidget</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>info_trace_clear</zorder> - <zorder>verticalLayoutWidget</zorder> - <zorder>verticalLayoutWidget_2</zorder> - <zorder>info_trace</zorder> </widget> </widget> <resources> diff --git a/src/interface/interface_graphic.cpp b/src/interface/interface_graphic.cpp index 8a146e50d6de301da5c04fb24e42801b9542279c..38c12e20b0168bdccd6a6d2989d894c53630a547 100644 --- a/src/interface/interface_graphic.cpp +++ b/src/interface/interface_graphic.cpp @@ -99,7 +99,6 @@ void Interface_graphic::load_windows(){ QMetaObject::connectSlotsByName(this); /* Display both the main and informative windows */ - _ui_info_window->show(); _ui_main_window->show(); } @@ -119,6 +118,8 @@ void Interface_graphic::error(const string s) const{ QString buf = s.c_str(); _ui_info_trace_text->moveCursor(QTextCursor::End);/* Insert the new text on the beginning */ _ui_info_trace_text->insertHtml("<font color='red'>"+buf+"</font><br /><br />"); + + _ui_info_window->show(); } @@ -126,6 +127,8 @@ void Interface_graphic::warning(const string s) const{ QString buf = s.c_str(); _ui_info_trace_text->moveCursor(QTextCursor::End);/* Insert the new text on the beginning */ _ui_info_trace_text->insertHtml("<font color='orange'>"+buf+"</font><br /><br />"); + + _ui_info_window->show(); } @@ -152,6 +155,8 @@ void Interface_graphic::opening_file(string const &path){ information(string("File opened: ")+ path); _trace_path = path; + + _ui_main_window->setWindowTitle(QString("ViTE :: ")+_trace_path.c_str()); _core->draw_trace(path, _ui_render_area); @@ -211,8 +216,7 @@ void Interface_graphic::on_open_triggered(){ } else{ opening_file(filename.toStdString()); - - _ui_main_window->setWindowTitle(QString("ViTE :: ")+filename); + } } diff --git a/src/interface/render_area.cpp b/src/interface/render_area.cpp index c767faead02e199c3fb08124bf9de61764c8aae7..e41e6e919bb0a3d719d2937136c716cf7c4d3afb 100644 --- a/src/interface/render_area.cpp +++ b/src/interface/render_area.cpp @@ -75,7 +75,8 @@ Render_area::Render_area(QWidget *parent) /* Camera is placed on (0,0,0) and looks to (0,0,-1) */ _z_container = -1.0f; _z_arrow = -2.0f;/* closer to camera than containers or states (MUST be negative)*/ - _z_state= -3.0f; + _z_event = -3.0f;/* closer to camera than containers or states (MUST be negative)*/ + _z_state= -4.0f; setAutoFillBackground(false); } @@ -115,9 +116,6 @@ void Render_area::initializeGL(){ glClearStencil(0); _wait_list = draw_wait(); - - - message << "Counter drawing not yet implemented" << endw; } void Render_area::resizeGL(int width, int height){ @@ -262,7 +260,7 @@ void Render_area::paintGL(){ glTranslated( _render_width*_x_scale_container_state-_state_translate , 0.0f, _z_state); glScalef( _state_scale*(_render_width/_state_x_max), _render_height/_state_y_max, 0.0f); - + if (glIsList(_list_states)==GL_FALSE) message << "ERROR LIST not exist for states." << ende; @@ -271,7 +269,11 @@ void Render_area::paintGL(){ glPopMatrix(); - //glCallList(_list_counters); + + if (glIsList(_list_counters)==GL_FALSE) + ;// message << "ERROR LIST not exist for counters." << ende; + else + glCallList(_list_counters); draw_stored_arrows(_arrows);/* draw arrows without display lists */ @@ -346,8 +348,7 @@ bool Render_area::build(){ /* disable some OpenGL features to enhance the rendering */ glDisable(GL_TEXTURE_2D); glDisable(GL_BLEND); - - + return true; } @@ -385,6 +386,14 @@ bool Render_area::unbuild(){ glColor3d(1.0, 1.0, 1.0);/* init color to white */ + /* init measurement attributes */ + _container_x_max = 0; + _container_y_max = 0; + + _state_x_max = 0; + _state_y_max = 0; + + return true; } diff --git a/src/interface/render_area.hpp b/src/interface/render_area.hpp index f51443adafcb5688ba273fc89bae6865a0225592..85ce32b0e787c792bf472384d48acb521be04b49 100644 --- a/src/interface/render_area.hpp +++ b/src/interface/render_area.hpp @@ -236,6 +236,7 @@ class Render_area : public QGLWidget, public Render Element_pos _z_container;/* z position for containers */ Element_pos _z_state;/* z position for states */ + Element_pos _z_event;/* z position for events */ Element_pos _z_arrow;/* z position for arrows */ /*********************************** @@ -377,6 +378,12 @@ inline void Render_area::start_draw(){ /* clear lists to store container texts */ _text_pos.clear(); _text_value.clear(); + + /* clear the event vector */ + _events.clear(); + + /* clear the arrow vector */ + _arrows.clear(); } @@ -524,19 +531,19 @@ inline void Render_area::draw_stored_arrows(std::vector<Arrow_> &arrows){ angle = atan2((end_height - start_height), (end_time - start_time))*180.0f/PI;/* arc tangent */ - glRotatef(angle,0, 0, 1); + glRotatef(angle, 0, 0, 1); }/* end if (start_time != end_time) */ else - glRotatef(90,0, 0, 1);/* vertical alignment */ + glRotatef(90, 0, 0, 1);/* vertical alignment */ glBegin(GL_TRIANGLES);/* create an arrow */ { - glColor3d(1.0, 1.0, 1.0);glVertex2d(0.4, 0.0); - glColor3d(0.9, 0.9, 0.9);glVertex2d(-0.4, -0.4); - glColor3d(0.9, 0.9, 0.9);glVertex2d(-0.4, 0.4); + glColor3d(1.0, 1.0, 1.0);glVertex2d(0.0, 0.0); + glColor3d(0.9, 0.9, 0.9);glVertex2d(-0.6, -0.2); + glColor3d(0.9, 0.9, 0.9);glVertex2d(-0.6, 0.2); } glEnd(); @@ -545,14 +552,14 @@ inline void Render_area::draw_stored_arrows(std::vector<Arrow_> &arrows){ glPushMatrix(); glTranslated(0, 0, _z_arrow); - glLineWidth(1.5f); + // glLineWidth(1.5f); glBegin(GL_LINES); { - glColor3d(1.0, 1.0, 1.0);glVertex2d(start_time, start_height); - glColor3d(0.9, 0.9, 0.9);glVertex2d(end_time, end_height); + glColor3d(0.8, 0.8, 0.8);glVertex2d(start_time, start_height); + glColor3d(1.0, 1.0, 1.0);glVertex2d(end_time, end_height); } glEnd(); - glLineWidth(1.0f);/* 1 is the default value */ + // glLineWidth(1.0f);/* 1 is the default value */ glPopMatrix(); } @@ -619,21 +626,21 @@ inline void Render_area::draw_stored_events(std::vector<Event_> &events){ glBegin(GL_POLYGON); { for(int i =0 ; i<step ; i++){ - glVertex3d(time + cos(angle+delta_angle*i)*radius , height + sin(angle+delta_angle*i)*radius , _z_arrow); + glVertex3d(time + cos(angle+delta_angle*i)*radius , height + sin(angle+delta_angle*i)*radius , _z_event); } } glEnd(); /* draw line */ - glLineWidth(1.5f); + // glLineWidth(1.5f); glBegin(GL_LINES); { - glColor3d(0.5, 0.8, 0.5);glVertex3d(time, height, _z_arrow); - glColor3d(0.4, 0.7, 0.4);glVertex3d(time, height+container_height, _z_arrow); + glColor3d(0.5, 0.8, 0.5);glVertex3d(time, height, _z_event); + glColor3d(0.4, 0.7, 0.4);glVertex3d(time, height+container_height, _z_event); } glEnd(); - glLineWidth(1.0f); + // glLineWidth(1.0f); }/* and loop */ } @@ -647,8 +654,7 @@ inline void Render_area::start_draw_counter(){ _list_counters = glGenLists(1);/* create the list */ if (_list_counters==0){ - - // _parent->warning("Error when creating list"); + //message_ns::message << "Error when creating list" << message_ns::ende; } glNewList(_list_counters, GL_COMPILE);/* open the list */ @@ -659,34 +665,35 @@ inline void Render_area::start_draw_counter(){ inline void Render_area::draw_counter(const Element_pos x, const Element_pos y){ - static bool which_color = true; - float a; - - if (which_color==true){/* yellow color */ - a = 0.0f; - which_color = false; - }else{/* white color */ - a = 1.0f; - which_color = true; - } - - glLineWidth(2.5f); - glBegin(GL_QUADS); - { - glColor3d(1.0, 1.0, a);glVertex2d(_counter_last_x, 0); - glColor3d(1.0, 1.0, a);glVertex2d(_counter_last_x, _counter_last_y); - glColor3d(1.0, 1.0, a);glVertex2d(x, y); - glColor3d(1.0, 1.0, a);glVertex2d(x, 0); + static bool line_already_begun = false; + + if (x <= 0.0f ){ + + if (line_already_begun==true){/* it is not the first call */ + glEnd(); + }else + line_already_begun = true; + + glBegin(GL_LINE_STRIP);/* set of connected verteces */ + glColor3d(1.0, 1.0, 1.0);glVertex2d(0.0f, y);/* draw the init point */ + + _counter_last_x = 0.0f; + + }else{ + + glColor3d(1.0, 1.0, 1.0);glVertex2d(x, y); + + _counter_last_x = x; } - glEnd(); - glLineWidth(1.0f); - _counter_last_x = x; + _counter_last_y = y; } inline void Render_area::end_draw_counter(){ + glEnd();/* suppose that line is not ended */ + glEndList();/* close the list */ } diff --git a/tests/interface/test_area.cpp b/tests/interface/test_area.cpp index a3d9f254e843c4219089d8965e95302169a1a2d7..6f4b0e94658423eac8e51e7c718fb051aa9a2e29 100644 --- a/tests/interface/test_area.cpp +++ b/tests/interface/test_area.cpp @@ -19,9 +19,13 @@ public: cerr << s << endl; } - void information(string s) const{ - cerr << s << endl; - } + void information(string s) const{ + cerr << s << endl; + } + + const std::string get_filename() const{ + return string("Filename"); + } }; @@ -44,16 +48,14 @@ int main(int argc, char** argv){ t.show(); - Element_pos a = 50; - r.start_draw(); { r.start_draw_containers(); { - r.draw_container(0, 0, 30, 20); + /* r.draw_container(0, 0, 30, 20); r.draw_container(0, 22, 10, 20); - r.draw_container(0, 43, 15, 20); + r.draw_container(0, 43, 15, 20);*/ // r.draw_container(1, 60, 60, 20); r.draw_container_text(0, 10,"Container 2"); r.draw_container_text(0, 32,"Container 1"); @@ -63,7 +65,7 @@ int main(int argc, char** argv){ r.start_draw_states(); { - r.draw_state(0, 4, 0, 20, 0.6, 0.7, 0.8); + /* r.draw_state(0, 4, 0, 20, 0.6, 0.7, 0.8); r.draw_state(4.5, 7.98, 0, 20, 0.6, 0.7, 0.8); r.draw_arrow(10, 10, 0, 3); r.draw_arrow(10, -10, -15, -3); @@ -71,18 +73,19 @@ int main(int argc, char** argv){ r.draw_event(14, 4, 2); r.draw_event(10, 4, 1); r.draw_event(18, 4, 3); - r.draw_event(10, 4, 10); + r.draw_event(10, 4, 10);*/ } r.end_draw_states(); r.start_draw_counter(); { - - r.draw_counter(5, 1); - r.draw_counter(17, 2); + r.draw_counter(0.0f, 1); + r.draw_counter(5, 1.2); + r.draw_counter(7, 2); r.draw_counter(19.345, 3); - r.draw_counter(21.45, 2); + r.draw_counter(24.45, 2); + r.draw_counter(32, 6); } r.end_draw_counter();