1 /*
2     SPDX-FileCopyrightText: 2010 Akarsh Simha <akarsh.simha@kdemail.net>
3 
4     SPDX-License-Identifier: GPL-2.0-or-later
5 */
6 
7 #ifdef _WIN32
8 #include <windows.h>
9 #endif
10 
11 #include "texturemanager.h"
12 #include "skymapcomposite.h"
13 #include "skyglpainter.h"
14 #include "skymapgldraw.h"
15 #include "skymap.h"
16 
SkyMapGLDraw(SkyMap * sm)17 SkyMapGLDraw::SkyMapGLDraw(SkyMap *sm) : QGLWidget(sm), SkyMapDrawAbstract(sm)
18 {
19     if (!format().testOption(QGL::SampleBuffers))
20         qWarning() << "No sample buffer; can't use multisampling (antialiasing)";
21     if (!format().testOption(QGL::StencilBuffer))
22         qWarning() << "No stencil buffer; can't draw concave polygons";
23 }
24 
initializeGL()25 void SkyMapGLDraw::initializeGL()
26 {
27 }
28 
resizeGL(int width,int height)29 void SkyMapGLDraw::resizeGL(int width, int height)
30 {
31     Q_UNUSED(width)
32     Q_UNUSED(height)
33     //do nothing since we resize in SkyGLPainter::paintGL()
34 }
35 
paintEvent(QPaintEvent * event)36 void SkyMapGLDraw::paintEvent(QPaintEvent *event)
37 {
38     Q_UNUSED(event);
39     // This is machinery to prevent multiple concurrent paint events / recursive paint events
40     if (m_DrawLock)
41         return;
42     setDrawLock(true);
43 
44     QPainter p;
45     p.begin(this);
46     p.beginNativePainting();
47     calculateFPS();
48     m_SkyMap->setupProjector();
49     makeCurrent();
50 
51     SkyGLPainter psky(this);
52     //FIXME: we may want to move this into the components.
53     psky.begin();
54 
55     //Draw all sky elements
56     psky.drawSkyBackground();
57     m_KStarsData->skyComposite()->draw(&psky);
58     //Finish up
59     psky.end();
60 
61     p.endNativePainting();
62     drawOverlays(p);
63     p.end();
64 
65     setDrawLock(false);
66 }
67