// malbox.h
// Box um irgendwas rein zu malen

#ifndef _H_MALBOX
#define _H_MALBOX

#include <qapplication.h>

#include <qwidget.h>
#include <qimage.h>
#include <qscrollbar.h>
#include <qpainter.h>
#include <qfont.h>

#include "thumbnail.h"
#include "buffer2d.h"


class ScrollMalBox;

class MalBox : public QWidget
{
   Q_OBJECT

   public:
   
   MalBox(QWidget *parent,QWidget *ParentBox);
   
   void loescheAlleBilder();
   void addImage(buffer2d *bild, char *name);
   int  holeSelektiert(int letzter);
   void holSelektiertListe(int *anzahl,int **selektiertListe);
   
   
   
   void neuberechnen();
      
   
   
   
   // ausdehnung eines thumbnails
   int thumbnailBreite;
   int thumbnailHoehe;
   
   // maximale ausdehung eines Image innerhalb der Thumbnails
   int maxImageBreite;
   int maxImageHoehe; 
   
   // ausdehnung der box in pixeln
   int aktuelleBoxBreite;
   int aktuelleBoxHoehe;
   
   // anzahl thumnnails in einer zeilen
   int anzahlBreite;
   // anzahl zeilen die für alle thumbnails benötigt werden
   int anzahlZeilen;
   
  
   // falls gescrollt werden muss
   int obersteZeile;
   
   // sichtbare zeilen in der box
   int sichtbareZeilen;
   
   ThumbnailListe *bilder;
   
   
   void maleAlles();
   void maleAllesNeu();
   void maleThumbnail(int index);

   protected:
      void  paintEvent(QPaintEvent *theEvent);
      void  resizeEvent(QResizeEvent *theEvent);
      void  mousePressEvent(QMouseEvent *theEvent);

   ScrollMalBox *parentBox;
   
   void maleThumbnail(QPainter *painter,Thumbnail *dasBild,int x,int y);
   
   
   private:
      QFont *schriftfont;
      int    verhaeltnisProzent ; 
      
      
   
};

class ScrollMalBox : public QWidget
{
   Q_OBJECT
   
   public:
      ScrollMalBox(QWidget *parent);
      void loescheAlleBilder();
      void addImage(buffer2d *bild, char *name);
      int  holeSelektiert(int letzter);
      void holSelektiertListe(int *anzahl,int **selektiertListe);
   
   virtual void setzeScrollbalken(int gesamt,int sichtbar,int position);

   private:
      MalBox     * dieMalBox;
      QScrollBar * hoehenScrollbalken;
   
  public slots:
    void scrollbalkenBewegt(int wert); 
   
};

#endif
