void LineInstrument::paint(ImageArea &imageArea, bool isSecondaryColor, bool) { QPainter painter(imageArea.getImage()); if(isSecondaryColor) { painter.setPen(QPen(Data::Instance()->getSecondaryColor(), Data::Instance()->getPenSize(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); } else { painter.setPen(QPen(Data::Instance()->getPrimaryColor(), Data::Instance()->getPenSize(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); } if(mStartPoint != mEndPoint) { painter.drawLine(mStartPoint, mEndPoint); } if(mStartPoint == mEndPoint) { painter.drawPoint(mStartPoint); } imageArea.setEdited(true); painter.end(); imageArea.update(); }
void EraserInstrument::paint(ImageArea &imageArea, bool, bool) { QPainter painter(imageArea.getImage()); painter.setPen(QPen(Qt::white, DataSingleton::Instance()->getPenSize() * imageArea.getZoomFactor(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); if(mStartPoint != mEndPoint) { painter.drawLine(mStartPoint, mEndPoint); } if(mStartPoint == mEndPoint) { painter.drawPoint(mStartPoint); } imageArea.setEdited(true); // int rad(DataSingleton::Instance()->getPenSize() + round(sqrt((mStartPoint.x() - mEndPoint.x()) * // (mStartPoint.x() - mEndPoint.x()) + // (mStartPoint.y() - mEndPoint.y()) * // (mStartPoint.y() - mEndPoint.y())))); // mPImageArea->update(QRect(mStartPoint, mEndPoint).normalized().adjusted(-rad, -rad, +rad, +rad)); painter.end(); imageArea.update(); }
void BinarizationEffect::applyEffect(ImageArea &imageArea) { makeUndoCommand(imageArea); // TODO: add dialog for setting parameters makeBinarization(imageArea, 200, 100); imageArea.setEdited(true); imageArea.update(); }
void TextInstrument::paint(ImageArea &imageArea, bool, bool) { if(mTopLeftPoint != mBottomRightPoint) { QPainter painter(imageArea.getImage()); painter.setPen(QPen(DataSingleton::Instance()->getPrimaryColor())); painter.setFont(DataSingleton::Instance()->getTextFont()); painter.drawText(QRect(mTopLeftPoint, mBottomRightPoint), mText); painter.end(); imageArea.setEdited(true); imageArea.update(); } }
void AbstractSelection::clearSelection(ImageArea &imageArea) { if (mIsSelectionExists) { imageArea.setImage(mImageCopy); paint(imageArea); mImageCopy = *imageArea.getImage(); mIsSelectionExists = mIsSelectionMoving = mIsSelectionResizing = mIsPaint = mIsImageSelected = false; imageArea.update(); imageArea.restoreCursor(); clear(); } }
void AbstractSelection::drawBorder(ImageArea &imageArea) { if (mWidth > 1 && mHeight > 1) { QPainter painter(imageArea.getImage()); painter.setPen(QPen(Qt::blue, 1, Qt::DashLine, Qt::RoundCap, Qt::RoundJoin)); painter.setBackgroundMode(Qt::TransparentMode); if(mTopLeftPoint != mBottomRightPoint) { painter.drawRect(QRect(mTopLeftPoint, mBottomRightPoint - QPoint(1, 1))); } imageArea.setEdited(true); painter.end(); imageArea.update(); } }
void CurveLineInstrument::paint(ImageArea &imageArea, bool isSecondaryColor, bool) { QPainter painter(imageArea.getImage()); //make Bezier curve path QPainterPath path; path.moveTo(mStartPoint); path.cubicTo(mFirstControlPoint, mSecondControlPoint, mEndPoint); //choose color painter.setPen(QPen(isSecondaryColor ? DataSingleton::Instance()->getSecondaryColor() : DataSingleton::Instance()->getPrimaryColor(), DataSingleton::Instance()->getPenSize() * imageArea.getZoomFactor(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); //draw Bezier curve with given path painter.strokePath(path, painter.pen()); imageArea.setEdited(true); painter.end(); imageArea.update(); }
void FillInstrument::paint(ImageArea &imageArea, bool isSecondaryColor, bool) { QColor switchColor; if(!isSecondaryColor) switchColor = DataSingleton::Instance()->getPrimaryColor(); else switchColor = DataSingleton::Instance()->getSecondaryColor(); QRgb pixel(imageArea.getImage()->pixel(mStartPoint)); QColor oldColor(pixel); if(switchColor != oldColor) { fillRecurs(mStartPoint.x(), mStartPoint.y(), switchColor.rgb(), oldColor.rgb(), *imageArea.getImage()); } imageArea.setEdited(true); imageArea.update(); }
void RectangleInstrument::paint(ImageArea &imageArea, bool isSecondaryColor, bool) { QPainter painter(imageArea.getImage()); painter.setPen(QPen(DataSingleton::Instance()->getPrimaryColor(), DataSingleton::Instance()->getPenSize() * imageArea.getZoomFactor(), Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin)); if(isSecondaryColor) { painter.setBrush(QBrush(DataSingleton::Instance()->getSecondaryColor())); } if(mStartPoint != mEndPoint) { painter.drawRect(QRect(mStartPoint, mEndPoint)); } imageArea.setEdited(true); // int rad(DataSingleton::Instance()->getPenSize() + round(sqrt((mStartPoint.x() - mEndPoint.x()) * // (mStartPoint.x() - mEndPoint.x()) + // (mStartPoint.y() - mEndPoint.y()) * // (mStartPoint.y() - mEndPoint.y())))); // mPImageArea->update(QRect(mStartPoint, mEndPoint).normalized().adjusted(-rad, -rad, +rad, +rad)); painter.end(); imageArea.update(); }