qwt_plot_spectrogram.cpp 16.52 KiB
/* -*- mode: C++ ; c-file-style: "stroustrup" -*- *****************************
* Qwt Widget Library
* Copyright (C) 1997 Josef Wilgen
* Copyright (C) 2002 Uwe Rathmann
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the Qwt License, Version 1.0
*****************************************************************************/
#include <qimage.h>
#include <qpen.h>
#include <qpainter.h>
#include "qwt_painter.h"
#include "qwt_double_interval.h"
#include "qwt_scale_map.h"
#include "qwt_color_map.h"
#include "qwt_plot_spectrogram.h"
#if QT_VERSION < 0x040000
typedef QValueVector<QRgb> QwtColorTable;
#else
typedef QVector<QRgb> QwtColorTable;
#endif
class QwtPlotSpectrogramImage: public QImage
{
// This class hides some Qt3/Qt4 API differences
public:
QwtPlotSpectrogramImage(const QSize &size, QwtColorMap::Format format):
#if QT_VERSION < 0x040000
QImage(size, format == QwtColorMap::RGB ? 32 : 8)
#else
QImage(size, format == QwtColorMap::RGB
? QImage::Format_ARGB32 : QImage::Format_Indexed8 )
#endif
{
}
QwtPlotSpectrogramImage(const QImage &other):
QImage(other) {
}
void initColorTable(const QImage& other) {
#if QT_VERSION < 0x040000
const unsigned int numColors = other.numColors();
setNumColors(numColors);
for ( unsigned int i = 0; i < numColors; i++ )
setColor(i, other.color(i));
#else
setColorTable(other.colorTable());
#endif
}
#if QT_VERSION < 0x040000
void setColorTable(const QwtColorTable &colorTable) {
setNumColors(colorTable.size());
for ( unsigned int i = 0; i < colorTable.size(); i++ )
setColor(i, colorTable[i]);
}
QwtColorTable colorTable() const {
QwtColorTable table(numColors());
for ( int i = 0; i < numColors(); i++ )
table[i] = color(i);
return table;
}
#endif