File indexing completed on 2024-04-28 03:43:06
0001 /* Ekos Dark View 0002 Child of FTISView with few additions necessary for Alignment functions 0003 0004 SPDX-FileCopyrightText: 2021 Jasem Mutlaq <mutlaqja@ikarustech.com> 0005 0006 SPDX-License-Identifier: GPL-2.0-or-later 0007 */ 0008 0009 #include "darkview.h" 0010 0011 #include "kstarsdata.h" 0012 #include "Options.h" 0013 #include "fitsviewer/fitsdata.h" 0014 #include "defectmap.h" 0015 0016 #include <QPainter> 0017 #include <QtConcurrent> 0018 #include <QRectF> 0019 0020 DarkView::DarkView(QWidget *parent, FITSMode mode, FITSScale filter) : FITSView(parent, mode, filter) 0021 { 0022 } 0023 0024 void DarkView::drawOverlay(QPainter *painter, double scale) 0025 { 0026 Q_UNUSED(scale); 0027 painter->setOpacity(0.5); 0028 FITSView::drawOverlay(painter, getScale()); 0029 painter->setOpacity(1); 0030 0031 if (m_CurrentDefectMap && m_DefectMapEnabled) 0032 drawBadPixels(painter, scale); 0033 } 0034 0035 void DarkView::reset() 0036 { 0037 m_CurrentDefectMap.clear(); 0038 } 0039 0040 void DarkView::setDefectMapEnabled(bool enabled) 0041 { 0042 if (m_DefectMapEnabled == enabled) 0043 return; 0044 0045 m_DefectMapEnabled = enabled; 0046 updateFrame(); 0047 } 0048 0049 void DarkView::setDefectMap(const QSharedPointer<DefectMap> &defect) 0050 { 0051 m_CurrentDefectMap = defect; 0052 connect(m_CurrentDefectMap.data(), &DefectMap::pixelsUpdated, this, &DarkView::updateFrame, Qt::UniqueConnection); 0053 } 0054 0055 void DarkView::drawBadPixels(QPainter * painter, double scale) 0056 { 0057 if (!m_CurrentDefectMap) 0058 return; 0059 0060 if (m_CurrentDefectMap->hotCount() > 0) 0061 { 0062 painter->setPen(QPen(QColor(qRgba(255, 0, 0, 128)), scale)); 0063 for (BadPixelSet::const_iterator onePixel = m_CurrentDefectMap->hotThreshold(); 0064 onePixel != m_CurrentDefectMap->hotPixels().cend(); ++onePixel) 0065 { 0066 painter->drawEllipse(QRectF(((*onePixel).x - 1) * scale, ((*onePixel).y - 1) * scale, 2 * scale, 2 * scale)); 0067 } 0068 } 0069 0070 if (m_CurrentDefectMap->coldCount() > 0) 0071 { 0072 painter->setPen(QPen(QColor(qRgba(0, 0, 255, 128)), scale)); 0073 for (BadPixelSet::const_iterator onePixel = m_CurrentDefectMap->coldPixels().cbegin(); 0074 onePixel != m_CurrentDefectMap->coldThreshold(); ++onePixel) 0075 { 0076 painter->drawEllipse(QRectF(((*onePixel).x - 1) * scale, ((*onePixel).y - 1) * scale, 2 * scale, 2 * scale)); 0077 } 0078 } 0079 } 0080