-rw-r--r-- | libopie2/opiemm/oimagescrollview.cpp | 30 |
1 files changed, 14 insertions, 16 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp index 58a9748..10da823 100644 --- a/libopie2/opiemm/oimagescrollview.cpp +++ b/libopie2/opiemm/oimagescrollview.cpp @@ -100,43 +100,39 @@ void OImageScrollView::loadJpeg(bool interncall) hei = QApplication::desktop()->height(); if (hei>wid) { wid = hei; } else { hei = wid; } if ( (scanned && (wid<xf.getWidth()||hei<xf.getHeight()))||!scanned ) { param = QString( "Fast Shrink( 3 ) Scale( %1, %2, ScaleMin)" ).arg( wid ).arg( hei ); - odebug << "Load jpeg scaled \"" << param << "\"" << oendl; iio.setParameters(param.latin1()); setImageScaledLoaded(true); } real_load = true; } } else { if (ImageScaledLoaded()||!interncall) { - odebug << "Load jpeg unscaled" << oendl; real_load = true; } setImageScaledLoaded(false); } if (real_load) { _original_data = iio.read() ? iio.image() : QImage(); } } void OImageScrollView::setImage( const QString& path ) { - odebug << "load new image " << oendl; if (m_lastName == path) return; m_lastName = path; _newImage = true; _original_data = QImage(); QString itype = QImage::imageFormat(m_lastName); - odebug << "Image type = " << itype << oendl; if (itype == "JPEG") { setImageIsJpeg(true); loadJpeg(); } else { setImageIsJpeg(false); _original_data.load(path); _original_data.convertDepth(QPixmap::defaultDepth()); _original_data.setAlphaBuffer(false); @@ -146,18 +142,16 @@ void OImageScrollView::setImage( const QString& path ) { generateImage(); if (isVisible()) viewport()->repaint(true); } } /* should be called every time the QImage changed it content */ void OImageScrollView::init() { - odebug << "init " << oendl; - /* * create the zoomer * and connect ther various signals */ _zoomer = new Opie::MM::OImageZoomer( this, "The Zoomer" ); connect(_zoomer, SIGNAL( zoomAreaRel(int,int)), this, SLOT(scrollBy(int,int)) ); connect(_zoomer, SIGNAL( zoomArea(int,int)), @@ -346,44 +340,52 @@ void OImageScrollView::rotate_into_data(Rotation r) break; } } _newImage = true; _image_data = dest; } +// yes - sorry - it is NOT gamma it is just BRIGHTNESS. Alwin void OImageScrollView::apply_gamma(int aValue) { if (!_image_data.size().isValid()) return; - float percent = ((float)aValue/100); - odebug << "Apply gamma " << percent << oendl; - int pixels = _image_data.depth()>8?_image_data.width()*_image_data.height() : _image_data.numColors(); + float percent = ((float)aValue/100.0); + int segColors = _image_data.depth() > 8 ? 256 : _image_data.numColors(); + /* must be - otherwise it displays some ... strange colors */ + if (segColors<256) segColors=256; + unsigned char *segTbl = new unsigned char[segColors]; + int pixels = _image_data.depth()>8?_image_data.width()*_image_data.height() : _image_data.numColors(); + + bool brighten = (percent >= 0); - if ( percent < 0 ) + if ( percent < 0 ) { percent = -percent; + } unsigned int *data = _image_data.depth() > 8 ? (unsigned int *)_image_data.bits() : (unsigned int *)_image_data.colorTable(); + int tmp = 0; if (brighten) { for ( int i=0; i < segColors; ++i ) { - int tmp = (int)(i*percent); + tmp = (int)(i*percent); if ( tmp > 255 ) tmp = 255; segTbl[i] = tmp; } } else { for ( int i=0; i < segColors; ++i ) { - int tmp = (int)(i*percent); + tmp = (int)(i*percent); if ( tmp < 0 ) tmp = 0; segTbl[i] = tmp; } } if (brighten) { for ( int i=0; i < pixels; ++i ) { @@ -453,20 +455,18 @@ void OImageScrollView::generateImage() return; } if (width()>height()&&_original_data.width()<_original_data.height() || width()<height()&&_original_data.width()>_original_data.height()) { if (AutoRotate()) r = Rotate90; } int twidth,theight; - odebug << " r = " << r << oendl; if (AutoScale() && (_original_data.width()>width() || _original_data.height() > height()) ) { if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) { - odebug << "Rescaling data" << oendl; if (r==Rotate0) { _image_data = _original_data; } else { rotate_into_data(r); } _newImage = true; } rescaleImage(width(),height()); @@ -509,17 +509,16 @@ void OImageScrollView::generateImage() _image_data=QImage(); if (isVisible()) { updateContents(contentsX(),contentsY(),width(),height()); } } void OImageScrollView::resizeEvent(QResizeEvent * e) { - odebug << "OImageScrollView resizeEvent (" << e->size() << " - " << e->oldSize() << oendl; QScrollView::resizeEvent(e); if (e->oldSize()==e->size()||!isUpdatesEnabled ()) return; generateImage(); setFirstResizeDone(true); emit viewportSizeChanged( viewport()->size() ); } @@ -590,17 +589,16 @@ void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) scrollBy(diffx,diffy); } _mouseStartPosX=mx; _mouseStartPosY=my; } void OImageScrollView::contentsMousePressEvent ( QMouseEvent * e) { - odebug << " X and Y " << e->x() << " " << e->y() << oendl; /* this marks the beginning of a possible mouse move. Due internal reasons of QT the geometry values here may real differ from that set in MoveEvent (I don't know why). For getting them in real context, we use the first move-event to set the start position ;) */ _mouseStartPosX = -1; _mouseStartPosY = -1; } |