src/qvgui/qvimagecanvas.h

Go to the documentation of this file.
00001 /*
00002  *      Copyright (C) 2007, 2008. PARP Research Group.
00003  *      <http://perception.inf.um.es>
00004  *      University of Murcia, Spain.
00005  *
00006  *      This file is part of the QVision library.
00007  *
00008  *      QVision is free software: you can redistribute it and/or modify
00009  *      it under the terms of the GNU Lesser General Public License as
00010  *      published by the Free Software Foundation, version 3 of the License.
00011  *
00012  *      QVision is distributed in the hope that it will be useful,
00013  *      but WITHOUT ANY WARRANTY; without even the implied warranty of
00014  *      MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
00015  *      GNU Lesser General Public License for more details.
00016  *
00017  *      You should have received a copy of the GNU Lesser General Public
00018  *      License along with QVision. If not, see <http://www.gnu.org/licenses/>.
00019  */
00020 
00024 
00025 #ifndef QVIMAGECANVAS_H
00026 #define QVIMAGECANVAS_H
00027 
00028 #include <QPointF>
00029 #include <QVWorker>
00030 #include <QVPolyline>
00031 #include <qvgui/qvcanvas.h>
00032 
00105 class QVImageCanvas: public QVCanvas, public QVPropertyContainer
00106         {
00107                 Q_OBJECT
00108         public:
00109                 QVImageCanvas(const QString name = QString (), QWidget *parent=0);
00110                 bool linkProperty(QVWorker &worker, const QString propertyName, QColor color = Qt::red, bool printTags = false);
00111                 bool linkROI(QVWorker *worker, const QString propertyName);
00112                 bool linkPolyline(QVWorker *worker, const QString propertyName);
00113                 bool unlink(QVWorker *worker, const QString propertyName);
00114                 void setLowHigh(float low,float high);
00115                 #ifndef DOXYGEN_IGNORE_THIS
00116                 void viewer();
00117                 #endif
00118                 virtual void custom_viewer() { };
00119 
00120         public slots:
00121                 void rectSelectedSlot(QRect rect);
00122                 void polySelectedSlot(QPoint point, bool reset, TPolyMode mode);
00123                 void circleSelectedSlot(QPoint center, float radius);
00124 
00125         private:
00126                 float _low,_high;
00127                 QPoint circleCenter;
00128                 void draw(const QList<QPoint> &pointList, QColor color = Qt::red, bool printTags = false);
00129                 void draw(const QList<QPointF> &pointList, QColor color = Qt::red, bool printTags = false);
00130                 void draw(const QList< QList< QPointF > > &pointList, QColor color = Qt::red, bool printTags = false);
00131                 void draw(const QVPolyline &contours, QColor color = Qt::red, bool printTags = false, TPolyMode mode = LINE);
00132                 void draw(const QPoint &center, float radius, QColor color = Qt::red, bool printTags = false);
00133                 void draw(const QList<QVPolyline> &contours, QColor color = Qt::red, bool printTags = false);
00134         };
00135 
00136 Q_DECLARE_METATYPE(QList<QPoint>);
00137 Q_DECLARE_METATYPE(QList<QPointF>);
00138 Q_DECLARE_METATYPE(QList< QList< QPointF > >);
00139 Q_DECLARE_METATYPE(QVPolyline);
00140 Q_DECLARE_METATYPE(TPolyMode);
00141 
00142 #endif