Subversion Repositories public iLand

Rev

Rev 881 | Rev 1217 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed

/********************************************************************************************
**    iLand - an individual based forest landscape and disturbance model
**    http://iland.boku.ac.at
**    Copyright (C) 2009-  Werner Rammer, Rupert Seidl
**
**    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 3 of the License, or
**    (at your option) any later version.
**
**    This program is distributed in the hope that it will be useful,
**    but WITHOUT ANY WARRANTY; without even the implied warranty of
**    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
**    GNU General Public License for more details.
**
**    You should have received a copy of the GNU General Public License
**    along with this program.  If not, see <http://www.gnu.org/licenses/>.
********************************************************************************************/


#ifndef PAINTAREA_H
#define PAINTAREA_H

#include <QWidget>
#include "mapgrid.h"
#include "layeredgrid.h"
/**
  */

struct PaintObject {
    PaintObject(): what(PaintNothing), map_grid(0), float_grid(0), layered(0), layer_id(0), min_value(0.), max_value(1.), cur_min_value(0.), cur_max_value(1.), auto_range(false) {}
    enum { PaintNothing, PaintMapGrid, PaintFloatGrid, PaintLayers, PaintLIF, PaintTrees, PaintHeightGrid, PaintResourceUnits, PaintRegeneration } what;
    MapGrid *map_grid;
    QString name;
    QString description;
    const FloatGrid *float_grid;
    const LayeredGridBase *layered;
    int layer_id;
    GridViewType view_type;
    double min_value;
    double max_value;
    double cur_min_value, cur_max_value;
    bool auto_range;
    static QColor background_color;
    // other options
    bool clip_to_stands;
    bool species_colors;
};

/**PaintArea
  */

class PaintArea : public QWidget
 {
     Q_OBJECT

 public:
     PaintArea(QWidget *parent = 0);
     QImage &drawImage() { return m_bitmap; }

signals:
     void needsPainting(QPainter &painter);
     void mouseClick(const QPoint &pos);
     void mouseDrag(const QPoint &from, const QPoint &to, Qt::MouseButton mouseButton);
     void mouseMove(const QPoint &pos);
     void mouseWheel(const QPoint &pos, int wheel_steps);

 protected:
     void paintEvent(QPaintEvent *event);
     void mousePressEvent ( QMouseEvent * event );
     void mouseReleaseEvent ( QMouseEvent * event );
     void resizeEvent ( QResizeEvent * event );
     void mouseMoveEvent(QMouseEvent *event);
     void wheelEvent ( QWheelEvent * event );
     void keyPressEvent(QKeyEvent *event);
 private:
     QImage m_bitmap;
     QPoint m_lastDown;
 };


#endif // PAINTAREA_H