annotate gui/src/Plot2dWidget.cpp @ 13469:a20f8763105f

Added some OpenGL plotting.
author Jacob Dawid <jacob.dawid@googlemail.com>
date Mon, 18 Apr 2011 22:58:41 +0200
parents
children f7356554594c
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
13469
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
1 #include "Plot2dWidget.h"
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
2 #include <QVBoxLayout>
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
3 #include <QHBoxLayout>
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
4 #include <QPushButton>
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
5
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
6 Plot2dView::Plot2dView(QWidget *parent)
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
7 : QGLWidget(parent) {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
8 construct();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
9 }
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
10
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
11 void Plot2dView::construct() {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
12 }
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
13
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
14 void Plot2dView::initializeGL() {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
15 glClearColor(0.9, 0.9, 0.9, 0.0);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
16 glEnable(GL_POINT_SMOOTH);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
17 // glEnable(GL_LINE_SMOOTH);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
18 glEnable(GL_POLYGON_SMOOTH);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
19 glEnable(GL_BLEND);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
20 glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
21 }
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
22
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
23 void Plot2dView::paintGL() {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
24 glClear(GL_COLOR_BUFFER_BIT);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
25 glBegin(GL_LINES);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
26 glColor3d(0.0, 0.0, 0.0);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
27 glVertex2d(0.1, 0.1);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
28 glVertex2d(0.9, 0.1);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
29 glVertex2d(0.1, 0.1);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
30 glVertex2d(0.1, 0.9);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
31 glEnd();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
32
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
33 glBegin(GL_POLYGON);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
34 glVertex2d(0.092, 0.9);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
35 glVertex2d(0.108, 0.9);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
36 glVertex2d(0.1, 0.93);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
37 glEnd();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
38 glBegin(GL_POLYGON);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
39 glVertex2d(0.9, 0.092);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
40 glVertex2d(0.9, 0.108);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
41 glVertex2d(0.93, 0.1);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
42 glEnd();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
43
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
44 renderText(0.8, 0.05, 0.0, "axis");
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
45 }
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
46
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
47 void Plot2dView::resizeGL(int w, int h) {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
48 glViewport(0, 0, w, h);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
49 glMatrixMode(GL_MODELVIEW_MATRIX);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
50 glLoadIdentity();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
51
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
52 glMatrixMode(GL_PROJECTION_MATRIX);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
53 glLoadIdentity();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
54 glOrtho(0.0, 1.0, 0.0, 1.0, 0.0, 100.0);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
55 }
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
56
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
57 Plot2dWidget::Plot2dWidget(QWidget *parent) :
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
58 QWidget(parent) {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
59 construct();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
60 }
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
61
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
62 void Plot2dWidget::construct() {
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
63 QVBoxLayout *layout = new QVBoxLayout();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
64 m_plot2dView = new Plot2dView(this);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
65 m_plot2dView->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
66 layout->addWidget(m_plot2dView);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
67 QWidget *buttonBar = new QWidget(this);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
68 QHBoxLayout *buttonBarLayout = new QHBoxLayout(this);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
69 QPushButton *exportButton = new QPushButton(tr("Export"), this);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
70 exportButton->setEnabled(false);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
71 buttonBarLayout->addWidget(exportButton);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
72 buttonBarLayout->addStretch();
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
73 buttonBarLayout->setMargin(1);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
74 buttonBar->setLayout(buttonBarLayout);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
75 buttonBar->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Minimum);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
76 layout->addWidget(buttonBar);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
77 layout->setMargin(0);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
78 setLayout(layout);
a20f8763105f Added some OpenGL plotting.
Jacob Dawid <jacob.dawid@googlemail.com>
parents:
diff changeset
79 }