#include "scrolldisplay.h" ScrollDisplay::ScrollDisplay(QWidget *parent, const char *name, WFlags flags):QScrollView(parent,name,flags) { paint_area=new PaintArea(this); connect(paint_area,SIGNAL(draggedBy(int,int)),this,SLOT(scrollBy(int,int))); setGeometry(0,0,width(),height()); addChild(paint_area); paint_area->repaint(); } ScrollDisplay::~ScrollDisplay() { delete paint_area; } PaintArea::PaintArea(QWidget *parent, const char *name, WFlags flags):QWidget(parent,name,flags) { dragging=false; pm=new QPixmap(0,0); resize(pm->width(),pm->height()); } PaintArea::~PaintArea() { delete pm; } void PaintArea::paintEvent(QPaintEvent *e) { bitBlt(this,0,0,pm); e=NULL; } void PaintArea::setImage(QImage &im) { pm->convertFromImage(im); resize(pm->width(),pm->height()); repaint(); } bool PaintArea::load(QString filename) { bool b=pm->load(filename); if (b) { resize(pm->width(),pm->height()); repaint(); } return(b); } bool PaintArea::save(QString filename, const char *format) { return(pm->save(filename,format)); } void PaintArea::mousePressEvent(QMouseEvent *e) { dragging=true; sx=e->globalX(); sy=e->globalY(); emit(pressed(e)); } void PaintArea::mouseMoveEvent(QMouseEvent *e) { if (dragging) { int dx=sx-e->globalX(), dy=e->globalY()-sy; sx=e->globalX(); sy=e->globalY(); emit(draggedBy(dx,-dy)); } } void PaintArea::mouseReleaseEvent(QMouseEvent *e) { dragging=false; e->accept(); }