-rw-r--r-- | libopie2/opiemm/oimagescrollview.cpp | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp index 10da823..76f50e1 100644 --- a/libopie2/opiemm/oimagescrollview.cpp +++ b/libopie2/opiemm/oimagescrollview.cpp @@ -196,24 +196,25 @@ void OImageScrollView::setAutoScaleRotate(bool scale, bool rotate) { m_states.setBit(AUTO_ROTATE,rotate); setAutoScale(scale); } void OImageScrollView::setAutoScale(bool how) { m_states.setBit(AUTO_SCALE,how); _image_data = QImage(); if (ImageIsJpeg() && how == false && ImageScaledLoaded()==true) { loadJpeg(true); } + _newImage = true; generateImage(); } bool OImageScrollView::AutoScale()const { return m_states.testBit(AUTO_SCALE); } OImageScrollView::~OImageScrollView() { } @@ -339,26 +340,28 @@ void OImageScrollView::rotate_into_data(Rotation r) 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; + if (aValue==0 || !_image_data.size().isValid()) return; float percent = ((float)aValue/100.0); + /* make sure working on a copy */ + _image_data.detach(); 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 ) { percent = -percent; |