void ImageArea::mouseMoveEvent(QMouseEvent *event) { InstrumentsEnum instrument = DataSingleton::Instance()->getInstrument(); mInstrumentHandler = mInstrumentsHandlers.at(DataSingleton::Instance()->getInstrument()); if(mIsResize) { mAdditionalTools->resizeCanvas(event->x(), event->y()); emit sendNewImageSize(mImage->size()); } else if(event->pos().x() < mImage->rect().right() + 6 && event->pos().x() > mImage->rect().right() && event->pos().y() > mImage->rect().bottom() && event->pos().y() < mImage->rect().bottom() + 6) { setCursor(Qt::SizeFDiagCursor); if (qobject_cast<AbstractSelection*>(mInstrumentHandler)) return; } else if (!qobject_cast<AbstractSelection*>(mInstrumentHandler)) { restoreCursor(); } if(event->pos().x() < mImage->width() && event->pos().y() < mImage->height()) { emit sendCursorPos(event->pos()); } if(instrument != NONE_INSTRUMENT) { mInstrumentHandler->mouseMoveEvent(event, *this); } }
bool AdditionalTools::zoomImage(qreal factor) { mZoomedFactor *= factor; mPImageArea->setImage(*(mPImageArea->getImage())); mPImageArea->resize(mPImageArea->rect().width() * factor, mPImageArea->rect().height() * factor); emit sendNewImageSize(mPImageArea->size()); mPImageArea->setEdited(true); mPImageArea->clearSelection(); return true; }
void MainWindow::initializeNewTab(const bool &isOpen, const QString &filePath) { ImageArea *imageArea; QString fileName(tr("Untitled Image")); if(isOpen && filePath.isEmpty()) { imageArea = new ImageArea(isOpen, "", this); fileName = imageArea->getFileName(); } else if(isOpen && !filePath.isEmpty()) { imageArea = new ImageArea(isOpen, filePath, this); fileName = imageArea->getFileName(); } else { imageArea = new ImageArea(false, "", this); } if (!imageArea->getFileName().isNull()) { QScrollArea *scrollArea = new QScrollArea(); scrollArea->setAttribute(Qt::WA_DeleteOnClose); scrollArea->setBackgroundRole(QPalette::Dark); scrollArea->setWidget(imageArea); mTabWidget->addTab(scrollArea, fileName); mTabWidget->setCurrentIndex(mTabWidget->count()-1); mUndoStackGroup->addStack(imageArea->getUndoStack()); connect(imageArea, SIGNAL(sendPrimaryColorView()), mToolbar, SLOT(setPrimaryColorView())); connect(imageArea, SIGNAL(sendSecondaryColorView()), mToolbar, SLOT(setSecondaryColorView())); connect(imageArea, SIGNAL(sendRestorePreviousInstrument()), this, SLOT(restorePreviousInstrument())); connect(imageArea, SIGNAL(sendSetInstrument(InstrumentsEnum)), this, SLOT(setInstrument(InstrumentsEnum))); connect(imageArea, SIGNAL(sendNewImageSize(QSize)), this, SLOT(setNewSizeToSizeLabel(QSize))); connect(imageArea, SIGNAL(sendCursorPos(QPoint)), this, SLOT(setNewPosToPosLabel(QPoint))); connect(imageArea, SIGNAL(sendColor(QColor)), this, SLOT(setCurrentPipetteColor(QColor))); connect(imageArea, SIGNAL(sendEnableCopyCutActions(bool)), this, SLOT(enableCopyCutActions(bool))); connect(imageArea, SIGNAL(sendEnableSelectionInstrument(bool)), this, SLOT(instumentsAct(bool))); setWindowTitle(QString("%1 - EasyPaint").arg(fileName)); }
bool AdditionalTools::zoomImage(qreal factor) { int zoomFactor = mPImageArea->getZoomFactor(); zoomFactor *= factor; if((zoomFactor < MIN_ZOOM_FACTOR) || (zoomFactor > MAX_ZOOM_FACTOR)) { return false; } else { mPImageArea->setZoomFactor(zoomFactor); mPImageArea->resize(mPImageArea->getImage()->size().width() * factor, mPImageArea->getImage()->size().height() * factor); mPImageArea->setImage(mPImageArea->getImage()->transformed(QTransform::fromScale(factor, factor))); emit sendNewImageSize(mPImageArea->size()); mPImageArea->setEdited(true); mPImageArea->clearSelection(); return true; } }
ImageArea::ImageArea(const bool &isOpen, const QString &filePath, QWidget *parent) : QWidget(parent), mIsEdited(false), mIsPaint(false), mIsResize(false) { setMouseTracking(true); mRightButtonPressed = false; mFilePath.clear(); makeFormatsFilters(); initializeImage(); mZoomFactor = 1; mAdditionalTools = new AdditionalTools(this); mUndoStack = new QUndoStack(this); mUndoStack->setUndoLimit(DataSingleton::Instance()->getHistoryDepth()); if(isOpen && filePath.isEmpty()) { open(); } else if(isOpen && !filePath.isEmpty()) { open(filePath); } else { QPainter *painter = new QPainter(mImage); painter->fillRect(0, 0, DataSingleton::Instance()->getBaseSize().width(), DataSingleton::Instance()->getBaseSize().height(), Qt::white); painter->end(); resize(mImage->rect().right() + 6, mImage->rect().bottom() + 6); } QTimer *autoSaveTimer = new QTimer(this); autoSaveTimer->setInterval(DataSingleton::Instance()->getAutoSaveInterval() * 1000); connect(autoSaveTimer, SIGNAL(timeout()), this, SLOT(autoSave())); connect(mAdditionalTools, SIGNAL(sendNewImageSize(QSize)), this, SIGNAL(sendNewImageSize(QSize))); autoSaveTimer->start(); SelectionInstrument *selectionInstrument = new SelectionInstrument(this); connect(selectionInstrument, SIGNAL(sendEnableCopyCutActions(bool)), this, SIGNAL(sendEnableCopyCutActions(bool))); connect(selectionInstrument, SIGNAL(sendEnableSelectionInstrument(bool)), this, SIGNAL(sendEnableSelectionInstrument(bool))); // Instruments handlers mInstrumentsHandlers.fill(0, (int)INSTRUMENTS_COUNT); mInstrumentsHandlers[CURSOR] = selectionInstrument; mInstrumentsHandlers[PEN] = new PencilInstrument(this); mInstrumentsHandlers[LINE] = new LineInstrument(this); mInstrumentsHandlers[ERASER] = new EraserInstrument(this); mInstrumentsHandlers[RECTANGLE] = new RectangleInstrument(this); mInstrumentsHandlers[ELLIPSE] = new EllipseInstrument(this); mInstrumentsHandlers[FILL] = new FillInstrument(this); mInstrumentsHandlers[SPRAY] = new SprayInstrument(this); mInstrumentsHandlers[MAGNIFIER] = new MagnifierInstrument(this); mInstrumentsHandlers[COLORPICKER] = new ColorpickerInstrument(this); mInstrumentsHandlers[CURVELINE] = new CurveLineInstrument(this); mInstrumentsHandlers[TEXT] = new TextInstrument(this); // Effects handlers mEffectsHandlers.fill(0, (int)EFFECTS_COUNT); mEffectsHandlers[NEGATIVE] = new NegativeEffect(this); mEffectsHandlers[GRAY] = new GrayEffect(this); mEffectsHandlers[BINARIZATION] = new BinarizationEffect(this); mEffectsHandlers[GAUSSIANBLUR] = new GaussianBlurEffect(this); mEffectsHandlers[GAMMA] = new GammaEffect(this); mEffectsHandlers[SHARPEN] = new SharpenEffect(this); mEffectsHandlers[CUSTOM] = new CustomEffect(this); }
void ImageArea::rotateImage(bool flag) { mAdditionalTools->rotateImage(flag); emit sendNewImageSize(mImage->size()); }
void ImageArea::resizeCanvas() { mAdditionalTools->resizeCanvas(mImage->width(), mImage->height(), true); emit sendNewImageSize(mImage->size()); }
void ImageArea::resizeImage() { mAdditionalTools->resizeImage(); emit sendNewImageSize(mImage->size()); }