File indexing completed on 2024-03-24 15:18:24

0001 /*
0002     SPDX-FileCopyrightText: 2010 Akarsh Simha <akarsh.simha@kdemail.net>
0003 
0004     SPDX-License-Identifier: GPL-2.0-or-later
0005 */
0006 
0007 #ifdef _WIN32
0008 #include <windows.h>
0009 #endif
0010 
0011 #include "texturemanager.h"
0012 #include "skymapcomposite.h"
0013 #include "skyglpainter.h"
0014 #include "skymapgldraw.h"
0015 #include "skymap.h"
0016 
0017 SkyMapGLDraw::SkyMapGLDraw(SkyMap *sm) : QGLWidget(sm), SkyMapDrawAbstract(sm)
0018 {
0019     if (!format().testOption(QGL::SampleBuffers))
0020         qWarning() << "No sample buffer; can't use multisampling (antialiasing)";
0021     if (!format().testOption(QGL::StencilBuffer))
0022         qWarning() << "No stencil buffer; can't draw concave polygons";
0023 }
0024 
0025 void SkyMapGLDraw::initializeGL()
0026 {
0027 }
0028 
0029 void SkyMapGLDraw::resizeGL(int width, int height)
0030 {
0031     Q_UNUSED(width)
0032     Q_UNUSED(height)
0033     //do nothing since we resize in SkyGLPainter::paintGL()
0034 }
0035 
0036 void SkyMapGLDraw::paintEvent(QPaintEvent *event)
0037 {
0038     Q_UNUSED(event);
0039     // This is machinery to prevent multiple concurrent paint events / recursive paint events
0040     if (m_DrawLock)
0041         return;
0042     setDrawLock(true);
0043 
0044     QPainter p;
0045     p.begin(this);
0046     p.beginNativePainting();
0047     calculateFPS();
0048     m_SkyMap->setupProjector();
0049     makeCurrent();
0050 
0051     SkyGLPainter psky(this);
0052     //FIXME: we may want to move this into the components.
0053     psky.begin();
0054 
0055     //Draw all sky elements
0056     psky.drawSkyBackground();
0057     m_KStarsData->skyComposite()->draw(&psky);
0058     //Finish up
0059     psky.end();
0060 
0061     p.endNativePainting();
0062     drawOverlays(p);
0063     p.end();
0064 
0065     setDrawLock(false);
0066 }