author | alwin <alwin> | 2005-03-24 11:34:36 (UTC) |
---|---|---|
committer | alwin <alwin> | 2005-03-24 11:34:36 (UTC) |
commit | c635023dd68edd0cb0cbb2827b926f33e27e0404 (patch) (side-by-side diff) | |
tree | 199e63c6e873398696d705c7d44a0854e3d49872 | |
parent | 108720c1f24c31e67ccc0225073a726d5edd81ae (diff) | |
download | opie-c635023dd68edd0cb0cbb2827b926f33e27e0404.zip opie-c635023dd68edd0cb0cbb2827b926f33e27e0404.tar.gz opie-c635023dd68edd0cb0cbb2827b926f33e27e0404.tar.bz2 |
- removed a lot of useless debugoutput
- fixed a small display problem
-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 @@ -92,80 +92,74 @@ void OImageScrollView::loadJpeg(bool interncall) bool real_load = false; _newImage = true; if (AutoScale()) { if (!interncall) { ExifData xf; bool scanned = xf.scan(m_lastName); int wid, hei; wid = QApplication::desktop()->width(); 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); } _image_data = QImage(); if (FirstResizeDone()) { 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)), this, SLOT(center(int,int)) ); connect(this,SIGNAL(contentsMoving(int,int)), _zoomer, (SLOT(setVisiblePoint(int,int))) ); connect(this,SIGNAL(imageSizeChanged(const QSize&)), _zoomer, SLOT(setImageSize(const QSize&)) ); connect(this,SIGNAL(viewportSizeChanged(const QSize&)), _zoomer, SLOT(setViewPortSize(const QSize&)) ); @@ -338,60 +332,68 @@ void OImageScrollView::rotate_into_data(Rotation r) { destData = (unsigned char *)dest.scanLine(_original_data.width()-x-1); destData[y] = srcData[x]; } } break; default: dest = _original_data; 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 ) { int r = qRed(data[i]); int g = qGreen(data[i]); int b = qBlue(data[i]); int a = qAlpha(data[i]); r = r + segTbl[r] > 255 ? 255 : r + segTbl[r]; g = g + segTbl[g] > 255 ? 255 : g + segTbl[g]; b = b + segTbl[b] > 255 ? 255 : b + segTbl[b]; data[i] = qRgba(r, g, b,a); @@ -445,36 +447,34 @@ int OImageScrollView::setIntensity(int value,bool reload) void OImageScrollView::generateImage() { Rotation r = Rotate0; _pdata = QPixmap(); if (_original_data.isNull()) { emit imageSizeChanged( _image_data.size() ); if (_zoomer) _zoomer->setImage( _image_data ); 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()); } else if (!FirstResizeDone()||r!=m_last_rot||_image_data.width()==0) { if (r==Rotate0) { _image_data = _original_data; } else { rotate_into_data(r); } m_last_rot = r; } @@ -501,33 +501,32 @@ void OImageScrollView::generateImage() if (_zoomer) { _zoomer->setGeometry( viewport()->width()-_image_data.width()/2, viewport()->height()-_image_data.height()/2, _image_data.width()/2, _image_data.height()/2 ); _zoomer->setImage( _image_data ); } /* * invalidate */ _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() ); } void OImageScrollView::keyPressEvent(QKeyEvent * e) { if (!e) return; int dx = horizontalScrollBar()->lineStep(); int dy = verticalScrollBar()->lineStep(); if (e->key()==Qt::Key_Right) { scrollBy(dx,0); e->accept(); @@ -582,33 +581,32 @@ void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clip void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) { int mx, my; mx = e->x(); my = e->y(); if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) { int diffx = _mouseStartPosX-mx; int diffy = _mouseStartPosY-my; 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; } void OImageScrollView::setDestructiveClose() { WFlags fl = getWFlags(); /* clear it just in case */ fl &= ~WDestructiveClose; fl |= WDestructiveClose; setWFlags( fl ); } |