summaryrefslogtreecommitdiff
Side-by-side diff
Diffstat (more/less context) (show whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp30
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;
}