7#include "fitsoverlay.h"
11#include <KTemporaryFile>
13#include <KIO/JobUiDelegate>
15FITSOverlay::FITSOverlay()
19void FITSOverlay::addFITSOverlay(
const dms &ra,
const dms &dec,
const QUrl &imageURL)
21 m_ImageUrl = imageURL;
26 if (!m_ImageUrl.isValid())
27 kDebug() <<
"URL is malformed: " << m_ImageUrl;
31 KTemporaryFile tempfile;
33 file.setFileName(tempfile.fileName());
39FITSOverlay::~FITSOverlay()
44 downloadJob->kill(KJob::Quietly);
51void FITSOverlay::loadImageFromURL()
53 QUrl saveURL = QUrl::fromPath(file.fileName());
55 kDebug() <<
"tempfile-URL is malformed\n";
57 qDebug() <<
"Starting download job for URL " << m_ImageUrl <<
endl;
59 downloadJob =
KIO::copy(m_ImageUrl, saveURL);
60 connect(downloadJob, SIGNAL(result(KJob*)), SLOT(downloadReady(KJob*)));
63void FITSOverlay::downloadReady(
KJob *job)
70 static_cast<KIO::Job *
>(job)->ui()->showErrorMessage();
76 qDebug() <<
"Download OK , opening image now ..." <<
endl;
84void FITSOverlay::openImage()
86 FOverlay *newFO =
new FOverlay;
88 newFO->image_data =
new FITSImage(FITS_NORMAL);
90 qDebug() <<
"Reading FITS file ..." <<
endl;
91 bool result = newFO->image_data->loadFITS(file.fileName());
95 delete (newFO->image_data);
99 qDebug() <<
"Read successful, creating fits overlay now ..." <<
endl;
101 int image_width, image_height;
102 double min, max, bzero, bscale, val;
105 image_width = newFO->image_data->getWidth();
106 image_height = newFO->image_data->getHeight();
107 min = newFO->image_data->getMin();
108 max = newFO->image_data->getMax();
112 image_buffer = newFO->image_data->getImageBuffer();
114 bscale = 255. / (max - min);
115 bzero = (-min) * (255. / (max - min));
117 image.setNumColors(256);
118 for (
int i = 0; i < 256; i++)
119 image.setColor(i, qRgb(i, i, i));
122 for (
int j = 0; j < image_height; j++)
123 for (
int i = 0; i < image_width; i++)
125 val = image_buffer[j * image_width + i];
126 image.setPixel(i, j, ((
int)(val * bscale + bzero)));
132 newFO->pix_width = image_width;
133 newFO->pix_height = image_height;
135 qDebug() <<
"Added a new pixmap FITS!" <<
endl;
140bool FITSOverlay::contains(
const dms &ra,
const dms &dec)
145#include "fitsoverlay.moc"
An angle, stored as degrees, but expressible in many ways.
KIOCORE_EXPORT CopyJob * copy(const QList< QUrl > &src, const QUrl &dest, JobFlags flags=DefaultFlags)
QMetaObject::Connection connect(const QObject *sender, PointerToMemberFunction signal, Functor functor)
bool convertFromImage(const QImage &image, Qt::ImageConversionFlags flags)
QTextStream & endl(QTextStream &stream)
bool isValid() const const