Files
HPPA/HPPA/MapToolSpectral.cpp

58 lines
1.2 KiB
C++

#include "stdafx.h"
#include "MapToolSpectral.h"
#include "ImageViewer.h"
#include "RasterLayer.h"
#include <QMouseEvent>
#include <QGraphicsScene>
#include <QGraphicsLineItem>
#include <QPen>
#include <cmath>
MapToolSpectral::MapToolSpectral(QObject* parent)
: MapTool(parent)
{
setCursor(Qt::CrossCursor);
}
MapToolSpectral::~MapToolSpectral()
{
}
void MapToolSpectral::activate()
{
MapTool::activate();
}
void MapToolSpectral::deactivate()
{
canvas()->removeCrosshair();
MapTool::deactivate();
}
void MapToolSpectral::canvasMousePressEvent(QMouseEvent* e)
{
if (e->button() != Qt::LeftButton)
return;
if (!canvas())
return;
const QPointF scenePt = canvas()->mapToScene(e->pos());
const int x = static_cast<int>(std::floor(scenePt.x()));
const int y = static_cast<int>(std::floor(scenePt.y()));
RasterLayer* rl = canvas()->rasterLayer();
if (rl && rl->isValidPixel(x, y))
{
// Place crosshair at pixel center
canvas()->updateCrosshair(x + 0.5, y + 0.5);
QVector<double> wavelengths;
QVector<double> spectrum;
if (rl->readPixelSpectrum(x, y, wavelengths, spectrum))
{
emit spectralClicked(x, y, wavelengths, spectrum);
}
}
}