author | leseb <leseb> | 2002-04-23 21:24:05 (UTC) |
---|---|---|
committer | leseb <leseb> | 2002-04-23 21:24:05 (UTC) |
commit | 0b77115683f1b8d339cdf07755e22d443caf310a (patch) (unidiff) | |
tree | a37ef63fea1b3dbf9f396f7a79030e4d04629952 | |
parent | 7200c56e4ccc6aa83d1a3ef86ddda9470492ab52 (diff) | |
download | opie-0b77115683f1b8d339cdf07755e22d443caf310a.zip opie-0b77115683f1b8d339cdf07755e22d443caf310a.tar.gz opie-0b77115683f1b8d339cdf07755e22d443caf310a.tar.bz2 |
Fix bug when drawing page with size inferior to view size
-rw-r--r-- | noncore/graphics/drawpad/drawpadcanvas.cpp | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/noncore/graphics/drawpad/drawpadcanvas.cpp b/noncore/graphics/drawpad/drawpadcanvas.cpp index b39a633..65b3dea 100644 --- a/noncore/graphics/drawpad/drawpadcanvas.cpp +++ b/noncore/graphics/drawpad/drawpadcanvas.cpp | |||
@@ -286,259 +286,269 @@ void DrawPadCanvas::exportPage(uint fromPage, uint toPage, const QString& name,c | |||
286 | 286 | ||
287 | QImage image = m_pages.current()->convertToImage(); | 287 | QImage image = m_pages.current()->convertToImage(); |
288 | imageIO.setImage(image); | 288 | imageIO.setImage(image); |
289 | imageIO.write(); | 289 | imageIO.write(); |
290 | delete ioDevice; | 290 | delete ioDevice; |
291 | } else { | 291 | } else { |
292 | for (uint i = fromPage; i <= toPage; i++) { | 292 | for (uint i = fromPage; i <= toPage; i++) { |
293 | DocLnk docLnk; | 293 | DocLnk docLnk; |
294 | MimeType mimeType(format); | 294 | MimeType mimeType(format); |
295 | 295 | ||
296 | docLnk.setName(name + QString::number(i)); | 296 | docLnk.setName(name + QString::number(i)); |
297 | docLnk.setType(mimeType.id()); | 297 | docLnk.setType(mimeType.id()); |
298 | 298 | ||
299 | FileManager fileManager; | 299 | FileManager fileManager; |
300 | QIODevice* ioDevice = fileManager.saveFile(docLnk); | 300 | QIODevice* ioDevice = fileManager.saveFile(docLnk); |
301 | QImageIO imageIO(ioDevice, format); | 301 | QImageIO imageIO(ioDevice, format); |
302 | 302 | ||
303 | QImage image = m_pages.at(i - 1)->convertToImage(); | 303 | QImage image = m_pages.at(i - 1)->convertToImage(); |
304 | imageIO.setImage(image); | 304 | imageIO.setImage(image); |
305 | imageIO.write(); | 305 | imageIO.write(); |
306 | delete ioDevice; | 306 | delete ioDevice; |
307 | } | 307 | } |
308 | } | 308 | } |
309 | } | 309 | } |
310 | 310 | ||
311 | QPixmap* DrawPadCanvas::currentPage() | 311 | QPixmap* DrawPadCanvas::currentPage() |
312 | { | 312 | { |
313 | return m_pages.current(); | 313 | return m_pages.current(); |
314 | } | 314 | } |
315 | 315 | ||
316 | QList<QPixmap> DrawPadCanvas::pages() | 316 | QList<QPixmap> DrawPadCanvas::pages() |
317 | { | 317 | { |
318 | return m_pages; | 318 | return m_pages; |
319 | } | 319 | } |
320 | 320 | ||
321 | uint DrawPadCanvas::pagePosition() | 321 | uint DrawPadCanvas::pagePosition() |
322 | { | 322 | { |
323 | return (m_pages.at() + 1); | 323 | return (m_pages.at() + 1); |
324 | } | 324 | } |
325 | 325 | ||
326 | uint DrawPadCanvas::pageCount() | 326 | uint DrawPadCanvas::pageCount() |
327 | { | 327 | { |
328 | return m_pages.count(); | 328 | return m_pages.count(); |
329 | } | 329 | } |
330 | 330 | ||
331 | void DrawPadCanvas::backupPage() | 331 | void DrawPadCanvas::backupPage() |
332 | { | 332 | { |
333 | QPixmap* currentBackup = m_pageBackups.current(); | 333 | QPixmap* currentBackup = m_pageBackups.current(); |
334 | while (m_pageBackups.last() != currentBackup) { | 334 | while (m_pageBackups.last() != currentBackup) { |
335 | m_pageBackups.removeLast(); | 335 | m_pageBackups.removeLast(); |
336 | } | 336 | } |
337 | 337 | ||
338 | while (m_pageBackups.count() >= (5 + 1)) { | 338 | while (m_pageBackups.count() >= (5 + 1)) { |
339 | m_pageBackups.removeFirst(); | 339 | m_pageBackups.removeFirst(); |
340 | } | 340 | } |
341 | 341 | ||
342 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 342 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
343 | 343 | ||
344 | emit pageBackupsChanged(); | 344 | emit pageBackupsChanged(); |
345 | } | 345 | } |
346 | 346 | ||
347 | void DrawPadCanvas::deleteAll() | 347 | void DrawPadCanvas::deleteAll() |
348 | { | 348 | { |
349 | QMessageBox messageBox(tr("Delete All"), tr("Do you want to delete\nall the pages?"), | 349 | QMessageBox messageBox(tr("Delete All"), tr("Do you want to delete\nall the pages?"), |
350 | QMessageBox::Information, QMessageBox::Yes, | 350 | QMessageBox::Information, QMessageBox::Yes, |
351 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, | 351 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, |
352 | QMessageBox::NoButton, this); | 352 | QMessageBox::NoButton, this); |
353 | 353 | ||
354 | if (messageBox.exec() == QMessageBox::Yes) { | 354 | if (messageBox.exec() == QMessageBox::Yes) { |
355 | m_pages.clear(); | 355 | m_pages.clear(); |
356 | 356 | ||
357 | m_pages.append(new QPixmap(contentsRect().size())); | 357 | m_pages.append(new QPixmap(contentsRect().size())); |
358 | m_pages.current()->fill(Qt::white); | 358 | m_pages.current()->fill(Qt::white); |
359 | 359 | ||
360 | m_pageBackups.clear(); | 360 | m_pageBackups.clear(); |
361 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 361 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
362 | 362 | ||
363 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 363 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
364 | viewport()->update(); | 364 | viewport()->update(); |
365 | 365 | ||
366 | emit pagesChanged(); | 366 | emit pagesChanged(); |
367 | emit pageBackupsChanged(); | 367 | emit pageBackupsChanged(); |
368 | } | 368 | } |
369 | } | 369 | } |
370 | 370 | ||
371 | void DrawPadCanvas::newPage() | 371 | void DrawPadCanvas::newPage() |
372 | { | 372 | { |
373 | QRect rect = contentsRect(); | 373 | QRect rect = contentsRect(); |
374 | 374 | ||
375 | NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(), | 375 | NewPageDialog newPageDialog(rect.width(), rect.height(), m_pDrawPad->pen().color(), |
376 | m_pDrawPad->brush().color(), this); | 376 | m_pDrawPad->brush().color(), this); |
377 | 377 | ||
378 | if (newPageDialog.exec() == QDialog::Accepted) { | 378 | if (newPageDialog.exec() == QDialog::Accepted) { |
379 | m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(), | 379 | m_pages.insert(m_pages.at() + 1, new QPixmap(newPageDialog.selectedWidth(), |
380 | newPageDialog.selectedHeight())); | 380 | newPageDialog.selectedHeight())); |
381 | m_pages.current()->fill(newPageDialog.selectedColor()); | 381 | m_pages.current()->fill(newPageDialog.selectedColor()); |
382 | 382 | ||
383 | m_pageBackups.clear(); | 383 | m_pageBackups.clear(); |
384 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 384 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
385 | 385 | ||
386 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 386 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
387 | viewport()->update(); | 387 | viewport()->update(); |
388 | 388 | ||
389 | emit pagesChanged(); | 389 | emit pagesChanged(); |
390 | emit pageBackupsChanged(); | 390 | emit pageBackupsChanged(); |
391 | } | 391 | } |
392 | } | 392 | } |
393 | 393 | ||
394 | void DrawPadCanvas::clearPage() | 394 | void DrawPadCanvas::clearPage() |
395 | { | 395 | { |
396 | QMessageBox messageBox(tr("Clear Page"), tr("Do you want to clear\nthe current page?"), | 396 | QMessageBox messageBox(tr("Clear Page"), tr("Do you want to clear\nthe current page?"), |
397 | QMessageBox::Information, QMessageBox::Yes, | 397 | QMessageBox::Information, QMessageBox::Yes, |
398 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, | 398 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, |
399 | QMessageBox::NoButton, this); | 399 | QMessageBox::NoButton, this); |
400 | 400 | ||
401 | if (messageBox.exec() == QMessageBox::Yes) { | 401 | if (messageBox.exec() == QMessageBox::Yes) { |
402 | m_pages.current()->fill(Qt::white); | 402 | m_pages.current()->fill(Qt::white); |
403 | 403 | ||
404 | viewport()->update(); | 404 | viewport()->update(); |
405 | } | 405 | } |
406 | } | 406 | } |
407 | 407 | ||
408 | void DrawPadCanvas::deletePage() | 408 | void DrawPadCanvas::deletePage() |
409 | { | 409 | { |
410 | QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe current page?"), | 410 | QMessageBox messageBox(tr("Delete Page"), tr("Do you want to delete\nthe current page?"), |
411 | QMessageBox::Information, QMessageBox::Yes, | 411 | QMessageBox::Information, QMessageBox::Yes, |
412 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, | 412 | QMessageBox::No | QMessageBox::Escape | QMessageBox::Default, |
413 | QMessageBox::NoButton, this); | 413 | QMessageBox::NoButton, this); |
414 | 414 | ||
415 | if (messageBox.exec() == QMessageBox::Yes) { | 415 | if (messageBox.exec() == QMessageBox::Yes) { |
416 | m_pages.remove(m_pages.current()); | 416 | m_pages.remove(m_pages.current()); |
417 | 417 | ||
418 | if (m_pages.isEmpty()) { | 418 | if (m_pages.isEmpty()) { |
419 | m_pages.append(new QPixmap(contentsRect().size())); | 419 | m_pages.append(new QPixmap(contentsRect().size())); |
420 | m_pages.current()->fill(Qt::white); | 420 | m_pages.current()->fill(Qt::white); |
421 | } | 421 | } |
422 | 422 | ||
423 | m_pageBackups.clear(); | 423 | m_pageBackups.clear(); |
424 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 424 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
425 | 425 | ||
426 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 426 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
427 | viewport()->update(); | 427 | viewport()->update(); |
428 | 428 | ||
429 | emit pagesChanged(); | 429 | emit pagesChanged(); |
430 | emit pageBackupsChanged(); | 430 | emit pageBackupsChanged(); |
431 | } | 431 | } |
432 | } | 432 | } |
433 | 433 | ||
434 | bool DrawPadCanvas::undoEnabled() | 434 | bool DrawPadCanvas::undoEnabled() |
435 | { | 435 | { |
436 | return (m_pageBackups.current() != m_pageBackups.getFirst()); | 436 | return (m_pageBackups.current() != m_pageBackups.getFirst()); |
437 | } | 437 | } |
438 | 438 | ||
439 | bool DrawPadCanvas::redoEnabled() | 439 | bool DrawPadCanvas::redoEnabled() |
440 | { | 440 | { |
441 | return (m_pageBackups.current() != m_pageBackups.getLast()); | 441 | return (m_pageBackups.current() != m_pageBackups.getLast()); |
442 | } | 442 | } |
443 | 443 | ||
444 | bool DrawPadCanvas::goPreviousPageEnabled() | 444 | bool DrawPadCanvas::goPreviousPageEnabled() |
445 | { | 445 | { |
446 | return (m_pages.current() != m_pages.getFirst()); | 446 | return (m_pages.current() != m_pages.getFirst()); |
447 | } | 447 | } |
448 | 448 | ||
449 | bool DrawPadCanvas::goNextPageEnabled() | 449 | bool DrawPadCanvas::goNextPageEnabled() |
450 | { | 450 | { |
451 | return (m_pages.current() != m_pages.getLast()); | 451 | return (m_pages.current() != m_pages.getLast()); |
452 | } | 452 | } |
453 | 453 | ||
454 | void DrawPadCanvas::undo() | 454 | void DrawPadCanvas::undo() |
455 | { | 455 | { |
456 | *(m_pages.current()) = *(m_pageBackups.prev()); | 456 | *(m_pages.current()) = *(m_pageBackups.prev()); |
457 | 457 | ||
458 | viewport()->update(); | 458 | viewport()->update(); |
459 | 459 | ||
460 | emit pageBackupsChanged(); | 460 | emit pageBackupsChanged(); |
461 | } | 461 | } |
462 | 462 | ||
463 | void DrawPadCanvas::redo() | 463 | void DrawPadCanvas::redo() |
464 | { | 464 | { |
465 | *(m_pages.current()) = *(m_pageBackups.next()); | 465 | *(m_pages.current()) = *(m_pageBackups.next()); |
466 | 466 | ||
467 | viewport()->update(); | 467 | viewport()->update(); |
468 | 468 | ||
469 | emit pageBackupsChanged(); | 469 | emit pageBackupsChanged(); |
470 | } | 470 | } |
471 | 471 | ||
472 | void DrawPadCanvas::goFirstPage() | 472 | void DrawPadCanvas::goFirstPage() |
473 | { | 473 | { |
474 | m_pages.first(); | 474 | m_pages.first(); |
475 | m_pageBackups.clear(); | 475 | m_pageBackups.clear(); |
476 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 476 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
477 | 477 | ||
478 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 478 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
479 | viewport()->update(); | 479 | viewport()->update(); |
480 | 480 | ||
481 | emit pagesChanged(); | 481 | emit pagesChanged(); |
482 | emit pageBackupsChanged(); | 482 | emit pageBackupsChanged(); |
483 | } | 483 | } |
484 | 484 | ||
485 | void DrawPadCanvas::goPreviousPage() | 485 | void DrawPadCanvas::goPreviousPage() |
486 | { | 486 | { |
487 | m_pages.prev(); | 487 | m_pages.prev(); |
488 | m_pageBackups.clear(); | 488 | m_pageBackups.clear(); |
489 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 489 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
490 | 490 | ||
491 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 491 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
492 | viewport()->update(); | 492 | viewport()->update(); |
493 | 493 | ||
494 | emit pagesChanged(); | 494 | emit pagesChanged(); |
495 | emit pageBackupsChanged(); | 495 | emit pageBackupsChanged(); |
496 | } | 496 | } |
497 | 497 | ||
498 | void DrawPadCanvas::goNextPage() | 498 | void DrawPadCanvas::goNextPage() |
499 | { | 499 | { |
500 | m_pages.next(); | 500 | m_pages.next(); |
501 | m_pageBackups.clear(); | 501 | m_pageBackups.clear(); |
502 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 502 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
503 | 503 | ||
504 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 504 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
505 | viewport()->update(); | 505 | viewport()->update(); |
506 | 506 | ||
507 | emit pagesChanged(); | 507 | emit pagesChanged(); |
508 | emit pageBackupsChanged(); | 508 | emit pageBackupsChanged(); |
509 | } | 509 | } |
510 | 510 | ||
511 | void DrawPadCanvas::goLastPage() | 511 | void DrawPadCanvas::goLastPage() |
512 | { | 512 | { |
513 | m_pages.last(); | 513 | m_pages.last(); |
514 | m_pageBackups.clear(); | 514 | m_pageBackups.clear(); |
515 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); | 515 | m_pageBackups.append(new QPixmap(*(m_pages.current()))); |
516 | 516 | ||
517 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); | 517 | resizeContents(m_pages.current()->width(), m_pages.current()->height()); |
518 | viewport()->update(); | 518 | viewport()->update(); |
519 | 519 | ||
520 | emit pagesChanged(); | 520 | emit pagesChanged(); |
521 | emit pageBackupsChanged(); | 521 | emit pageBackupsChanged(); |
522 | } | 522 | } |
523 | 523 | ||
524 | void DrawPadCanvas::contentsMousePressEvent(QMouseEvent* e) | 524 | void DrawPadCanvas::contentsMousePressEvent(QMouseEvent* e) |
525 | { | 525 | { |
526 | m_pDrawPad->tool()->mousePressEvent(e); | 526 | m_pDrawPad->tool()->mousePressEvent(e); |
527 | } | 527 | } |
528 | 528 | ||
529 | void DrawPadCanvas::contentsMouseReleaseEvent(QMouseEvent* e) | 529 | void DrawPadCanvas::contentsMouseReleaseEvent(QMouseEvent* e) |
530 | { | 530 | { |
531 | m_pDrawPad->tool()->mouseReleaseEvent(e); | 531 | m_pDrawPad->tool()->mouseReleaseEvent(e); |
532 | } | 532 | } |
533 | 533 | ||
534 | void DrawPadCanvas::contentsMouseMoveEvent(QMouseEvent* e) | 534 | void DrawPadCanvas::contentsMouseMoveEvent(QMouseEvent* e) |
535 | { | 535 | { |
536 | m_pDrawPad->tool()->mouseMoveEvent(e); | 536 | m_pDrawPad->tool()->mouseMoveEvent(e); |
537 | } | 537 | } |
538 | 538 | ||
539 | void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch) | 539 | void DrawPadCanvas::drawContents(QPainter* p, int cx, int cy, int cw, int ch) |
540 | { | 540 | { |
541 | QRect clipRect(cx, cy, cw, ch); | 541 | QRect clipRect(cx, cy, cw, ch); |
542 | QRect pixmapRect(0, 0, m_pages.current()->width(), m_pages.current()->height()); | ||
543 | QRect drawRect = pixmapRect.intersect(clipRect); | ||
542 | 544 | ||
543 | p->drawPixmap(clipRect.topLeft(), *(m_pages.current()), clipRect); | 545 | p->drawPixmap(drawRect.topLeft(), *(m_pages.current()), drawRect); |
546 | |||
547 | if (drawRect.right() < clipRect.right()) { | ||
548 | p->fillRect(drawRect.right() + 1, cy, cw - drawRect.width(), ch, colorGroup().dark()); | ||
549 | } | ||
550 | |||
551 | if (drawRect.bottom() < clipRect.bottom()) { | ||
552 | p->fillRect(cx, drawRect.bottom() + 1, cw, ch - drawRect.height(), colorGroup().dark()); | ||
553 | } | ||
544 | } | 554 | } |