diff --git a/conf/intelliphoto_dox b/conf/intelliphoto_dox
index 8c10cda..c1d0642 100644
--- a/conf/intelliphoto_dox
+++ b/conf/intelliphoto_dox
@@ -5,7 +5,7 @@
#---------------------------------------------------------------------------
DOXYFILE_ENCODING = UTF-8
PROJECT_NAME = IntelliPhoto
-PROJECT_NUMBER = 0.6
+PROJECT_NUMBER = 0.7
PROJECT_BRIEF =
PROJECT_LOGO =
OUTPUT_DIRECTORY = docs
diff --git a/docs/Icons/circle-tool.svg b/docs/Icons/circle-tool.svg
deleted file mode 100644
index a6cc0e4..0000000
--- a/docs/Icons/circle-tool.svg
+++ /dev/null
@@ -1,94 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/eraser-tool.svg b/docs/Icons/eraser-tool.svg
deleted file mode 100644
index cdc518d..0000000
--- a/docs/Icons/eraser-tool.svg
+++ /dev/null
@@ -1,109 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/flood-fill-tool.svg b/docs/Icons/flood-fill-tool.svg
deleted file mode 100644
index 980bb7a..0000000
--- a/docs/Icons/flood-fill-tool.svg
+++ /dev/null
@@ -1,194 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/magic-wand-tool.svg b/docs/Icons/magic-wand-tool.svg
deleted file mode 100644
index 71f019d..0000000
--- a/docs/Icons/magic-wand-tool.svg
+++ /dev/null
@@ -1,169 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/pen-tool.svg b/docs/Icons/pen-tool.svg
deleted file mode 100644
index 5dd9782..0000000
--- a/docs/Icons/pen-tool.svg
+++ /dev/null
@@ -1,105 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/plain-tool.svg b/docs/Icons/plain-tool.svg
deleted file mode 100644
index 6dee885..0000000
--- a/docs/Icons/plain-tool.svg
+++ /dev/null
@@ -1,125 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/polygon-tool.svg b/docs/Icons/polygon-tool.svg
deleted file mode 100644
index 7602729..0000000
--- a/docs/Icons/polygon-tool.svg
+++ /dev/null
@@ -1,117 +0,0 @@
-
-
-
-
diff --git a/docs/Icons/rectangle-tool.svg b/docs/Icons/rectangle-tool.svg
deleted file mode 100644
index 3056a02..0000000
--- a/docs/Icons/rectangle-tool.svg
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
diff --git a/src/Bilder.qrc b/src/Bilder.qrc
index 01e8468..f2c6dfa 100644
--- a/src/Bilder.qrc
+++ b/src/Bilder.qrc
@@ -10,5 +10,6 @@
icons/line-tool.svg
icons/flood-fill-tool.svg
icons/plain-tool.svg
+ icons/gradient-tool.svg
diff --git a/src/GUI/IntelliInputDialog.h b/src/GUI/IntelliInputDialog.h
index 7775c0d..9d89ca7 100644
--- a/src/GUI/IntelliInputDialog.h
+++ b/src/GUI/IntelliInputDialog.h
@@ -9,35 +9,119 @@
#include
#include
+/*!
+ * \brief The IntelliInputDialog class is a customized Input Dialog to get Integers
+ */
class IntelliInputDialog : public QDialog
{
Q_OBJECT
public:
+ /*!
+ * \brief IntelliInputDialog is the baisc constructor to for the InputDialog
+ * \param Title - Title of the Input Dialog.
+ * \param Label - A Label for the Iput Dialog, to show further information.
+ * \param value - The standart value in the Input Box.
+ * \param minValue - The minimal value to read.
+ * \param maxValue - The maximal value to read.
+ * \param step - The step size of Values.
+ * \param ok - A check if the input was okay
+ */
IntelliInputDialog(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool* ok = nullptr);
-
+/*!
+ * \brief getInt is a static funktion ยด, which creates an Input Dialog and gets an Integer.
+ * \param Title - Title of the Input Dialog.
+ * \param Label - A Label for the Iput Dialog, to show further information.
+ * \param value - The standart value in the Input Box.
+ * \param minValue - The minimal value to read.
+ * \param maxValue - The maximal value to read.
+ * \param step - The step size of Values.
+ * \param ok - A check if the input was okay
+ * \return
+ */
static int getInt(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1, bool* ok = nullptr);
public slots:
+/*!
+ * \brief slotCloseEvent is a slot for catching the close Event.
+ */
void slotCloseEvent();
+
+/*!
+ * \brief slotEingabe is a slot for catching the Input Event.
+ */
void slotEingabe();
private:
+/*!
+ * \brief createInputBox creates an Input Box for reading values.
+ * \param Title - Title of the Input Dialog.
+ * \param Label - A Label for the Iput Dialog, to show further information.
+ * \param value - The standart value in the Input Box.
+ * \param minValue - The minimal value to read.
+ * \param maxValue - The maximal value to read.
+ * \param step - The step size of Values.
+ */
void createInputBox(QString Title = nullptr, QString Label = nullptr, int value = 5, int minValue = -2147483647, int maxValue = 2147483647, int step = 1);
+
+/*!
+ * \brief createConnections connects the close and Eingabe slot.
+ */
void createConnections();
+
+/*!
+ * \brief setInputBoxStyle
+ */
void setInputBoxStyle();
+/*!
+ * \brief valueInt the variable where the input is saved.
+ */
int valueInt;
+/*!
+ * \brief Layout to place als gui event onto.
+ */
QGridLayout* Layout;
+
+/*!
+ * \brief ButtonBox is a gui elment for the button.
+ */
QDialogButtonBox* ButtonBox;
+
+/*!
+ * \brief notClosed saves the value, if the InputDialog is closed.
+ */
bool* notClosed;
+/*!
+ * \brief Linesize to standarize the line size.
+ */
const QSize Linesize = QSize(150,20);
+
+/*!
+ * \brief Buttonsize to standarize the button size.
+ */
const QSize Buttonsize = QSize(72,20);
+
+/*!
+ * \brief InputLabel a gui element for a label.
+ */
QLabel* InputLabel;
+
+/*!
+ * \brief Input a gui element for a SpinBox.
+ */
QSpinBox* Input;
+
+/*!
+ * \brief okButton a gui element for the ok Button.
+ */
QPushButton* okButton;
+
+/*!
+ * \brief cancelButton a gui element for the cancel button.
+ */
QPushButton* cancelButton;
};
diff --git a/src/GUI/IntelliPhotoGui.cpp b/src/GUI/IntelliPhotoGui.cpp
index e199057..b10da50 100644
--- a/src/GUI/IntelliPhotoGui.cpp
+++ b/src/GUI/IntelliPhotoGui.cpp
@@ -7,6 +7,8 @@
#include
#include
#include
+#include
+#include
// IntelliPhotoGui constructor
IntelliPhotoGui::IntelliPhotoGui(){
@@ -20,7 +22,7 @@ IntelliPhotoGui::IntelliPhotoGui(){
setIntelliStyle();
// Size the app
resize(600,600);
- showMaximized();
+ showMaximized();
setDefaultValues();
}
@@ -143,7 +145,7 @@ void IntelliPhotoGui::slotChangeDim(){
// Change dimension
if (ok1&&ok2) {
- paintingArea->setLayerDimensions(width,height);
+ paintingArea->setCanvasDimensions(width,height);
UpdateGui();
}
}
@@ -155,7 +157,7 @@ void IntelliPhotoGui::slotDeleteLayer(){
// "delete Layer" is the title of the window
// the next tr is the text to display
// Define the standard Value, min, max, step and ok button
- int layerNumber = IntelliInputDialog::getInt("Delete Layer", "Number:", paintingArea->getNumberOfActiveLayer() + 1, 1, static_cast(paintingArea->layerBundle.size()), 1, &ok1);
+ int layerNumber = IntelliInputDialog::getInt("Delete Layer", "Number:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast(paintingArea->layerBundle.size()), 1, &ok1);
// Create New Layer
if(ok1) {
@@ -172,7 +174,7 @@ void IntelliPhotoGui::slotSetActiveAlpha(){
// the next tr is the text to display
// Define the standard Value, min, max, step and ok button
- int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getNumberOfActiveLayer() + 1, 1, static_cast(paintingArea->layerBundle.size()), 1, &ok1);
+ int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast(paintingArea->layerBundle.size()), 1, &ok1);
// "New Alpha" is the title of the window
int alpha = IntelliInputDialog::getInt("Layer to set on", "Alpha:", 255, 0, 255, 1, &ok2);
@@ -191,7 +193,7 @@ void IntelliPhotoGui::slotSetPolygon(){
// "Layer to set on" is the title of the window
// the next tr is the text to display
// Define the standard Value, min, max, step and ok button
- int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getNumberOfActiveLayer() + 1, 1, static_cast(paintingArea->layerBundle.size()), 1, &ok1);
+ int layer = IntelliInputDialog::getInt("Layer to set on", "Layer:", paintingArea->getIndexOfActiveLayer() + 1, 1, static_cast(paintingArea->layerBundle.size()), 1, &ok1);
if (ok1)
{
@@ -243,15 +245,15 @@ void IntelliPhotoGui::slotSetActiveLayer(){
}
}
-void IntelliPhotoGui::slotUpdateRenderSettingsOn(){
+void IntelliPhotoGui::slotUpdateFastRenderSettingsOn(){
paintingArea->setRenderSettings(true);
- FastRendererLabel->setText("Fast Render: On");
+ FastRendererLabel->setText("Fast Render: On");
UpdateGui();
}
-void IntelliPhotoGui::slotUpdateRenderSettingsOff(){
+void IntelliPhotoGui::slotUpdateFastRenderSettingsOff(){
paintingArea->setRenderSettings(false);
- FastRendererLabel->setText("Fast Render: Off");
+ FastRendererLabel->setText("Fast Render: Off");
UpdateGui();
}
@@ -306,8 +308,8 @@ void IntelliPhotoGui::slotCreateFloodFillTool(){
}
void IntelliPhotoGui::slotCreateGradientTool(){
- GradientButton->setChecked(true);
- paintingArea->createGradientTool();
+ GradientButton->setChecked(true);
+ paintingArea->createGradientTool();
}
// Open an about dialog
@@ -330,9 +332,10 @@ void IntelliPhotoGui::slotEnterPressed(){
paintingArea->Toolsettings.setInnerAlpha(string.toInt());
}
-void IntelliPhotoGui::slotResetTools(){
+void IntelliPhotoGui::slotResetToolButtons(){
CircleButton->setChecked(false);
FloodFillButton->setChecked(false);
+ GradientButton->setChecked(false);
LineButton->setChecked(false);
PenButton->setChecked(false);
PlainButton->setChecked(false);
@@ -424,7 +427,7 @@ void IntelliPhotoGui::createActions(){
connect(actionCreateNewShapedLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewShapedLayer()));
// Delete New Layer action and tie to IntelliPhotoGui::deleteLayer()
- actionDeleteLayer = new QAction(tr("&Delete Layer..."), this);
+ actionDeleteLayer = new QAction(tr("&Delete Layer"), this);
actionDeleteLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_D));
connect(actionDeleteLayer, SIGNAL(triggered()), this, SLOT(slotDeleteLayer()));
@@ -433,50 +436,50 @@ void IntelliPhotoGui::createActions(){
connect(actionChangeDim, SIGNAL(triggered()), this, SLOT(slotChangeDim()));
connect(dimCanvas, SIGNAL(clicked()), this, SLOT(slotChangeDim()));
- actionSetActiveLayer = new QAction(tr("&set Active"), this);
+ actionSetActiveLayer = new QAction(tr("&Set Active"), this);
actionSetActiveLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
connect(actionSetActiveLayer, SIGNAL(triggered()), this, SLOT(slotSetActiveLayer()));
- actionSetActiveAlpha = new QAction(tr("&set Alpha"), this);
+ actionSetActiveAlpha = new QAction(tr("&Set Alpha"), this);
actionSetActiveAlpha->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_A));
connect(actionSetActiveAlpha, SIGNAL(triggered()), this, SLOT(slotSetActiveAlpha()));
- actionSetPolygon = new QAction(tr("&set new Polygondata"), this);
+ actionSetPolygon = new QAction(tr("&Set Polygon Data"), this);
actionSetPolygon->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_P));
connect(actionSetPolygon, SIGNAL(triggered()), this, SLOT(slotSetPolygon()));
- actionMovePositionUp = new QAction(tr("&move Up"), this);
+ actionMovePositionUp = new QAction(tr("&Move Up"), this);
actionMovePositionUp->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Up));
connect(actionMovePositionUp, SIGNAL(triggered()), this, SLOT(slotPositionMoveUp()));
- actionMovePositionDown = new QAction(tr("&move Down"), this);
+ actionMovePositionDown = new QAction(tr("&Move Down"), this);
actionMovePositionDown->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Down));
connect(actionMovePositionDown, SIGNAL(triggered()), this, SLOT(slotPositionMoveDown()));
- actionMovePositionLeft = new QAction(tr("&move Left"), this);
+ actionMovePositionLeft = new QAction(tr("&Move Left"), this);
actionMovePositionLeft->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Left));
connect(actionMovePositionLeft, SIGNAL(triggered()), this, SLOT(slotPositionMoveLeft()));
- actionMovePositionRight = new QAction(tr("&move Right"), this);
+ actionMovePositionRight = new QAction(tr("&Move Right"), this);
actionMovePositionRight->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Right));
connect(actionMovePositionRight, SIGNAL(triggered()), this, SLOT(slotPositionMoveRight()));
- actionMoveLayerUp = new QAction(tr("&move Layer Up"), this);
+ actionMoveLayerUp = new QAction(tr("&Move Forth"), this);
actionMoveLayerUp->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Up));
connect(actionMoveLayerUp, SIGNAL(triggered()), this, SLOT(slotMoveLayerUp()));
- actionMoveLayerDown = new QAction(tr("&move Layer Down"), this);
+ actionMoveLayerDown = new QAction(tr("&Move Back"), this);
actionMoveLayerDown->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Down));
connect(actionMoveLayerDown, SIGNAL(triggered()), this, SLOT(slotMoveLayerDown()));
//Create Update RenderSettings Actions here
- actionUpdateRenderSettingsOn = new QAction(tr("&On"), this);
- actionUpdateRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_A));
- connect(actionUpdateRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOn()));
+ actionUpdateFastRenderSettingsOn = new QAction(tr("&On"), this);
+ actionUpdateFastRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_A));
+ connect(actionUpdateFastRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateFastRenderSettingsOn()));
- actionUpdateRenderSettingsOff = new QAction(tr("&Off"), this);
- actionUpdateRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_D));
- connect(actionUpdateRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOff()));
+ actionUpdateFastRenderSettingsOff = new QAction(tr("&Off"), this);
+ actionUpdateFastRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT + Qt::SHIFT + +Qt::Key_D));
+ connect(actionUpdateFastRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateFastRenderSettingsOff()));
//Create Color Actions here
actionColorPickerFirstColor = new QAction(tr("&Main"), this);
@@ -497,79 +500,78 @@ void IntelliPhotoGui::createActions(){
//Create Tool actions down here
actionCreatePlainTool = new QAction(tr("&Plain"), this);
actionCreatePlainTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_P));
- connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotCreatePlainTool()));
actionCreatePenTool = new QAction(tr("&Pen"),this);
actionCreatePenTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_S));
- connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotCreatePenTool()));
actionCreateLineTool = new QAction(tr("&Line"), this);
actionCreateLineTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_L));
- connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotCreateLineTool()));
actionCreateCircleTool = new QAction(tr("&Circle"), this);
actionCreateCircleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_C));
- connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotCreateCircleTool()));
actionCreateRectangleTool = new QAction(tr("&Rectangle"), this);
actionCreateRectangleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_R));
- connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotCreateRectangleTool()));
actionCreatePolygonTool = new QAction(tr("&Polygon"), this);
actionCreatePolygonTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_V));
- connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotCreatePolygonTool()));
actionCreateFloodFillTool = new QAction(tr("&FloodFill"), this);
actionCreateFloodFillTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_F));
- connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
+ connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotCreateFloodFillTool()));
- actionCreateGradientTool = new QAction(tr("&Gradient"),this);
- connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotResetTools()));
- connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotCreateGradientTool()));
+ actionCreateGradientTool = new QAction(tr("&Gradient"),this);
+ actionCreateGradientTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT + Qt::Key_G));
+ connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotResetToolButtons()));
+ connect(actionCreateGradientTool, SIGNAL(triggered()), this, SLOT(slotCreateGradientTool()));
// Create about action and tie to IntelliPhotoGui::about()
- actionAboutDialog = new QAction(tr("&About"), this);
- actionAboutDialog->setShortcut(Qt::Key_F2);
+ actionAboutDialog = new QAction(tr("&About"), this);
connect(actionAboutDialog, SIGNAL(triggered()), this, SLOT(slotAboutDialog()));
// Create about Qt action and tie to IntelliPhotoGui::aboutQt()
- actionAboutQtDialog = new QAction(tr("About &Qt"), this);
- actionAboutQtDialog->setShortcut(Qt::Key_F3);
+ actionAboutQtDialog = new QAction(tr("About &Qt"), this);
connect(actionAboutQtDialog, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
connect(EditLineWidth, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
connect(EditLineInnerAlpha, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
- connect(CircleButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(CircleButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(CircleButton, SIGNAL(clicked()), this, SLOT(slotCreateCircleTool()));
- connect(FloodFillButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(FloodFillButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(FloodFillButton, SIGNAL(clicked()), this, SLOT(slotCreateFloodFillTool()));
- connect(GradientButton, SIGNAL(pressed()), this, SLOT(slotResetTools()));
- connect(GradientButton, SIGNAL(clicked()), this, SLOT(slotCreateGradientTool()));
+ connect(GradientButton, SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
+ connect(GradientButton, SIGNAL(clicked()), this, SLOT(slotCreateGradientTool()));
- connect(LineButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(LineButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(LineButton, SIGNAL(clicked()), this, SLOT(slotCreateLineTool()));
- connect(PenButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(PenButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(PenButton, SIGNAL(clicked()), this, SLOT(slotCreatePenTool()));
- connect(PlainButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(PlainButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(PlainButton, SIGNAL(clicked()), this, SLOT(slotCreatePlainTool()));
- connect(PolygonButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(PolygonButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(PolygonButton, SIGNAL(clicked()), this, SLOT(slotCreatePolygonTool()));
- connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
+ connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetToolButtons()));
connect(RectangleButton, SIGNAL(clicked()), this, SLOT(slotCreateRectangleTool()));
actionSetWidth = new QAction(tr("&Set Width"),this);
@@ -580,11 +582,11 @@ void IntelliPhotoGui::createActions(){
actionSetInnerAlpha->setShortcut(QKeySequence(Qt::ALT + Qt::Key_A));
connect(actionSetInnerAlpha, SIGNAL(triggered()), this, SLOT(slotSetInnerAlpha()));
- actionGoBack = new QAction(tr("&Go back"),this);
+ actionGoBack = new QAction(tr("&Undo"),this);
actionGoBack->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Z));
connect(actionGoBack, SIGNAL(triggered()), this, SLOT(slotGoBack()));
- actionGoForward = new QAction(tr("&Go forward"),this);
+ actionGoForward = new QAction(tr("&Redo"),this);
actionGoForward->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Y));
connect(actionGoForward, SIGNAL(triggered()), this, SLOT(slotGoForward()));
}
@@ -603,13 +605,13 @@ void IntelliPhotoGui::createMenus(){
fileMenu->addSeparator();
fileMenu->addAction(actionExit);
- //Attach all actions to Render Settings
+ // Attach all actions to Render Settings
renderMenu = new QMenu(tr("&Fast Renderer"), this);
- renderMenu->addAction(actionUpdateRenderSettingsOn);
- renderMenu->addAction(actionUpdateRenderSettingsOff);
+ renderMenu->addAction(actionUpdateFastRenderSettingsOn);
+ renderMenu->addAction(actionUpdateFastRenderSettingsOff);
- //Attach all Layer Creations to Menu
- layerCreationMenu = new QMenu(tr("&Create new Layer"), this);
+ // Attach all Layer Creations to Menu
+ layerCreationMenu = new QMenu(tr("&Create Layer"), this);
layerCreationMenu->addAction(actionCreateNewRasterLayer);
layerCreationMenu->addAction(actionCreateNewShapedLayer);
@@ -630,41 +632,37 @@ void IntelliPhotoGui::createMenus(){
layerMenu->addSeparator();
layerMenu->addAction(actionDeleteLayer);
- //Attach all Color Options
+ // Attach all Color Options
colorMenu = new QMenu(tr("&Color"), this);
colorMenu->addAction(actionColorPickerFirstColor);
colorMenu->addAction(actionColorPickerSecondColor);
colorMenu->addAction(actionColorSwap);
- //Attach all Tool Creation Actions
- toolCreationMenu = new QMenu(tr("&Drawingtools"), this);
+ // Attach all Tool Creation Actions
+ toolCreationMenu = new QMenu(tr("&Tool Selection"), this);
toolCreationMenu->addAction(actionCreateCircleTool);
- toolCreationMenu->addAction(actionCreateFloodFillTool);
- toolCreationMenu->addAction(actionCreateGradientTool);
+ toolCreationMenu->addAction(actionCreateFloodFillTool);
+ toolCreationMenu->addAction(actionCreateGradientTool);
toolCreationMenu->addAction(actionCreateLineTool);
toolCreationMenu->addAction(actionCreatePenTool);
toolCreationMenu->addAction(actionCreatePlainTool);
toolCreationMenu->addAction(actionCreatePolygonTool);
toolCreationMenu->addAction(actionCreateRectangleTool);
- //Attach all Tool Setting Actions
- toolSettingsMenu = new QMenu(tr("&Toolsettings"), this);
+ // Attach all Tool Setting Actions
+ toolSettingsMenu = new QMenu(tr("&Tool Settings"), this);
toolSettingsMenu->addAction(actionSetWidth);
toolSettingsMenu->addAction(actionSetInnerAlpha);
- //Attach all Tool Options
+ // Attach all Tool Options
toolMenu = new QMenu(tr("&Tools"), this);
toolMenu->addMenu(toolCreationMenu);
- toolMenu->addMenu(toolSettingsMenu);
- toolMenu->addSeparator();
- toolMenu->addMenu(colorMenu);
+ toolMenu->addMenu(toolSettingsMenu);
// Attach all actions to Options
optionMenu = new QMenu(tr("&Options"), this);
optionMenu->addAction(actionGoBack);
- optionMenu->addAction(actionGoForward);
- optionMenu->addMenu(layerMenu);
- optionMenu->addMenu(toolMenu);
+ optionMenu->addAction(actionGoForward);
optionMenu->addSeparator();
optionMenu->addMenu(renderMenu);
optionMenu->addAction(actionChangeDim);
@@ -677,6 +675,9 @@ void IntelliPhotoGui::createMenus(){
// Add menu items to the menubar
menuBar()->addMenu(fileMenu);
menuBar()->addMenu(optionMenu);
+ menuBar()->addMenu(layerMenu);
+ menuBar()->addMenu(toolMenu);
+ menuBar()->addMenu(colorMenu);
menuBar()->addMenu(helpMenu);
}
@@ -694,6 +695,11 @@ void IntelliPhotoGui::createGui(){
paintingArea = new PaintingArea(1280, 720);
paintingArea->guiReference = this;
+ QScreen *screen = QGuiApplication::primaryScreen();
+ QRect screenGeometry = screen->geometry();
+ Buttonsize.setWidth(screenGeometry.width()/20);
+ Buttonsize.setHeight(screenGeometry.height()/20);
+
preview = QPixmap(":/Icons/Buttons/icons/circle-tool.svg");
CircleButton = new QPushButton();
CircleButton->setFixedSize(Buttonsize);
@@ -708,7 +714,7 @@ void IntelliPhotoGui::createGui(){
FloodFillButton->setIconSize(Buttonsize);
FloodFillButton->setCheckable(true);
- preview = QPixmap(":/Icons/Buttons/icons/icon.png");
+ preview = QPixmap(":/Icons/Buttons/icons/gradient-tool.svg");
GradientButton = new QPushButton();
GradientButton->setFixedSize(Buttonsize);
GradientButton->setIcon(preview);
@@ -786,10 +792,10 @@ void IntelliPhotoGui::createGui(){
SwitchColorButton->setIcon(preview);
SwitchColorButton->setIconSize(QSize(Buttonsize.width() * 2,Buttonsize.height()));
- ActiveLayerLine = new QLabel();
- QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
- ActiveLayerLine->setText(string);
- ActiveLayerLine->setFixedSize(Buttonsize.width() * 2 + 10,(Buttonsize.height() * 2) / 3);
+ ActiveLayerLabel = new QLabel();
+ QString string = QString("Active Layer: %1").arg(paintingArea->getIndexOfActiveLayer() + 1);
+ ActiveLayerLabel->setText(string);
+ ActiveLayerLabel->setFixedSize(Buttonsize.width() * 2 + 10,(Buttonsize.height() * 2) / 3);
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
if(activePicture) {
@@ -813,9 +819,9 @@ void IntelliPhotoGui::createGui(){
QString String = QString("%1x%2").arg(paintingArea->Canvas->width()).arg(paintingArea->Canvas->height());
dimCanvas->setText(String);
- FastRendererLabel = new QLabel();
- FastRendererLabel->setFixedSize(Buttonsize.width() * 2 + 15,(Buttonsize.height() * 2) / 3);
- FastRendererLabel->setText("Fast Render: On");
+ FastRendererLabel = new QLabel();
+ FastRendererLabel->setFixedSize(Buttonsize.width() * 2 + 15,(Buttonsize.height() * 2) / 3);
+ FastRendererLabel->setText("Fast Render: On");
ScrollArea = new QScrollArea(this);
ScrollArea->setBackgroundRole(QPalette::Dark);
@@ -832,7 +838,7 @@ void IntelliPhotoGui::createGui(){
mainLayout->addWidget(PlainButton,3,2,1,1);
mainLayout->addWidget(PolygonButton,3,3,1,1);
mainLayout->addWidget(RectangleButton,4,2,1,1);
- mainLayout->addWidget(GradientButton,4,3,1,1);
+ mainLayout->addWidget(GradientButton,4,3,1,1);
mainLayout->addWidget(WidthLine,5,2,1,2);
mainLayout->addWidget(EditLineWidth,6,2,1,2);
mainLayout->addWidget(innerAlphaLine,7,2,1,2);
@@ -840,11 +846,11 @@ void IntelliPhotoGui::createGui(){
mainLayout->addWidget(FirstColorButton,9,2,1,1);
mainLayout->addWidget(SecondColorButton,9,3,1,1);
mainLayout->addWidget(SwitchColorButton,10,2,1,2);
- mainLayout->addWidget(ActiveLayerLine,11,2,1,2);
+ mainLayout->addWidget(ActiveLayerLabel,11,2,1,2);
mainLayout->addWidget(ActiveLayerImageLabel,12,2,1,2);
mainLayout->addWidget(dimActive,13,2,1,2);
mainLayout->addWidget(dimCanvas,14,2,1,2);
- mainLayout->addWidget(FastRendererLabel,15,2,1,2);
+ mainLayout->addWidget(FastRendererLabel,15,2,1,2);
mainLayout->setHorizontalSpacing(0);
}
@@ -925,8 +931,8 @@ void IntelliPhotoGui::setToolWidth(int value){
}
void IntelliPhotoGui::UpdateGui(){
- QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
- ActiveLayerLine->setText(string);
+ QString string = QString("Active Layer: %1").arg(paintingArea->getIndexOfActiveLayer() + 1);
+ ActiveLayerLabel->setText(string);
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
if(activePicture) {
@@ -950,8 +956,8 @@ void IntelliPhotoGui::UpdateGui(){
if(paintingArea->layerBundle.size() != 0) {
string = QString("%1x%2").arg(paintingArea->layerBundle[static_cast
- (paintingArea->getNumberOfActiveLayer())].width).arg(paintingArea->layerBundle[static_cast
- (paintingArea->getNumberOfActiveLayer())].height);
+ (paintingArea->getIndexOfActiveLayer())].width).arg(paintingArea->layerBundle[static_cast
+ (paintingArea->getIndexOfActiveLayer())].height);
dimActive->setText(string);
}
else{
diff --git a/src/GUI/IntelliPhotoGui.h b/src/GUI/IntelliPhotoGui.h
index 25f6145..503e5b6 100644
--- a/src/GUI/IntelliPhotoGui.h
+++ b/src/GUI/IntelliPhotoGui.h
@@ -43,8 +43,15 @@ public:
*/
IntelliPhotoGui();
+/*!
+ * \brief UpdateGui a function to update all gui elements.
+ */
void UpdateGui();
+/*!
+ * \brief setToolWidth stes a width to the tool
+ * \param value - the width of the tool
+ */
void setToolWidth(int value);
protected:
@@ -54,182 +61,591 @@ protected:
void closeEvent(QCloseEvent*event) override;
private slots:
+
+/*!
+ * \brief slotOpen opens a new image
+ */
void slotOpen();
+
+/*!
+ * \brief slotSave saves the current canvas
+ */
void slotSave();
-// layer slots here
+/*!
+ * \brief slotCreateNewRasterLayer creates a new rasterImage
+ */
void slotCreateNewRasterLayer();
+
+/*!
+ * \brief slotCreateNewShapedLayer creates a new shapedImage
+ */
void slotCreateNewShapedLayer();
+
+/*!
+ * \brief slotDeleteLayer deletes a layer
+ */
void slotDeleteLayer();
+
+/*!
+ * \brief slotSetActiveLayer sets a layer to be active
+ */
void slotSetActiveLayer();
+
+/*!
+ * \brief slotSetActiveAlpha stes the alpha value of the active layer
+ */
void slotSetActiveAlpha();
+
+/*!
+ * \brief slotSetPolygon sets a polygon to the active layer
+ */
void slotSetPolygon();
+
+/*!
+ * \brief slotPositionMoveUp moves the current layer to the front
+ */
void slotPositionMoveUp();
+
+/*!
+ * \brief slotPositionMoveDown moves the crrent layer to the back
+ */
void slotPositionMoveDown();
+
+/*!
+ * \brief slotPositionMoveLeft moves the current layer left
+ */
void slotPositionMoveLeft();
+
+/*!
+ * \brief slotPositionMoveRight moves the current layer right
+ */
void slotPositionMoveRight();
+
+/*!
+ * \brief slotMoveLayerUp moves the current layer up
+ */
void slotMoveLayerUp();
+
+/*!
+ * \brief slotMoveLayerDown moves the current layer down
+ */
void slotMoveLayerDown();
-void slotUpdateRenderSettingsOn();
-void slotUpdateRenderSettingsOff();
+/*!
+ * \brief slotUpdateFastRenderSettingsOn activates the fast renderer
+ */
+void slotUpdateFastRenderSettingsOn();
+/*!
+ * \brief slotUpdateFastRenderSettingsOff deactivates the fast render
+ */
+void slotUpdateFastRenderSettingsOff();
+
+/*!
+ * \brief slotSetFirstColor sets the first color
+ */
void slotSetFirstColor();
+
+/*!
+ * \brief slotSetSecondColor sets the second color
+ */
void slotSetSecondColor();
+
+/*!
+ * \brief slotSwapColor swaps first and second color
+ */
void slotSwapColor();
+/*!
+ * \brief slotCreatePenTool creates the pen tool
+ */
void slotCreatePenTool();
+
+/*!
+ * \brief slotCreatePlainTool creates the plain tool
+ */
void slotCreatePlainTool();
+
+/*!
+ * \brief slotCreateLineTool creates the line tool
+ */
void slotCreateLineTool();
+
+/*!
+ * \brief slotCreateRectangleTool creates the rectangle tool
+ */
void slotCreateRectangleTool();
+
+/*!
+ * \brief slotCreateCircleTool creates the cricle tool
+ */
void slotCreateCircleTool();
+
+/*!
+ * \brief slotCreatePolygonTool creates the polygon tool
+ */
void slotCreatePolygonTool();
+
+/*!
+ * \brief slotCreateFloodFillTool creates the floodfill tool
+ */
void slotCreateFloodFillTool();
+
+/*!
+ * \brief slotCreateGradientTool creates the gradient tool
+ */
void slotCreateGradientTool();
+/*!
+ * \brief slotAboutDialog displays the about dialog
+ */
void slotAboutDialog();
+/*!
+ * \brief slotChangeDim changes the dimension of the canvas
+ */
void slotChangeDim();
+/*!
+ * \brief slotEnterPressed read current input of input boxes, and adjusts settings
+ */
void slotEnterPressed();
+/*!
+ * \brief slotSetWidth sets the width of the tool
+ */
void slotSetWidth();
+
+/*!
+ * \brief slotSetInnerAlpha sets the inner alpha of the tool
+ */
void slotSetInnerAlpha();
-void slotResetTools();
+/*!
+ * \brief slotResetTools resets all tool Buttons to unclikced
+ */
+void slotResetToolButtons();
+/*!
+ * \brief slotGoBack undoes the last action
+ */
void slotGoBack();
+
+/*!
+ * \brief slotGoForward redoes the last action
+ */
void slotGoForward();
private:
-//setup functions for gui
+/*!
+ * \brief createActions creates all actions
+ */
void createActions();
+
+/*!
+ * \brief createMenus creates all menus
+ */
void createMenus();
+
+/*!
+ * \brief createGui sets up the gui
+ */
void createGui();
+
+/*!
+ * \brief setIntelliStyle sets the stylesheet of the gui
+ */
void setIntelliStyle();
-// Will check if changes have occurred since last save
+/*!
+ * \brief maybeSave chekcs if the canvas has unsaved work
+ * \return return true if there is unsaved work, false otherwise
+ */
bool maybeSave();
-// Opens the Save dialog and saves
+
+/*!
+ * \brief saveFile saves the canvas
+ * \param fileFormat the ileformat to save into
+ * \return true if saving worked, false otherwise
+ */
bool saveFile(const QByteArray &fileFormat);
-//basic to set tool values to begin
+/*!
+ * \brief setDefaultValues sets basic tool values
+ */
void setDefaultValues();
-// What we'll draw on
+/*!
+ * \brief paintingArea the logic manager of the backbone
+ */
PaintingArea* paintingArea;
-//used to display a preview of the active layer
+/*!
+ * \brief preview a small pixmap to show the active layer
+ */
QPixmap preview;
-//size of all buttons
-const QSize Buttonsize = QSize(35,35);
+/*!
+ * \brief Buttonsize the size of all standard buttons
+ */
+QSize Buttonsize;
-//buttons used for gui
+/*!
+ * \brief CircleButton for creating a circle Tool
+ */
QPushButton* CircleButton;
+
+/*!
+ * \brief FloodFillButton for creating a floodfill Tool
+ */
QPushButton* FloodFillButton;
+
+/*!
+ * \brief GradientButton for creating a gradient Tool
+ */
QPushButton* GradientButton;
+
+/*!
+ * \brief LineButton for creating a line Tool.
+ */
QPushButton* LineButton;
+
+/*!
+ * \brief PenButton for creating a pen tool.
+ */
QPushButton* PenButton;
+
+/*!
+ * \brief PlainButton for creating a plain Tool.
+ */
QPushButton* PlainButton;
+
+/*!
+ * \brief PolygonButton for creating a Polygon Tool.
+ */
QPushButton* PolygonButton;
+
+/*!
+ * \brief RectangleButton for creating a Rectangle Tool.
+ */
QPushButton* RectangleButton;
+
+/*!
+ * \brief FirstColorButton for setting the First color.
+ */
QPushButton* FirstColorButton;
+
+/*!
+ * \brief SecondColorButton for setting the Second color.
+ */
QPushButton* SecondColorButton;
+
+/*!
+ * \brief SwitchColorButton for switching second and first color
+ */
QPushButton* SwitchColorButton;
+
+/*!
+ * \brief dimActive for displaying the dimesnion of the active layer
+ */
QPushButton* dimActive;
+
+/*!
+ * \brief dimCanvas for displaying the dimension of the canvas
+ */
QPushButton* dimCanvas;
-//labels used for gui
+/*!
+ * \brief WidthLine to indicate the line width
+ */
QLabel* WidthLine;
+
+/*!
+ * \brief innerAlphaLine to indicate the inner alpha
+ */
QLabel* innerAlphaLine;
-QLabel* ActiveLayerLine;
+
+/*!
+ * \brief ActiveLayerLine to indicate the active Layer
+ */
+QLabel* ActiveLayerLabel;
+
+/*!
+ * \brief ActiveLayerImageLabel to indicate the active Image
+ */
QLabel* ActiveLayerImageLabel;
+
+/*!
+ * \brief FastRendererLabel to indicate render settings
+ */
QLabel* FastRendererLabel;
-//scroll area to display canvas
+/*!
+ * \brief ScrollArea to scroll the painting area on
+ */
QScrollArea* ScrollArea;
-//line edits used for gui
+/*!
+ * \brief EditLineWidth to get the input of the line width
+ */
QLineEdit* EditLineWidth;
+
+/*!
+ * \brief EditLineInnerAlpha to get the input of the inner alpha
+ */
QLineEdit* EditLineInnerAlpha;
-//int validator used for gui
+/*!
+ * \brief ValidatorLineWidth to limit input
+ */
QIntValidator* ValidatorLineWidth;
+
+/*!
+ * \brief ValidatorInnerAlpha to limit input
+ */
QIntValidator* ValidatorInnerAlpha;
-// The menu widgets
+/*!
+ * \brief saveAsMenu to display save options
+ */
QMenu* saveAsMenu;
+
+/*!
+ * \brief fileMenu to display file options
+ */
QMenu* fileMenu;
+
+/*!
+ * \brief renderMenu to display render options
+ */
QMenu* renderMenu;
+
+/*!
+ * \brief optionMenu to display general options
+ */
QMenu* optionMenu;
+
+/*!
+ * \brief layerCreationMenu to display layer creation options
+ */
QMenu* layerCreationMenu;
+
+/*!
+ * \brief layerMenu to display layer options
+ */
QMenu* layerMenu;
+
+/*!
+ * \brief colorMenu to display color options
+ */
QMenu* colorMenu;
+
+/*!
+ * \brief toolCreationMenu to display tool creation options
+ */
QMenu* toolCreationMenu;
+
+/*!
+ * \brief toolSettingsMenu to display settings options
+ */
QMenu* toolSettingsMenu;
+
+/*!
+ * \brief toolMenu to display tool options
+ */
QMenu* toolMenu;
+
+/*!
+ * \brief helpMenu to display the help options
+ */
QMenu* helpMenu;
-// All the actions that can occur
-// meta image actions (need further modularisation)
+/*!
+ * \brief actionOpen to open a project
+ */
QAction* actionOpen;
+
+/*!
+ * \brief actionExit to exit the project
+ */
QAction* actionExit;
-//Rendersetting actions
-QAction*actionUpdateRenderSettingsOn;
-QAction*actionUpdateRenderSettingsOff;
+/*!
+ * \brief actionUpdateFastRenderSettingsOn to set fast render settings to on
+ */
+QAction* actionUpdateFastRenderSettingsOn;
-// color Picker actions
+/*!
+ * \brief actionUpdateFastRenderSettingsOff to set fast render settings to false;
+ */
+QAction* actionUpdateFastRenderSettingsOff;
+
+/*!
+ * \brief actionColorPickerFirstColor to set the first color
+ */
QAction* actionColorPickerFirstColor;
+
+/*!
+ * \brief actionColorPickerSecondColor to set the second color
+ */
QAction* actionColorPickerSecondColor;
+
+/*!
+ * \brief actionColorSwap to swap first and second color
+ */
QAction* actionColorSwap;
-// tool actions
+/*!
+ * \brief actionCreatePenTool to create a pen tool
+ */
QAction* actionCreatePenTool;
+
+/*!
+ * \brief actionCreatePlainTool to create a plain tool
+ */
QAction* actionCreatePlainTool;
+
+/*!
+ * \brief actionCreateLineTool to create a line tool
+ */
QAction* actionCreateLineTool;
+
+/*!
+ * \brief actionCreateRectangleTool to create a rectangle tool
+ */
QAction* actionCreateRectangleTool;
+
+/*!
+ * \brief actionCreateCircleTool to create a circle tool
+ */
QAction* actionCreateCircleTool;
+
+/*!
+ * \brief actionCreatePolygonTool to create a polygon tool
+ */
QAction* actionCreatePolygonTool;
+
+/*!
+ * \brief actionCreateFloodFillTool to create a floodfill tool
+ */
QAction* actionCreateFloodFillTool;
+
+/*!
+ * \brief actionCreateGradientTool to create a gradient tool
+ */
QAction* actionCreateGradientTool;
-// dimension actions
+/*!
+ * \brief actionChangeDim
+ */
QAction* actionChangeDim;
+
+/*!
+ * \brief actionSetWidth to set the width
+ */
QAction* actionSetWidth;
+
+/*!
+ * \brief actionSetInnerAlpha to set the inner alha
+ */
QAction* actionSetInnerAlpha;
-// dialog actions
+/*!
+ * \brief actionAboutDialog to show the
+ */
QAction* actionAboutDialog;
+
+/*!
+ * \brief actionAboutQtDialog to show the qt input dialog
+ */
QAction* actionAboutQtDialog;
-// layer change actions
+/*!
+ * \brief actionCreateNewRasterLayer creates a raster image
+ */
QAction* actionCreateNewRasterLayer;
+
+/*!
+ * \brief actionCreateNewShapedLayer creates a shaped image
+ */
QAction* actionCreateNewShapedLayer;
+
+/*!
+ * \brief actionDeleteLayer deletes a layer
+ */
QAction* actionDeleteLayer;
+
+/*!
+ * \brief actionSetActiveLayer sets a layer to active
+ */
QAction* actionSetActiveLayer;
+
+/*!
+ * \brief actionSetActiveAlpha sets the alpha of the active layer
+ */
QAction* actionSetActiveAlpha;
+
+/*!
+ * \brief actionSetPolygon sets the polygon data to the image
+ */
QAction* actionSetPolygon;
+
+/*!
+ * \brief actionMovePositionUp moves the image up
+ */
QAction* actionMovePositionUp;
+
+/*!
+ * \brief actionMovePositionDown moves the image down
+ */
QAction* actionMovePositionDown;
+
+/*!
+ * \brief actionMovePositionLeft moves the image left
+ */
QAction* actionMovePositionLeft;
+
+/*!
+ * \brief actionMovePositionRight moves the image right
+ */
QAction* actionMovePositionRight;
+
+/*!
+ * \brief actionMoveLayerUp moves the layer to the front
+ */
QAction* actionMoveLayerUp;
+
+/*!
+ * \brief actionMoveLayerDown moves the layer to the back
+ */
QAction* actionMoveLayerDown;
-// actions tied to specific file formats
+/*!
+ * \brief actionSaveAs saves the project as
+ */
QList actionSaveAs;
-
-// history actions
+/*!
+ * \brief actionGoBack does a undo action
+ */
QAction* actionGoBack;
+
+/*!
+ * \brief actionGoForward does a redo action
+ */
QAction* actionGoForward;
-// main GUI elements
+/*!
+ * \brief centralGuiWidget the main gui widget to place all others on
+ */
QWidget* centralGuiWidget;
+
+/*!
+ * \brief mainLayout the layout to order all gui elements
+ */
QGridLayout* mainLayout;
};
diff --git a/src/Image/IntelliImage.cpp b/src/Image/IntelliImage.cpp
index 3ff8b13..b37ee29 100644
--- a/src/Image/IntelliImage.cpp
+++ b/src/Image/IntelliImage.cpp
@@ -115,13 +115,13 @@ void IntelliImage::drawLine(const QPoint &p1, const QPoint& p2, const QColor& co
}
void IntelliImage::drawPlain(const QColor& color){
- if(fastRenderering) {
- this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
- }
+ if(fastRenderering) {
+ this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
+ }
imageData.fill(color);
- if(fastRenderering) {
- this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
- }
+ if(fastRenderering) {
+ this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
+ }
}
QColor IntelliImage::getPixelColor(QPoint& point){
diff --git a/src/Image/IntelliImage.h b/src/Image/IntelliImage.h
index ac6c3bc..1c114ca 100644
--- a/src/Image/IntelliImage.h
+++ b/src/Image/IntelliImage.h
@@ -171,10 +171,22 @@ virtual QImage getImageData();
*/
virtual void setImageData(const QImage& newData);
+/*!
+ * \brief getWidth returns the width of the Image.
+ * \return The width of the Image in pixel.
+ */
virtual int getWidth() const;
+/*!
+ * \brief getHeight returns the height of the Image.
+ * \return The height of the Image in pixel.
+ */
virtual int getHeight() const;
+/*!
+ * \brief isFastRendering returns if the Image is in fast rendering mode.
+ * \return True if the Image is fast rendered, flase otherwiese.
+ */
virtual bool isFastRendering() const;
};
diff --git a/src/Image/IntelliRasterImage.cpp b/src/Image/IntelliRasterImage.cpp
index 7fa51d8..a806616 100644
--- a/src/Image/IntelliRasterImage.cpp
+++ b/src/Image/IntelliRasterImage.cpp
@@ -23,7 +23,7 @@ IntelliRasterImage::~IntelliRasterImage(){
}
IntelliImage* IntelliRasterImage::getDeepCopy(){
- IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), this->fastRenderering);
+ IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), false);
raster->imageData.fill(Qt::transparent);
raster->TypeOfImage = ImageType::RASTERIMAGE;
return raster;
diff --git a/src/Image/IntelliShapedImage.cpp b/src/Image/IntelliShapedImage.cpp
index fa869e3..69013b9 100644
--- a/src/Image/IntelliShapedImage.cpp
+++ b/src/Image/IntelliShapedImage.cpp
@@ -12,7 +12,7 @@ IntelliShapedImage::IntelliShapedImage(int width, int height, bool fastRendererO
IntelliShapedImage* IntelliShapedImage::copy(const IntelliShapedImage& image){
this->TypeOfImage = ImageType::SHAPEDIMAGE;
- IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), this->fastRenderering);
+ IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), this->fastRenderering);
shaped->imageData.copy(0,0,image.getWidth(),image.getWidth());
return shaped;
}
@@ -26,7 +26,7 @@ QImage IntelliShapedImage::getDisplayable(int alpha){
}
IntelliImage* IntelliShapedImage::getDeepCopy(){
- IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), this->fastRenderering);
+ IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), false);
shaped->setPolygon(this->polygonData);
shaped->imageData.fill(Qt::transparent);
shaped->TypeOfImage = ImageType::SHAPEDIMAGE;
diff --git a/src/IntelliHelper/IntelliDatamanager.cpp b/src/IntelliHelper/IntelliDatamanager.cpp
index 828c0ee..faf29ce 100644
--- a/src/IntelliHelper/IntelliDatamanager.cpp
+++ b/src/IntelliHelper/IntelliDatamanager.cpp
@@ -61,7 +61,7 @@ bool IntelliDatamanager::loadProject(PaintingArea* Canvas, QString filePath){
in >> widthCanvas >> heightCanvas;
in >> numberOffLayers;
- Canvas->setLayerDimensions(widthCanvas, heightCanvas);
+ Canvas->setCanvasDimensions(widthCanvas, heightCanvas);
for(int i = 0; i> width >> height >> widthOffset >> heightOffset >> alpha;
@@ -88,7 +88,7 @@ bool IntelliDatamanager::loadProject(PaintingArea* Canvas, QString filePath){
for(int k = 0; k> red >> green >> blue >> alpha;
- Canvas->setPixelToActive(QColor(red, green, blue, alpha), QPoint(j, k));
+ Canvas->drawPixelOntoActive(QColor(red, green, blue, alpha), QPoint(j, k));
}
}
}
diff --git a/src/IntelliHelper/IntelliDatamanager.h b/src/IntelliHelper/IntelliDatamanager.h
index 777e591..9da93a4 100644
--- a/src/IntelliHelper/IntelliDatamanager.h
+++ b/src/IntelliHelper/IntelliDatamanager.h
@@ -8,7 +8,20 @@ class PaintingArea;
namespace IntelliDatamanager {
+/*!
+ * \brief loadProject loads a project from a file, closes current project.
+ * \param Canvas - Reference to the used Canvas.
+ * \param filePath - Filepath to the project which should be opened.
+ * \return True if everything worked, false otherwise.
+ */
bool loadProject(PaintingArea* Canvas, QString filePath = "unnamed.idf");
+
+/*!
+ * \brief saveProject saves the current project to a file.
+ * \param Canvas - Reference to the used Canvas.
+ * \param filePath - Filepath to the project which should be saved.
+ * \return True if everything worked, false otherwise.
+ */
bool saveProject(PaintingArea* Canvas, QString filePath = "unnamed.idf");
}
diff --git a/src/IntelliHelper/IntelliRenderSettings.h b/src/IntelliHelper/IntelliRenderSettings.h
index 296c186..2fc3afb 100644
--- a/src/IntelliHelper/IntelliRenderSettings.h
+++ b/src/IntelliHelper/IntelliRenderSettings.h
@@ -4,7 +4,9 @@
//for unit testing
class UnitTest;
-
+/*!
+ * \brief The IntelliRenderSettings class which manages the render Settings.
+ */
class IntelliRenderSettings
{
friend UnitTest;
@@ -23,6 +25,9 @@ void setFastRendering(bool Updatedsetting);
bool isFastRenderering() const;
private:
+/*!
+ * \brief fastRenderering the state of the project, in relation the the render setting.
+ */
bool fastRenderering = true;
};
diff --git a/src/IntelliHelper/IntelliToolsettings.h b/src/IntelliHelper/IntelliToolsettings.h
index c2fd2bb..3ad9705 100644
--- a/src/IntelliHelper/IntelliToolsettings.h
+++ b/src/IntelliHelper/IntelliToolsettings.h
@@ -3,21 +3,56 @@
//for unit testing
class UnitTest;
-
+/*!
+ * \brief The IntelliToolsettings class managing the settings of the tools, independent of an existing tool.
+ */
class IntelliToolsettings {
friend UnitTest;
public:
+/*!
+ * \brief IntelliToolsettings - basic constructor of the IntelliToolsettings, initializing the basics.
+ */
IntelliToolsettings();
+
+/*!
+ * \brief ~IntelliToolsettings - basic destructor.
+ */
virtual ~IntelliToolsettings();
+/*!
+ * \brief getLineWidth returns the width attribute of the line.
+ * \return returns the width attribute as integer.
+ */
int getLineWidth() const;
+
+/*!
+ * \brief setLineWidth sets the width attribute of the line.
+ * \param LineWidth - the future width of the line
+ */
void setLineWidth(int LineWidth);
+/*!
+ * \brief getInnerAlpha returns the inner alpha value.
+ * \return returns the inner alpha attribute as integer.
+ */
int getInnerAlpha() const;
+
+/*!
+ * \brief setInnerAlpha sets the inner alpha attribute of the Tool.
+ * \param innerAlpha - the future inner alpha of the Tool.
+ */
void setInnerAlpha(int innerAlpha);
private:
+
+/*!
+ * \brief lineWidth attribute of a Tool.
+ */
int lineWidth;
+
+/*!
+ * \brief innerAlpha aattribute of a Tool.
+ */
int innerAlpha;
};
diff --git a/src/IntelliUnitTest.pro b/src/IntelliUnitTest.pro
index d389a8e..ae7efc7 100755
--- a/src/IntelliUnitTest.pro
+++ b/src/IntelliUnitTest.pro
@@ -24,6 +24,7 @@ SOURCES += tst_unittest.cpp \
Tool/IntelliTool.cpp \
Tool/IntelliToolCircle.cpp \
Tool/IntelliToolFloodFill.cpp \
+ Tool/IntelliToolGradient.cpp \
Tool/IntelliToolLine.cpp \
Tool/IntelliToolPen.cpp \
Tool/IntelliToolPlain.cpp \
@@ -35,6 +36,7 @@ DISTFILES += \
icons/circle-tool.svg \
icons/eraser-tool.svg \
icons/flood-fill-tool.svg \
+ icons/gradient-tool.svg \
icons/icon.png \
icons/line-tool.svg \
icons/pen-tool.svg \
@@ -57,6 +59,7 @@ HEADERS += \
Tool/IntelliTool.h \
Tool/IntelliToolCircle.h \
Tool/IntelliToolFloodFill.h \
+ Tool/IntelliToolGradient.h \
Tool/IntelliToolLine.h \
Tool/IntelliToolPen.h \
Tool/IntelliToolPlain.h \
diff --git a/src/Layer/PaintingArea.cpp b/src/Layer/PaintingArea.cpp
index ff8696a..809c668 100644
--- a/src/Layer/PaintingArea.cpp
+++ b/src/Layer/PaintingArea.cpp
@@ -40,7 +40,7 @@ LayerObject::LayerObject(const LayerObject& layer){
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
: QLabel(parent){
this->Tool = nullptr;
- this->setLayerDimensions(maxWidth, maxHeight);
+ this->setCanvasDimensions(maxWidth, maxHeight);
activeLayer = -1;
}
@@ -69,7 +69,7 @@ bool PaintingArea::getRenderSettings(){
return this->renderSettings.isFastRenderering();
}
-void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
+void PaintingArea::setCanvasDimensions(int maxWidth, int maxHeight){
//set standart parameter
this->maxWidth = maxWidth;
this->maxHeight = maxHeight;
@@ -83,7 +83,7 @@ void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
}
-void PaintingArea::setPixelToActive(QColor color, QPoint point){
+void PaintingArea::drawPixelOntoActive(QColor color, QPoint point){
layerBundle[static_cast(activeLayer)].image->drawPixel(point, color);
}
@@ -295,11 +295,11 @@ int PaintingArea::getMaxHeight(){
return this->maxHeight;
}
-ImageType PaintingArea::getTypeOfImageRealLayer(){
+ImageType PaintingArea::getTypeOfImageActiveLayer(){
return this->layerBundle[static_cast(activeLayer)].image->getTypeOfImage();
}
-std::vector PaintingArea::getPolygonDataOfRealLayer(){
+std::vector PaintingArea::getPolygonDataOfActiveLayer(){
return this->layerBundle[static_cast(activeLayer)].image->getPolygonData();
}
@@ -462,7 +462,7 @@ IntelliTool* PaintingArea::copyActiveTool(){
}
}
-int PaintingArea::getNumberOfActiveLayer(){
+int PaintingArea::getIndexOfActiveLayer(){
return activeLayer;
}
@@ -509,14 +509,18 @@ void PaintingArea::updateTools(){
void PaintingArea::historyadd(){
- if (++historyPresent == 100) {
+ historyPresent++;
+ if (historyPresent == 100) {
historyPresent = 0;
}
historyMaxFuture = historyPresent;
- if (historyPresent == historyMaxPast)
- if (++historyMaxPast == 100)
+ if (historyPresent == historyMaxPast){
+ historyMaxPast++;
+ if (historyMaxPast == 100){
historyMaxPast = 0;
- history[static_cast(historyPresent)] = layerBundle;
+ }
+ }
+ history[static_cast(historyPresent)] = layerBundle;
}
void PaintingArea::historyGoBack(){
diff --git a/src/Layer/PaintingArea.h b/src/Layer/PaintingArea.h
index 03dfc79..9126000 100644
--- a/src/Layer/PaintingArea.h
+++ b/src/Layer/PaintingArea.h
@@ -176,36 +176,91 @@ void colorPickerSetSecondColor();
*/
void colorPickerSwapColors();
+/*!
+ * \brief createPenTool creates a Pen Tool.
+ */
void createPenTool();
+
+/*!
+ * \brief createPlainTool creates a Plain Tool.
+ */
void createPlainTool();
+
+/*!
+ * \brief createLineTool creates a Line Tool.
+ */
void createLineTool();
+
+/*!
+ * \brief createRectangleTool creates a Rectangle Tool.
+ */
void createRectangleTool();
+
+/*!
+ * \brief createCircleTool creates a Circle Tool.
+ */
void createCircleTool();
+
+/*!
+ * \brief createPolygonTool creates a Polygon Tool.
+ */
void createPolygonTool();
+
+/*!
+ * \brief createFloodFillTool creates a Floodfill Tool.
+ */
void createFloodFillTool();
+
+/*!
+ * \brief createGradientTool creates a Gradient Tool.
+ */
void createGradientTool();
/*!
- * \brief The getWidthOfActive gets the horizontal dimensions of the active layer
- * \return Returns the horizontal pixle count of the active layer
+ * \brief The getWidthOfActive gets the horizontal dimensions of the active layer.
+ * \return Returns the horizontal pixle count of the active layer.
*/
int getWidthOfActive();
/*!
- * \brief The getHeightOfActive gets the vertical dimensions of the active layer
- * \return Returns the vertical pixle count of the active layer
+ * \brief The getHeightOfActive gets the vertical dimensions of the active layer.
+ * \return Returns the vertical pixle count of the active layer.
*/
int getHeightOfActive();
+/*!
+ * \brief getMaxWidth gets the max width of the Canvas.
+ * \return return the width of the Canvas.
+ */
int getMaxWidth();
+/*!
+ * \brief getMaxHeight gets the max height of the Canvas.
+ * \return return the height of the Canvas.
+ */
int getMaxHeight();
-ImageType getTypeOfImageRealLayer();
+/*!
+ * \brief getTypeOfImageActiveLayer get the type of the active Layer.
+ * \return returns the image type of the active layer.
+ */
+ImageType getTypeOfImageActiveLayer();
-std::vector getPolygonDataOfRealLayer();
+/*!
+ * \brief getPolygonDataOfActiveLayer get the polygon data of the active Layer.
+ * \return return the polygon data of the active Layer.
+ */
+std::vector getPolygonDataOfActiveLayer();
-int getNumberOfActiveLayer();
+/*!
+ * \brief getIndexOfActiveLayer returns the index of athe active Layer.
+ * \return return the index of the active Layer.
+ */
+int getIndexOfActiveLayer();
+/*!
+ * \brief getImageOfActiveLayer returns the image of the active Layer.
+ * \return return the image of the active Layer.
+ */
IntelliImage* getImageOfActiveLayer();
/*!
@@ -220,17 +275,42 @@ QImage getImageDataOfActiveLayer();
*/
std::vector* getLayerBundle();
+/*!
+ * \brief Toolsettings - a class to manage Tool settings.
+ */
IntelliToolsettings Toolsettings;
+
+/*!
+ * \brief colorPicker a class to manage Tool color.
+ */
IntelliColorPicker colorPicker;
void historyadd();
void historyGoBack();
+
+/*!
+ * \brief historyGoForward a function to undo the return of the previous state of the project.
+ */
void historyGoForward();
-void setLayerDimensions(int maxWidth, int maxHeight);
+/*!
+ * \brief setCanvasDimensions sets the dimension of the Canvas
+ * \param maxWidth - the width of the Canvas.
+ * \param maxHeight - the height of the Canvas.
+ */
+void setCanvasDimensions(int maxWidth, int maxHeight);
-void setPixelToActive(QColor color, QPoint point);
+/*!
+ * \brief drawPixelOntoActive draws a pixel onto the image data of the active Layer.
+ * \param color - the color of the Pixel, which should be created.
+ * \param point - the Pixelposition.
+ */
+void drawPixelOntoActive(QColor color, QPoint point);
+/*!
+ * \brief setPolygonDataToActive sets polygondata to the active Layer.
+ * \param points - the points of the polygon data.
+ */
void setPolygonDataToActive(std::vector points);
public slots:
/*!
@@ -244,46 +324,149 @@ void slotActivateLayer(int a);
void slotDeleteActiveLayer();
protected:
+/*!
+ * \brief mousePressEvent handles a mouse pressed event.
+ * \param event - the specific mouse event.
+ */
void mousePressEvent(QMouseEvent*event) override;
+
+/*!
+ * \brief mouseMoveEvent handles a mouse moved event
+ * \param event - the specific mouse event.
+ */
void mouseMoveEvent(QMouseEvent*event) override;
+
+/*!
+ * \brief mouseReleaseEvent handles a mouse released event
+ * \param event - the specific mouse event.
+ */
void mouseReleaseEvent(QMouseEvent*event) override;
+/*!
+ * \brief wheelEvent handles a mouse wheel event
+ * \param event - the specific mouse event.
+ */
void wheelEvent(QWheelEvent*event) override;
+/*!
+ * \brief paintEvent handles a painting event
+ * \param event - the specific paint event.
+ */
void paintEvent(QPaintEvent*event) override;
private:
-//offset for the displayable
+/*!
+ * \brief offsetXDimension - Offset for drawing the image.
+ */
int offsetXDimension;
+
+/*!
+ * \brief offsetYDimension - Offset for drawing the image.
+ */
int offsetYDimension;
+/*!
+ * \brief selectLayerUp moves the active Layer one Up.
+ */
void selectLayerUp();
+
+/*!
+ * \brief selectLayerDown moves the active Layer one Down.
+ */
void selectLayerDown();
+
+/*!
+ * \brief copyActiveTool copys the activ tool [allocated].
+ * \return returns a allocates copy of the current tool.
+ */
IntelliTool* copyActiveTool();
+/*!
+ * \brief Canvas the underlying Image to display on.
+ */
QImage* Canvas;
+
+/*!
+ * \brief ScaledCanvas the Canvas saved for output
+ */
QImage ScaledCanvas;
+
+/*!
+ * \brief maxWidth is the width of the canvas
+ */
int maxWidth;
+
+/*!
+ * \brief maxHeight is the height of the canvas
+ */
int maxHeight;
+/*!
+ * \brief isSettingPolygon for checking the state of the drawing.
+ */
bool isSettingPolygon = false;
+/*!
+ * \brief renderSettings a class to manage the render settings.
+ */
IntelliRenderSettings renderSettings;
+
+/*!
+ * \brief Tool a class to manage the Tool.
+ */
IntelliTool* Tool;
+
+/*!
+ * \brief guiReference to manage communication with the gui.
+ */
IntelliPhotoGui* guiReference;
+/*!
+ * \brief layerBundle a container to save all layers.
+ */
std::vector layerBundle;
+
+/*!
+ * \brief activeLayer the index of the active Layer.
+ */
int activeLayer = -1;
+/*!
+ * \brief drawLayers draws the Layers to the Canvas
+ * \param forSaving an indecate if drawing for saving.
+ */
void drawLayers(bool forSaving = false);
+/*!
+ * \brief createTempTopLayer creates a temporary Layer on top of the Layer.
+ * \param idx - the Layer which should get a temp Layer.
+ * \return True if it workes, false otherwise.
+ */
bool createTempTopLayer(int idx);
+/*!
+ * \brief updateTools resets the Tools.
+ */
void updateTools();
+/*!
+ * \brief history - an array out of containers to save history actions.
+ */
std::vector history[100] = {layerBundle};
+
+/*!
+ * \brief historyMaxPast a indicator how many steps you can go into the past.
+ */
int historyMaxPast = 0;
+
+/*!
+ * \brief historyMaxPast a indicator how many steps you can go into the future.
+ */
int historyMaxFuture = 0;
+
+/*!
+ * \brief historyPresent a indicator where the present is.
+ */
int historyPresent = 0;
};
diff --git a/src/Tool/IntelliTool.h b/src/Tool/IntelliTool.h
index 40901f0..07abb46 100644
--- a/src/Tool/IntelliTool.h
+++ b/src/Tool/IntelliTool.h
@@ -17,9 +17,13 @@ class PaintingArea;
class IntelliTool {
friend UnitTest;
public:
+/*!
+ * \brief The Tooltype enum categorising the toosl.
+ */
enum class Tooltype {
CIRCLE,
FLOODFILL,
+ GRADIENT,
LINE,
PEN,
PLAIN,
@@ -49,6 +53,9 @@ protected:
*/
PaintingArea* Area;
+/*!
+ * \brief ActiveType the type of the active tool.
+ */
Tooltype ActiveType;
/*!
@@ -56,6 +63,9 @@ Tooltype ActiveType;
*/
IntelliColorPicker* colorPicker;
+/*!
+ * \brief Toolsettings a refrence to the tool settings
+ */
IntelliToolsettings* Toolsettings;
/*!
@@ -127,8 +137,16 @@ virtual void onWheelScrolled(int value);
*/
virtual void onMouseMoved(int x, int y);
+/*!
+ * \brief getTooltype returns the tools type
+ * \return returns the tool type of the current tool.
+ */
Tooltype getTooltype() const;
+/*!
+ * \brief getIsDrawing returns if the tool is currently drawing
+ * \return returns if the tool is currently drawing
+ */
bool getIsDrawing() const;
};
diff --git a/src/Tool/IntelliToolGradient.cpp b/src/Tool/IntelliToolGradient.cpp
index 216e5f2..a47f087 100644
--- a/src/Tool/IntelliToolGradient.cpp
+++ b/src/Tool/IntelliToolGradient.cpp
@@ -5,6 +5,7 @@
IntelliToolGradient::IntelliToolGradient(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings)
: IntelliTool(Area, colorPicker, Toolsettings){
+ this->ActiveType = Tooltype::GRADIENT;
this->LineColor = QColor(0,0,0,255);
this->hasMoved = false;
}
@@ -15,13 +16,13 @@ IntelliToolGradient::~IntelliToolGradient(){
void IntelliToolGradient::onMouseLeftPressed(int x, int y){
IntelliTool::onMouseLeftPressed(x,y);
- doubleA[0] = static_cast(x);
- doubleA[1] = static_cast(y);
- A = QPoint(x,y);
- B = QPoint(x,y);
- VectorAB[0] = 0;
- VectorAB[1] = 0;
- Canvas->image->drawPixel(A,LineColor);
+ doubleStartPoint[0] = static_cast(x);
+ doubleStartPoint[1] = static_cast(y);
+ startPoint = QPoint(x,y);
+ endPoint = QPoint(x,y);
+ VectorStartEnd[0] = 0;
+ VectorStartEnd[1] = 0;
+ Canvas->image->drawPixel(startPoint,LineColor);
}
void IntelliToolGradient::onMouseRightPressed(int x, int y){
@@ -42,15 +43,15 @@ void IntelliToolGradient::onMouseRightReleased(int x, int y){
void IntelliToolGradient::onMouseMoved(int x, int y){
if(this->isDrawing){
hasMoved = true;
- B = QPoint(x,y);
- VectorAB[0] = static_cast(B.x() - A.x());
- VectorAB[1] = static_cast(B.y() - A.y());
- NormalVector[0] = VectorAB[1];
- NormalVector[1] = (-1*VectorAB[0]);
+ endPoint = QPoint(x,y);
+ VectorStartEnd[0] = static_cast(endPoint.x() - startPoint.x());
+ VectorStartEnd[1] = static_cast(endPoint.y() - startPoint.y());
+ NormalVector[0] = VectorStartEnd[1];
+ NormalVector[1] = (-1*VectorStartEnd[0]);
NormalDotNormal = dotProduct(NormalVector,NormalVector);
this->Canvas->image->drawPlain(Qt::transparent);
computeGradientLayer();
- Canvas->image->drawLine(A,B,LineColor,1);
+ Canvas->image->drawLine(startPoint,endPoint,LineColor,1);
}
IntelliTool::onMouseMoved(x,y);
}
@@ -59,23 +60,23 @@ void IntelliToolGradient::onWheelScrolled(int value){
IntelliTool::onWheelScrolled(value);
}
-void IntelliToolGradient::computePixelColor(QPoint Point){
+void IntelliToolGradient::computeAndDrawPixelColor(QPoint Point){
double doublePoint[2];
doublePoint[0] = static_cast(Point.x());
doublePoint[1] = static_cast(Point.y());
double doublePointSubA[2];
- doublePointSubA[0] = doublePoint[0] - doubleA[0];
- doublePointSubA[1] = doublePoint[1] - doubleA[1];
+ doublePointSubA[0] = doublePoint[0] - doubleStartPoint[0];
+ doublePointSubA[1] = doublePoint[1] - doubleStartPoint[1];
double Perpendicular[2];
double PointSubADotNormal = dotProduct(doublePointSubA,NormalVector);
Perpendicular[0] = doublePoint[0] - (PointSubADotNormal / NormalDotNormal) * NormalVector[0];
Perpendicular[1] = doublePoint[1] - (PointSubADotNormal / NormalDotNormal) * NormalVector[1];
double VectorAPoint[2];
- VectorAPoint[0] = static_cast(Perpendicular[0] - doubleA[0]);
- VectorAPoint[1] = static_cast(Perpendicular[1] - doubleA[1]);
+ VectorAPoint[0] = static_cast(Perpendicular[0] - doubleStartPoint[0]);
+ VectorAPoint[1] = static_cast(Perpendicular[1] - doubleStartPoint[1]);
double ratio;
- if(((VectorAPoint[0] < 0 && VectorAB[0] < 0) || (VectorAPoint[0] > 0 && VectorAB[0] > 0)) && ((VectorAPoint[1] < 0 && VectorAB[1] < 0) || (VectorAPoint[1] > 0 && VectorAB[1] > 0)))
- ratio = lenghtVector(VectorAPoint)/lenghtVector(VectorAB);
+ if(((VectorAPoint[0] < 0 && VectorStartEnd[0] < 0) || (VectorAPoint[0] > 0 && VectorStartEnd[0] > 0)) && ((VectorAPoint[1] < 0 && VectorStartEnd[1] < 0) || (VectorAPoint[1] > 0 && VectorStartEnd[1] > 0)))
+ ratio = lenghtVector(VectorAPoint)/lenghtVector(VectorStartEnd);
else{
ratio = -1;
}
@@ -110,7 +111,7 @@ double IntelliToolGradient::dotProduct(double Vector1[2], double Vector2[2]){
}
double IntelliToolGradient::lenghtVector(double Vector[2]){
- return static_cast((std::sqrt(Vector[0] * Vector[0] + Vector[1] * Vector[1])));
+ return static_cast((sqrt(Vector[0] * Vector[0] + Vector[1] * Vector[1])));
}
void IntelliToolGradient::computeGradientLayer(){
@@ -121,7 +122,7 @@ void IntelliToolGradient::computeGradientLayer(){
}
for(int i = 0; i < activeLayer->height; i++){
for(int j = 0; j < activeLayer->width; j++){
- computePixelColor(QPoint(j,i));
+ computeAndDrawPixelColor(QPoint(j,i));
}
}
if(switched){
diff --git a/src/Tool/IntelliToolGradient.h b/src/Tool/IntelliToolGradient.h
index 01b0159..caf9b81 100644
--- a/src/Tool/IntelliToolGradient.h
+++ b/src/Tool/IntelliToolGradient.h
@@ -1,12 +1,23 @@
#ifndef INTELLITOOLGRADIENT_H
#define INTELLITOOLGRADIENT_H
#include "IntelliTool.h"
-
+/*!
+ * \brief The IntelliToolGradient class that represents a gradient call
+ */
class IntelliToolGradient : public IntelliTool{
public:
+ /*!
+ * \brief IntelliToolGradient basic constructor of the gradient tool.
+ * \param Area - a reference to the paintingArea
+ * \param colorPicker - a reference to the colorpicker
+ * \param Toolsettings - a regerence to the Toolsettings
+ */
IntelliToolGradient(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings);
+ /*!
+ * \brief ~IntelliToolGradient basic destructor.
+ */
virtual ~IntelliToolGradient() override;
/*!
@@ -51,21 +62,70 @@ public:
virtual void onMouseMoved(int x, int y) override;
private:
- QPoint A;
- QPoint B;
- double doubleA[2];
- double VectorAB[2];
+
+ /*!
+ * \brief startPoint of the line
+ */
+ QPoint startPoint;
+
+ /*!
+ * \brief endPoint of the line
+ */
+ QPoint endPoint;
+ /*!
+ * \brief doubleStartPoint startPoint as double Values
+ */
+ double doubleStartPoint[2];
+
+ /*!
+ * \brief VectorStartEnd a vector between start and end point.
+ */
+ double VectorStartEnd[2];
+
+ /*!
+ * \brief NormalVector of the VectorStartEnd
+ */
double NormalVector[2];
+
+ /*!
+ * \brief NormalDotNormal dot product of Normal*Normal
+ */
double NormalDotNormal;
+
+ /*!
+ * \brief LineColor color of th line.
+ */
QColor LineColor;
+
+ /*!
+ * \brief hasMoved indicates a movement
+ */
bool hasMoved;
- void computePixelColor(QPoint Point);
+ /*!
+ * \brief computeAndDrawPixelColor computes the pixelcolor for a given point and sets it to the image.
+ * \param Point the point which shoud be computed
+ */
+ void computeAndDrawPixelColor(QPoint Point);
+ /*!
+ * \brief dotProduct calculates the dot product of 2 vetors.
+ * \param Vector1 - first argument
+ * \param Vector2 - second argument
+ * \return returns the dot product.
+ */
double dotProduct(double Vector1[2], double Vector2[2]);
+ /*!
+ * \brief lenghtVector returns the length of a vector
+ * \param Vector - Vector to calculate the length
+ * \return returns the length of the vector
+ */
double lenghtVector(double Vector[2]);
+ /*!
+ * \brief computeGradientLayer computes the gradient over all pixels in the image.
+ */
void computeGradientLayer();
};
diff --git a/src/Tool/IntelliToolPolygon.cpp b/src/Tool/IntelliToolPolygon.cpp
index 3efd0d5..b6d8b4e 100644
--- a/src/Tool/IntelliToolPolygon.cpp
+++ b/src/Tool/IntelliToolPolygon.cpp
@@ -24,9 +24,9 @@ IntelliToolPolygon::~IntelliToolPolygon(){
}
void IntelliToolPolygon::onMouseLeftPressed(int x, int y){
- if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == ImageType::SHAPEDIMAGE && x > 0 && y > 0 && xgetWidthOfActive() && ygetHeightOfActive()) {
- if(Area->getPolygonDataOfRealLayer().size()>2) {
- std::vector Triangles = IntelliTriangulation::calculateTriangles(Area->getPolygonDataOfRealLayer());
+ if(!drawingOfPolygon && Area->getTypeOfImageActiveLayer() == ImageType::SHAPEDIMAGE && x > 0 && y > 0 && xgetWidthOfActive() && ygetHeightOfActive()) {
+ if(Area->getPolygonDataOfActiveLayer().size()>2) {
+ std::vector Triangles = IntelliTriangulation::calculateTriangles(Area->getPolygonDataOfActiveLayer());
QPoint Point(x,y);
isInside = IntelliTriangulation::isInPolygon(Triangles,Point);
}
@@ -37,7 +37,7 @@ void IntelliToolPolygon::onMouseLeftPressed(int x, int y){
isInside = true;
}
}
- else if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == ImageType::RASTERIMAGE && x >= 0 && y >= 0 && xgetWidthOfActive() && ygetHeightOfActive()) {
+ else if(!drawingOfPolygon && Area->getTypeOfImageActiveLayer() == ImageType::RASTERIMAGE && x >= 0 && y >= 0 && xgetWidthOfActive() && ygetHeightOfActive()) {
isInside = true;
}
diff --git a/docs/Icons/line-tool.svg b/src/icons/gradient-tool.svg
similarity index 62%
rename from docs/Icons/line-tool.svg
rename to src/icons/gradient-tool.svg
index 6ff03e8..8953735 100644
--- a/docs/Icons/line-tool.svg
+++ b/src/icons/gradient-tool.svg
@@ -15,10 +15,34 @@
viewBox="0 0 67.733332 67.733335"
version="1.1"
id="svg8"
- sodipodi:docname="line-tool.svg"
- inkscape:version="0.92.4 (5da689c313, 2019-01-14)">
+ sodipodi:docname="gradient-tool.svg"
+ inkscape:version="0.92.4 (f8dce91, 2019-08-02)">
+
+
+
+
+
+
+
@@ -40,6 +64,15 @@
x2="-13.131983"
y2="106.49742"
gradientUnits="userSpaceOnUse" />
+
+ inkscape:window-width="1853"
+ inkscape:window-height="1025"
+ inkscape:window-x="67"
+ inkscape:window-y="27"
+ inkscape:window-maximized="1"
+ inkscape:snap-page="true" />
@@ -78,17 +112,19 @@
inkscape:groupmode="layer"
id="layer1"
transform="translate(0,-229.26665)">
+
-