Skip to content
Snippets Groups Projects
Commit 7b9dd3b2 authored by BATON Theau's avatar BATON Theau
Browse files

Ajout du dessin sur plusieurs image en même temps

parent d28c995e
No related branches found
No related tags found
No related merge requests found
Showing
with 735 additions and 379 deletions
......@@ -15,6 +15,7 @@ SOURCES += \
main.cpp \
mainwindow.cpp \
tools/editable.cpp \
tools/editable/pixelpainter.cpp \
tools/hand.cpp \
tools/selectionable/ellipse.cpp \
tools/selectionable/polygone.cpp \
......@@ -23,6 +24,9 @@ SOURCES += \
tools/selectionable/triangle.cpp \
tools/selectionnable.cpp \
tools/tool.cpp \
ui/effect/blackandwhite.cpp \
ui/effect/contrast.cpp \
ui/effect/effect.cpp \
ui/files/treefileselector.cpp \
ui/menu/displaymenulambda.cpp \
ui/menu/filemenulambda.cpp \
......@@ -30,6 +34,8 @@ SOURCES += \
ui/menu/menubarmanager.cpp \
ui/toolbox/toolRegister.cpp \
ui/view/imagearea.cpp \
ui/view/multyimagemodifier.cpp \
ui/view/repercussion/ignore.cpp \
ui/view/selection.cpp \
ui/view/viewmanager.cpp
......@@ -39,6 +45,7 @@ HEADERS += \
dialog/resizedialog.h \
mainwindow.h \
tools/editable.h \
tools/editable/pixelpainter.h \
tools/hand.h \
tools/selectionable/ellipse.h \
tools/selectionable/polygone.h \
......@@ -47,6 +54,9 @@ HEADERS += \
tools/selectionable/triangle.h \
tools/selectionnable.h \
tools/tool.h \
ui/effect/blackandwhite.h \
ui/effect/contrast.h \
ui/effect/effect.h \
ui/files/fileselector.h \
ui/files/treefileselector.h \
ui/menu/displaymenulambda.h \
......@@ -55,6 +65,9 @@ HEADERS += \
ui/menu/menubarmanager.h \
ui/toolbox/toolRegister.h \
ui/view/imagearea.h \
ui/view/multyimagemodifier.h \
ui/view/repercussion/ignore.h \
ui/view/repercussion/repercussion.h \
ui/view/selection.h \
ui/view/viewmanager.h
......
......@@ -9,31 +9,79 @@
#include <QKeyEvent>
ColorPickerWidget::ColorPickerWidget(QWidget *parent)
: QWidget(parent) {
QVBoxLayout *layout = new QVBoxLayout(this);
: QWidget(parent), _currentColor(QColorConstants::Black) {
this->_mainLayout = new QVBoxLayout(this);
colorListWidget = new QListWidget(this);
layout->addWidget(colorListWidget);
this->_colorListWidget = new QListWidget(this);
this->_mainLayout->addWidget(this->_colorListWidget);
QPushButton *addColorButton = new QPushButton("Add Color", this);
connect(addColorButton, &QPushButton::clicked, this, &ColorPickerWidget::addColor);
layout->addWidget(addColorButton);
this->_currentColorLayout = new QHBoxLayout(this);
QPushButton *pickColorButton = new QPushButton("Pick Color", this);
connect(pickColorButton, &QPushButton::clicked, this, &ColorPickerWidget::pickColor);
layout->addWidget(pickColorButton);
this->_currentColorLabel = new QLabel("Current Color :", this);
this->_currentColorLayout->addWidget(this->_currentColorLabel);
this->_currentColorFrame = new QFrame(this);
this->_currentColorLayout->addWidget(this->_currentColorFrame);
this->_mainLayout->addLayout(this->_currentColorLayout);
this->_addColorButton = new QPushButton("Add Color", this);
QObject::connect(this->_addColorButton, &QPushButton::clicked, this, &ColorPickerWidget::addColor);
this->_mainLayout->addWidget(this->_addColorButton);
this->_modifyColorButton = new QPushButton("Modify Color", this);
QObject::connect(this->_modifyColorButton, &QPushButton::clicked, this, &ColorPickerWidget::modifyColor);
this->_mainLayout->addWidget(this->_modifyColorButton);
this->_chooseColorButton = new QPushButton("Finish", this);
QObject::connect(this->_chooseColorButton, &QPushButton::clicked, this, &ColorPickerWidget::close);
this->_mainLayout->addWidget(this->_chooseColorButton);
this->setFrameColor(this->_currentColor);
QObject::connect(this->_colorListWidget, SIGNAL(itemClicked(QListWidgetItem*)), this, SLOT(chooseColor(QListWidgetItem*)));
}
ColorPickerWidget::~ColorPickerWidget() {
delete this->_mainLayout;
delete this->_colorListWidget;
delete this->_currentColorLayout;
delete this->_currentColorLabel;
delete this->_currentColorFrame;
delete this->_addColorButton;
delete this->_modifyColorButton;
delete this->_chooseColorButton;
}
void ColorPickerWidget::setCurrentColor(const QColor & color) {
if(color.isValid()) {
QListWidgetItem * item = new QListWidgetItem(this->_colorListWidget);
item->setBackground(QBrush(color));
this->_currentColor = color;
this->setFrameColor(this->_currentColor);
}
}
void ColorPickerWidget::setFrameColor(const QColor & color) {
if(color.isValid()) {
QPalette palette;
palette.setColor(QPalette::Window, color);
this->_currentColorFrame->setAutoFillBackground(true);
this->_currentColorFrame->setPalette(palette);
}
}
void ColorPickerWidget::addColor() {
QColor color = QColorDialog::getColor(Qt::white, this, "Select Color");
if (color.isValid()) {
QListWidgetItem *item = new QListWidgetItem(colorListWidget);
QListWidgetItem *item = new QListWidgetItem(this->_colorListWidget);
item->setBackground(QBrush(color));
}
}
void ColorPickerWidget::pickColor() {
QListWidgetItem *selectedItem = colorListWidget->currentItem();
void ColorPickerWidget::modifyColor() {
QListWidgetItem * selectedItem = this->_colorListWidget->currentItem();
if (selectedItem) {
QColor color = QColorDialog::getColor(selectedItem->background().color(), this, "Pick Color");
if (color.isValid()) {
......@@ -42,4 +90,14 @@ void ColorPickerWidget::pickColor() {
}
}
void ColorPickerWidget::chooseColor() {
this->_currentColor = this->_colorListWidget->currentItem()->background().color();
this->setFrameColor(this->_currentColor);
this->close();
}
void ColorPickerWidget::chooseColor(QListWidgetItem * item) {
this->_currentColor = item->background().color();
this->setFrameColor(this->_currentColor);
}
#ifndef COLORPICKERWIDGET_H
#define COLORPICKERWIDGET_H
#pragma once
#include <QColorDialog>
#include <QListWidget>
#include <QListWidgetItem>
#include <QVBoxLayout>
#include <QPushButton>
#include <QLabel>
class ColorPickerWidget : public QWidget {
Q_OBJECT
private:
QColor _currentColor;
QVBoxLayout * _mainLayout;
QHBoxLayout * _currentColorLayout;
QListWidget * _colorListWidget;
QLabel * _currentColorLabel;
QFrame * _currentColorFrame;
QPushButton * _addColorButton;
QPushButton * _modifyColorButton;
QPushButton * _chooseColorButton;
protected:
void setFrameColor(const QColor &);
public:
ColorPickerWidget(QWidget *parent = nullptr);
~ColorPickerWidget();
inline const QColor & currentColor() const {return this->_currentColor;}
void setCurrentColor(const QColor &);
private slots:
void addColor();
void pickColor();
private:
QListWidget *colorListWidget;
void modifyColor();
void chooseColor();
void chooseColor(QListWidgetItem*);
};
#endif // COLORPICKERWIDGET_H
#include "clip.h"
#include "ui_clip.h"
Clip::Clip(QWidget *parent)
: QDialog(parent)
, ui(new Ui::Clip)
{
ui->setupUi(this);
}
Clip::~Clip()
{
delete ui;
}
#ifndef CLIP_H
#define CLIP_H
#include <QDialog>
namespace Ui {
class Clip;
}
class Clip : public QDialog
{
Q_OBJECT
public:
explicit Clip(QWidget *parent = nullptr);
~Clip();
private:
Ui::Clip *ui;
};
#endif // CLIP_H
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>ClipDialog</class>
<widget class="QDialog" name="ClipDialog">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>400</width>
<height>300</height>
</rect>
</property>
<property name="windowTitle">
<string>Dialog</string>
</property>
</widget>
<resources/>
<connections/>
</ui>
......@@ -22,6 +22,9 @@
#include <tools/selectionable/triangle.h>
#include <tools/selectionable/ellipse.h>
#include <tools/selectionable/polygone.h>
#include <tools/editable/pixelpainter.h>
#include <ui/view/repercussion/ignore.h>
MainWindow::MainWindow(QWidget * parent)
: QMainWindow(parent), _toolRegister(), _fileselectorManager(nullptr), _viewManager(nullptr) {
......@@ -43,11 +46,11 @@ MainWindow::MainWindow(QWidget * parent)
ColorWindow = this->_colorPicker;
// Connect the button's clicked signal to the openColorPicker slot
connect(ColorWindow, &QPushButton::clicked, this, &MainWindow::openColorPicker);
QObject::connect(ColorWindow, &QPushButton::clicked, this, &MainWindow::openColorPicker);
// Create an action for Ctrl+C
ctrlCAction = new QAction(this);
ctrlCAction->setShortcut(QKeySequence(Qt::CTRL | Qt::SHIFT | Qt::Key_C)); // Change the shortcut
connect(ctrlCAction, &QAction::triggered, this, &MainWindow::handleCtrlCKey);
QObject::connect(ctrlCAction, &QAction::triggered, this, &MainWindow::handleCtrlCKey);
addAction(ctrlCAction);
qDebug() << "Mark_3";
......@@ -56,28 +59,39 @@ MainWindow::MainWindow(QWidget * parent)
qDebug() << "Mark_4";
this->_multyImageModifier = new ui::MultyImageModifier(this->_viewManager, this->_emitDrawCheckbox, this->_receiveDrawCheckbox, this->_samplingDrawCombobox);
qDebug() << "Mark_4.1";
this->_multyImageModifier->push_back(QSharedPointer<ui::Repercution>(new ui::Ignore()));
qDebug() << "Mark_4.2";
this->_multyImageModifier->update();
qDebug() << "mark_5";
this->_rescaleDialog = new dialog::ReScaleDialog(this->_viewManager);
QObject::connect(this->_rescaleButton, SIGNAL(released()), this->_rescaleDialog, SLOT(use()));
this->_resizeDialog = new dialog::ReSizeDialog(this->_viewManager);
QObject::connect(this->_resizeButton, SIGNAL(released()), this->_resizeDialog, SLOT(use()));
qDebug() << "Mark_5";
qDebug() << "Mark_6";
this->_toolRegister.setToolbox(this->_toolbox);
this->_toolRegister.setViewManager(this->_viewManager);
this->_toolRegister.push_back(QSharedPointer<tool::Tool>(new tool::Hand()));
this->_toolRegister.push_back(QSharedPointer<tool::Rectangle>(new tool::Rectangle()));
this->_toolRegister.push_back(QSharedPointer<tool::RectangleTriangle>(new tool::RectangleTriangle()));
this->_toolRegister.push_back(QSharedPointer<tool::Triangle>(new tool::Triangle()));
this->_toolRegister.push_back(QSharedPointer<tool::Ellipse>(new tool::Ellipse()));
this->_toolRegister.push_back(QSharedPointer<tool::Polygone>(new tool::Polygone()));
this->_toolRegister.push_back(QSharedPointer<tool::Tool>(new tool::Hand(this->colorPickerWidget)));
this->_toolRegister.push_back(QSharedPointer<tool::Rectangle>(new tool::Rectangle(this->colorPickerWidget)));
this->_toolRegister.push_back(QSharedPointer<tool::RectangleTriangle>(new tool::RectangleTriangle(this->colorPickerWidget)));
this->_toolRegister.push_back(QSharedPointer<tool::Triangle>(new tool::Triangle(this->colorPickerWidget)));
this->_toolRegister.push_back(QSharedPointer<tool::Ellipse>(new tool::Ellipse(this->colorPickerWidget)));
this->_toolRegister.push_back(QSharedPointer<tool::Polygone>(new tool::Polygone(this->colorPickerWidget)));
this->_toolRegister.push_back(QSharedPointer<tool::Pixelpainter>(new tool::Pixelpainter(this->colorPickerWidget)));
this->_toolRegister.update();
qDebug() << "Mark_6";
qDebug() << "Mark_7";
this->_menubarManager.insert(this->_menuFile, QSharedPointer<ui::MenuLambda>(new ui::FilemenuLambda(this->_fileselectorManager, this->_viewManager)));
this->_menubarManager.insert(this->_menuAffichage, QSharedPointer<ui::MenuLambda>(new ui::DisplayMenuLambda(this->_viewManager)));
......@@ -118,7 +132,6 @@ MainWindow::MainWindow(QWidget * parent)
connect(_actionDecreaseContrast, &QAction::triggered, this, &MainWindow::decreaseContrastActionTriggered);
qDebug() << "Mark_8";
}
void MainWindow::dragEnterEvent(QDragEnterEvent *e) {
......@@ -130,9 +143,9 @@ void MainWindow::dragEnterEvent(QDragEnterEvent *e) {
void MainWindow::dropEvent(QDropEvent * e) {
this->_fileselectorManager->onDrop(e);
}
void MainWindow::openColorPicker()
{
colorPickerWidget.show();
}
void MainWindow::handleCtrlCKey()
......@@ -143,16 +156,15 @@ void MainWindow::handleCtrlCKey()
void MainWindow::convertToNoirEtBlancActionTriggered() {
ui::ImageArea *currentImageArea = dynamic_cast<ui::ImageArea *>(_imageTabs->currentWidget());
ui::ImageArea *currentImageArea = this->_viewManager->currentView();
if (currentImageArea) {
currentImageArea->convertToNoirEtBlanc();
currentImageArea->blackAndWhite();
} else {
qDebug() << "Aucun onglet d'image actif.";
}
}
void MainWindow::adjustBrightnessContrastActionTriggered() {
static bool isVisible = true;
_actionAdjustBrightness->setVisible(isVisible);
_actionDecreaseBrightness->setVisible(isVisible);
......@@ -160,16 +172,9 @@ void MainWindow::adjustBrightnessContrastActionTriggered() {
_actionDecreaseContrast->setVisible(isVisible);
isVisible = !isVisible;
// ui::ImageArea *currentImageArea = dynamic_cast<ui::ImageArea *>(_imageTabs->currentWidget());
// if (currentImageArea) {
// currentImageArea->adjustBrightnessContrast(1.2,1.5);
// } else {
// qDebug() << "Aucun onglet d'image actif.";
// }
}
void MainWindow::increaseBrightnessActionTriggered() {
ui::ImageArea *currentImageArea = dynamic_cast<ui::ImageArea *>(_imageTabs->currentWidget());
ui::ImageArea *currentImageArea = this->_viewManager->currentView();
if (currentImageArea) {
currentImageArea->increaseBrightness();
} else {
......@@ -177,7 +182,7 @@ void MainWindow::increaseBrightnessActionTriggered() {
}
}
void MainWindow::decreaseBrightnessActionTriggered() {
ui::ImageArea *currentImageArea = dynamic_cast<ui::ImageArea *>(_imageTabs->currentWidget());
ui::ImageArea *currentImageArea = this->_viewManager->currentView();
if (currentImageArea) {
currentImageArea->decreaseBrightness();
} else {
......@@ -185,7 +190,7 @@ void MainWindow::decreaseBrightnessActionTriggered() {
}
}
void MainWindow::increaseContrastActionTriggered() {
ui::ImageArea *currentImageArea = dynamic_cast<ui::ImageArea *>(_imageTabs->currentWidget());
ui::ImageArea *currentImageArea = this->_viewManager->currentView();
if (currentImageArea) {
currentImageArea->increaseContrast();
} else {
......@@ -193,7 +198,7 @@ void MainWindow::increaseContrastActionTriggered() {
}
}
void MainWindow::decreaseContrastActionTriggered() {
ui::ImageArea *currentImageArea = dynamic_cast<ui::ImageArea *>(_imageTabs->currentWidget());
ui::ImageArea *currentImageArea = this->_viewManager->currentView();
if (currentImageArea) {
currentImageArea->decreaseContrast();
} else {
......@@ -201,11 +206,11 @@ void MainWindow::decreaseContrastActionTriggered() {
}
}
MainWindow::~MainWindow() {
delete this->_fileselectorManager;
delete this->_viewManager;
delete this->_rescaleDialog;
delete this->_resizeDialog;
delete this->_multyImageModifier;
}
......@@ -9,6 +9,7 @@
#include "ui/menu/menubarmanager.h"
#include "ui/files/fileselector.h"
#include "ui/view/viewmanager.h"
#include "ui/view/multyimagemodifier.h"
#include "dialog/rescaledialog.h"
#include "dialog/resizedialog.h"
......@@ -25,11 +26,11 @@ class MainWindow : public QMainWindow, private Ui::MainWindow {
ui::FileSelector * _fileselectorManager;
ui::ViewManager * _viewManager;
ui::MultyImageModifier * _multyImageModifier;
dialog::ReScaleDialog * _rescaleDialog;
dialog::ReSizeDialog * _resizeDialog;
ColorPickerWidget colorPickerWidget; // Declare ColorPickerWidget as a private member
QPushButton *ColorWindow; // Assuming you have a QPushButton in your UI
QAction *ctrlCAction; // New QAction for Ctrl+C
......
......@@ -6,8 +6,8 @@
<rect>
<x>0</x>
<y>0</y>
<width>1026</width>
<height>541</height>
<width>992</width>
<height>613</height>
</rect>
</property>
<property name="windowTitle">
......@@ -31,19 +31,54 @@
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="_utilitaryLayout">
<widget class="QSplitter" name="_mainSpliter">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="frameShape">
<enum>QFrame::NoFrame</enum>
</property>
<property name="lineWidth">
<number>3</number>
</property>
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<widget class="QWidget" name="_fileWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Minimum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_3">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="verticalLayout">
<layout class="QVBoxLayout" name="_filesArea">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QTreeView" name="_filesSelector">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<sizepolicy hsizetype="Minimum" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
......@@ -80,15 +115,10 @@
</attribute>
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="verticalLayout_2">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="_filesSelected">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Minimum">
<sizepolicy hsizetype="Minimum" vsizetype="Maximum">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
......@@ -129,26 +159,16 @@
</widget>
</item>
<item>
<layout class="QHBoxLayout" name="horizontalLayout_3">
<layout class="QHBoxLayout" name="_selectableArea">
<property name="spacing">
<number>0</number>
<number>64</number>
</property>
<item>
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
<property name="leftMargin">
<number>32</number>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
<property name="rightMargin">
<number>32</number>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="_add_selectable_element">
<property name="toolTip">
......@@ -169,22 +189,6 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item>
<widget class="QPushButton" name="_remove_selectable_element">
<property name="toolTip">
......@@ -205,30 +209,35 @@
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Minimum</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</widget>
<widget class="QWidget" name="_imageWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<property name="spacing">
<number>0</number>
</property>
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="_imageLayout">
<item>
......@@ -314,6 +323,28 @@
</item>
</layout>
</item>
</layout>
</widget>
<widget class="QWidget" name="_toolWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Expanding" vsizetype="MinimumExpanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<layout class="QVBoxLayout" name="verticalLayout_4">
<property name="leftMargin">
<number>0</number>
</property>
<property name="topMargin">
<number>0</number>
</property>
<property name="rightMargin">
<number>0</number>
</property>
<property name="bottomMargin">
<number>0</number>
</property>
<item>
<layout class="QVBoxLayout" name="_toolLayout">
<property name="spacing">
......@@ -332,6 +363,9 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="statusTip">
<string>Change la couleur courante.</string>
</property>
<property name="text">
<string/>
</property>
......@@ -358,6 +392,9 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="statusTip">
<string>Change la taille de l'image courante.</string>
</property>
<property name="text">
<string/>
</property>
......@@ -381,6 +418,9 @@
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="statusTip">
<string>Permet de rogner l'image courante.</string>
</property>
<property name="text">
<string/>
</property>
......@@ -398,6 +438,11 @@
</item>
</layout>
</item>
<item>
<layout class="QVBoxLayout" name="_toolParameterLayout">
<property name="spacing">
<number>0</number>
</property>
<item>
<widget class="QListWidget" name="_toolbox">
<property name="sizePolicy">
......@@ -436,23 +481,67 @@
</widget>
</item>
<item>
<layout class="QVBoxLayout" name="_toolParameterLayout">
<property name="spacing">
<number>0</number>
<layout class="QVBoxLayout" name="_multyDrawArea">
<property name="leftMargin">
<number>16</number>
</property>
<property name="topMargin">
<number>8</number>
</property>
<property name="rightMargin">
<number>16</number>
</property>
<property name="bottomMargin">
<number>8</number>
</property>
<item>
<widget class="QCheckBox" name="_emitDrawCheckbox">
<property name="statusTip">
<string>Permet à image courante de modifier toutes les autres images modifiable.</string>
</property>
<property name="text">
<string>Modifie les autres Image</string>
</property>
</widget>
</item>
<item>
<widget class="QCheckBox" name="_receiveDrawCheckbox">
<property name="statusTip">
<string>Permet de laisser l'image courante être modifié par les autres images.</string>
</property>
<property name="text">
<string>Modifiable par les autres Image</string>
</property>
<property name="checked">
<bool>true</bool>
</property>
<property name="tristate">
<bool>false</bool>
</property>
</widget>
</item>
<item>
<widget class="QComboBox" name="_samplingDrawCombobox"/>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QMenuBar" name="_menubar">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>1026</width>
<height>22</height>
<width>992</width>
<height>21</height>
</rect>
</property>
<widget class="QMenu" name="_menuFile">
......@@ -986,5 +1075,22 @@
<resources>
<include location="ressource.qrc"/>
</resources>
<connections/>
<connections>
<connection>
<sender>_receiveDrawCheckbox</sender>
<signal>toggled(bool)</signal>
<receiver>_samplingDrawCombobox</receiver>
<slot>setEnabled(bool)</slot>
<hints>
<hint type="sourcelabel">
<x>702</x>
<y>542</y>
</hint>
<hint type="destinationlabel">
<x>698</x>
<y>575</y>
</hint>
</hints>
</connection>
</connections>
</ui>
#include "brush.h"
#include <QDebug>
namespace tool {
Brush::Brush()
: Tool("Brush", QIcon(":/image/test/icons/16x16/ressource/image/test/icons/16x16/Circle.png")) {
}
Brush::Brush(QListWidget *)
: Tool("Brush", QIcon(":/image/test/icons/16x16/ressource/image/test/icons/16x16/Circle.png")) {
}
void Brush::use() const {
qDebug() << "Hello Brush";
}
}
#pragma once
#include "tool.h"
namespace tool {
class Brush : public Tool {
public:
Brush(QListWidget *);
Brush();
virtual void use() const;
};
}
#include "editable.h"
namespace tool {
Editable::Editable(const QString & name, const QIcon & icon,bool free)
: Tool(name, icon), _free(free) {}
Editable::Editable(const ColorPickerWidget & cp, const QString & name, const QIcon & icon,bool free)
: Tool(name, icon), _colorPicker(&cp), _free(free) {}
void Editable::onKeyPress(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &) {}
void Editable::onKeyReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &) {}
void Editable::onKeyPress(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &, const ColorPickerWidget &) {}
void Editable::onKeyReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &, const ColorPickerWidget &) {}
void Editable::pressed(ui::ImageArea & area, QImage & image, QPoint & click, ui::Selection & selection, QMouseEvent & e) {
if(image.rect().contains(click) || this->_free) {
this->onMousePressed(area, image, click, selection, e);
this->onMousePressed(area, image, click, selection, e, *this->_colorPicker);
}
}
void Editable::released(ui::ImageArea & area, QImage & image, QPoint & click, ui::Selection & selection, QMouseEvent & e) {
if(image.rect().contains(click) || this->_free) {
this->onMouseReleased(area, image, click, selection, e);
this->onMouseReleased(area, image, click, selection, e, *this->_colorPicker);
}
}
void Editable::moved(ui::ImageArea & area, QImage & image, QPoint & click, ui::Selection & selection, QMouseEvent & e, bool hold) {
if(image.rect().contains(click) || this->_free) {
this->onMouseMoved(area, image, click, selection, e, hold);
this->onMouseMoved(area, image, click, selection, e, *this->_colorPicker, hold);
}
}
void Editable::keyPressed(ui::ImageArea & area, QImage & image, QPoint & click, ui::Selection & selection, QKeyEvent & e) {
this->onKeyPress(area, image, click, selection, e);
this->onKeyPress(area, image, click, selection, e, *this->_colorPicker);
}
void Editable::keyReleased(ui::ImageArea & area, QImage & image, QPoint & click, ui::Selection & selection, QKeyEvent & e) {
this->onKeyReleased(area, image, click, selection, e);
this->onKeyReleased(area, image, click, selection, e, *this->_colorPicker);
}
}
......@@ -2,20 +2,23 @@
#include "tool.h"
#include "colorpickerwidget.h"
namespace tool {
class Editable : public Tool {
private:
const ColorPickerWidget * _colorPicker;
bool _free;
public:
Editable(const QString & = "NaN", const QIcon & = QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/draw-freehand.png"), bool = false);
Editable(const ColorPickerWidget &, const QString & = "NaN", const QIcon & = QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/draw-freehand.png"), bool = false);
virtual void onMousePressed(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &) = 0;
virtual void onMouseReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &) = 0;
virtual void onMouseMoved(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, bool) = 0;
virtual void onMousePressed(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &) = 0;
virtual void onMouseReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &) = 0;
virtual void onMouseMoved(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &, bool) = 0;
virtual void onKeyPress(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &);
virtual void onKeyReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &);
virtual void onKeyPress(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &, const ColorPickerWidget &);
virtual void onKeyReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QKeyEvent &, const ColorPickerWidget &);
public slots:
virtual void pressed(ui::ImageArea &, QImage &, QPoint &, ui::Selection &, QMouseEvent &) final;
......
#include "pixelpainter.h"
namespace tool {
Pixelpainter::Pixelpainter(const ColorPickerWidget & cp)
: Editable(cp, "Pixel", QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/application-pgp-signature.png")), _leftButton(false) {}
void Pixelpainter::onMousePressed(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e, const ColorPickerWidget &) {
if(e.button() == Qt::LeftButton) {
this->_leftButton = true;
}
}
void Pixelpainter::onMouseReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e, const ColorPickerWidget &) {
if(e.button() == Qt::LeftButton) {
this->_leftButton = false;
}
}
void Pixelpainter::onMouseMoved(ui::ImageArea & a, QImage & , const QPoint & p, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget & cp, bool hold) {
if(hold && this->_leftButton) {
a.setColor(p, cp.currentColor());
}
}
}
#pragma once
#include "../editable.h"
namespace tool {
class Pixelpainter : public Editable {
private:
bool _leftButton;
public:
Pixelpainter(const ColorPickerWidget &);
virtual void onMousePressed(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &);
virtual void onMouseReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &);
virtual void onMouseMoved(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &, bool);
};
}
#include "hand.h"
namespace tool {
Hand::Hand()
: Editable("Main", QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/transform-move.png"), true), _leftButton(false) {}
Hand::Hand(const ColorPickerWidget & cp)
: Editable(cp, "Main", QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/transform-move.png"), true), _leftButton(false) {}
void Hand::onMousePressed(ui::ImageArea & area, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e) {
void Hand::onMousePressed(ui::ImageArea & area, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e, const ColorPickerWidget &) {
if(e.button() == Qt::LeftButton) {
area.setCursor(QCursor(Qt::CursorShape::ClosedHandCursor));
this->_leftButton = true;
}
}
void Hand::onMouseReleased(ui::ImageArea & area, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e) {
void Hand::onMouseReleased(ui::ImageArea & area, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e, const ColorPickerWidget &) {
if(e.button() == Qt::LeftButton) {
area.setCursor(QCursor(Qt::CursorShape::OpenHandCursor));
area.setLast_Positon(e.pos());
......@@ -19,7 +19,7 @@ namespace tool {
}
}
void Hand::onMouseMoved(ui::ImageArea & area, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e, bool hold) {
void Hand::onMouseMoved(ui::ImageArea & area, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent & e, const ColorPickerWidget &, bool hold) {
if(hold && this->_leftButton) {
QPoint move = e.pos() - area.last_position();
area.setPosition(QPoint(area.position().x() + move.x(),area.position().y() + move.y()));
......
......@@ -8,12 +8,12 @@ namespace tool {
bool _leftButton;
public:
Hand();
Hand(const ColorPickerWidget &);
inline virtual Qt::CursorShape shape() const {return Qt::CursorShape::OpenHandCursor;}
virtual void onMousePressed(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &);
virtual void onMouseReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &);
virtual void onMouseMoved(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, bool);
virtual void onMousePressed(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &);
virtual void onMouseReleased(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &);
virtual void onMouseMoved(ui::ImageArea &, QImage &, const QPoint &, const ui::Selection &, const QMouseEvent &, const ColorPickerWidget &, bool);
};
}
#include "selectionable.h"
Selectionable::Selectionable() {
}
#pragma once
#include "tool.h"
#include "../ui/view/selection.h"
namespace tool {
class Selectionable : public Tool {
private:
const QString _name;
const QIcon _icon;
protected:
void onPressed(ui::Selection *);
void onreleased(ui::Selection *);
public:
Selectionable(const QString &, const QIcon &);
};
}
#include "ellipse.h"
namespace tool {
Ellipse::Ellipse()
: Selectionable("Elipse", QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/draw-ellipse.png"), true), _clicked(0,0), _hold(false), _multy(false) {
Ellipse::Ellipse(const ColorPickerWidget & cp)
: Selectionable(cp, "Elipse", QIcon(":/oxygen/16x16/ressource/image/oxygen/icons/16x16/draw-ellipse.png"), true), _clicked(0,0), _hold(false), _multy(false) {
}
void Ellipse::onMousePressed(ui::ImageArea &, ui::Selection & s, const QPoint & clicked, const QImage &, const QMouseEvent & e) {
void Ellipse::onMousePressed(ui::ImageArea &, ui::Selection & s, const QPoint & clicked, const QImage &, const QMouseEvent & e, const ColorPickerWidget &) {
if(!this->_multy) {
s.clear();
}
......@@ -17,13 +17,13 @@ namespace tool {
}
}
void Ellipse::onMouseReleased(ui::ImageArea &, ui::Selection &, const QPoint &, const QImage &, const QMouseEvent & e) {
void Ellipse::onMouseReleased(ui::ImageArea &, ui::Selection &, const QPoint &, const QImage &, const QMouseEvent & e, const ColorPickerWidget &) {
if(e.button() == Qt::LeftButton) {
this->_hold = false;
}
}
void Ellipse::onMouseMoved(ui::ImageArea &, ui::Selection & s, const QPoint & c, const QImage & img, const QMouseEvent &, bool) {
void Ellipse::onMouseMoved(ui::ImageArea &, ui::Selection & s, const QPoint & c, const QImage & img, const QMouseEvent &, const ColorPickerWidget &, bool) {
if(this->_hold) {
s.clear();
QVector<QPoint> selection;
......@@ -63,14 +63,14 @@ namespace tool {
}
}
void Ellipse::onKeyPress(ui::ImageArea &, ui::Selection &, const QPoint &, const QImage &, const QKeyEvent & e) {
void Ellipse::onKeyPress(ui::ImageArea &, ui::Selection &, const QPoint &, const QImage &, const QKeyEvent & e, const ColorPickerWidget &) {
if(e.key() == Qt::Key_Control) {
this->_multy = true;
qDebug() << "ctrl";
}
}
void Ellipse::onKeyReleased(ui::ImageArea &, ui::Selection &, const QPoint &, const QImage &, const QKeyEvent & e) {
void Ellipse::onKeyReleased(ui::ImageArea &, ui::Selection &, const QPoint &, const QImage &, const QKeyEvent & e, const ColorPickerWidget &) {
if(e.key() == Qt::Key_Control) {
this->_multy = false;
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment