1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134
|
/***************************************************************************
ImageView.h - simple widget class for displaying a QImage
-------------------
begin : 1999
copyright : (C) 1999 by Martin Wilz
email : Martin Wilz <mwilz@ernie.mi.uni-koeln.de>
***************************************************************************/
/***************************************************************************
* *
* This program is free software; you can redistribute it and/or modify *
* it under the terms of the GNU General Public License as published by *
* the Free Software Foundation; either version 2 of the License, or *
* (at your option) any later version. *
* *
***************************************************************************/
#ifndef IMAGEVIEW_H
#define IMAGEVIEW_H
#include "config.h"
#include "libkwavegui_export.h"
#include <QtGlobal>
#include <QImage>
#include <QPainter>
#include <QWidget>
namespace Kwave
{
/**
* Simple widget class for displaying a QImage.
*/
class LIBKWAVEGUI_EXPORT ImageView: public QWidget
{
Q_OBJECT
public:
/**
* Constructor.
* @param parent pointer to the parent widget, can be 0
* @param fit_width if set to true, the image will be scaled to fit
* horizontally into the widget; if false the image will be
* cut off at the edge and should be scrolled
* @param fit_height if set to true, the image will be scaled to fit
* vertically into the widget; if false the image will be
* cut off at the edge and should be scrolled
*/
explicit ImageView(QWidget *parent = nullptr,
bool fit_width = true,
bool fit_height = true);
/**
* Destructor
*/
~ImageView() override;
/**
* Returns the position and size of the current image, packed
* into a QRect object.
* @return rectangle with the image coordinates and size
*/
QRect imageRect();
public slots:
/**
* Sets a new QImage for displaying.
* @param image a pointer to the image
*/
void setImage(QImage image);
/** sets a new horizontal offset, useful for scrolling */
void setHorizOffset(int offset);
/** sets a new vertical offset, useful for scrolling */
void setVertOffset(int offset);
signals:
void viewInfo(int, int, int);
void sigCursorPos(const QPoint pos);
protected:
void mouseMoveEvent(QMouseEvent *e) override;
void mousePressEvent(QMouseEvent *e) override;
void paintEvent(QPaintEvent *) override;
private:
/**
* offset of the image, in original unscaled coordinates
* of the internal QImage
*/
QPoint m_offset;
/**
* last displayed image rectangle. Note that the left and
* top coordinates are unscaled, but the width and height
* might be scaled to screen coordinates!
*/
QRect m_last_rect;
/** pointer to the QImage to be displayed */
QImage m_image;
/** if true, scale to fit horizontally */
bool m_fit_width;
/** if true, scale to fit vertically */
bool m_fit_height;
/**
* scale factor in horizontal direction, will be
* (width of the image / width of the widget) if m_fit_width
* is true, or 1.0 else
*/
double m_scale_x;
/**
* scale factor in vertical direction, will be
* (height of the image / height of the widget) if m_fit_height
* is true, or 1.0 else
*/
double m_scale_y;
};
}
#endif // _IMAGEVIEW_H_
//***************************************************************************
//***************************************************************************
|