void ImageViewer::calcScaleRatio() { if(image.width() == 0 || image.height() == 0) { scale = 1.0; scaleMin = qMin(Config::ScaleMinLimit, scale); return; } QSize pixSize(image.size()); switch (scaleMode) { case Config::KeepImageSize: scale = 1.0; break; case Config::FitWidgetWidth: scale = width() / qreal(image.width()); break; case Config::FitWidgetHeight: scale = height() / qreal(image.height()); break; case Config::ScaleToFitWidget: { qreal widthRatio = width() / qreal(image.width()); qreal heightRatio = height() / qreal(image.height()); scale = qMin(widthRatio, heightRatio); break; } case Config::ScaleToExpandWidget: { qreal widthRatio = width() / qreal(image.width()); qreal heightRatio = height() / qreal(image.height()); scale = qMax(widthRatio, heightRatio); break; } case Config::ScaleLargeImageToFitWidget: default: //if image large than widget, will scale image to fit widget. if(!(rect().size() - pixSize).isValid()) pixSize.scale(rect().size() + Config::SizeAdjusted, Qt::KeepAspectRatio); scale = qreal(pixSize.width()) / image.width(); break; } scaleMin = qMin(Config::ScaleMinLimit, scale); }
void STClearButtonView::relayout(){ QPixmap pix=m_item->pixmap(); QSizeF pixSize(0,0); if(!pix.isNull()){ pixSize=pix.size(); } m_item->setPos((m_size.width()-pixSize.width())*.5f, (m_size.height()-pixSize.height())*.5f); if(!m_hover){ m_item->setOpacity(0.6f); }else if(m_drag){ m_item->setOpacity(0.4f); }else{ m_item->setOpacity(0.8f); } }
void KisPresetDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { painter->save(); painter->setRenderHint(QPainter::SmoothPixmapTransform, true); if (! index.isValid()) return; KisPaintOpPreset* preset = static_cast<KisPaintOpPreset*>(index.internalPointer()); QImage preview = preset->image(); if(preview.isNull()) { return; } QRect paintRect = option.rect.adjusted(1, 1, -1, -1); if (!m_showText) { painter->drawImage(paintRect.x(), paintRect.y(), preview.scaled(paintRect.size(), Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); } else { QSize pixSize(paintRect.height(), paintRect.height()); painter->drawImage(paintRect.x(), paintRect.y(), preview.scaled(pixSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); painter->drawText(pixSize.width() + 10, option.rect.y() + option.rect.height() - 10, preset->name()); } if (m_useDirtyPresets && preset->isPresetDirty()) { const QIcon icon = KisIconUtils::loadIcon(koIconName("dirty-preset")); QPixmap pixmap = icon.pixmap(QSize(15,15)); painter->drawPixmap(paintRect.x() + 3, paintRect.y() + 3, pixmap); } if (!preset->settings() || !preset->settings()->isValid()) { const QIcon icon = KisIconUtils::loadIcon("broken-preset"); icon.paint(painter, QRect(paintRect.x() + paintRect.height() - 25, paintRect.y() + paintRect.height() - 25, 25, 25)); } if (option.state & QStyle::State_Selected) { painter->setCompositionMode(QPainter::CompositionMode_HardLight); painter->setOpacity(0.65); painter->fillRect(option.rect, option.palette.highlight()); } painter->restore(); }
void ImageViewer::initToFitWidget()//no change the value of rotate { //restore the cursor even if the image cannot load. setCursor(QCursor(Qt::ArrowCursor)); if(noPicture()) return; QSize pixSize(image.size()); //if image large than widget, will scale image to fit widget. if(!(rect().size() - pixSize).isValid())//! SIZE_ADJUST !!! pixSize.scale(rect().size() + Config::SizeAdjusted, Qt::KeepAspectRatio); if(image.width() == 0) scale = 1.0; else scale = qreal(pixSize.width()) / image.width(); scaleMin = qMin(Config::ScaleMin, scale); updateTopLeft(); shift = Config::OriginPoint; }
PersonPresentationWidget::PersonPresentationWidget(const QString &name, const QIcon &avatar, QWidget *parent) : QWidget(parent) { setLayout(new QHBoxLayout(this)); m_email = new QLabel(this); m_phone = new QLabel(this); m_name = new QLabel(this); m_pixmap = new QLabel(this); m_selected = new QCheckBox(this); m_selected->setChecked(true); m_name->setText(name); // Scaling the pixmap size to the name font int pixmapHeight = m_name->fontMetrics().height()*3; QSize pixSize(pixmapHeight,pixmapHeight); m_pixmap->setPixmap( avatar.pixmap(pixSize) .scaled(pixSize, Qt::KeepAspectRatio, Qt::SmoothTransformation)); draw() ; }
size_t Image::pixIndex(size_t x, size_t y) { return (x + y*width)*pixSize(); }
void Image::setData(std::vector<unsigned char> data) { this->data = data; if (data.size() != width * height * pixSize()) throw Exception("Incorrect data length"); }