annotate editor/edview.cpp @ 2294:7f6ba3b32f54

Cleanups.
author Matti Hamalainen <ccr@tnsp.org>
date Wed, 03 Jul 2019 10:28:43 +0300
parents b4992d9f72fe
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
1 #include "edview.h"
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
2 #include <QtGui>
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
3
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
4
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
5 QEDGLDemoView::QEDGLDemoView(QWidget *parent) :
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
6 QGLWidget(QGLFormat(QGL::SampleBuffers|QGL::AlphaChannel), parent)
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
7 {
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
8 makeCurrent();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
9
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
10 if (QGLFramebufferObject::hasOpenGLFramebufferBlit())
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
11 {
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
12 QGLFramebufferObjectFormat format;
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
13 format.setSamples(4);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
14 format.setAttachment(QGLFramebufferObject::CombinedDepthStencil);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
15
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
16 // render_fbo = new QGLFramebufferObject(512, 512, format);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
17 // texture_fbo = new QGLFramebufferObject(512, 512);
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
18 }
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
19 else
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
20 {
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
21 // render_fbo = new QGLFramebufferObject(1024, 1024);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
22 // texture_fbo = render_fbo;
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
23 }
398
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
24
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
25 setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
26 }
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
27
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
28
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
29 QEDGLDemoView::~QEDGLDemoView()
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
30 {
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
31 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
32
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
33
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
34 QSize QEDGLDemoView::minimumSizeHint() const
398
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
35 {
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
36 return QSize(320, 240);
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
37 }
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
38
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
39
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
40 QSize QEDGLDemoView::sizeHint() const
398
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
41 {
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
42 return QSize(640, 480);
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
43 }
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
44
8660c6005032 More work.
Matti Hamalainen <ccr@tnsp.org>
parents: 391
diff changeset
45
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
46 void QEDGLDemoView::setEngineData(DMEngineData *mengine)
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
47 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
48 engine = mengine;
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
49 }
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
50
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
51
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
52 void QEDGLDemoView::render(int frameTime)
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
53 {
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
54 if (engine != NULL)
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
55 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
56 engine->frameTime = frameTime;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
57
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
58 if (engine->demoRender != NULL)
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
59 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
60 engine->demoRender(engine);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
61 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
62 else
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
63 {
1738
b4992d9f72fe Cleanups.
Matti Hamalainen <ccr@tnsp.org>
parents: 651
diff changeset
64 dmExecuteTimeline(engine->ptl, engine, engineGetTick(engine));
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
65 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
66
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
67 engine->frameCount++;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
68 }
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
69 }
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
70
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
71
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
72 void QEDGLDemoView::paintEvent(QPaintEvent *)
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
73 {
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
74 // save the GL state set for QPainter
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
75 saveGLState();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
76
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
77 // restore the GL state that QPainter expects
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
78 restoreGLState();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
79 }
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
80
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
81
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
82 void QEDGLDemoView::saveGLState()
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
83 {
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
84 glPushAttrib(GL_ALL_ATTRIB_BITS);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
85 glMatrixMode(GL_PROJECTION);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
86 glPushMatrix();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
87 glMatrixMode(GL_MODELVIEW);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
88 glPushMatrix();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
89 }
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
90
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
91
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
92 void QEDGLDemoView::restoreGLState()
385
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
93 {
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
94 glMatrixMode(GL_PROJECTION);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
95 glPopMatrix();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
96 glMatrixMode(GL_MODELVIEW);
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
97 glPopMatrix();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
98 glPopAttrib();
eb5b793c8867 GL display widget skeleton.
Matti Hamalainen <ccr@tnsp.org>
parents:
diff changeset
99 }
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
100
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
101
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
102 QEDSWDemoView::QEDSWDemoView(QWidget *parent) : QEDGLDemoView(parent)
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
103 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
104 img = NULL;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
105 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
106
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
107
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
108 QEDSWDemoView::~QEDSWDemoView()
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
109 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
110 delete img;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
111 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
112
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
113
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
114 void QEDSWDemoView::setEngineData(DMEngineData *mengine)
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
115 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
116 engine = mengine;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
117 delete img;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
118
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
119 img = new QImage((const uchar *)mengine->screen->pixels,
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
120 mengine->screen->w, mengine->screen->h,
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
121 mengine->screen->pitch, QImage::Format_RGB32);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
122 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
123
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
124
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
125 void QEDSWDemoView::paintEvent(QPaintEvent *)
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
126 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
127 if (img != NULL)
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
128 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
129 QPainter painter(this);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
130 painter.drawImage(QPoint(0, 0), *img);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
131 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
132 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
133
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
134
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
135 void QEDSWDemoView::render(int frameTime)
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
136 {
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
137 if (SDL_MUSTLOCK(engine->screen) != 0 && SDL_LockSurface(engine->screen) != 0)
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
138 return;
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
139
403
d34922e6a244 Even more work towards the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 398
diff changeset
140 QEDGLDemoView::render(frameTime);
391
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
141
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
142 if (SDL_MUSTLOCK(engine->screen) != 0)
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
143 SDL_UnlockSurface(engine->screen);
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
144
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
145 update();
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
146 }
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
147
28a74940f2b6 More work on the editor.
Matti Hamalainen <ccr@tnsp.org>
parents: 385
diff changeset
148