mirror of
https://github.com/creyD/intelliphoto.git
synced 2026-04-16 05:10:32 +02:00
Merge branch 'dev' into UnitTesting
This commit is contained in:
@@ -1,6 +1,3 @@
|
|||||||
src/GUI/IntelliPhotoGui.cpp:83:15: style: Variable 'layer' is assigned a value that is never used. [unreadVariable]
|
|
||||||
int layer = paintingArea->addLayer(width,height,0,0);
|
|
||||||
^
|
|
||||||
src/IntelliHelper/IntelliColorPicker.cpp:4:3: performance: Variable 'firstColor' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList]
|
src/IntelliHelper/IntelliColorPicker.cpp:4:3: performance: Variable 'firstColor' is assigned in constructor body. Consider performing initialization in initialization list. [useInitializationList]
|
||||||
firstColor = {255,0,0,255};
|
firstColor = {255,0,0,255};
|
||||||
^
|
^
|
||||||
@@ -10,9 +7,9 @@ src/IntelliHelper/IntelliColorPicker.cpp:5:3: performance: Variable 'secondColor
|
|||||||
src/IntelliHelper/IntelliTriangulation.cpp:116:63: style: Parameter 'triangles' can be declared with const [constParameter]
|
src/IntelliHelper/IntelliTriangulation.cpp:116:63: style: Parameter 'triangles' can be declared with const [constParameter]
|
||||||
bool IntelliTriangulation::isInPolygon(std::vector<Triangle> &triangles, QPoint &point){
|
bool IntelliTriangulation::isInPolygon(std::vector<Triangle> &triangles, QPoint &point){
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:335:22: style: Redundant condition: If 'activeLayer > 0', the comparison 'activeLayer != -1' is always true. [redundantCondition]
|
src/Layer/PaintingArea.cpp:334:28: style: Redundant condition: If 'activeLayer > 0', the comparison 'activeLayer != -1' is always true. [redundantCondition]
|
||||||
if(activeLayer!=-1 && activeLayer>0) {
|
if(activeLayer!=-1 && activeLayer>0) {
|
||||||
^
|
^
|
||||||
src/Tool/IntelliTool.cpp:4:14: warning: Member variable 'IntelliTool::ActiveType' is not initialized in the constructor. [uninitMemberVar]
|
src/Tool/IntelliTool.cpp:4:14: warning: Member variable 'IntelliTool::ActiveType' is not initialized in the constructor. [uninitMemberVar]
|
||||||
IntelliTool::IntelliTool(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings){
|
IntelliTool::IntelliTool(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings){
|
||||||
^
|
^
|
||||||
@@ -22,34 +19,31 @@ IntelliTool::IntelliTool(PaintingArea* Area, IntelliColorPicker* colorPicker, In
|
|||||||
src/Tool/IntelliTool.cpp:4:14: warning: Member variable 'IntelliTool::Canvas' is not initialized in the constructor. [uninitMemberVar]
|
src/Tool/IntelliTool.cpp:4:14: warning: Member variable 'IntelliTool::Canvas' is not initialized in the constructor. [uninitMemberVar]
|
||||||
IntelliTool::IntelliTool(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings){
|
IntelliTool::IntelliTool(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings){
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:43:9: style: Local variable 'yMin' shadows outer variable [shadowVariable]
|
src/Tool/IntelliToolCircle.cpp:42:9: style: Local variable 'yMin' shadows outer variable [shadowVariable]
|
||||||
int yMin = static_cast<int>(centerPoint.y()-sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
int yMin = static_cast<int>(centerPoint.y()-sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:19:7: note: Shadowed declaration
|
src/Tool/IntelliToolCircle.cpp:18:7: note: Shadowed declaration
|
||||||
int yMin, yMax, xMin, xMax;
|
int yMin, yMax, xMin, xMax;
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:43:9: note: Shadow variable
|
src/Tool/IntelliToolCircle.cpp:42:9: note: Shadow variable
|
||||||
int yMin = static_cast<int>(centerPoint.y()-sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
int yMin = static_cast<int>(centerPoint.y()-sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:44:9: style: Local variable 'yMax' shadows outer variable [shadowVariable]
|
src/Tool/IntelliToolCircle.cpp:43:9: style: Local variable 'yMax' shadows outer variable [shadowVariable]
|
||||||
int yMax = static_cast<int>(centerPoint.y()+sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
int yMax = static_cast<int>(centerPoint.y()+sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:19:13: note: Shadowed declaration
|
src/Tool/IntelliToolCircle.cpp:18:13: note: Shadowed declaration
|
||||||
int yMin, yMax, xMin, xMax;
|
int yMin, yMax, xMin, xMax;
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:44:9: note: Shadow variable
|
src/Tool/IntelliToolCircle.cpp:43:9: note: Shadow variable
|
||||||
int yMax = static_cast<int>(centerPoint.y()+sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
int yMax = static_cast<int>(centerPoint.y()+sqrt(pow(radius,2)-pow(i-centerPoint.x(),2)));
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolCircle.cpp:16:13: style: Variable 'outer' is assigned a value that is never used. [unreadVariable]
|
|
||||||
int outer = radius+20;
|
|
||||||
^
|
|
||||||
src/Tool/IntelliToolLine.cpp:51:13: style: Variable 'c' is assigned a value that is never used. [unreadVariable]
|
src/Tool/IntelliToolLine.cpp:51:13: style: Variable 'c' is assigned a value that is never used. [unreadVariable]
|
||||||
int c = lineStartingPoint.y()-lineStartingPoint.x()*m;
|
int c = lineStartingPoint.y()-lineStartingPoint.x()*m;
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolPolygon.h:25:6: warning: The class 'IntelliToolPolygon' defines member variable with name 'isDrawing' also defined in its parent class 'IntelliTool'. [duplInheritedMember]
|
src/Tool/IntelliToolPolygon.h:25:6: warning: The class 'IntelliToolPolygon' defines member variable with name 'isDrawing' also defined in its parent class 'IntelliTool'. [duplInheritedMember]
|
||||||
bool isDrawing;
|
bool isDrawing;
|
||||||
^
|
^
|
||||||
src/Tool/IntelliTool.h:68:6: note: Parent variable 'IntelliTool::isDrawing'
|
src/Tool/IntelliTool.h:69:6: note: Parent variable 'IntelliTool::isDrawing'
|
||||||
bool isDrawing = false;
|
bool isDrawing = false;
|
||||||
^
|
^
|
||||||
src/Tool/IntelliToolPolygon.h:25:6: note: Derived variable 'IntelliToolPolygon::isDrawing'
|
src/Tool/IntelliToolPolygon.h:25:6: note: Derived variable 'IntelliToolPolygon::isDrawing'
|
||||||
@@ -58,34 +52,31 @@ bool isDrawing;
|
|||||||
src/GUI/IntelliPhotoGui.cpp:23:0: style: The function 'closeEvent' is never used. [unusedFunction]
|
src/GUI/IntelliPhotoGui.cpp:23:0: style: The function 'closeEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:271:0: style: The function 'mouseMoveEvent' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:261:0: style: The function 'mouseMoveEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:255:0: style: The function 'mousePressEvent' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:242:0: style: The function 'mousePressEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:281:0: style: The function 'mouseReleaseEvent' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:274:0: style: The function 'mouseReleaseEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:307:0: style: The function 'paintEvent' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:304:0: style: The function 'paintEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:318:0: style: The function 'resizeEvent' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:315:0: style: The function 'resizeEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:323:0: style: The function 'resizeLayer' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:320:0: style: The function 'resizeLayer' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:175:0: style: The function 'slotActivateLayer' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:168:0: style: The function 'slotActivateLayer' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/GUI/IntelliPhotoGui.cpp:157:0: style: The function 'slotClearActiveLayer' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:88:0: style: The function 'slotDeleteActiveLayer' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
^
|
||||||
src/Layer/PaintingArea.cpp:83:0: style: The function 'slotDeleteActiveLayer' is never used. [unusedFunction]
|
src/Layer/PaintingArea.cpp:289:0: style: The function 'wheelEvent' is never used. [unusedFunction]
|
||||||
|
|
||||||
^
|
|
||||||
src/Layer/PaintingArea.cpp:294:0: style: The function 'wheelEvent' is never used. [unusedFunction]
|
|
||||||
|
|
||||||
^
|
^
|
||||||
nofile:0:0: information: Cppcheck cannot find all the include files (use --check-config for details) [missingInclude]
|
nofile:0:0: information: Cppcheck cannot find all the include files (use --check-config for details) [missingInclude]
|
||||||
|
|||||||
@@ -46,10 +46,10 @@ void IntelliPhotoGui::slotOpen(){
|
|||||||
|
|
||||||
// If we have a file name load the image and place
|
// If we have a file name load the image and place
|
||||||
// it in the paintingArea
|
// it in the paintingArea
|
||||||
if (!fileName.isEmpty()){
|
if (!fileName.isEmpty()) {
|
||||||
paintingArea->open(fileName);
|
paintingArea->open(fileName);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -65,27 +65,52 @@ void IntelliPhotoGui::slotSave(){
|
|||||||
saveFile(fileFormat);
|
saveFile(fileFormat);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Opens a dialog that allows the user to create a New Layer
|
// Opens a dialog that allows the user to create a New RASTER Layer
|
||||||
void IntelliPhotoGui::slotCreateNewLayer(){
|
void IntelliPhotoGui::slotCreateNewRasterLayer(){
|
||||||
// Stores button value
|
// Stores button value
|
||||||
bool ok1, ok2;
|
bool ok1, ok2;
|
||||||
|
|
||||||
// "New Layer" is the title of the window
|
// "New Layer" is the title of the window
|
||||||
// the next tr is the text to display
|
// the next tr is the text to display
|
||||||
// Define the standard Value, min, max, step and ok button
|
// Define the standard Value, min, max, step and ok button
|
||||||
QInputDialog Input;
|
QInputDialog Input;
|
||||||
Input.setPalette(Palette);
|
Input.setPalette(Palette);
|
||||||
|
|
||||||
int width = Input.getInt(this, tr("New Layer"),
|
int width = Input.getInt(this, tr("New Layer"),
|
||||||
tr("Width:"),
|
tr("Width:"),
|
||||||
200,1, 500, 1, &ok1);
|
200,1, 500, 1, &ok1);
|
||||||
|
|
||||||
int height = QInputDialog::getInt(this, tr("New Layer"),
|
int height = QInputDialog::getInt(this, tr("New Layer"),
|
||||||
tr("Height:"),
|
tr("Height:"),
|
||||||
200,1, 500, 1, &ok2);
|
200,1, 500, 1, &ok2);
|
||||||
// Create New Layer
|
// Create New Layer
|
||||||
if (ok1&&ok2){
|
if (ok1&&ok2) {
|
||||||
paintingArea->addLayer(width,height,0,0);
|
paintingArea->addLayer(width,height,0,0,IntelliImage::ImageType::RASTERIMAGE);
|
||||||
|
UpdateGui();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Opens a dialog that allows the user to create a New SHAPED Layer
|
||||||
|
void IntelliPhotoGui::slotCreateNewShapedLayer(){
|
||||||
|
// Stores button value
|
||||||
|
bool ok1, ok2;
|
||||||
|
|
||||||
|
// "New 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
|
||||||
|
QInputDialog Input;
|
||||||
|
Input.setPalette(Palette);
|
||||||
|
|
||||||
|
int width = Input.getInt(this, tr("New Layer"),
|
||||||
|
tr("Width:"),
|
||||||
|
200,1, 500, 1, &ok1);
|
||||||
|
|
||||||
|
int height = QInputDialog::getInt(this, tr("New Layer"),
|
||||||
|
tr("Height:"),
|
||||||
|
200,1, 500, 1, &ok2);
|
||||||
|
// Create New Layer
|
||||||
|
if (ok1&&ok2) {
|
||||||
|
paintingArea->addLayer(width,height,0,0,IntelliImage::ImageType::SHAPEDIMAGE);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -100,10 +125,10 @@ void IntelliPhotoGui::slotDeleteLayer(){
|
|||||||
// Define the standard Value, min, max, step and ok button
|
// Define the standard Value, min, max, step and ok button
|
||||||
int layerNumber = QInputDialog::getInt(this, tr("delete Layer"),
|
int layerNumber = QInputDialog::getInt(this, tr("delete Layer"),
|
||||||
tr("Number:"),
|
tr("Number:"),
|
||||||
paintingArea->getNumberOfActiveLayer()+1,1, 501, 1, &ok);
|
paintingArea->getNumberOfActiveLayer()+1,1, 501, 1, &ok);
|
||||||
// Create New Layer
|
// Create New Layer
|
||||||
if (ok) {
|
if (ok) {
|
||||||
paintingArea->deleteLayer(layerNumber-1);
|
paintingArea->deleteLayer(layerNumber-1);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -117,14 +142,32 @@ void IntelliPhotoGui::slotSetActiveAlpha(){
|
|||||||
// Define the standard Value, min, max, step and ok button
|
// Define the standard Value, min, max, step and ok button
|
||||||
int layer = QInputDialog::getInt(this, tr("Layer to set on"),
|
int layer = QInputDialog::getInt(this, tr("Layer to set on"),
|
||||||
tr("Layer:"),
|
tr("Layer:"),
|
||||||
1,1,500,1, &ok1);
|
1,1,500,1, &ok1);
|
||||||
// "New Alpha" is the title of the window
|
// "New Alpha" is the title of the window
|
||||||
int alpha = QInputDialog::getInt(this, tr("New Alpha"),
|
int alpha = QInputDialog::getInt(this, tr("New Alpha"),
|
||||||
tr("Alpha:"),
|
tr("Alpha:"),
|
||||||
255,0, 255, 1, &ok2);
|
255,0, 255, 1, &ok2);
|
||||||
if (ok1&&ok2)
|
if (ok1&&ok2)
|
||||||
{
|
{
|
||||||
paintingArea->setLayerAlpha(layer-1,alpha);
|
paintingArea->setLayerAlpha(layer-1,alpha);
|
||||||
|
UpdateGui();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void IntelliPhotoGui::slotSetPolygon(){
|
||||||
|
// Stores button value
|
||||||
|
bool ok1;
|
||||||
|
|
||||||
|
// "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 = QInputDialog::getInt(this, tr("Layer to set on"),
|
||||||
|
tr("Layer:"),
|
||||||
|
1,1,500,1, &ok1);
|
||||||
|
|
||||||
|
if (ok1)
|
||||||
|
{
|
||||||
|
paintingArea->setPolygon(layer-1);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -159,60 +202,31 @@ void IntelliPhotoGui::slotMoveLayerDown(){
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotClearActiveLayer(){
|
|
||||||
// Stores button value
|
|
||||||
bool ok1, ok2, ok3, ok4;
|
|
||||||
|
|
||||||
// "Red Input" 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 red = QInputDialog::getInt(this, tr("Red Input"),
|
|
||||||
tr("Red:"),
|
|
||||||
255,0, 255,1, &ok1);
|
|
||||||
// "Green Input" is the title of the window
|
|
||||||
int green = QInputDialog::getInt(this, tr("Green Input"),
|
|
||||||
tr("Green:"),
|
|
||||||
255,0, 255, 1, &ok2);
|
|
||||||
// "Blue Input" is the title of the window
|
|
||||||
int blue = QInputDialog::getInt(this, tr("Blue Input"),
|
|
||||||
tr("Blue:"),
|
|
||||||
255,0, 255, 1, &ok3);
|
|
||||||
// "Alpha Input" is the title of the window
|
|
||||||
int alpha = QInputDialog::getInt(this, tr("Alpha Input"),
|
|
||||||
tr("Alpha:"),
|
|
||||||
255,0, 255, 1, &ok4);
|
|
||||||
if (ok1&&ok2&&ok3&&ok4)
|
|
||||||
{
|
|
||||||
paintingArea->floodFill(red, green, blue, alpha);
|
|
||||||
UpdateGui();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void IntelliPhotoGui::slotSetActiveLayer(){
|
void IntelliPhotoGui::slotSetActiveLayer(){
|
||||||
// Stores button value
|
// Stores button value
|
||||||
bool ok1;
|
bool ok1;
|
||||||
|
|
||||||
// "Layer to set on" is the title of the window
|
// "Layer to set on" is the title of the window
|
||||||
// the next tr is the text to display
|
// the next tr is the text to display
|
||||||
// Define the standard Value, min, max, step and ok button
|
// Define the standard Value, min, max, step and ok button
|
||||||
int layer = QInputDialog::getInt(this, tr("Layer to set on"),
|
int layer = QInputDialog::getInt(this, tr("Layer to set on"),
|
||||||
tr("Layer:"),
|
tr("Layer:"),
|
||||||
1,1,500,1, &ok1);
|
1,1,500,1, &ok1);
|
||||||
if (ok1)
|
if (ok1)
|
||||||
{
|
{
|
||||||
paintingArea->setLayerActive(layer-1);
|
paintingArea->setLayerActive(layer-1);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotUpdateRenderSettingsOn(){
|
void IntelliPhotoGui::slotUpdateRenderSettingsOn(){
|
||||||
paintingArea->setRenderSettings(true);
|
paintingArea->setRenderSettings(true);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotUpdateRenderSettingsOff(){
|
void IntelliPhotoGui::slotUpdateRenderSettingsOff(){
|
||||||
paintingArea->setRenderSettings(false);
|
paintingArea->setRenderSettings(false);
|
||||||
UpdateGui();
|
UpdateGui();
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotSetFirstColor(){
|
void IntelliPhotoGui::slotSetFirstColor(){
|
||||||
@@ -269,7 +283,7 @@ void IntelliPhotoGui::slotCreateFloodFillTool(){
|
|||||||
void IntelliPhotoGui::slotAboutDialog(){
|
void IntelliPhotoGui::slotAboutDialog(){
|
||||||
// Window title and text to display
|
// Window title and text to display
|
||||||
QMessageBox::about(this, tr("About Painting"),
|
QMessageBox::about(this, tr("About Painting"),
|
||||||
tr("<p><b>IntelliPhoto - </b>A Pretty basic editor.</p> <br>Developed by Team 7."));
|
tr("<p><b>IntelliPhoto - </b>A Pretty basic editor.</p> <br>Developed by Team 7."));
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotEnterPressed(){
|
void IntelliPhotoGui::slotEnterPressed(){
|
||||||
@@ -296,13 +310,13 @@ void IntelliPhotoGui::slotResetTools(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotSetWidth(){
|
void IntelliPhotoGui::slotSetWidth(){
|
||||||
paintingArea->Toolsettings.setLineWidth();
|
paintingArea->Toolsettings.setLineWidth();
|
||||||
EditLineWidth->setText(QString("%1").arg(paintingArea->Toolsettings.getLineWidth()));
|
EditLineWidth->setText(QString("%1").arg(paintingArea->Toolsettings.getLineWidth()));
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::slotSetInnerAlpha(){
|
void IntelliPhotoGui::slotSetInnerAlpha(){
|
||||||
paintingArea->Toolsettings.setInnerAlpha();
|
paintingArea->Toolsettings.setInnerAlpha();
|
||||||
EditLineInnerAlpha->setText(QString("%1").arg(paintingArea->Toolsettings.getInnerAlpha()));
|
EditLineInnerAlpha->setText(QString("%1").arg(paintingArea->Toolsettings.getInnerAlpha()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Define menu actions that call functions
|
// Define menu actions that call functions
|
||||||
@@ -332,7 +346,7 @@ void IntelliPhotoGui::createActions(){
|
|||||||
connect(pngSaveAction, SIGNAL(triggered()), this, SLOT(slotSave()));
|
connect(pngSaveAction, SIGNAL(triggered()), this, SLOT(slotSave()));
|
||||||
// Attach each PNG in save Menu
|
// Attach each PNG in save Menu
|
||||||
actionSaveAs.append(pngSaveAction);
|
actionSaveAs.append(pngSaveAction);
|
||||||
pngSaveAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S));
|
pngSaveAction->setShortcut(QKeySequence(Qt::CTRL + Qt::SHIFT + Qt::Key_S));
|
||||||
|
|
||||||
// Create exit action and tie to IntelliPhotoGui::close()
|
// Create exit action and tie to IntelliPhotoGui::close()
|
||||||
actionExit = new QAction(tr("&Exit"), this);
|
actionExit = new QAction(tr("&Exit"), this);
|
||||||
@@ -343,24 +357,34 @@ void IntelliPhotoGui::createActions(){
|
|||||||
actionOpen->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
|
actionOpen->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_O));
|
||||||
connect(actionOpen, SIGNAL(triggered()), this, SLOT(slotOpen()));
|
connect(actionOpen, SIGNAL(triggered()), this, SLOT(slotOpen()));
|
||||||
|
|
||||||
// Create New Layer action and tie to IntelliPhotoGui::newLayer()
|
// Create New RASTER Layer action and tie to IntelliPhotoGui::newLayer()
|
||||||
actionCreateNewLayer = new QAction(tr("&New Layer..."), this);
|
actionCreateNewRasterLayer = new QAction(tr("&Raster Image"), this);
|
||||||
actionCreateNewLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
|
actionCreateNewRasterLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N));
|
||||||
connect(actionCreateNewLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewLayer()));
|
connect(actionCreateNewRasterLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewRasterLayer()));
|
||||||
|
|
||||||
|
|
||||||
|
// Create New SHAPED Layer action and tie to IntelliPhotoGui::newLayer()
|
||||||
|
actionCreateNewShapedLayer = new QAction(tr("&Shaped Image"), this);
|
||||||
|
actionCreateNewShapedLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_N + Qt::ALT));
|
||||||
|
connect(actionCreateNewShapedLayer, SIGNAL(triggered()), this, SLOT(slotCreateNewShapedLayer()));
|
||||||
|
|
||||||
// Delete New Layer action and tie to IntelliPhotoGui::deleteLayer()
|
// 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));
|
actionDeleteLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_D));
|
||||||
connect(actionDeleteLayer, SIGNAL(triggered()), this, SLOT(slotDeleteLayer()));
|
connect(actionDeleteLayer, SIGNAL(triggered()), this, SLOT(slotDeleteLayer()));
|
||||||
|
|
||||||
actionSetActiveLayer = new QAction(tr("&set Active"), this);
|
actionSetActiveLayer = new QAction(tr("&set Active"), this);
|
||||||
actionSetActiveLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
|
actionSetActiveLayer->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_A));
|
||||||
connect(actionSetActiveLayer, SIGNAL(triggered()), this, SLOT(slotSetActiveLayer()));
|
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));
|
actionSetActiveAlpha->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_A));
|
||||||
connect(actionSetActiveAlpha, SIGNAL(triggered()), this, SLOT(slotSetActiveAlpha()));
|
connect(actionSetActiveAlpha, SIGNAL(triggered()), this, SLOT(slotSetActiveAlpha()));
|
||||||
|
|
||||||
|
actionSetPolygon = new QAction(tr("&set new Polygondata"), 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));
|
actionMovePositionUp->setShortcut(QKeySequence(Qt::CTRL + Qt::Key_Up));
|
||||||
connect(actionMovePositionUp, SIGNAL(triggered()), this, SLOT(slotPositionMoveUp()));
|
connect(actionMovePositionUp, SIGNAL(triggered()), this, SLOT(slotPositionMoveUp()));
|
||||||
@@ -385,76 +409,76 @@ void IntelliPhotoGui::createActions(){
|
|||||||
actionMoveLayerDown->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Down));
|
actionMoveLayerDown->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_Down));
|
||||||
connect(actionMoveLayerDown, SIGNAL(triggered()), this, SLOT(slotMoveLayerDown()));
|
connect(actionMoveLayerDown, SIGNAL(triggered()), this, SLOT(slotMoveLayerDown()));
|
||||||
|
|
||||||
//Create Update RenderSettings Actions here
|
//Create Update RenderSettings Actions here
|
||||||
actionUpdateRenderSettingsOn = new QAction(tr("&On"), this);
|
actionUpdateRenderSettingsOn = new QAction(tr("&On"), this);
|
||||||
actionUpdateRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT +Qt::SHIFT + +Qt::Key_A));
|
actionUpdateRenderSettingsOn->setShortcut(QKeySequence(Qt::ALT +Qt::SHIFT + +Qt::Key_A));
|
||||||
connect(actionUpdateRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOn()));
|
connect(actionUpdateRenderSettingsOn, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOn()));
|
||||||
|
|
||||||
actionUpdateRenderSettingsOff = new QAction(tr("&Off"), this);
|
actionUpdateRenderSettingsOff = new QAction(tr("&Off"), this);
|
||||||
actionUpdateRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT +Qt::SHIFT + +Qt::Key_D));
|
actionUpdateRenderSettingsOff->setShortcut(QKeySequence(Qt::ALT +Qt::SHIFT + +Qt::Key_D));
|
||||||
connect(actionUpdateRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOff()));
|
connect(actionUpdateRenderSettingsOff, SIGNAL(triggered()),this, SLOT(slotUpdateRenderSettingsOff()));
|
||||||
|
|
||||||
//Create Color Actions here
|
//Create Color Actions here
|
||||||
actionColorPickerFirstColor = new QAction(tr("&Main"), this);
|
actionColorPickerFirstColor = new QAction(tr("&Main"), this);
|
||||||
actionColorPickerFirstColor->setShortcut(QKeySequence(Qt::ALT + Qt::Key_N));
|
actionColorPickerFirstColor->setShortcut(QKeySequence(Qt::ALT + Qt::Key_N));
|
||||||
connect(actionColorPickerFirstColor, SIGNAL(triggered()), this, SLOT(slotSetFirstColor()));
|
connect(actionColorPickerFirstColor, SIGNAL(triggered()), this, SLOT(slotSetFirstColor()));
|
||||||
connect(FirstColorButton, SIGNAL(clicked()), this, SLOT(slotSetFirstColor()));
|
connect(FirstColorButton, SIGNAL(clicked()), this, SLOT(slotSetFirstColor()));
|
||||||
|
|
||||||
actionColorPickerSecondColor = new QAction(tr("&Secondary"), this);
|
actionColorPickerSecondColor = new QAction(tr("&Secondary"), this);
|
||||||
actionColorPickerSecondColor->setShortcut(QKeySequence(Qt::ALT + Qt::Key_M));
|
actionColorPickerSecondColor->setShortcut(QKeySequence(Qt::ALT + Qt::Key_M));
|
||||||
connect(actionColorPickerSecondColor, SIGNAL(triggered()), this, SLOT(slotSetSecondColor()));
|
connect(actionColorPickerSecondColor, SIGNAL(triggered()), this, SLOT(slotSetSecondColor()));
|
||||||
connect(SecondColorButton, SIGNAL(clicked()), this, SLOT(slotSetSecondColor()));
|
connect(SecondColorButton, SIGNAL(clicked()), this, SLOT(slotSetSecondColor()));
|
||||||
|
|
||||||
actionColorSwap = new QAction(tr("&Switch"), this);
|
actionColorSwap = new QAction(tr("&Switch"), this);
|
||||||
actionColorSwap->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_S));
|
actionColorSwap->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::Key_S));
|
||||||
connect(actionColorSwap, SIGNAL(triggered()), this, SLOT(slotSwapColor()));
|
connect(actionColorSwap, SIGNAL(triggered()), this, SLOT(slotSwapColor()));
|
||||||
connect(SwitchColorButton, SIGNAL(clicked()), this, SLOT(slotSwapColor()));
|
connect(SwitchColorButton, SIGNAL(clicked()), this, SLOT(slotSwapColor()));
|
||||||
|
|
||||||
//Create Tool actions down here
|
//Create Tool actions down here
|
||||||
actionCreatePlainTool = new QAction(tr("&Plain"), this);
|
actionCreatePlainTool = new QAction(tr("&Plain"), this);
|
||||||
actionCreatePlainTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_P));
|
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(slotResetTools()));
|
||||||
connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotCreatePlainTool()));
|
connect(actionCreatePlainTool, SIGNAL(triggered()), this, SLOT(slotCreatePlainTool()));
|
||||||
|
|
||||||
|
|
||||||
actionCreatePenTool = new QAction(tr("&Pen"),this);
|
actionCreatePenTool = new QAction(tr("&Pen"),this);
|
||||||
actionCreatePenTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_S));
|
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(slotResetTools()));
|
||||||
connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotCreatePenTool()));
|
connect(actionCreatePenTool, SIGNAL(triggered()), this, SLOT(slotCreatePenTool()));
|
||||||
|
|
||||||
actionCreateLineTool = new QAction(tr("&Line"), this);
|
actionCreateLineTool = new QAction(tr("&Line"), this);
|
||||||
actionCreateLineTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_L));
|
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(slotResetTools()));
|
||||||
connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotCreateLineTool()));
|
connect(actionCreateLineTool, SIGNAL(triggered()), this, SLOT(slotCreateLineTool()));
|
||||||
|
|
||||||
actionCreateCircleTool = new QAction(tr("&Circle"), this);
|
actionCreateCircleTool = new QAction(tr("&Circle"), this);
|
||||||
actionCreateCircleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_C));
|
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(slotResetTools()));
|
||||||
connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotCreateCircleTool()));
|
connect(actionCreateCircleTool, SIGNAL(triggered()), this, SLOT(slotCreateCircleTool()));
|
||||||
|
|
||||||
actionCreateRectangleTool = new QAction(tr("&Rectangle"), this);
|
actionCreateRectangleTool = new QAction(tr("&Rectangle"), this);
|
||||||
actionCreateRectangleTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_R));
|
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(slotResetTools()));
|
||||||
connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotCreateRectangleTool()));
|
connect(actionCreateRectangleTool, SIGNAL(triggered()), this, SLOT(slotCreateRectangleTool()));
|
||||||
|
|
||||||
actionCreatePolygonTool = new QAction(tr("&Polygon"), this);
|
actionCreatePolygonTool = new QAction(tr("&Polygon"), this);
|
||||||
actionCreatePolygonTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_V));
|
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(slotResetTools()));
|
||||||
connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotCreatePolygonTool()));
|
connect(actionCreatePolygonTool, SIGNAL(triggered()), this, SLOT(slotCreatePolygonTool()));
|
||||||
|
|
||||||
actionCreateFloodFillTool = new QAction(tr("&FloodFill"), this);
|
actionCreateFloodFillTool = new QAction(tr("&FloodFill"), this);
|
||||||
actionCreateFloodFillTool->setShortcut(QKeySequence(Qt::CTRL + Qt::ALT + Qt::SHIFT +Qt::Key_F));
|
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(slotResetTools()));
|
||||||
connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotCreateFloodFillTool()));
|
connect(actionCreateFloodFillTool, SIGNAL(triggered()), this, SLOT(slotCreateFloodFillTool()));
|
||||||
|
|
||||||
// Create about action and tie to IntelliPhotoGui::about()
|
// Create about action and tie to IntelliPhotoGui::about()
|
||||||
actionAboutDialog = new QAction(tr("&About"), this);
|
actionAboutDialog = new QAction(tr("&About"), this);
|
||||||
actionAboutDialog->setShortcut(Qt::Key_F2);
|
actionAboutDialog->setShortcut(Qt::Key_F2);
|
||||||
connect(actionAboutDialog, SIGNAL(triggered()), this, SLOT(slotAboutDialog()));
|
connect(actionAboutDialog, SIGNAL(triggered()), this, SLOT(slotAboutDialog()));
|
||||||
|
|
||||||
// Create about Qt action and tie to IntelliPhotoGui::aboutQt()
|
// Create about Qt action and tie to IntelliPhotoGui::aboutQt()
|
||||||
actionAboutQtDialog = new QAction(tr("About &Qt"), this);
|
actionAboutQtDialog = new QAction(tr("About &Qt"), this);
|
||||||
actionAboutQtDialog->setShortcut(Qt::Key_F3);
|
actionAboutQtDialog->setShortcut(Qt::Key_F3);
|
||||||
connect(actionAboutQtDialog, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
|
connect(actionAboutQtDialog, SIGNAL(triggered()), qApp, SLOT(aboutQt()));
|
||||||
|
|
||||||
connect(EditLineWidth, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
|
connect(EditLineWidth, SIGNAL(returnPressed()), this, SLOT(slotEnterPressed()));
|
||||||
@@ -481,13 +505,13 @@ void IntelliPhotoGui::createActions(){
|
|||||||
connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
connect(RectangleButton,SIGNAL(pressed()), this, SLOT(slotResetTools()));
|
||||||
connect(RectangleButton, SIGNAL(clicked()), this, SLOT(slotCreateRectangleTool()));
|
connect(RectangleButton, SIGNAL(clicked()), this, SLOT(slotCreateRectangleTool()));
|
||||||
|
|
||||||
actionSetWidth = new QAction(tr("&Set Width"),this);
|
actionSetWidth = new QAction(tr("&Set Width"),this);
|
||||||
actionSetWidth->setShortcut(QKeySequence(Qt::ALT + Qt::Key_W));
|
actionSetWidth->setShortcut(QKeySequence(Qt::ALT + Qt::Key_W));
|
||||||
connect(actionSetWidth, SIGNAL(triggered()), this, SLOT(slotSetWidth()));
|
connect(actionSetWidth, SIGNAL(triggered()), this, SLOT(slotSetWidth()));
|
||||||
|
|
||||||
actionSetInnerAlpha = new QAction(tr("&Set Inner Alpha"),this);
|
actionSetInnerAlpha = new QAction(tr("&Set Inner Alpha"),this);
|
||||||
actionSetInnerAlpha->setShortcut(QKeySequence(Qt::ALT + Qt::Key_A));
|
actionSetInnerAlpha->setShortcut(QKeySequence(Qt::ALT + Qt::Key_A));
|
||||||
connect(actionSetInnerAlpha, SIGNAL(triggered()), this, SLOT(slotSetInnerAlpha()));
|
connect(actionSetInnerAlpha, SIGNAL(triggered()), this, SLOT(slotSetInnerAlpha()));
|
||||||
}
|
}
|
||||||
|
|
||||||
// Create the menubar
|
// Create the menubar
|
||||||
@@ -505,61 +529,66 @@ void IntelliPhotoGui::createMenus(){
|
|||||||
fileMenu->addSeparator();
|
fileMenu->addSeparator();
|
||||||
fileMenu->addAction(actionExit);
|
fileMenu->addAction(actionExit);
|
||||||
|
|
||||||
//Attach all actions to Render Settings
|
//Attach all actions to Render Settings
|
||||||
renderMenu = new QMenu(tr("&Fast Renderer"), this);
|
renderMenu = new QMenu(tr("&Fast Renderer"), this);
|
||||||
renderMenu->addAction(actionUpdateRenderSettingsOn);
|
renderMenu->addAction(actionUpdateRenderSettingsOn);
|
||||||
renderMenu->addAction(actionUpdateRenderSettingsOff);
|
renderMenu->addAction(actionUpdateRenderSettingsOff);
|
||||||
|
|
||||||
// Attach all actions to Layer
|
//Attach all Layer Creations to Menu
|
||||||
layerMenu = new QMenu(tr("&Layer"), this);
|
layerCreationMenu = new QMenu(tr("&Create new Layer"), this);
|
||||||
layerMenu->addAction(actionCreateNewLayer);
|
layerCreationMenu->addAction(actionCreateNewRasterLayer);
|
||||||
layerMenu->addSeparator();
|
layerCreationMenu->addAction(actionCreateNewShapedLayer);
|
||||||
layerMenu->addAction(actionSetActiveAlpha);
|
// Attach all actions to Layer
|
||||||
layerMenu->addAction(actionSetActiveLayer);
|
layerMenu = new QMenu(tr("&Layer"), this);
|
||||||
layerMenu->addSeparator();
|
layerMenu->addMenu(layerCreationMenu);
|
||||||
layerMenu->addAction(actionMovePositionUp);
|
layerMenu->addSeparator();
|
||||||
layerMenu->addAction(actionMovePositionDown);
|
layerMenu->addAction(actionSetActiveAlpha);
|
||||||
layerMenu->addAction(actionMovePositionLeft);
|
layerMenu->addAction(actionSetActiveLayer);
|
||||||
layerMenu->addAction(actionMovePositionRight);
|
layerMenu->addAction(actionSetPolygon);
|
||||||
layerMenu->addAction(actionMoveLayerUp);
|
layerMenu->addSeparator();
|
||||||
layerMenu->addAction(actionMoveLayerDown);
|
layerMenu->addAction(actionMovePositionUp);
|
||||||
layerMenu->addSeparator();
|
layerMenu->addAction(actionMovePositionDown);
|
||||||
layerMenu->addAction(actionDeleteLayer);
|
layerMenu->addAction(actionMovePositionLeft);
|
||||||
|
layerMenu->addAction(actionMovePositionRight);
|
||||||
|
layerMenu->addAction(actionMoveLayerUp);
|
||||||
|
layerMenu->addAction(actionMoveLayerDown);
|
||||||
|
layerMenu->addSeparator();
|
||||||
|
layerMenu->addAction(actionDeleteLayer);
|
||||||
|
|
||||||
//Attach all Color Options
|
//Attach all Color Options
|
||||||
colorMenu = new QMenu(tr("&Color"), this);
|
colorMenu = new QMenu(tr("&Color"), this);
|
||||||
colorMenu->addAction(actionColorPickerFirstColor);
|
colorMenu->addAction(actionColorPickerFirstColor);
|
||||||
colorMenu->addAction(actionColorPickerSecondColor);
|
colorMenu->addAction(actionColorPickerSecondColor);
|
||||||
colorMenu->addAction(actionColorSwap);
|
colorMenu->addAction(actionColorSwap);
|
||||||
|
|
||||||
//Attach all Tool Creation Actions
|
//Attach all Tool Creation Actions
|
||||||
toolCreationMenu = new QMenu(tr("&Drawingtools"), this);
|
toolCreationMenu = new QMenu(tr("&Drawingtools"), this);
|
||||||
toolCreationMenu->addAction(actionCreateCircleTool);
|
toolCreationMenu->addAction(actionCreateCircleTool);
|
||||||
toolCreationMenu->addAction(actionCreateFloodFillTool);
|
toolCreationMenu->addAction(actionCreateFloodFillTool);
|
||||||
toolCreationMenu->addAction(actionCreateLineTool);
|
toolCreationMenu->addAction(actionCreateLineTool);
|
||||||
toolCreationMenu->addAction(actionCreatePenTool);
|
toolCreationMenu->addAction(actionCreatePenTool);
|
||||||
toolCreationMenu->addAction(actionCreatePlainTool);
|
toolCreationMenu->addAction(actionCreatePlainTool);
|
||||||
toolCreationMenu->addAction(actionCreatePolygonTool);
|
toolCreationMenu->addAction(actionCreatePolygonTool);
|
||||||
toolCreationMenu->addAction(actionCreateRectangleTool);
|
toolCreationMenu->addAction(actionCreateRectangleTool);
|
||||||
|
|
||||||
//Attach all Tool Setting Actions
|
//Attach all Tool Setting Actions
|
||||||
toolSettingsMenu = new QMenu(tr("&Toolsettings"), this);
|
toolSettingsMenu = new QMenu(tr("&Toolsettings"), this);
|
||||||
toolSettingsMenu->addAction(actionSetWidth);
|
toolSettingsMenu->addAction(actionSetWidth);
|
||||||
toolSettingsMenu->addAction(actionSetInnerAlpha);
|
toolSettingsMenu->addAction(actionSetInnerAlpha);
|
||||||
|
|
||||||
//Attach all Tool Options
|
//Attach all Tool Options
|
||||||
toolMenu = new QMenu(tr("&Tools"), this);
|
toolMenu = new QMenu(tr("&Tools"), this);
|
||||||
toolMenu->addMenu(toolCreationMenu);
|
toolMenu->addMenu(toolCreationMenu);
|
||||||
toolMenu->addMenu(toolSettingsMenu);
|
toolMenu->addMenu(toolSettingsMenu);
|
||||||
toolMenu->addSeparator();
|
toolMenu->addSeparator();
|
||||||
toolMenu->addMenu(colorMenu);
|
toolMenu->addMenu(colorMenu);
|
||||||
|
|
||||||
// Attach all actions to Options
|
// Attach all actions to Options
|
||||||
optionMenu = new QMenu(tr("&Options"), this);
|
optionMenu = new QMenu(tr("&Options"), this);
|
||||||
optionMenu->addMenu(layerMenu);
|
optionMenu->addMenu(layerMenu);
|
||||||
optionMenu->addMenu(toolMenu);
|
optionMenu->addMenu(toolMenu);
|
||||||
optionMenu->addSeparator();
|
optionMenu->addSeparator();
|
||||||
optionMenu->addMenu(renderMenu);
|
optionMenu->addMenu(renderMenu);
|
||||||
|
|
||||||
// Attach all actions to Help
|
// Attach all actions to Help
|
||||||
helpMenu = new QMenu(tr("&Help"), this);
|
helpMenu = new QMenu(tr("&Help"), this);
|
||||||
@@ -583,54 +612,54 @@ void IntelliPhotoGui::createGui(){
|
|||||||
|
|
||||||
// create Gui elements
|
// create Gui elements
|
||||||
paintingArea = new PaintingArea();
|
paintingArea = new PaintingArea();
|
||||||
paintingArea->DummyGui = this;
|
paintingArea->DummyGui = this;
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/circle-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/circle-tool.svg");
|
||||||
CircleButton = new QPushButton();
|
CircleButton = new QPushButton();
|
||||||
CircleButton->setFixedSize(Buttonsize);
|
CircleButton->setFixedSize(Buttonsize);
|
||||||
CircleButton->setIcon(preview);
|
CircleButton->setIcon(preview);
|
||||||
CircleButton->setIconSize(Buttonsize);
|
CircleButton->setIconSize(Buttonsize);
|
||||||
CircleButton->setCheckable(true);
|
CircleButton->setCheckable(true);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/flood-fill-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/flood-fill-tool.svg");
|
||||||
FloodFillButton = new QPushButton();
|
FloodFillButton = new QPushButton();
|
||||||
FloodFillButton->setFixedSize(Buttonsize);
|
FloodFillButton->setFixedSize(Buttonsize);
|
||||||
FloodFillButton->setIcon(preview);
|
FloodFillButton->setIcon(preview);
|
||||||
FloodFillButton->setIconSize(Buttonsize);
|
FloodFillButton->setIconSize(Buttonsize);
|
||||||
FloodFillButton->setCheckable(true);
|
FloodFillButton->setCheckable(true);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/line-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/line-tool.svg");
|
||||||
LineButton = new QPushButton();
|
LineButton = new QPushButton();
|
||||||
LineButton->setFixedSize(Buttonsize);
|
LineButton->setFixedSize(Buttonsize);
|
||||||
LineButton->setIcon(preview);
|
LineButton->setIcon(preview);
|
||||||
LineButton->setIconSize(Buttonsize);
|
LineButton->setIconSize(Buttonsize);
|
||||||
LineButton->setCheckable(true);
|
LineButton->setCheckable(true);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/pen-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/pen-tool.svg");
|
||||||
PenButton = new QPushButton();
|
PenButton = new QPushButton();
|
||||||
PenButton->setFixedSize(Buttonsize);
|
PenButton->setFixedSize(Buttonsize);
|
||||||
PenButton->setIcon(preview);
|
PenButton->setIcon(preview);
|
||||||
PenButton->setIconSize(Buttonsize);
|
PenButton->setIconSize(Buttonsize);
|
||||||
PenButton->setCheckable(true);
|
PenButton->setCheckable(true);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/plain-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/plain-tool.svg");
|
||||||
PlainButton = new QPushButton();
|
PlainButton = new QPushButton();
|
||||||
PlainButton->setFixedSize(Buttonsize);
|
PlainButton->setFixedSize(Buttonsize);
|
||||||
PlainButton->setIcon(preview);
|
PlainButton->setIcon(preview);
|
||||||
PlainButton->setIconSize(Buttonsize);
|
PlainButton->setIconSize(Buttonsize);
|
||||||
PlainButton->setCheckable(true);
|
PlainButton->setCheckable(true);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/polygon-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/polygon-tool.svg");
|
||||||
PolygonButton = new QPushButton();
|
PolygonButton = new QPushButton();
|
||||||
PolygonButton->setFixedSize(Buttonsize);
|
PolygonButton->setFixedSize(Buttonsize);
|
||||||
PolygonButton->setIcon(preview);
|
PolygonButton->setIcon(preview);
|
||||||
PolygonButton->setIconSize(Buttonsize);
|
PolygonButton->setIconSize(Buttonsize);
|
||||||
PolygonButton->setCheckable(true);
|
PolygonButton->setCheckable(true);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/rectangle-tool.svg");
|
preview = QPixmap(":/Icons/Buttons/icons/rectangle-tool.svg");
|
||||||
RectangleButton = new QPushButton();
|
RectangleButton = new QPushButton();
|
||||||
RectangleButton->setFixedSize(Buttonsize);
|
RectangleButton->setFixedSize(Buttonsize);
|
||||||
RectangleButton->setIcon(preview);
|
RectangleButton->setIcon(preview);
|
||||||
RectangleButton->setIconSize(Buttonsize);
|
RectangleButton->setIconSize(Buttonsize);
|
||||||
RectangleButton->setCheckable(true);
|
RectangleButton->setCheckable(true);
|
||||||
|
|
||||||
@@ -664,29 +693,29 @@ void IntelliPhotoGui::createGui(){
|
|||||||
SecondColorButton = new QPushButton();
|
SecondColorButton = new QPushButton();
|
||||||
SecondColorButton->setFixedSize(Buttonsize/2);
|
SecondColorButton->setFixedSize(Buttonsize/2);
|
||||||
|
|
||||||
preview = QPixmap(":/Icons/Buttons/icons/Wechselpfeile.png");
|
preview = QPixmap(":/Icons/Buttons/icons/Wechselpfeile.png");
|
||||||
SwitchColorButton = new QPushButton();
|
SwitchColorButton = new QPushButton();
|
||||||
SwitchColorButton->setFixedSize(Buttonsize.width(),Buttonsize.height()/2);
|
SwitchColorButton->setFixedSize(Buttonsize.width(),Buttonsize.height()/2);
|
||||||
SwitchColorButton->setIcon(preview);
|
SwitchColorButton->setIcon(preview);
|
||||||
SwitchColorButton->setIconSize(QSize(Buttonsize.width(),Buttonsize.height()/2));
|
SwitchColorButton->setIconSize(QSize(Buttonsize.width(),Buttonsize.height()/2));
|
||||||
|
|
||||||
ActiveLayerLine = new QLabel();
|
ActiveLayerLine = new QLabel();
|
||||||
QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
|
QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
|
||||||
ActiveLayerLine->setText(string);
|
ActiveLayerLine->setText(string);
|
||||||
ActiveLayerLine->setFixedSize(Buttonsize.width()+10,Buttonsize.height()/3);
|
ActiveLayerLine->setFixedSize(Buttonsize.width()+10,Buttonsize.height()/3);
|
||||||
|
|
||||||
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
|
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
|
||||||
if(activePicture){
|
if(activePicture) {
|
||||||
preview = preview.fromImage(activePicture->getImageData());
|
preview = preview.fromImage(activePicture->getImageData());
|
||||||
}else{
|
}else{
|
||||||
QImage tmp(1,1,QImage::Format_ARGB32);
|
QImage tmp(1,1,QImage::Format_ARGB32);
|
||||||
tmp.fill(Qt::transparent);
|
tmp.fill(Qt::transparent);
|
||||||
preview = preview.fromImage(tmp);
|
preview = preview.fromImage(tmp);
|
||||||
}
|
}
|
||||||
|
|
||||||
ActiveLayerImageLine = new QLabel();
|
ActiveLayerImageLine = new QLabel();
|
||||||
ActiveLayerImageLine->setFixedSize(Buttonsize);
|
ActiveLayerImageLine->setFixedSize(Buttonsize);
|
||||||
ActiveLayerImageLine->setPixmap(preview.scaled(Buttonsize));
|
ActiveLayerImageLine->setPixmap(preview.scaled(Buttonsize));
|
||||||
|
|
||||||
// set gui elements
|
// set gui elements
|
||||||
|
|
||||||
@@ -706,40 +735,41 @@ void IntelliPhotoGui::createGui(){
|
|||||||
mainLayout->addWidget(SecondColorButton,12,3,1,1);
|
mainLayout->addWidget(SecondColorButton,12,3,1,1);
|
||||||
mainLayout->addWidget(SwitchColorButton,13,2,1,2);
|
mainLayout->addWidget(SwitchColorButton,13,2,1,2);
|
||||||
mainLayout->addWidget(ActiveLayerLine,14,2,1,2);
|
mainLayout->addWidget(ActiveLayerLine,14,2,1,2);
|
||||||
mainLayout->addWidget(ActiveLayerImageLine,15,2,1,2);
|
mainLayout->addWidget(ActiveLayerImageLine,15,2,1,2);
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::setIntelliStyle(){
|
void IntelliPhotoGui::setIntelliStyle(){
|
||||||
// Set the title
|
// Set the title
|
||||||
setWindowTitle("IntelliPhoto Prototype");
|
setWindowTitle("IntelliPhoto Prototype");
|
||||||
Palette.setBrush(QPalette::HighlightedText, QColor(200, 10, 10));
|
Palette.setBrush(QPalette::HighlightedText, QColor(200, 10, 10));
|
||||||
Palette.setBrush(QPalette::Highlight, QColor(100, 5, 5));
|
Palette.setBrush(QPalette::Highlight, QColor(100, 5, 5));
|
||||||
Palette.setBrush(QPalette::ButtonText, QColor(255, 255, 255));
|
Palette.setBrush(QPalette::ButtonText, QColor(255, 255, 255));
|
||||||
Palette.setBrush(QPalette::Button, QColor(64, 64, 64));
|
Palette.setBrush(QPalette::Button, QColor(64, 64, 64));
|
||||||
Palette.setBrush(QPalette::Window, QColor(0, 0, 0));
|
Palette.setBrush(QPalette::Window, QColor(0, 0, 0));
|
||||||
Palette.setBrush(QPalette::WindowText, QColor(255, 255, 255));
|
Palette.setBrush(QPalette::WindowText, QColor(255, 255, 255));
|
||||||
Palette.setBrush(QPalette::PlaceholderText, QColor(255, 255, 255));
|
Palette.setBrush(QPalette::PlaceholderText, QColor(255, 255, 255));
|
||||||
Palette.setBrush(QPalette::ToolTipText, QColor(255, 255, 255));
|
Palette.setBrush(QPalette::ToolTipText, QColor(255, 255, 255));
|
||||||
Palette.setBrush(QPalette::Text, QColor(255, 255, 255));
|
Palette.setBrush(QPalette::Text, QColor(255, 255, 255));
|
||||||
// Set style sheet
|
// Set style sheet
|
||||||
this->setStyleSheet("background-color:rgb(64,64,64)");
|
this->setStyleSheet("background-color:rgb(64,64,64)");
|
||||||
this->menuBar()->setPalette(Palette);
|
this->menuBar()->setPalette(Palette);
|
||||||
this->fileMenu->setPalette(Palette);
|
this->fileMenu->setPalette(Palette);
|
||||||
this->saveAsMenu->setPalette(Palette);
|
this->saveAsMenu->setPalette(Palette);
|
||||||
this->optionMenu->setPalette(Palette);
|
this->optionMenu->setPalette(Palette);
|
||||||
this->helpMenu->setPalette(Palette);
|
this->helpMenu->setPalette(Palette);
|
||||||
this->renderMenu->setPalette(Palette);
|
this->renderMenu->setPalette(Palette);
|
||||||
this->toolMenu->setPalette(Palette);
|
this->toolMenu->setPalette(Palette);
|
||||||
this->layerMenu->setPalette(Palette);
|
this->layerCreationMenu->setPalette(Palette);
|
||||||
this->colorMenu->setPalette(Palette);
|
this->layerMenu->setPalette(Palette);
|
||||||
this->toolCreationMenu->setPalette(Palette);
|
this->colorMenu->setPalette(Palette);
|
||||||
this->toolSettingsMenu->setPalette(Palette);
|
this->toolCreationMenu->setPalette(Palette);
|
||||||
|
this->toolSettingsMenu->setPalette(Palette);
|
||||||
|
|
||||||
this->WidthLine->setPalette(Palette);
|
this->WidthLine->setPalette(Palette);
|
||||||
this->EditLineWidth->setPalette(Palette);
|
this->EditLineWidth->setPalette(Palette);
|
||||||
this->innerAlphaLine->setPalette(Palette);
|
this->innerAlphaLine->setPalette(Palette);
|
||||||
this->EditLineInnerAlpha->setPalette(Palette);
|
this->EditLineInnerAlpha->setPalette(Palette);
|
||||||
this->ActiveLayerLine->setPalette(Palette);
|
this->ActiveLayerLine->setPalette(Palette);
|
||||||
|
|
||||||
QString string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
|
QString string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
|
||||||
FirstColorButton->setStyleSheet(string);
|
FirstColorButton->setStyleSheet(string);
|
||||||
@@ -800,18 +830,18 @@ void IntelliPhotoGui::setDefaultToolValue(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void IntelliPhotoGui::UpdateGui(){
|
void IntelliPhotoGui::UpdateGui(){
|
||||||
QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
|
QString string = QString("Active Layer: %1").arg(paintingArea->getNumberOfActiveLayer() + 1);
|
||||||
ActiveLayerLine->setText(string);
|
ActiveLayerLine->setText(string);
|
||||||
|
|
||||||
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
|
IntelliImage* activePicture = paintingArea->getImageOfActiveLayer();
|
||||||
if(activePicture){
|
if(activePicture) {
|
||||||
preview = preview.fromImage(activePicture->getImageData());
|
preview = preview.fromImage(activePicture->getImageData());
|
||||||
}else{
|
}else{
|
||||||
QImage tmp(1,1,QImage::Format_ARGB32);
|
QImage tmp(1,1,QImage::Format_ARGB32);
|
||||||
tmp.fill(Qt::transparent);
|
tmp.fill(Qt::transparent);
|
||||||
preview = preview.fromImage(tmp);
|
preview = preview.fromImage(tmp);
|
||||||
}
|
}
|
||||||
ActiveLayerImageLine->setPixmap(preview.scaled(Buttonsize));
|
ActiveLayerImageLine->setPixmap(preview.scaled(Buttonsize));
|
||||||
|
|
||||||
string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
|
string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
|
||||||
FirstColorButton->setStyleSheet(string);
|
FirstColorButton->setStyleSheet(string);
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ class IntelliColorPicker;
|
|||||||
* \brief The IntelliPhotoGui class handles the graphical user interface for the intelliPhoto program
|
* \brief The IntelliPhotoGui class handles the graphical user interface for the intelliPhoto program
|
||||||
*/
|
*/
|
||||||
class IntelliPhotoGui : public QMainWindow {
|
class IntelliPhotoGui : public QMainWindow {
|
||||||
friend UnitTest;
|
friend UnitTest;
|
||||||
// Declares our class as a QObject which is the base class
|
// Declares our class as a QObject which is the base class
|
||||||
// for all Qt objects
|
// for all Qt objects
|
||||||
// QObjects handle events
|
// QObjects handle events
|
||||||
@@ -48,11 +48,12 @@ void slotOpen();
|
|||||||
void slotSave();
|
void slotSave();
|
||||||
|
|
||||||
// layer slots here
|
// layer slots here
|
||||||
void slotCreateNewLayer();
|
void slotCreateNewRasterLayer();
|
||||||
|
void slotCreateNewShapedLayer();
|
||||||
void slotDeleteLayer();
|
void slotDeleteLayer();
|
||||||
void slotClearActiveLayer();
|
|
||||||
void slotSetActiveLayer();
|
void slotSetActiveLayer();
|
||||||
void slotSetActiveAlpha();
|
void slotSetActiveAlpha();
|
||||||
|
void slotSetPolygon();
|
||||||
void slotPositionMoveUp();
|
void slotPositionMoveUp();
|
||||||
void slotPositionMoveDown();
|
void slotPositionMoveDown();
|
||||||
void slotPositionMoveLeft();
|
void slotPositionMoveLeft();
|
||||||
@@ -133,16 +134,17 @@ QLabel* ActiveLayerImageLine;
|
|||||||
QPalette Palette;
|
QPalette Palette;
|
||||||
|
|
||||||
// The menu widgets
|
// The menu widgets
|
||||||
QMenu* saveAsMenu;
|
QMenu*saveAsMenu;
|
||||||
QMenu* fileMenu;
|
QMenu*fileMenu;
|
||||||
QMenu* renderMenu;
|
QMenu*renderMenu;
|
||||||
QMenu* optionMenu;
|
QMenu*optionMenu;
|
||||||
QMenu* layerMenu;
|
QMenu*layerCreationMenu;
|
||||||
QMenu* colorMenu;
|
QMenu*layerMenu;
|
||||||
QMenu* toolCreationMenu;
|
QMenu*colorMenu;
|
||||||
QMenu* toolSettingsMenu;
|
QMenu*toolCreationMenu;
|
||||||
QMenu* toolMenu;
|
QMenu*toolSettingsMenu;
|
||||||
QMenu* helpMenu;
|
QMenu*toolMenu;
|
||||||
|
QMenu*helpMenu;
|
||||||
|
|
||||||
// All the actions that can occur
|
// All the actions that can occur
|
||||||
// meta image actions (need further modularisation)
|
// meta image actions (need further modularisation)
|
||||||
@@ -172,10 +174,12 @@ QAction* actionAboutDialog;
|
|||||||
QAction* actionAboutQtDialog;
|
QAction* actionAboutQtDialog;
|
||||||
|
|
||||||
// layer change actions
|
// layer change actions
|
||||||
QAction* actionCreateNewLayer;
|
QAction* actionCreateNewRasterLayer;
|
||||||
|
QAction* actionCreateNewShapedLayer;
|
||||||
QAction* actionDeleteLayer;
|
QAction* actionDeleteLayer;
|
||||||
QAction* actionSetActiveLayer;
|
QAction* actionSetActiveLayer;
|
||||||
QAction* actionSetActiveAlpha;
|
QAction* actionSetActiveAlpha;
|
||||||
|
QAction* actionSetPolygon;
|
||||||
QAction* actionMovePositionUp;
|
QAction* actionMovePositionUp;
|
||||||
QAction* actionMovePositionDown;
|
QAction* actionMovePositionDown;
|
||||||
QAction* actionMovePositionLeft;
|
QAction* actionMovePositionLeft;
|
||||||
|
|||||||
@@ -3,15 +3,15 @@
|
|||||||
#include <QPainter>
|
#include <QPainter>
|
||||||
|
|
||||||
IntelliImage::IntelliImage(int width, int height, bool fastRendererOn)
|
IntelliImage::IntelliImage(int width, int height, bool fastRendererOn)
|
||||||
: imageData(QSize(width, height), fastRendererOn ? QImage::Format_Indexed8 : QImage::Format_ARGB32){
|
: imageData(QSize(width, height), fastRendererOn ? QImage::Format_Indexed8 : QImage::Format_ARGB32){
|
||||||
if(fastRendererOn){
|
if(fastRendererOn) {
|
||||||
imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
imageData.fill(QColor(255,255,255,255));
|
imageData.fill(QColor(255,255,255,255));
|
||||||
if(fastRendererOn){
|
if(fastRendererOn) {
|
||||||
imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
this->fastRenderering = fastRendererOn;
|
this->fastRenderering = fastRendererOn;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -30,7 +30,7 @@ bool IntelliImage::loadImage(const QString &filePath){
|
|||||||
// scaled Image to size of Layer
|
// scaled Image to size of Layer
|
||||||
loadedImage = loadedImage.scaled(imageData.size(),Qt::IgnoreAspectRatio);
|
loadedImage = loadedImage.scaled(imageData.size(),Qt::IgnoreAspectRatio);
|
||||||
|
|
||||||
imageData = loadedImage.convertToFormat(fastRenderering ? QImage::Format_Indexed8 : QImage::Format_ARGB32);
|
imageData = loadedImage.convertToFormat(fastRenderering ? QImage::Format_Indexed8 : QImage::Format_ARGB32);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -46,115 +46,115 @@ void IntelliImage::resizeImage(QImage*image, const QSize &newSize){
|
|||||||
// Draw the image
|
// Draw the image
|
||||||
QPainter painter(&newImage);
|
QPainter painter(&newImage);
|
||||||
painter.drawImage(QPoint(0, 0), *image);
|
painter.drawImage(QPoint(0, 0), *image);
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
*image = newImage.convertToFormat(QImage::Format_Indexed8);
|
*image = newImage.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
*image = newImage;
|
*image = newImage;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliImage::drawPixel(const QPoint &p1, const QColor& color){
|
void IntelliImage::drawPixel(const QPoint &p1, const QColor& color){
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
// Used to draw on the widget
|
// Used to draw on the widget
|
||||||
QPainter* painter = new QPainter(&imageData);
|
QPainter* painter = new QPainter(&imageData);
|
||||||
|
|
||||||
// Set the current settings for the pen
|
// Set the current settings for the pen
|
||||||
painter->setPen(QPen(color, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
painter->setPen(QPen(color, 1, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||||
|
|
||||||
// Draw a line from the last registered point to the current
|
// Draw a line from the last registered point to the current
|
||||||
painter->drawPoint(p1);
|
painter->drawPoint(p1);
|
||||||
delete painter;
|
delete painter;
|
||||||
painter = nullptr;
|
painter = nullptr;
|
||||||
|
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliImage::drawPoint(const QPoint &p1, const QColor& color, const int& penWidth){
|
void IntelliImage::drawPoint(const QPoint &p1, const QColor& color, const int& penWidth){
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
// Used to draw on the widget
|
// Used to draw on the widget
|
||||||
QPainter* painter = new QPainter(&imageData);
|
QPainter* painter = new QPainter(&imageData);
|
||||||
|
|
||||||
// Set the current settings for the pen
|
// Set the current settings for the pen
|
||||||
painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||||
// Draw a line from the last registered point to the current
|
// Draw a line from the last registered point to the current
|
||||||
painter->drawPoint(p1);
|
painter->drawPoint(p1);
|
||||||
delete painter;
|
delete painter;
|
||||||
|
|
||||||
painter = nullptr;
|
painter = nullptr;
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliImage::drawLine(const QPoint &p1, const QPoint& p2, const QColor& color, const int& penWidth){
|
void IntelliImage::drawLine(const QPoint &p1, const QPoint& p2, const QColor& color, const int& penWidth){
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
// Used to draw on the widget
|
// Used to draw on the widget
|
||||||
QPainter* painter = new QPainter(&imageData);
|
QPainter* painter = new QPainter(&imageData);
|
||||||
|
|
||||||
// Set the current settings for the pen
|
// Set the current settings for the pen
|
||||||
painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
painter->setPen(QPen(color, penWidth, Qt::SolidLine, Qt::RoundCap, Qt::RoundJoin));
|
||||||
|
|
||||||
// Draw a line from the last registered point to the current
|
// Draw a line from the last registered point to the current
|
||||||
painter->drawLine(p1, p2);
|
painter->drawLine(p1, p2);
|
||||||
delete painter;
|
delete painter;
|
||||||
painter = nullptr;
|
painter = nullptr;
|
||||||
|
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliImage::drawPlain(const QColor& color){
|
void IntelliImage::drawPlain(const QColor& color){
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
imageData.fill(color);
|
imageData.fill(color);
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QColor IntelliImage::getPixelColor(QPoint& point){
|
QColor IntelliImage::getPixelColor(QPoint& point){
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
QImage copy = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
QImage copy = this->imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
return copy.pixelColor(point);
|
return copy.pixelColor(point);
|
||||||
}
|
}
|
||||||
return imageData.pixelColor(point);
|
return imageData.pixelColor(point);
|
||||||
}
|
}
|
||||||
|
|
||||||
QImage IntelliImage::getImageData(){
|
QImage IntelliImage::getImageData(){
|
||||||
QImage copy = imageData;
|
QImage copy = imageData;
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
copy = copy.convertToFormat(QImage::Format_ARGB32);
|
copy = copy.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
return copy;
|
return copy;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliImage::setImageData(const QImage& newData){
|
void IntelliImage::setImageData(const QImage& newData){
|
||||||
imageData = newData;
|
imageData = newData;
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliImage::updateRendererSetting(bool fastRendererOn){
|
void IntelliImage::updateRendererSetting(bool fastRendererOn){
|
||||||
this->fastRenderering = fastRendererOn;
|
this->fastRenderering = fastRendererOn;
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,9 +4,9 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
IntelliRasterImage::IntelliRasterImage(int width, int height, bool fastRendererOn)
|
IntelliRasterImage::IntelliRasterImage(int width, int height, bool fastRendererOn)
|
||||||
: IntelliImage(width, height, fastRendererOn){
|
: IntelliImage(width, height, fastRendererOn){
|
||||||
TypeOfImage = IntelliImage::ImageType::RASTERIMAGE;
|
TypeOfImage = IntelliImage::ImageType::RASTERIMAGE;
|
||||||
this->fastRenderering = fastRendererOn;
|
this->fastRenderering = fastRendererOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntelliRasterImage::~IntelliRasterImage(){
|
IntelliRasterImage::~IntelliRasterImage(){
|
||||||
@@ -30,9 +30,9 @@ QImage IntelliRasterImage::getDisplayable(int alpha){
|
|||||||
|
|
||||||
QImage IntelliRasterImage::getDisplayable(const QSize& displaySize, int alpha){
|
QImage IntelliRasterImage::getDisplayable(const QSize& displaySize, int alpha){
|
||||||
QImage copy = imageData;
|
QImage copy = imageData;
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
copy = copy.convertToFormat(QImage::Format_ARGB32);
|
copy = copy.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
for(int y = 0; y<copy.height(); y++) {
|
for(int y = 0; y<copy.height(); y++) {
|
||||||
for(int x = 0; x<copy.width(); x++) {
|
for(int x = 0; x<copy.width(); x++) {
|
||||||
QColor clr = copy.pixelColor(x,y);
|
QColor clr = copy.pixelColor(x,y);
|
||||||
@@ -40,9 +40,9 @@ QImage IntelliRasterImage::getDisplayable(const QSize& displaySize, int alpha){
|
|||||||
copy.setPixelColor(x,y, clr);
|
copy.setPixelColor(x,y, clr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
copy = copy.convertToFormat(QImage::Format_Indexed8);
|
copy = copy.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
return copy.scaled(displaySize,Qt::IgnoreAspectRatio);
|
return copy.scaled(displaySize,Qt::IgnoreAspectRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -5,9 +5,9 @@
|
|||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
IntelliShapedImage::IntelliShapedImage(int width, int height, bool fastRendererOn)
|
IntelliShapedImage::IntelliShapedImage(int width, int height, bool fastRendererOn)
|
||||||
: IntelliRasterImage(width, height, fastRendererOn){
|
: IntelliRasterImage(width, height, fastRendererOn){
|
||||||
TypeOfImage = IntelliImage::ImageType::SHAPEDIMAGE;
|
TypeOfImage = IntelliImage::ImageType::SHAPEDIMAGE;
|
||||||
this->fastRenderering = fastRendererOn;
|
this->fastRenderering = fastRendererOn;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntelliShapedImage::~IntelliShapedImage(){
|
IntelliShapedImage::~IntelliShapedImage(){
|
||||||
@@ -27,9 +27,12 @@ IntelliImage* IntelliShapedImage::getDeepCopy(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void IntelliShapedImage::calculateVisiblity(){
|
void IntelliShapedImage::calculateVisiblity(){
|
||||||
if(fastRenderering){
|
if(polygonData.size()<2) {
|
||||||
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
return;
|
||||||
}
|
}
|
||||||
|
if(fastRenderering) {
|
||||||
|
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
|
}
|
||||||
|
|
||||||
if(polygonData.size()<=2) {
|
if(polygonData.size()<=2) {
|
||||||
QColor clr;
|
QColor clr;
|
||||||
@@ -40,9 +43,9 @@ void IntelliShapedImage::calculateVisiblity(){
|
|||||||
imageData.setPixelColor(x,y,clr);
|
imageData.setPixelColor(x,y,clr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QColor clr;
|
QColor clr;
|
||||||
@@ -59,16 +62,16 @@ void IntelliShapedImage::calculateVisiblity(){
|
|||||||
imageData.setPixelColor(x,y,clr);
|
imageData.setPixelColor(x,y,clr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
this->imageData = this->imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
QImage IntelliShapedImage::getDisplayable(const QSize& displaySize, int alpha){
|
QImage IntelliShapedImage::getDisplayable(const QSize& displaySize, int alpha){
|
||||||
QImage copy = imageData;
|
QImage copy = imageData;
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
copy = copy.convertToFormat(QImage::Format_ARGB32);
|
copy = copy.convertToFormat(QImage::Format_ARGB32);
|
||||||
}
|
}
|
||||||
for(int y = 0; y<copy.height(); y++) {
|
for(int y = 0; y<copy.height(); y++) {
|
||||||
for(int x = 0; x<copy.width(); x++) {
|
for(int x = 0; x<copy.width(); x++) {
|
||||||
QColor clr = copy.pixelColor(x,y);
|
QColor clr = copy.pixelColor(x,y);
|
||||||
@@ -76,9 +79,9 @@ QImage IntelliShapedImage::getDisplayable(const QSize& displaySize, int alpha){
|
|||||||
copy.setPixelColor(x,y, clr);
|
copy.setPixelColor(x,y, clr);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if(fastRenderering){
|
if(fastRenderering) {
|
||||||
copy = copy.convertToFormat(QImage::Format_Indexed8);
|
copy = copy.convertToFormat(QImage::Format_Indexed8);
|
||||||
}
|
}
|
||||||
return copy.scaled(displaySize,Qt::IgnoreAspectRatio);
|
return copy.scaled(displaySize,Qt::IgnoreAspectRatio);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -91,6 +94,19 @@ void IntelliShapedImage::setPolygon(const std::vector<QPoint>& polygonData){
|
|||||||
this->polygonData.push_back(QPoint(element.x(), element.y()));
|
this->polygonData.push_back(QPoint(element.x(), element.y()));
|
||||||
}
|
}
|
||||||
triangles = IntelliTriangulation::calculateTriangles(polygonData);
|
triangles = IntelliTriangulation::calculateTriangles(polygonData);
|
||||||
|
if(fastRenderering) {
|
||||||
|
imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
||||||
|
}
|
||||||
|
for(int y = 0; y<imageData.height(); y++) {
|
||||||
|
for(int x = 0; x<imageData.width(); x++) {
|
||||||
|
QColor clr = imageData.pixelColor(x,y);
|
||||||
|
clr.setAlpha(255);
|
||||||
|
imageData.setPixelColor(x,y,clr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(fastRenderering) {
|
||||||
|
imageData = imageData.convertToFormat(QImage::Format_Indexed8);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
calculateVisiblity();
|
calculateVisiblity();
|
||||||
return;
|
return;
|
||||||
|
|||||||
@@ -6,9 +6,9 @@ IntelliRenderSettings::IntelliRenderSettings()
|
|||||||
}
|
}
|
||||||
|
|
||||||
void IntelliRenderSettings::setFastRendering(bool Updatedsetting){
|
void IntelliRenderSettings::setFastRendering(bool Updatedsetting){
|
||||||
this->fastRenderering = Updatedsetting;
|
this->fastRenderering = Updatedsetting;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool IntelliRenderSettings::isFastRenderering(){
|
bool IntelliRenderSettings::isFastRenderering(){
|
||||||
return fastRenderering;
|
return fastRenderering;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -18,10 +18,13 @@
|
|||||||
#include "Tool/IntelliToolFloodFill.h"
|
#include "Tool/IntelliToolFloodFill.h"
|
||||||
#include "Tool/IntelliToolPolygon.h"
|
#include "Tool/IntelliToolPolygon.h"
|
||||||
|
|
||||||
|
|
||||||
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
|
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
|
||||||
: QWidget(parent){
|
: QWidget(parent){
|
||||||
this->Tool = nullptr;
|
this->Tool = nullptr;
|
||||||
this->setLayerDimensions(maxWidth, maxHeight);
|
this->setLayerDimensions(maxWidth, maxHeight);
|
||||||
|
|
||||||
|
activeLayer=-1;
|
||||||
}
|
}
|
||||||
|
|
||||||
PaintingArea::~PaintingArea(){
|
PaintingArea::~PaintingArea(){
|
||||||
@@ -29,12 +32,12 @@ PaintingArea::~PaintingArea(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::setRenderSettings(bool isFastRenderingOn){
|
void PaintingArea::setRenderSettings(bool isFastRenderingOn){
|
||||||
if(isFastRenderingOn != renderSettings.isFastRenderering()){
|
if(isFastRenderingOn != renderSettings.isFastRenderering()) {
|
||||||
renderSettings.setFastRendering(isFastRenderingOn);
|
renderSettings.setFastRendering(isFastRenderingOn);
|
||||||
for(auto& layer : layerBundle){
|
for(auto& layer : layerBundle) {
|
||||||
layer.image->updateRendererSetting(isFastRenderingOn);
|
layer.image->updateRendererSetting(isFastRenderingOn);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
|
void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
|
||||||
@@ -50,14 +53,15 @@ void PaintingArea::setLayerDimensions(int maxWidth, int maxHeight){
|
|||||||
|
|
||||||
int PaintingArea::addLayer(int width, int height, int widthOffset, int heightOffset, IntelliImage::ImageType type){
|
int PaintingArea::addLayer(int width, int height, int widthOffset, int heightOffset, IntelliImage::ImageType type){
|
||||||
LayerObject newLayer;
|
LayerObject newLayer;
|
||||||
|
updateTools();
|
||||||
newLayer.width = width;
|
newLayer.width = width;
|
||||||
newLayer.height = height;
|
newLayer.height = height;
|
||||||
newLayer.widthOffset = widthOffset;
|
newLayer.widthOffset = widthOffset;
|
||||||
newLayer.heightOffset = heightOffset;
|
newLayer.heightOffset = heightOffset;
|
||||||
if(type==IntelliImage::ImageType::RASTERIMAGE) {
|
if(type==IntelliImage::ImageType::RASTERIMAGE) {
|
||||||
newLayer.image = new IntelliRasterImage(width,height,renderSettings.isFastRenderering());
|
newLayer.image = new IntelliRasterImage(width,height,renderSettings.isFastRenderering());
|
||||||
}else if(type==IntelliImage::ImageType::SHAPEDIMAGE) {
|
}else if(type==IntelliImage::ImageType::SHAPEDIMAGE) {
|
||||||
newLayer.image = new IntelliShapedImage(width, height, renderSettings.isFastRenderering());
|
newLayer.image = new IntelliShapedImage(width, height, renderSettings.isFastRenderering());
|
||||||
}
|
}
|
||||||
newLayer.alpha = 255;
|
newLayer.alpha = 255;
|
||||||
this->layerBundle.push_back(newLayer);
|
this->layerBundle.push_back(newLayer);
|
||||||
@@ -66,15 +70,18 @@ int PaintingArea::addLayer(int width, int height, int widthOffset, int heightOff
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void PaintingArea::deleteLayer(int idx){
|
void PaintingArea::deleteLayer(int idx, bool isTool){
|
||||||
if(idx < static_cast<int>(layerBundle.size())&&idx>=0) {
|
if(!isTool) {
|
||||||
|
updateTools();
|
||||||
|
}
|
||||||
|
if(idx<static_cast<int>(layerBundle.size())&&idx>=0) {
|
||||||
this->layerBundle.erase(layerBundle.begin()+idx);
|
this->layerBundle.erase(layerBundle.begin()+idx);
|
||||||
if(activeLayer>=idx) {
|
if(activeLayer>=idx) {
|
||||||
activeLayer--;
|
activeLayer--;
|
||||||
}
|
}
|
||||||
if(activeLayer < 0 && layerBundle.size()){
|
if(activeLayer < 0 && layerBundle.size()) {
|
||||||
activeLayer=0;
|
activeLayer=0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -86,6 +93,7 @@ void PaintingArea::slotDeleteActiveLayer(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::setLayerActive(int idx){
|
void PaintingArea::setLayerActive(int idx){
|
||||||
|
updateTools();
|
||||||
if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
|
if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
|
||||||
this->activeLayer=idx;
|
this->activeLayer=idx;
|
||||||
}
|
}
|
||||||
@@ -93,9 +101,18 @@ void PaintingArea::setLayerActive(int idx){
|
|||||||
|
|
||||||
void PaintingArea::setLayerAlpha(int idx, int alpha){
|
void PaintingArea::setLayerAlpha(int idx, int alpha){
|
||||||
if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
|
if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
|
||||||
if(alpha>=0 && alpha<=255) {
|
if(alpha>=0 && alpha<=255) {
|
||||||
layerBundle[static_cast<size_t>(idx)].alpha=alpha;
|
layerBundle[static_cast<size_t>(idx)].alpha=alpha;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void PaintingArea::setPolygon(int idx){
|
||||||
|
if(idx>=0&&idx<static_cast<int>(layerBundle.size())) {
|
||||||
|
if(layerBundle[static_cast<size_t>(idx)].image->getTypeOfImage()==IntelliImage::ImageType::SHAPEDIMAGE) {
|
||||||
|
delete this->Tool;
|
||||||
|
this->Tool = new IntelliToolPolygon(this,&colorPicker,&Toolsettings, true);
|
||||||
|
isSettingPolygon = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -135,42 +152,14 @@ bool PaintingArea::save(const QString &filePath, const char*fileFormat){
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Color the image area with white
|
|
||||||
void PaintingArea::floodFill(int r, int g, int b, int a){
|
|
||||||
if(this->activeLayer==-1) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(r >255 || g>255|| b>255 || a>255){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
if(r < 0 || g < 0|| b < 0 || a < 0){
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
IntelliImage* active = layerBundle[static_cast<size_t>(activeLayer)].image;
|
|
||||||
active->drawPlain(QColor(r, g, b, a));
|
|
||||||
update();
|
|
||||||
}
|
|
||||||
|
|
||||||
void PaintingArea::movePositionActive(int x, int y){
|
void PaintingArea::movePositionActive(int x, int y){
|
||||||
if(Tool!=nullptr) {
|
updateTools();
|
||||||
if(Tool->getIsDrawing()) {
|
|
||||||
IntelliTool* temp = copyActiveTool();
|
|
||||||
delete this->Tool;
|
|
||||||
this->Tool = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
layerBundle[static_cast<size_t>(activeLayer)].widthOffset += x;
|
layerBundle[static_cast<size_t>(activeLayer)].widthOffset += x;
|
||||||
layerBundle[static_cast<size_t>(activeLayer)].heightOffset += y;
|
layerBundle[static_cast<size_t>(activeLayer)].heightOffset += y;
|
||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::moveActiveLayer(int idx){
|
void PaintingArea::moveActiveLayer(int idx){
|
||||||
if(Tool != nullptr) {
|
updateTools();
|
||||||
if(Tool->getIsDrawing()) {
|
|
||||||
IntelliTool* temp = copyActiveTool();
|
|
||||||
delete this->Tool;
|
|
||||||
this->Tool = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(idx==1) {
|
if(idx==1) {
|
||||||
this->selectLayerUp();
|
this->selectLayerUp();
|
||||||
}else if(idx==-1) {
|
}else if(idx==-1) {
|
||||||
@@ -179,13 +168,7 @@ void PaintingArea::moveActiveLayer(int idx){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::slotActivateLayer(int a){
|
void PaintingArea::slotActivateLayer(int a){
|
||||||
if(Tool != nullptr) {
|
updateTools();
|
||||||
if(Tool->getIsDrawing()) {
|
|
||||||
IntelliTool* temp = copyActiveTool();
|
|
||||||
delete this->Tool;
|
|
||||||
this->Tool = temp;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
if(a>=0 && a < static_cast<int>(layerBundle.size())) {
|
if(a>=0 && a < static_cast<int>(layerBundle.size())) {
|
||||||
this->setLayerActive(a);
|
this->setLayerActive(a);
|
||||||
}
|
}
|
||||||
@@ -259,9 +242,9 @@ std::vector<QPoint> PaintingArea::getPolygonDataOfRealLayer(){
|
|||||||
// left button and if so store the current position
|
// left button and if so store the current position
|
||||||
// Set that we are currently drawing
|
// Set that we are currently drawing
|
||||||
void PaintingArea::mousePressEvent(QMouseEvent*event){
|
void PaintingArea::mousePressEvent(QMouseEvent*event){
|
||||||
if(this->activeLayer < 0){
|
if(this->activeLayer < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(Tool == nullptr)
|
if(Tool == nullptr)
|
||||||
return;
|
return;
|
||||||
int x = event->x()-layerBundle[static_cast<unsigned long long>(activeLayer)].widthOffset;
|
int x = event->x()-layerBundle[static_cast<unsigned long long>(activeLayer)].widthOffset;
|
||||||
@@ -278,9 +261,9 @@ void PaintingArea::mousePressEvent(QMouseEvent*event){
|
|||||||
// we call the drawline function which draws a line
|
// we call the drawline function which draws a line
|
||||||
// from the last position to the current
|
// from the last position to the current
|
||||||
void PaintingArea::mouseMoveEvent(QMouseEvent*event){
|
void PaintingArea::mouseMoveEvent(QMouseEvent*event){
|
||||||
if(this->activeLayer < 0){
|
if(this->activeLayer < 0) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if(Tool == nullptr)
|
if(Tool == nullptr)
|
||||||
return;
|
return;
|
||||||
int x = event->x()-layerBundle[static_cast<unsigned long long>(activeLayer)].widthOffset;
|
int x = event->x()-layerBundle[static_cast<unsigned long long>(activeLayer)].widthOffset;
|
||||||
@@ -291,9 +274,9 @@ void PaintingArea::mouseMoveEvent(QMouseEvent*event){
|
|||||||
|
|
||||||
// If the button is released we set variables to stop drawing
|
// If the button is released we set variables to stop drawing
|
||||||
void PaintingArea::mouseReleaseEvent(QMouseEvent*event){
|
void PaintingArea::mouseReleaseEvent(QMouseEvent*event){
|
||||||
if(this->activeLayer < 0)
|
if(this->activeLayer < 0)
|
||||||
return;
|
return;
|
||||||
if(Tool == nullptr)
|
if(Tool == nullptr)
|
||||||
return;
|
return;
|
||||||
int x = event->x()-layerBundle[static_cast<unsigned long long>(activeLayer)].widthOffset;
|
int x = event->x()-layerBundle[static_cast<unsigned long long>(activeLayer)].widthOffset;
|
||||||
int y = event->y()-layerBundle[static_cast<unsigned long long>(activeLayer)].heightOffset;
|
int y = event->y()-layerBundle[static_cast<unsigned long long>(activeLayer)].heightOffset;
|
||||||
@@ -306,9 +289,9 @@ void PaintingArea::mouseReleaseEvent(QMouseEvent*event){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::wheelEvent(QWheelEvent*event){
|
void PaintingArea::wheelEvent(QWheelEvent*event){
|
||||||
if(this->activeLayer < 0)
|
if(this->activeLayer < 0)
|
||||||
return;
|
return;
|
||||||
if(this->Tool != nullptr) {
|
if(this->Tool != nullptr) {
|
||||||
QPoint numDegrees = event->angleDelta() / 8;
|
QPoint numDegrees = event->angleDelta() / 8;
|
||||||
if(!numDegrees.isNull()) {
|
if(!numDegrees.isNull()) {
|
||||||
QPoint numSteps = numDegrees / 15;
|
QPoint numSteps = numDegrees / 15;
|
||||||
@@ -329,7 +312,7 @@ void PaintingArea::paintEvent(QPaintEvent*event){
|
|||||||
update();
|
update();
|
||||||
}
|
}
|
||||||
|
|
||||||
// Resize the image to slightly larger then the main window
|
//TODOJ Resize the image to slightly larger then the main window
|
||||||
// to cut down on the need to resize the image
|
// to cut down on the need to resize the image
|
||||||
void PaintingArea::resizeEvent(QResizeEvent*event){
|
void PaintingArea::resizeEvent(QResizeEvent*event){
|
||||||
//TODO wait till tool works
|
//TODO wait till tool works
|
||||||
@@ -341,6 +324,7 @@ void PaintingArea::resizeLayer(QImage*image_res, const QSize &newSize){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::selectLayerUp(){
|
void PaintingArea::selectLayerUp(){
|
||||||
|
updateTools();
|
||||||
if(activeLayer!=-1 && static_cast<unsigned long long>(activeLayer)<layerBundle.size()-1) {
|
if(activeLayer!=-1 && static_cast<unsigned long long>(activeLayer)<layerBundle.size()-1) {
|
||||||
std::swap(layerBundle[static_cast<unsigned long long>(activeLayer)], layerBundle[static_cast<unsigned long long>(activeLayer+1)]);
|
std::swap(layerBundle[static_cast<unsigned long long>(activeLayer)], layerBundle[static_cast<unsigned long long>(activeLayer+1)]);
|
||||||
activeLayer++;
|
activeLayer++;
|
||||||
@@ -348,6 +332,7 @@ void PaintingArea::selectLayerUp(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void PaintingArea::selectLayerDown(){
|
void PaintingArea::selectLayerDown(){
|
||||||
|
updateTools();
|
||||||
if(activeLayer!=-1 && activeLayer>0) {
|
if(activeLayer!=-1 && activeLayer>0) {
|
||||||
std::swap(layerBundle[static_cast<unsigned long long>(activeLayer)], layerBundle[static_cast<unsigned long long>(activeLayer-1)]);
|
std::swap(layerBundle[static_cast<unsigned long long>(activeLayer)], layerBundle[static_cast<unsigned long long>(activeLayer-1)]);
|
||||||
activeLayer--;
|
activeLayer--;
|
||||||
@@ -399,9 +384,9 @@ bool PaintingArea::createTempTopLayer(int idx){
|
|||||||
newLayer.widthOffset = layerBundle[static_cast<unsigned long long>(idx)].widthOffset;
|
newLayer.widthOffset = layerBundle[static_cast<unsigned long long>(idx)].widthOffset;
|
||||||
newLayer.image = layerBundle[static_cast<unsigned long long>(idx)].image->getDeepCopy();
|
newLayer.image = layerBundle[static_cast<unsigned long long>(idx)].image->getDeepCopy();
|
||||||
layerBundle.insert(layerBundle.begin()+idx+1,newLayer);
|
layerBundle.insert(layerBundle.begin()+idx+1,newLayer);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntelliTool* PaintingArea::copyActiveTool(){
|
IntelliTool* PaintingArea::copyActiveTool(){
|
||||||
@@ -422,8 +407,38 @@ int PaintingArea::getNumberOfActiveLayer(){
|
|||||||
}
|
}
|
||||||
|
|
||||||
IntelliImage* PaintingArea::getImageOfActiveLayer(){
|
IntelliImage* PaintingArea::getImageOfActiveLayer(){
|
||||||
if(activeLayer<0){
|
if(activeLayer<0) {
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
return layerBundle[activeLayer].image;
|
return layerBundle[static_cast<size_t>(activeLayer)].image;
|
||||||
|
}
|
||||||
|
|
||||||
|
QImage PaintingArea::getImageDataOfActiveLayer(){
|
||||||
|
QImage returnImage;
|
||||||
|
if(activeLayer<0) {
|
||||||
|
returnImage = QImage(QSize(10,10),QImage::Format_ARGB32);
|
||||||
|
returnImage.fill(QColor(255,255,255,255));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
returnImage = layerBundle[static_cast<size_t>(activeLayer)].image->getImageData();
|
||||||
|
if(renderSettings.isFastRenderering()) {
|
||||||
|
returnImage = returnImage.convertToFormat(QImage::Format_ARGB32);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return returnImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
void PaintingArea::updateTools(){
|
||||||
|
if(Tool!=nullptr) {
|
||||||
|
if(Tool->getIsDrawing()) {
|
||||||
|
IntelliTool* temp = copyActiveTool();
|
||||||
|
delete this->Tool;
|
||||||
|
this->Tool = temp;
|
||||||
|
}
|
||||||
|
if(isSettingPolygon) {
|
||||||
|
delete this->Tool;
|
||||||
|
this->Tool = nullptr;
|
||||||
|
isSettingPolygon = false;
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -39,7 +39,7 @@ struct LayerObject {
|
|||||||
*/
|
*/
|
||||||
class PaintingArea : public QWidget
|
class PaintingArea : public QWidget
|
||||||
{
|
{
|
||||||
friend UnitTest;
|
friend UnitTest;
|
||||||
// Declares our class as a QObject which is the base class
|
// Declares our class as a QObject which is the base class
|
||||||
// for all Qt objects
|
// for all Qt objects
|
||||||
// QObjects handle events
|
// QObjects handle events
|
||||||
@@ -47,142 +47,146 @@ Q_OBJECT
|
|||||||
friend IntelliTool;
|
friend IntelliTool;
|
||||||
friend IntelliPhotoGui;
|
friend IntelliPhotoGui;
|
||||||
public:
|
public:
|
||||||
/*!
|
/*!
|
||||||
* \brief PaintingArea is the constructor of the PaintingArea class, which initiates the working environment
|
* \brief PaintingArea is the constructor of the PaintingArea class, which initiates the working environment
|
||||||
* \param maxWidth - The maximum amount of pixles that are inside painting area from left to right (default=600px)
|
* \param maxWidth - The maximum amount of pixles that are inside painting area from left to right (default=600px)
|
||||||
* \param maxHeight - The maximum amount of pixles that are inside painting area from top to bottom (default=600px)
|
* \param maxHeight - The maximum amount of pixles that are inside painting area from top to bottom (default=600px)
|
||||||
* \param parent - The parent window of the main window (default=nullptr)
|
* \param parent - The parent window of the main window (default=nullptr)
|
||||||
*/
|
*/
|
||||||
PaintingArea(int maxWidth=600, int maxHeight=600, QWidget *parent = nullptr);
|
PaintingArea(int maxWidth=600, int maxHeight=600, QWidget*parent = nullptr);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This deconstructor is used to clear up the memory and remove the currently active window
|
* \brief This deconstructor is used to clear up the memory and remove the currently active window
|
||||||
*/
|
*/
|
||||||
~PaintingArea() override;
|
~PaintingArea() override;
|
||||||
|
|
||||||
// Handles all events
|
// Handles all events
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief setRenderSettings updates all Images to the new Rendersetting.
|
* \brief setRenderSettings updates all Images to the new Rendersetting.
|
||||||
* \param isFastRenderingOn is the new given flag for the FastRenderer.
|
* \param isFastRenderingOn is the new given flag for the FastRenderer.
|
||||||
*/
|
*/
|
||||||
void setRenderSettings(bool isFastRenderingOn);
|
void setRenderSettings(bool isFastRenderingOn);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief The open method is used for loading a picture into the current layer
|
* \brief The open method is used for loading a picture into the current layer
|
||||||
* \param fileName - Path and filename which are used to determine where the to-be-opened file is stored
|
* \param fileName - Path and filename which are used to determine where the to-be-opened file is stored
|
||||||
* \return Returns a boolean variable whether the file was successfully opened or not
|
* \return Returns a boolean variable whether the file was successfully opened or not
|
||||||
*/
|
*/
|
||||||
bool open(const QString &filePath);
|
bool open(const QString &filePath);
|
||||||
/*!
|
/*!
|
||||||
* \brief The save method is used for exporting the current project as one picture
|
* \brief The save method is used for exporting the current project as one picture
|
||||||
* \param fileName
|
* \param fileName
|
||||||
* \param fileFormat
|
* \param fileFormat
|
||||||
* \return Returns a boolean variable, true if the file was saved successfully, false if not
|
* \return Returns a boolean variable, true if the file was saved successfully, false if not
|
||||||
*/
|
*/
|
||||||
bool save(const QString &filePath, const char *fileFormat);
|
bool save(const QString &filePath, const char*fileFormat);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief The addLayer adds a layer to the current project/ painting area
|
* \brief The addLayer adds a layer to the current project/ painting area
|
||||||
* \param width - Width of the layer in pixles
|
* \param width - Width of the layer in pixles
|
||||||
* \param height - Height of the layer in pixles
|
* \param height - Height of the layer in pixles
|
||||||
* \param widthOffset - Offset of the layer measured to the left border of the painting area in pixles
|
* \param widthOffset - Offset of the layer measured to the left border of the painting area in pixles
|
||||||
* \param heightOffset - Offset of the layer measured to the top border of the painting area in pixles
|
* \param heightOffset - Offset of the layer measured to the top border of the painting area in pixles
|
||||||
* \param type - Defining the ImageType of the new layer
|
* \param type - Defining the ImageType of the new layer
|
||||||
* \return Returns the number of layers in the project
|
* \return Returns the number of layers in the project
|
||||||
*/
|
*/
|
||||||
int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, IntelliImage::ImageType type = IntelliImage::ImageType::RASTERIMAGE);
|
int addLayer(int width, int height, int widthOffset=0, int heightOffset=0, IntelliImage::ImageType type = IntelliImage::ImageType::RASTERIMAGE);
|
||||||
/*!
|
/*!
|
||||||
* \brief The addLayerAt adds a layer to the current project/ painting area at a specific position in the layer stack
|
* \brief The addLayerAt adds a layer to the current project/ painting area at a specific position in the layer stack
|
||||||
* \param idx - Index of the position the new layer should be added
|
* \param idx - Index of the position the new layer should be added
|
||||||
* \param width - Width of the layer in pixles
|
* \param width - Width of the layer in pixles
|
||||||
* \param height - Height of the layer in pixles
|
* \param height - Height of the layer in pixles
|
||||||
* \param widthOffset - Offset of the layer measured to the left border of the painting area in pixles
|
* \param widthOffset - Offset of the layer measured to the left border of the painting area in pixles
|
||||||
* \param heightOffset - Offset of the layer measured to the top border of the painting area in pixles
|
* \param heightOffset - Offset of the layer measured to the top border of the painting area in pixles
|
||||||
* \param type - Defining the ImageType of the new layer
|
* \param type - Defining the ImageType of the new layer
|
||||||
* \return Returns the id of the layer position
|
* \return Returns the id of the layer position
|
||||||
*/
|
*/
|
||||||
int addLayerAt(int idx, int width, int height, int widthOffset=0, int heightOffset=0, IntelliImage::ImageType type = IntelliImage::ImageType::RASTERIMAGE);
|
int addLayerAt(int idx, int width, int height, int widthOffset=0, int heightOffset=0, IntelliImage::ImageType type = IntelliImage::ImageType::RASTERIMAGE);
|
||||||
/*!
|
/*!
|
||||||
* \brief The deleteLayer method removes a layer at a given idx
|
* \brief The deleteLayer method removes a layer at a given idx
|
||||||
* \param idx - The index of the layer to be removed
|
* \param idx - The index of the layer to be removed
|
||||||
*/
|
* \param isTool - Is the flag for when a tool uses this function.
|
||||||
void deleteLayer(int idx);
|
*/
|
||||||
/*!
|
void deleteLayer(int idx, bool isTool = false);
|
||||||
* \brief The setLayerToActive method marks a specific layer as active
|
/*!
|
||||||
* \param idx - The index of the layer to be active
|
* \brief The setLayerToActive method marks a specific layer as active
|
||||||
*/
|
* \param idx - The index of the layer to be active
|
||||||
void setLayerActive(int idx);
|
*/
|
||||||
/*!
|
void setLayerActive(int idx);
|
||||||
* \brief The setAlphaOfLayer method sets the alpha value of a specific layer
|
/*!
|
||||||
* \param idx - The index of the layer where the change should be applied
|
* \brief The setAlphaOfLayer method sets the alpha value of a specific layer
|
||||||
* \param alpha - New alpha value of the layer
|
* \param idx - The index of the layer where the change should be applied
|
||||||
*/
|
* \param alpha - New alpha value of the layer
|
||||||
void setLayerAlpha(int idx, int alpha);
|
*/
|
||||||
/*!
|
void setLayerAlpha(int idx, int alpha);
|
||||||
* \brief The floodFill method fills a the active layer with a given color
|
/*!
|
||||||
* \param r - Red value of the color the layer should be filled with
|
* \brief setPolygon is used for setting polygondata, it only works on RASTER images
|
||||||
* \param g - Green value of the color the layer should be filled with
|
* \param idx - represents the number of the layer with should be transformed
|
||||||
* \param b - Blue value of the color the layer should be filled with
|
*/
|
||||||
* \param a - Alpha value of the color the layer should be filled with
|
void setPolygon(int idx);
|
||||||
*/
|
/*!
|
||||||
void floodFill(int r, int g, int b, int a);
|
* \brief The movePositionActive method moves the active layer to certain position
|
||||||
/*!
|
* \param x - The x value the new center of the layer should be at
|
||||||
* \brief The movePositionActive method moves the active layer to certain position
|
* \param y - The y value the new center of the layer should be at
|
||||||
* \param x - The x value the new center of the layer should be at
|
*/
|
||||||
* \param y - The y value the new center of the layer should be at
|
void movePositionActive(int x, int y);
|
||||||
*/
|
/*!
|
||||||
void movePositionActive(int x, int y);
|
* \brief The moveActiveLayer moves the active layer to a specific position in the layer stack
|
||||||
/*!
|
* \param idx - The index of the new position the layer should be in
|
||||||
* \brief The moveActiveLayer moves the active layer to a specific position in the layer stack
|
*/
|
||||||
* \param idx - The direction the layer should move
|
void moveActiveLayer(int idx);
|
||||||
*/
|
|
||||||
void moveActiveLayer(int idx);
|
|
||||||
|
|
||||||
//change properties of colorPicker
|
//change properties of colorPicker
|
||||||
/*!
|
/*!
|
||||||
* \brief The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color
|
* \brief The colorPickerSetFirstColor calls the QTColorPicker to determine the primary drawing color
|
||||||
*/
|
*/
|
||||||
void colorPickerSetFirstColor();
|
void colorPickerSetFirstColor();
|
||||||
/*!
|
/*!
|
||||||
* \brief The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color
|
* \brief The colorPickerSetSecondColor calls the QTColorPicker to determine the secondary drawing color
|
||||||
*/
|
*/
|
||||||
void colorPickerSetSecondColor();
|
void colorPickerSetSecondColor();
|
||||||
/*!
|
/*!
|
||||||
* \brief The colorPickerSwitchColor swaps the primary color with the secondary drawing color
|
* \brief The colorPickerSwitchColor swaps the primary color with the secondary drawing color
|
||||||
*/
|
*/
|
||||||
void colorPickerSwapColors();
|
void colorPickerSwapColors();
|
||||||
|
|
||||||
// Create tools
|
// Create tools
|
||||||
void createPenTool();
|
void createPenTool();
|
||||||
void createPlainTool();
|
void createPlainTool();
|
||||||
void createLineTool();
|
void createLineTool();
|
||||||
void createRectangleTool();
|
void createRectangleTool();
|
||||||
void createCircleTool();
|
void createCircleTool();
|
||||||
void createPolygonTool();
|
void createPolygonTool();
|
||||||
void createFloodFillTool();
|
void createFloodFillTool();
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief The getWidthOfActive gets the horizontal dimensions 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
|
* \return Returns the horizontal pixle count of the active layer
|
||||||
*/
|
*/
|
||||||
int getWidthOfActive();
|
int getWidthOfActive();
|
||||||
/*!
|
/*!
|
||||||
* \brief The getHeightOfActive gets the vertical dimensions 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
|
* \return Returns the vertical pixle count of the active layer
|
||||||
*/
|
*/
|
||||||
int getHeightOfActive();
|
int getHeightOfActive();
|
||||||
|
|
||||||
IntelliImage::ImageType getTypeOfImageRealLayer();
|
IntelliImage::ImageType getTypeOfImageRealLayer();
|
||||||
|
|
||||||
std::vector<QPoint> getPolygonDataOfRealLayer();
|
std::vector<QPoint> getPolygonDataOfRealLayer();
|
||||||
|
|
||||||
int getNumberOfActiveLayer();
|
int getNumberOfActiveLayer();
|
||||||
|
|
||||||
IntelliImage* getImageOfActiveLayer();
|
IntelliImage* getImageOfActiveLayer();
|
||||||
|
|
||||||
IntelliToolsettings Toolsettings;
|
/*!
|
||||||
IntelliColorPicker colorPicker;
|
* \brief getImageDataOfActiveLayer used to get the currents active imageData (if there isn't any active layer it return a 10*10 white picture)
|
||||||
|
* \return return the image as an rgba32bit qImage
|
||||||
|
*/
|
||||||
|
QImage getImageDataOfActiveLayer();
|
||||||
|
|
||||||
|
IntelliToolsettings Toolsettings;
|
||||||
|
IntelliColorPicker colorPicker;
|
||||||
|
|
||||||
public slots:
|
public slots:
|
||||||
// Events to handle
|
// Events to handle
|
||||||
@@ -219,6 +223,8 @@ QImage* Canvas;
|
|||||||
int maxWidth;
|
int maxWidth;
|
||||||
int maxHeight;
|
int maxHeight;
|
||||||
|
|
||||||
|
bool isSettingPolygon = false;
|
||||||
|
|
||||||
IntelliRenderSettings renderSettings;
|
IntelliRenderSettings renderSettings;
|
||||||
IntelliTool* Tool;
|
IntelliTool* Tool;
|
||||||
IntelliPhotoGui* DummyGui;
|
IntelliPhotoGui* DummyGui;
|
||||||
@@ -230,8 +236,11 @@ void drawLayers(bool forSaving=false);
|
|||||||
|
|
||||||
void resizeLayer(QImage*image_res, const QSize &newSize);
|
void resizeLayer(QImage*image_res, const QSize &newSize);
|
||||||
|
|
||||||
// Helper for Tool
|
// Helper for Tool
|
||||||
bool createTempTopLayer(int idx);
|
bool createTempTopLayer(int idx);
|
||||||
|
|
||||||
|
//this function is needed to avoid errors in inputhandeling if a layer has changed
|
||||||
|
void updateTools();
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
|||||||
@@ -24,10 +24,10 @@ void IntelliTool::onMouseRightReleased(int x, int y){
|
|||||||
}
|
}
|
||||||
|
|
||||||
void IntelliTool::onMouseLeftPressed(int x, int y){
|
void IntelliTool::onMouseLeftPressed(int x, int y){
|
||||||
this->isDrawing=this->createToolLayer();
|
this->isDrawing=this->createToolLayer();
|
||||||
if(isDrawing){
|
if(isDrawing) {
|
||||||
Canvas->image->calculateVisiblity();
|
Canvas->image->calculateVisiblity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliTool::onMouseLeftReleased(int x, int y){
|
void IntelliTool::onMouseLeftReleased(int x, int y){
|
||||||
@@ -36,6 +36,7 @@ void IntelliTool::onMouseLeftReleased(int x, int y){
|
|||||||
this->mergeToolLayer();
|
this->mergeToolLayer();
|
||||||
this->deleteToolLayer();
|
this->deleteToolLayer();
|
||||||
activeLayer->image->calculateVisiblity();
|
activeLayer->image->calculateVisiblity();
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -49,22 +50,22 @@ void IntelliTool::onWheelScrolled(int value){
|
|||||||
}
|
}
|
||||||
|
|
||||||
bool IntelliTool::createToolLayer(){
|
bool IntelliTool::createToolLayer(){
|
||||||
if(Area->createTempTopLayer(Area->activeLayer)){
|
if(Area->createTempTopLayer(Area->activeLayer)) {
|
||||||
this->activeLayer=&Area->layerBundle[static_cast<unsigned long long>(Area->activeLayer)];
|
this->activeLayer=&Area->layerBundle[static_cast<unsigned long long>(Area->activeLayer)];
|
||||||
this->Canvas=&Area->layerBundle[static_cast<unsigned long long>(Area->activeLayer+1)];
|
this->Canvas=&Area->layerBundle[static_cast<unsigned long long>(Area->activeLayer+1)];
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliTool::mergeToolLayer(){
|
void IntelliTool::mergeToolLayer(){
|
||||||
QColor clr_0;
|
QColor clr_0;
|
||||||
QColor clr_1;
|
QColor clr_1;
|
||||||
QImage updatedImage = activeLayer->image->getImageData();
|
QImage updatedImage = activeLayer->image->getImageData();
|
||||||
|
|
||||||
for(int y=0; y<activeLayer->height; y++) {
|
for(int y=0; y<activeLayer->height; y++) {
|
||||||
for(int x=0; x<activeLayer->width; x++) {
|
for(int x=0; x<activeLayer->width; x++) {
|
||||||
clr_0=updatedImage.pixelColor(x,y);
|
clr_0=updatedImage.pixelColor(x,y);
|
||||||
clr_1=Canvas->image->imageData.pixelColor(x,y);
|
clr_1=Canvas->image->imageData.pixelColor(x,y);
|
||||||
float t = static_cast<float>(clr_1.alpha())/255.f;
|
float t = static_cast<float>(clr_1.alpha())/255.f;
|
||||||
int r =static_cast<int>(static_cast<float>(clr_1.red())*(t)+static_cast<float>(clr_0.red())*(1.f-t)+0.5f);
|
int r =static_cast<int>(static_cast<float>(clr_1.red())*(t)+static_cast<float>(clr_0.red())*(1.f-t)+0.5f);
|
||||||
@@ -76,15 +77,18 @@ void IntelliTool::mergeToolLayer(){
|
|||||||
clr_0.setBlue(b);
|
clr_0.setBlue(b);
|
||||||
clr_0.setAlpha(a);
|
clr_0.setAlpha(a);
|
||||||
|
|
||||||
updatedImage.setPixelColor(x, y, clr_0);
|
updatedImage.setPixelColor(x, y, clr_0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
activeLayer->image->setImageData(updatedImage);
|
activeLayer->image->setImageData(updatedImage);
|
||||||
Area->DummyGui->UpdateGui();
|
if(Canvas->image->getPolygonData().size() > 0) {
|
||||||
|
activeLayer->image->setPolygon(Canvas->image->getPolygonData());
|
||||||
|
}
|
||||||
|
Area->DummyGui->UpdateGui();
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliTool::deleteToolLayer(){
|
void IntelliTool::deleteToolLayer(){
|
||||||
Area->deleteLayer(Area->activeLayer+1);
|
Area->deleteLayer(Area->activeLayer+1, true);
|
||||||
this->Canvas=nullptr;
|
this->Canvas=nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -26,7 +26,7 @@ void IntelliToolCircle::drawCircle(int radius){
|
|||||||
}
|
}
|
||||||
|
|
||||||
//TODO implement circle drawing algorithm bresenham
|
//TODO implement circle drawing algorithm bresenham
|
||||||
radius = static_cast<int>(radius +(Toolsettings->getLineWidth()/2.));
|
radius = static_cast<int>(radius +(Toolsettings->getLineWidth()/2.));
|
||||||
yMin = (centerPoint.y()-radius);
|
yMin = (centerPoint.y()-radius);
|
||||||
yMax = (centerPoint.y()+radius);
|
yMax = (centerPoint.y()+radius);
|
||||||
for(int i=yMin; i<=yMax; i++) {
|
for(int i=yMin; i<=yMax; i++) {
|
||||||
@@ -56,12 +56,12 @@ void IntelliToolCircle::onMouseRightReleased(int x, int y){
|
|||||||
|
|
||||||
void IntelliToolCircle::onMouseLeftPressed(int x, int y){
|
void IntelliToolCircle::onMouseLeftPressed(int x, int y){
|
||||||
IntelliTool::onMouseLeftPressed(x,y);
|
IntelliTool::onMouseLeftPressed(x,y);
|
||||||
if(this->isDrawing){
|
if(this->isDrawing) {
|
||||||
this->centerPoint=QPoint(x,y);
|
this->centerPoint=QPoint(x,y);
|
||||||
int radius = 1;
|
int radius = 1;
|
||||||
drawCircle(radius);
|
drawCircle(radius);
|
||||||
Canvas->image->calculateVisiblity();
|
Canvas->image->calculateVisiblity();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliToolCircle::onMouseLeftReleased(int x, int y){
|
void IntelliToolCircle::onMouseLeftReleased(int x, int y){
|
||||||
|
|||||||
@@ -49,7 +49,7 @@ void IntelliToolLine::onMouseMoved(int x, int y){
|
|||||||
QPoint p2 =lineStartingPoint.x() < next.x() ? next : lineStartingPoint;
|
QPoint p2 =lineStartingPoint.x() < next.x() ? next : lineStartingPoint;
|
||||||
int m = static_cast<int>(static_cast<float>(p2.y()-p1.y())/static_cast<float>(p2.x()-p1.x())+0.5f);
|
int m = static_cast<int>(static_cast<float>(p2.y()-p1.y())/static_cast<float>(p2.x()-p1.x())+0.5f);
|
||||||
int c = lineStartingPoint.y()-lineStartingPoint.x()*m;
|
int c = lineStartingPoint.y()-lineStartingPoint.x()*m;
|
||||||
//TODO implement dotted algorithm
|
//TODO implement dotted algorithm
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -4,60 +4,75 @@
|
|||||||
#include <QInputDialog>
|
#include <QInputDialog>
|
||||||
#include <QDebug>
|
#include <QDebug>
|
||||||
|
|
||||||
IntelliToolPolygon::IntelliToolPolygon(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings)
|
IntelliToolPolygon::IntelliToolPolygon(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings, bool isSettingPolygon)
|
||||||
: IntelliTool(Area, colorPicker, Toolsettings){
|
: IntelliTool(Area, colorPicker, Toolsettings){
|
||||||
isPointNearStart = false;
|
isPointNearStart = false;
|
||||||
drawingOfPolygon = false;
|
drawingOfPolygon = false;
|
||||||
isInside = false;
|
isInside = false;
|
||||||
|
this->isSettingPolygon = isSettingPolygon;
|
||||||
this->ActiveType = Tooltype::POLYGON;
|
this->ActiveType = Tooltype::POLYGON;
|
||||||
}
|
}
|
||||||
|
|
||||||
IntelliToolPolygon::~IntelliToolPolygon(){
|
IntelliToolPolygon::~IntelliToolPolygon(){
|
||||||
if(drawingOfPolygon) {
|
if(drawingOfPolygon) {
|
||||||
IntelliTool::onMouseRightPressed(0,0);
|
IntelliTool::onMouseRightPressed(0,0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void IntelliToolPolygon::onMouseLeftPressed(int x, int y){
|
void IntelliToolPolygon::onMouseLeftPressed(int x, int y){
|
||||||
if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == IntelliImage::ImageType::SHAPEDIMAGE && x >= 0 && y >= 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
if(!isDrawing && Area->getTypeOfImageRealLayer() == IntelliImage::ImageType::SHAPEDIMAGE && x > 0 && y > 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
||||||
std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(Area->getPolygonDataOfRealLayer());
|
if(Area->getPolygonDataOfRealLayer().size()>2) {
|
||||||
QPoint Point(x,y);
|
std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(Area->getPolygonDataOfRealLayer());
|
||||||
isInside = IntelliTriangulation::isInPolygon(Triangles,Point);
|
QPoint Point(x,y);
|
||||||
|
isInside = IntelliTriangulation::isInPolygon(Triangles,Point);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
isInside = true;
|
||||||
|
}
|
||||||
|
if(isSettingPolygon) {
|
||||||
|
isInside = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == IntelliImage::ImageType::RASTERIMAGE && x >= 0 && y >= 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
else if(!drawingOfPolygon && Area->getTypeOfImageRealLayer() == IntelliImage::ImageType::RASTERIMAGE && x >= 0 && y >= 0 && x<Area->getWidthOfActive() && y<Area->getHeightOfActive()) {
|
||||||
isInside = true;
|
isInside = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(isInside && !drawingOfPolygon) {
|
if(isInside && !drawingOfPolygon) {
|
||||||
IntelliTool::onMouseLeftPressed(x,y);
|
IntelliTool::onMouseLeftPressed(x,y);
|
||||||
QPoint drawingPoint = QPoint(x,y);
|
QPoint drawingPoint = QPoint(x,y);
|
||||||
|
|
||||||
drawingOfPolygon = true;
|
drawingOfPolygon = true;
|
||||||
QPointList.push_back(drawingPoint);
|
QPointList.push_back(drawingPoint);
|
||||||
|
|
||||||
this->Canvas->image->drawPoint(QPointList.back(), colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
this->Canvas->image->drawPoint(QPointList.back(), colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
||||||
this->Canvas->image->calculateVisiblity();
|
if(!isSettingPolygon) {
|
||||||
|
this->Canvas->image->calculateVisiblity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else if(drawingOfPolygon && isNearStart(x,y,QPointList.front())) {
|
else if(drawingOfPolygon && isNearStart(x,y,QPointList.front())) {
|
||||||
if(QPointList.size() > 2) {
|
if(QPointList.size() > 2) {
|
||||||
isPointNearStart = true;
|
isPointNearStart = true;
|
||||||
this->Canvas->image->drawLine(QPointList.back(), QPointList.front(), colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
this->Canvas->image->drawLine(QPointList.back(), QPointList.front(), colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
||||||
this->Canvas->image->calculateVisiblity();
|
if(!isSettingPolygon) {
|
||||||
|
this->Canvas->image->calculateVisiblity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
isInside = false;
|
isInside = false;
|
||||||
drawingOfPolygon = false;
|
drawingOfPolygon = false;
|
||||||
QPointList.clear();
|
QPointList.clear();
|
||||||
IntelliTool::onMouseRightPressed(x,y);
|
IntelliTool::onMouseRightPressed(x,y);
|
||||||
IntelliTool::onMouseRightReleased(x,y);
|
IntelliTool::onMouseRightReleased(x,y);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(drawingOfPolygon) {
|
else if(drawingOfPolygon) {
|
||||||
QPoint drawingPoint(x,y);
|
QPoint drawingPoint(x,y);
|
||||||
QPointList.push_back(drawingPoint);
|
QPointList.push_back(drawingPoint);
|
||||||
this->Canvas->image->drawLine(QPointList[QPointList.size() - 2], QPointList[QPointList.size() - 1], colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
this->Canvas->image->drawLine(QPointList[QPointList.size() - 2], QPointList[QPointList.size() - 1], colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
||||||
this->Canvas->image->calculateVisiblity();
|
if(!isSettingPolygon) {
|
||||||
|
this->Canvas->image->calculateVisiblity();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -72,25 +87,32 @@ void IntelliToolPolygon::onMouseLeftReleased(int x, int y){
|
|||||||
if(isPointNearStart) {
|
if(isPointNearStart) {
|
||||||
isInside = false;
|
isInside = false;
|
||||||
isPointNearStart = false;
|
isPointNearStart = false;
|
||||||
drawingOfPolygon = false;
|
isDrawing = false;
|
||||||
std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(QPointList);
|
if(!isSettingPolygon) {
|
||||||
QPoint Point;
|
std::vector<Triangle> Triangles = IntelliTriangulation::calculateTriangles(QPointList);
|
||||||
QColor colorTwo(colorPicker->getSecondColor());
|
QPoint Point;
|
||||||
colorTwo.setAlpha(Toolsettings->getInnerAlpha());
|
QColor colorTwo(colorPicker->getSecondColor());
|
||||||
for(int i = 0; i < activeLayer->width; i++) {
|
colorTwo.setAlpha(Toolsettings->getInnerAlpha());
|
||||||
for(int j = 0; j < activeLayer->height; j++) {
|
for(int i = 0; i < activeLayer->width; i++) {
|
||||||
Point = QPoint(i,j);
|
for(int j = 0; j < activeLayer->height; j++) {
|
||||||
if(IntelliTriangulation::isInPolygon(Triangles,Point)) {
|
Point = QPoint(i,j);
|
||||||
this->Canvas->image->drawPixel(Point, colorTwo);
|
if(IntelliTriangulation::isInPolygon(Triangles,Point)) {
|
||||||
|
this->Canvas->image->drawPixel(Point, colorTwo);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
for(int i=0; i<static_cast<int>(QPointList.size()); i++) {
|
||||||
|
int next = static_cast<int>((i+static_cast<int>(1))%static_cast<int>(QPointList.size()));
|
||||||
|
this->Canvas->image->drawLine(QPointList[static_cast<unsigned long long>(i)], QPointList[static_cast<unsigned long long>(next)], colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
for(int i=0; i<static_cast<int>(QPointList.size()); i++) {
|
else{
|
||||||
int next = static_cast<int>((i+static_cast<int>(1))%static_cast<int>(QPointList.size()));
|
Canvas->image->setPolygon(QPointList);
|
||||||
this->Canvas->image->drawLine(QPointList[static_cast<unsigned long long>(i)], QPointList[static_cast<unsigned long long>(next)], colorPicker->getFirstColor(), Toolsettings->getLineWidth());
|
Canvas->image->setImageData(Area->getImageDataOfActiveLayer());
|
||||||
}
|
}
|
||||||
QPointList.clear();
|
|
||||||
IntelliTool::onMouseLeftReleased(x,y);
|
IntelliTool::onMouseLeftReleased(x,y);
|
||||||
|
QPointList.clear();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -100,7 +122,7 @@ void IntelliToolPolygon::onMouseRightReleased(int x, int y){
|
|||||||
|
|
||||||
void IntelliToolPolygon::onWheelScrolled(int value){
|
void IntelliToolPolygon::onWheelScrolled(int value){
|
||||||
IntelliTool::onWheelScrolled(value);
|
IntelliTool::onWheelScrolled(value);
|
||||||
if(!drawingOfPolygon) {
|
if(!drawingOfPolygon) {
|
||||||
Toolsettings->setLineWidth(Toolsettings->getLineWidth() + value);
|
Toolsettings->setLineWidth(Toolsettings->getLineWidth() + value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -34,6 +34,11 @@ bool drawingOfPolygon;
|
|||||||
*/
|
*/
|
||||||
bool isInside;
|
bool isInside;
|
||||||
|
|
||||||
|
/*!
|
||||||
|
* \brief isSettingPolygon is the flag for calling the setPolygon method.
|
||||||
|
*/
|
||||||
|
bool isSettingPolygon;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief PointIsNearStart true, when last click near startpoint, else false.
|
* \brief PointIsNearStart true, when last click near startpoint, else false.
|
||||||
*/
|
*/
|
||||||
@@ -48,8 +53,9 @@ public:
|
|||||||
* \brief A constructor setting the general paintingArea and colorPicker.
|
* \brief A constructor setting the general paintingArea and colorPicker.
|
||||||
* \param Area - The general paintingArea used by the project.
|
* \param Area - The general paintingArea used by the project.
|
||||||
* \param colorPicker - The general colorPicker used by the project.
|
* \param colorPicker - The general colorPicker used by the project.
|
||||||
|
* \param isSettingPolygon - The flag for the set polygon method, standart is false
|
||||||
*/
|
*/
|
||||||
IntelliToolPolygon(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings);
|
IntelliToolPolygon(PaintingArea* Area, IntelliColorPicker* colorPicker, IntelliToolsettings* Toolsettings, bool isSettingPolygon = false);
|
||||||
/*!
|
/*!
|
||||||
* \brief A Destructor.
|
* \brief A Destructor.
|
||||||
*/
|
*/
|
||||||
@@ -96,7 +102,6 @@ virtual void onWheelScrolled(int value) override;
|
|||||||
*/
|
*/
|
||||||
virtual void onMouseMoved(int x, int y) override;
|
virtual void onMouseMoved(int x, int y) override;
|
||||||
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // INTELLITOOLPOLYGON_H
|
#endif // INTELLITOOLPOLYGON_H
|
||||||
|
|||||||
Reference in New Issue
Block a user