Mercurial > hg > octave-lyh
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 |
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 } |