void TRasterImageUtils::addGlobalNumbering(const TRasterImageP &ri, const std::wstring &sceneName, int globalIndex) { if (!ri) return; TRasterP raster = ri->getRaster(); int lx = raster->getLx(), ly = raster->getLy(); QColor greyOverlay(100, 100, 100, 140); QImage image = rasterToQImage(raster, true, false); QPainter p(&image); QFont numberingFont = QFont(); numberingFont.setPixelSize(ly * 0.04); numberingFont.setBold(true); p.setFont(numberingFont); QMatrix matrix; p.setMatrix(matrix.translate(0, ly).scale(1, -1), true); QFontMetrics fm = p.fontMetrics(); int fontHeight = fm.height(); int offset = fontHeight * 0.2; QString globalFrame = QString::number(globalIndex); while (globalFrame.size() < 4) globalFrame.push_front("0"); QString globalNumberingString = QString::fromStdWString(sceneName) + ": " + globalFrame; int globalNumberingWidth = fm.width(globalNumberingString); p.setPen(Qt::NoPen); p.setBrush(QColor(255, 255, 255, 255)); p.drawRect(offset, ly - offset - fontHeight, globalNumberingWidth + offset * 2, fontHeight); p.setBrush(greyOverlay); p.drawRect(offset, ly - offset - fontHeight, globalNumberingWidth + offset * 2, fontHeight); p.setPen(Qt::white); p.drawText(2 * offset, ly - 2 * offset, globalNumberingString); p.end(); }
void CleanupSwatch::CleanupSwatchArea::paintEvent(QPaintEvent *event) { QPainter p(this); if (!m_r) p.fillRect(rect(), QBrush(QColor(200, 200, 200))); else p.drawImage(rect(), rasterToQImage(m_r)); }
static void printCurrentFrame() { QPrinter printer; QPrintDialog dialog(&printer, 0); if (!dialog.exec()) return; ToonzScene *scene = TApp::instance()->getCurrentScene()->getScene(); int frame = TApp::instance()->getCurrentFrame()->getFrame(); int lx = TApp::instance() ->getCurrentScene() ->getScene() ->getCurrentCamera() ->getRes() .lx; int ly = TApp::instance() ->getCurrentScene() ->getScene() ->getCurrentCamera() ->getRes() .ly; TRaster32P raster(lx, ly); if (scene->getFrameCount() <= 0) { // Ricordarsi di usare DvMsgBox !! (se si decommenta questo codice :) ) // QMessageBox::warning(0,"Print",tr("It is not possible to generate an // animation\nbecause the scene is empty.", "WARNING")); return; } raster->fill(scene->getProperties()->getBgColor()); scene->renderFrame(raster, frame, TApp::instance()->getCurrentXsheet()->getXsheet()); QImage img = rasterToQImage(raster); QPainter painter(&printer); QRect rect = painter.viewport(); QSize size = img.size(); size.scale(rect.size(), Qt::KeepAspectRatio); painter.setViewport(rect.x(), rect.y(), size.width(), size.height()); painter.setWindow(img.rect()); painter.drawImage(0, 0, img); }