void FaxRenderer::drawPage(double resolution, RenderedDocumentPage* page) { #ifdef KF_DEBUG kdDebug() << "FaxRenderer::drawPage(documentPage*) called, page number " << page->getPageNumber() << endl; #endif // Paranoid safety checks if (page == 0) { kdError() << "FaxRenderer::drawPage(documentPage*) called with argument == 0" << endl; return; } if (page->getPageNumber() == 0) { kdError() << "FaxRenderer::drawPage(documentPage*) called for a documentPage with page number 0" << endl; return; } // Wait for all access to this documentRenderer to finish mutex.lock(); // more paranoid safety checks if (page->getPageNumber() > numPages) { kdError() << "FaxRenderer::drawPage(documentPage*) called for a documentPage with page number " << page->getPageNumber() << " but the current fax file has only " << numPages << " pages." << endl; mutex.unlock(); return; } QImage img = fax.page(page->getPageNumber() - 1); SimplePageSize psize = pageSizes[page->getPageNumber() - 1]; if (psize.isValid()) { QPainter *foreGroundPaint = page->getPainter(); if (foreGroundPaint != 0) { // Compute an image for the page. // WARNING: It may be tempting to compute the image size in // pixel, using page->height() and page->width(). DON'T DO // THAT. KViewShell uses transformations e.g. to rotate the // page, and sets the argument 'resolution' accordingly. Similar // problems occur if KViewShell required a shrunken version of // the page, e.g. to print multiple pages on one sheet of paper. int width_in_pixel = qRound(resolution * psize.width().getLength_in_inch()); int height_in_pixel = qRound(resolution * psize.height().getLength_in_inch()); img = img.smoothScale(width_in_pixel, height_in_pixel); foreGroundPaint->drawImage(0, 0, img); page->returnPainter(foreGroundPaint); } } else kdError() << "FaxRenderer::drawPage() called, but page size for page " << page->getPageNumber() << " is invalid." << endl; // To indicate that the page was drawn, we set the appropriate flas in the page structure page->isEmpty = false; mutex.unlock(); }
void SizePreview::setSize(const SimplePageSize& size) { _width = size.width().getLength_in_mm(); _height = size.height().getLength_in_mm(); if (_width < 50.0) _width = 50.0; if (_width > 1200.0) _width = 1200.0; if (_height < 50.0) _height = 50.0; if (_height > 1200.0) _height = 1200.0; update(); }