summaryrefslogtreecommitdiff
Unidiff
Diffstat (more/less context) (ignore whitespace changes)
-rw-r--r--libopie2/opiemm/oimagescrollview.cpp1
1 files changed, 0 insertions, 1 deletions
diff --git a/libopie2/opiemm/oimagescrollview.cpp b/libopie2/opiemm/oimagescrollview.cpp
index 72248c1..56be10b 100644
--- a/libopie2/opiemm/oimagescrollview.cpp
+++ b/libopie2/opiemm/oimagescrollview.cpp
@@ -272,293 +272,292 @@ void OImageScrollView::rotate_into_data(Rotation r)
272 dest = _original_data; 272 dest = _original_data;
273 break; 273 break;
274 } 274 }
275 } 275 }
276 else 276 else
277 { 277 {
278 unsigned char *srcData, *destData; 278 unsigned char *srcData, *destData;
279 unsigned int *srcTable, *destTable; 279 unsigned int *srcTable, *destTable;
280 switch ( r ) 280 switch ( r )
281 { 281 {
282 case Rotate90: 282 case Rotate90:
283 dest.create(_original_data.height(), _original_data.width(), _original_data.depth()); 283 dest.create(_original_data.height(), _original_data.width(), _original_data.depth());
284 dest.setNumColors(_original_data.numColors()); 284 dest.setNumColors(_original_data.numColors());
285 srcTable = (unsigned int *)_original_data.colorTable(); 285 srcTable = (unsigned int *)_original_data.colorTable();
286 destTable = (unsigned int *)dest.colorTable(); 286 destTable = (unsigned int *)dest.colorTable();
287 for ( x=0; x < _original_data.numColors(); ++x ) 287 for ( x=0; x < _original_data.numColors(); ++x )
288 destTable[x] = srcTable[x]; 288 destTable[x] = srcTable[x];
289 for ( y=0; y < _original_data.height(); ++y ) 289 for ( y=0; y < _original_data.height(); ++y )
290 { 290 {
291 srcData = (unsigned char *)_original_data.scanLine(y); 291 srcData = (unsigned char *)_original_data.scanLine(y);
292 for ( x=0; x < _original_data.width(); ++x ) 292 for ( x=0; x < _original_data.width(); ++x )
293 { 293 {
294 destData = (unsigned char *)dest.scanLine(x); 294 destData = (unsigned char *)dest.scanLine(x);
295 destData[_original_data.height()-y-1] = srcData[x]; 295 destData[_original_data.height()-y-1] = srcData[x];
296 } 296 }
297 } 297 }
298 break; 298 break;
299 case Rotate180: 299 case Rotate180:
300 dest.create(_original_data.width(), _original_data.height(), _original_data.depth()); 300 dest.create(_original_data.width(), _original_data.height(), _original_data.depth());
301 dest.setNumColors(_original_data.numColors()); 301 dest.setNumColors(_original_data.numColors());
302 srcTable = (unsigned int *)_original_data.colorTable(); 302 srcTable = (unsigned int *)_original_data.colorTable();
303 destTable = (unsigned int *)dest.colorTable(); 303 destTable = (unsigned int *)dest.colorTable();
304 for ( x=0; x < _original_data.numColors(); ++x ) 304 for ( x=0; x < _original_data.numColors(); ++x )
305 destTable[x] = srcTable[x]; 305 destTable[x] = srcTable[x];
306 for ( y=0; y < _original_data.height(); ++y ) 306 for ( y=0; y < _original_data.height(); ++y )
307 { 307 {
308 srcData = (unsigned char *)_original_data.scanLine(y); 308 srcData = (unsigned char *)_original_data.scanLine(y);
309 destData = (unsigned char *)dest.scanLine(_original_data.height()-y-1); 309 destData = (unsigned char *)dest.scanLine(_original_data.height()-y-1);
310 for ( x=0; x < _original_data.width(); ++x ) 310 for ( x=0; x < _original_data.width(); ++x )
311 destData[_original_data.width()-x-1] = srcData[x]; 311 destData[_original_data.width()-x-1] = srcData[x];
312 } 312 }
313 break; 313 break;
314 case Rotate270: 314 case Rotate270:
315 dest.create(_original_data.height(), _original_data.width(), _original_data.depth()); 315 dest.create(_original_data.height(), _original_data.width(), _original_data.depth());
316 dest.setNumColors(_original_data.numColors()); 316 dest.setNumColors(_original_data.numColors());
317 srcTable = (unsigned int *)_original_data.colorTable(); 317 srcTable = (unsigned int *)_original_data.colorTable();
318 destTable = (unsigned int *)dest.colorTable(); 318 destTable = (unsigned int *)dest.colorTable();
319 for ( x=0; x < _original_data.numColors(); ++x ) 319 for ( x=0; x < _original_data.numColors(); ++x )
320 destTable[x] = srcTable[x]; 320 destTable[x] = srcTable[x];
321 for ( y=0; y < _original_data.height(); ++y ) 321 for ( y=0; y < _original_data.height(); ++y )
322 { 322 {
323 srcData = (unsigned char *)_original_data.scanLine(y); 323 srcData = (unsigned char *)_original_data.scanLine(y);
324 for ( x=0; x < _original_data.width(); ++x ) 324 for ( x=0; x < _original_data.width(); ++x )
325 { 325 {
326 destData = (unsigned char *)dest.scanLine(_original_data.width()-x-1); 326 destData = (unsigned char *)dest.scanLine(_original_data.width()-x-1);
327 destData[y] = srcData[x]; 327 destData[y] = srcData[x];
328 } 328 }
329 } 329 }
330 break; 330 break;
331 default: 331 default:
332 dest = _original_data; 332 dest = _original_data;
333 break; 333 break;
334 } 334 }
335 335
336 } 336 }
337 _image_data = dest; 337 _image_data = dest;
338} 338}
339 339
340void OImageScrollView::generateImage() 340void OImageScrollView::generateImage()
341{ 341{
342 Rotation r = Rotate0; 342 Rotation r = Rotate0;
343 _pdata = QPixmap(); 343 _pdata = QPixmap();
344 if (_original_data.isNull()) { 344 if (_original_data.isNull()) {
345 emit imageSizeChanged( _image_data.size() ); 345 emit imageSizeChanged( _image_data.size() );
346 if (_zoomer) _zoomer->setImage( _image_data ); 346 if (_zoomer) _zoomer->setImage( _image_data );
347 return; 347 return;
348 } 348 }
349 if (width()>height()&&_original_data.width()<_original_data.height() || 349 if (width()>height()&&_original_data.width()<_original_data.height() ||
350 width()<height()&&_original_data.width()>_original_data.height()) { 350 width()<height()&&_original_data.width()>_original_data.height()) {
351 if (AutoRotate()) r = Rotate90; 351 if (AutoRotate()) r = Rotate90;
352 } 352 }
353 353
354 int twidth,theight; 354 int twidth,theight;
355 odebug << " r = " << r << oendl; 355 odebug << " r = " << r << oendl;
356 if (AutoScale() && (_original_data.width()>width() || _original_data.height() > height()) ) { 356 if (AutoScale() && (_original_data.width()>width() || _original_data.height() > height()) ) {
357 if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) { 357 if (!_image_data.size().isValid()||width()>_image_data.width()||height()>_image_data.height()) {
358 odebug << "Rescaling data" << oendl; 358 odebug << "Rescaling data" << oendl;
359 if (r==Rotate0) { 359 if (r==Rotate0) {
360 _image_data = _original_data; 360 _image_data = _original_data;
361 } else { 361 } else {
362 rotate_into_data(r); 362 rotate_into_data(r);
363 } 363 }
364 } 364 }
365 rescaleImage(width(),height()); 365 rescaleImage(width(),height());
366 } else if (!FirstResizeDone()||r!=m_last_rot||_image_data.width()==0) { 366 } else if (!FirstResizeDone()||r!=m_last_rot||_image_data.width()==0) {
367 if (r==Rotate0) { 367 if (r==Rotate0) {
368 _image_data = _original_data; 368 _image_data = _original_data;
369 } else { 369 } else {
370 rotate_into_data(r); 370 rotate_into_data(r);
371 } 371 }
372 m_last_rot = r; 372 m_last_rot = r;
373 } 373 }
374 _pdata.convertFromImage(_image_data); 374 _pdata.convertFromImage(_image_data);
375 twidth = _image_data.width(); 375 twidth = _image_data.width();
376 theight = _image_data.height(); 376 theight = _image_data.height();
377 377
378 /* 378 /*
379 * update the zoomer 379 * update the zoomer
380 */ 380 */
381 check_zoomer(); 381 check_zoomer();
382 emit imageSizeChanged( _image_data.size() ); 382 emit imageSizeChanged( _image_data.size() );
383 rescaleImage( 128, 128 ); 383 rescaleImage( 128, 128 );
384 resizeContents(twidth,theight); 384 resizeContents(twidth,theight);
385 /* 385 /*
386 * move scrollbar 386 * move scrollbar
387 */ 387 */
388 if (_zoomer) { 388 if (_zoomer) {
389 _zoomer->setGeometry( viewport()->width()-_image_data.width()/2, viewport()->height()-_image_data.height()/2, 389 _zoomer->setGeometry( viewport()->width()-_image_data.width()/2, viewport()->height()-_image_data.height()/2,
390 _image_data.width()/2, _image_data.height()/2 ); 390 _image_data.width()/2, _image_data.height()/2 );
391 _zoomer->setImage( _image_data ); 391 _zoomer->setImage( _image_data );
392 } 392 }
393 /* 393 /*
394 * invalidate 394 * invalidate
395 */ 395 */
396 _image_data=QImage(); 396 _image_data=QImage();
397 if (isVisible()) { 397 if (isVisible()) {
398 updateContents(contentsX(),contentsY(),width(),height()); 398 updateContents(contentsX(),contentsY(),width(),height());
399 } 399 }
400} 400}
401 401
402void OImageScrollView::resizeEvent(QResizeEvent * e) 402void OImageScrollView::resizeEvent(QResizeEvent * e)
403{ 403{
404 odebug << "OImageScrollView resizeEvent (" << e->size() << " - " << e->oldSize() << oendl; 404 odebug << "OImageScrollView resizeEvent (" << e->size() << " - " << e->oldSize() << oendl;
405 QScrollView::resizeEvent(e); 405 QScrollView::resizeEvent(e);
406 if (e->oldSize()==e->size()||!isUpdatesEnabled ()) return; 406 if (e->oldSize()==e->size()||!isUpdatesEnabled ()) return;
407 generateImage(); 407 generateImage();
408 setFirstResizeDone(true); 408 setFirstResizeDone(true);
409 emit viewportSizeChanged( viewport()->size() ); 409 emit viewportSizeChanged( viewport()->size() );
410 410
411} 411}
412 412
413void OImageScrollView::keyPressEvent(QKeyEvent * e) 413void OImageScrollView::keyPressEvent(QKeyEvent * e)
414{ 414{
415 if (!e) return; 415 if (!e) return;
416 int dx = horizontalScrollBar()->lineStep(); 416 int dx = horizontalScrollBar()->lineStep();
417 int dy = verticalScrollBar()->lineStep(); 417 int dy = verticalScrollBar()->lineStep();
418 if (e->key()==Qt::Key_Right) { 418 if (e->key()==Qt::Key_Right) {
419 scrollBy(dx,0); 419 scrollBy(dx,0);
420 e->accept(); 420 e->accept();
421 } else if (e->key()==Qt::Key_Left) { 421 } else if (e->key()==Qt::Key_Left) {
422 scrollBy(0-dx,0); 422 scrollBy(0-dx,0);
423 e->accept(); 423 e->accept();
424 } else if (e->key()==Qt::Key_Up) { 424 } else if (e->key()==Qt::Key_Up) {
425 scrollBy(0,0-dy); 425 scrollBy(0,0-dy);
426 e->accept(); 426 e->accept();
427 } else if (e->key()==Qt::Key_Down) { 427 } else if (e->key()==Qt::Key_Down) {
428 scrollBy(0,dy); 428 scrollBy(0,dy);
429 e->accept(); 429 e->accept();
430 } else { 430 } else {
431 e->ignore(); 431 e->ignore();
432 } 432 }
433 QScrollView::keyPressEvent(e); 433 QScrollView::keyPressEvent(e);
434} 434}
435 435
436void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph) 436void OImageScrollView::drawContents(QPainter * p, int clipx, int clipy, int clipw, int cliph)
437{ 437{
438 if (!_pdata.size().isValid()) { 438 if (!_pdata.size().isValid()) {
439 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); 439 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
440 return; 440 return;
441 } 441 }
442 442
443 int w = clipw; 443 int w = clipw;
444 int h = cliph; 444 int h = cliph;
445 int x = clipx; 445 int x = clipx;
446 int y = clipy; 446 int y = clipy;
447 bool erase = false; 447 bool erase = false;
448 448
449 if (w>_pdata.width()) { 449 if (w>_pdata.width()) {
450 w = _pdata.width()-x; 450 w = _pdata.width()-x;
451 erase=true; 451 erase=true;
452 } 452 }
453 if (h>_pdata.height()) { 453 if (h>_pdata.height()) {
454 h = _pdata.height()-y; 454 h = _pdata.height()-y;
455 erase=true; 455 erase=true;
456 } 456 }
457 if (!erase && (clipy+cliph>_pdata.height()||clipx+clipw>_pdata.width())) { 457 if (!erase && (clipy+cliph>_pdata.height()||clipx+clipw>_pdata.width())) {
458 erase = true; 458 erase = true;
459 } 459 }
460 if (erase||_original_data.hasAlphaBuffer()) { 460 if (erase||_original_data.hasAlphaBuffer()) {
461 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor()); 461 p->fillRect(clipx,clipy,clipw,cliph, backgroundColor());
462 } 462 }
463 if (w>0 && h>0&&x<_pdata.width()&&y<_pdata.height()) { 463 if (w>0 && h>0&&x<_pdata.width()&&y<_pdata.height()) {
464 odebug << "Drawing pixmap" << oendl;
465 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h); 464 p->drawPixmap(clipx,clipy,_pdata,x,y,w,h);
466 } 465 }
467} 466}
468 467
469/* using the real geometry points and not the translated points is wanted! */ 468/* using the real geometry points and not the translated points is wanted! */
470void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e) 469void OImageScrollView::viewportMouseMoveEvent(QMouseEvent* e)
471{ 470{
472 int mx, my; 471 int mx, my;
473 mx = e->x(); 472 mx = e->x();
474 my = e->y(); 473 my = e->y();
475 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) { 474 if (_mouseStartPosX!=-1 && _mouseStartPosY!=-1) {
476 int diffx = _mouseStartPosX-mx; 475 int diffx = _mouseStartPosX-mx;
477 int diffy = _mouseStartPosY-my; 476 int diffy = _mouseStartPosY-my;
478 scrollBy(diffx,diffy); 477 scrollBy(diffx,diffy);
479 } 478 }
480 _mouseStartPosX=mx; 479 _mouseStartPosX=mx;
481 _mouseStartPosY=my; 480 _mouseStartPosY=my;
482} 481}
483 482
484void OImageScrollView::contentsMousePressEvent ( QMouseEvent * e) 483void OImageScrollView::contentsMousePressEvent ( QMouseEvent * e)
485{ 484{
486 odebug << " X and Y " << e->x() << " " << e->y() << oendl; 485 odebug << " X and Y " << e->x() << " " << e->y() << oendl;
487 /* this marks the beginning of a possible mouse move. Due internal reasons of QT 486 /* this marks the beginning of a possible mouse move. Due internal reasons of QT
488 the geometry values here may real differ from that set in MoveEvent (I don't know 487 the geometry values here may real differ from that set in MoveEvent (I don't know
489 why). For getting them in real context, we use the first move-event to set the start 488 why). For getting them in real context, we use the first move-event to set the start
490 position ;) 489 position ;)
491 */ 490 */
492 _mouseStartPosX = -1; 491 _mouseStartPosX = -1;
493 _mouseStartPosY = -1; 492 _mouseStartPosY = -1;
494} 493}
495 494
496void OImageScrollView::setDestructiveClose() { 495void OImageScrollView::setDestructiveClose() {
497 WFlags fl = getWFlags(); 496 WFlags fl = getWFlags();
498 /* clear it just in case */ 497 /* clear it just in case */
499 fl &= ~WDestructiveClose; 498 fl &= ~WDestructiveClose;
500 fl |= WDestructiveClose; 499 fl |= WDestructiveClose;
501 setWFlags( fl ); 500 setWFlags( fl );
502} 501}
503 502
504bool OImageScrollView::image_fit_into(const QSize&s ) 503bool OImageScrollView::image_fit_into(const QSize&s )
505{ 504{
506 if (s.width()>width()||s.height()>height()) { 505 if (s.width()>width()||s.height()>height()) {
507 return false; 506 return false;
508 } 507 }
509 return true; 508 return true;
510} 509}
511 510
512void OImageScrollView::setShowZoomer(bool how) 511void OImageScrollView::setShowZoomer(bool how)
513{ 512{
514 m_states.setBit(SHOW_ZOOMER,how); 513 m_states.setBit(SHOW_ZOOMER,how);
515 check_zoomer(); 514 check_zoomer();
516} 515}
517 516
518bool OImageScrollView::ShowZoomer()const 517bool OImageScrollView::ShowZoomer()const
519{ 518{
520 return m_states.testBit(SHOW_ZOOMER); 519 return m_states.testBit(SHOW_ZOOMER);
521} 520}
522 521
523void OImageScrollView::check_zoomer() 522void OImageScrollView::check_zoomer()
524{ 523{
525 if (!_zoomer) return; 524 if (!_zoomer) return;
526 if ( (!ShowZoomer()||image_fit_into(_pdata.size()) ) && _zoomer->isVisible()) { 525 if ( (!ShowZoomer()||image_fit_into(_pdata.size()) ) && _zoomer->isVisible()) {
527 _zoomer->hide(); 526 _zoomer->hide();
528 } else if ( ShowZoomer() && !image_fit_into(_pdata.size()) && _zoomer->isHidden()){ 527 } else if ( ShowZoomer() && !image_fit_into(_pdata.size()) && _zoomer->isHidden()){
529 _zoomer->show(); 528 _zoomer->show();
530 } 529 }
531} 530}
532 531
533bool OImageScrollView::FirstResizeDone()const 532bool OImageScrollView::FirstResizeDone()const
534{ 533{
535 return m_states.testBit(FIRST_RESIZE_DONE); 534 return m_states.testBit(FIRST_RESIZE_DONE);
536} 535}
537 536
538void OImageScrollView::setFirstResizeDone(bool how) 537void OImageScrollView::setFirstResizeDone(bool how)
539{ 538{
540 m_states.setBit(FIRST_RESIZE_DONE,how); 539 m_states.setBit(FIRST_RESIZE_DONE,how);
541} 540}
542 541
543bool OImageScrollView::ImageIsJpeg()const 542bool OImageScrollView::ImageIsJpeg()const
544{ 543{
545 return m_states.testBit(IMAGE_IS_JPEG); 544 return m_states.testBit(IMAGE_IS_JPEG);
546} 545}
547 546
548void OImageScrollView::setImageIsJpeg(bool how) 547void OImageScrollView::setImageIsJpeg(bool how)
549{ 548{
550 m_states.setBit(IMAGE_IS_JPEG,how); 549 m_states.setBit(IMAGE_IS_JPEG,how);
551} 550}
552 551
553bool OImageScrollView::ImageScaledLoaded()const 552bool OImageScrollView::ImageScaledLoaded()const
554{ 553{
555 return m_states.testBit(IMAGE_SCALED_LOADED); 554 return m_states.testBit(IMAGE_SCALED_LOADED);
556} 555}
557 556
558void OImageScrollView::setImageScaledLoaded(bool how) 557void OImageScrollView::setImageScaledLoaded(bool how)
559{ 558{
560 m_states.setBit(IMAGE_SCALED_LOADED,how); 559 m_states.setBit(IMAGE_SCALED_LOADED,how);
561} 560}
562 561
563} // namespace MM 562} // namespace MM
564} // namespace Opie 563} // namespace Opie