mirror of
https://github.com/creyD/intelliphoto.git
synced 2026-04-12 19:40:28 +02:00
basics of zoom and scroll
This commit is contained in:
@@ -18,7 +18,6 @@ IntelliPhotoGui::IntelliPhotoGui(){
|
||||
setIntelliStyle();
|
||||
// Size the app
|
||||
resize(600,600);
|
||||
showMaximized();
|
||||
setDefaultToolValue();
|
||||
}
|
||||
|
||||
@@ -550,6 +549,7 @@ void IntelliPhotoGui::createMenus(){
|
||||
layerCreationMenu = new QMenu(tr("&Create new Layer"), this);
|
||||
layerCreationMenu->addAction(actionCreateNewRasterLayer);
|
||||
layerCreationMenu->addAction(actionCreateNewShapedLayer);
|
||||
|
||||
// Attach all actions to Layer
|
||||
layerMenu = new QMenu(tr("&Layer"), this);
|
||||
layerMenu->addMenu(layerCreationMenu);
|
||||
@@ -626,7 +626,7 @@ void IntelliPhotoGui::createGui(){
|
||||
// create Gui elements
|
||||
// get and set max width and height
|
||||
paintingArea = new PaintingArea(1280, 720);
|
||||
paintingArea->DummyGui = this;
|
||||
paintingArea->guiReference = this;
|
||||
|
||||
preview = QPixmap(":/Icons/Buttons/icons/circle-tool.svg");
|
||||
CircleButton = new QPushButton();
|
||||
@@ -740,8 +740,14 @@ void IntelliPhotoGui::createGui(){
|
||||
QString String = QString("%1x%2").arg(paintingArea->Canvas->width()).arg(paintingArea->Canvas->height());
|
||||
dimCanvas->setText(String);
|
||||
|
||||
ScrollArea = new QScrollArea(this);
|
||||
ScrollArea->setBackgroundRole(QPalette::Dark);
|
||||
ScrollArea->setWidget(paintingArea);
|
||||
ScrollArea->setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||
ScrollArea->setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOn);
|
||||
|
||||
// set gui elements
|
||||
mainLayout->addWidget(paintingArea,1,1,20,1);
|
||||
mainLayout->addWidget(ScrollArea,1,1,20,1);
|
||||
mainLayout->addWidget(CircleButton,1,2,1,1);
|
||||
mainLayout->addWidget(FloodFillButton,1,3,1,1);
|
||||
mainLayout->addWidget(LineButton,2,2,1,1);
|
||||
@@ -846,7 +852,9 @@ void IntelliPhotoGui::UpdateGui(){
|
||||
tmp.fill(Qt::transparent);
|
||||
preview = preview.fromImage(tmp);
|
||||
}
|
||||
ActiveLayerImageLabel->setPixmap(preview.scaled(Buttonsize * 2));
|
||||
|
||||
|
||||
ActiveLayerImageLabel->setPixmap(preview.scaled(Buttonsize * 2));
|
||||
|
||||
string = QString("background-color: %1").arg(paintingArea->colorPicker.getFirstColor().name());
|
||||
FirstColorButton->setStyleSheet(string);
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <QTextEdit>
|
||||
#include <QLabel>
|
||||
#include <QLineEdit>
|
||||
#include <QScrollArea>
|
||||
#include "IntelliInputDialog.h"
|
||||
|
||||
//for unit testing
|
||||
@@ -96,10 +97,11 @@ void slotSetInnerAlpha();
|
||||
void slotResetTools();
|
||||
|
||||
private:
|
||||
|
||||
//setup functions for gui
|
||||
void createActions();
|
||||
void createMenus();
|
||||
void createGui();
|
||||
// Set the style of the GUI
|
||||
void setIntelliStyle();
|
||||
|
||||
// Will check if changes have occurred since last save
|
||||
@@ -107,13 +109,19 @@ bool maybeSave();
|
||||
// Opens the Save dialog and saves
|
||||
bool saveFile(const QByteArray &fileFormat);
|
||||
|
||||
//basic to set tool values to begin
|
||||
void setDefaultToolValue();
|
||||
|
||||
// What we'll draw on
|
||||
PaintingArea* paintingArea;
|
||||
|
||||
const QSize Buttonsize = QSize(35,35);
|
||||
//used to display a preview of the active layer
|
||||
QPixmap preview;
|
||||
|
||||
//size of all buttons
|
||||
const QSize Buttonsize = QSize(35,35);
|
||||
|
||||
//buttons used for gui
|
||||
QPushButton* CircleButton;
|
||||
QPushButton* FloodFillButton;
|
||||
QPushButton* LineButton;
|
||||
@@ -121,35 +129,42 @@ QPushButton* PenButton;
|
||||
QPushButton* PlainButton;
|
||||
QPushButton* PolygonButton;
|
||||
QPushButton* RectangleButton;
|
||||
QLabel* WidthLine;
|
||||
QLabel* innerAlphaLine;
|
||||
QLineEdit* EditLineWidth;
|
||||
QLineEdit* EditLineInnerAlpha;
|
||||
QIntValidator* ValidatorLineWidth;
|
||||
QIntValidator* ValidatorInnerAlpha;
|
||||
|
||||
QPushButton* FirstColorButton;
|
||||
QPushButton* SecondColorButton;
|
||||
QPushButton* SwitchColorButton;
|
||||
|
||||
QLabel* ActiveLayerLine;
|
||||
QLabel* ActiveLayerImageLabel;
|
||||
|
||||
QPushButton* dimActive;
|
||||
QPushButton* dimCanvas;
|
||||
|
||||
//labels used for gui
|
||||
QLabel* WidthLine;
|
||||
QLabel* innerAlphaLine;
|
||||
QLabel* ActiveLayerLine;
|
||||
QLabel* ActiveLayerImageLabel;
|
||||
|
||||
//scroll area to display canvas
|
||||
QScrollArea* ScrollArea;
|
||||
|
||||
//line edits used for gui
|
||||
QLineEdit* EditLineWidth;
|
||||
QLineEdit* EditLineInnerAlpha;
|
||||
|
||||
//int validator used for gui
|
||||
QIntValidator* ValidatorLineWidth;
|
||||
QIntValidator* ValidatorInnerAlpha;
|
||||
|
||||
|
||||
// The menu widgets
|
||||
QMenu*saveAsMenu;
|
||||
QMenu*fileMenu;
|
||||
QMenu*renderMenu;
|
||||
QMenu*optionMenu;
|
||||
QMenu*layerCreationMenu;
|
||||
QMenu*layerMenu;
|
||||
QMenu*colorMenu;
|
||||
QMenu*toolCreationMenu;
|
||||
QMenu*toolSettingsMenu;
|
||||
QMenu*toolMenu;
|
||||
QMenu*helpMenu;
|
||||
QMenu* saveAsMenu;
|
||||
QMenu* fileMenu;
|
||||
QMenu* renderMenu;
|
||||
QMenu* optionMenu;
|
||||
QMenu* layerCreationMenu;
|
||||
QMenu* layerMenu;
|
||||
QMenu* colorMenu;
|
||||
QMenu* toolCreationMenu;
|
||||
QMenu* toolSettingsMenu;
|
||||
QMenu* toolMenu;
|
||||
QMenu* helpMenu;
|
||||
|
||||
// All the actions that can occur
|
||||
// meta image actions (need further modularisation)
|
||||
@@ -175,7 +190,9 @@ QAction* actionCreatePolygonTool;
|
||||
QAction* actionCreateFloodFillTool;
|
||||
|
||||
// dimension actions
|
||||
QAction*actionChangeDim;
|
||||
QAction* actionChangeDim;
|
||||
QAction* actionSetWidth;
|
||||
QAction* actionSetInnerAlpha;
|
||||
|
||||
// dialog actions
|
||||
QAction* actionAboutDialog;
|
||||
@@ -198,8 +215,7 @@ QAction* actionMoveLayerDown;
|
||||
// Actions tied to specific file formats
|
||||
QList<QAction*> actionSaveAs;
|
||||
|
||||
QAction* actionSetWidth;
|
||||
QAction* actionSetInnerAlpha;
|
||||
|
||||
|
||||
// main GUI elements
|
||||
QWidget* centralGuiWidget;
|
||||
|
||||
@@ -20,7 +20,7 @@
|
||||
|
||||
|
||||
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
|
||||
: QWidget(parent){
|
||||
: QLabel(parent){
|
||||
this->Tool = nullptr;
|
||||
this->setLayerDimensions(maxWidth, maxHeight);
|
||||
|
||||
@@ -120,7 +120,7 @@ void PaintingArea::setPolygon(int idx){
|
||||
delete this->Tool;
|
||||
this->Tool = new IntelliToolPolygon(this,&colorPicker,&Toolsettings, true);
|
||||
isSettingPolygon = true;
|
||||
this->DummyGui->setToolWidth(5);
|
||||
this->guiReference->setToolWidth(5);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -174,7 +174,7 @@ void PaintingArea::moveActiveLayer(int idx){
|
||||
}else if(idx==-1) {
|
||||
this->selectLayerDown();
|
||||
}
|
||||
DummyGui->UpdateGui();
|
||||
guiReference->UpdateGui();
|
||||
}
|
||||
|
||||
void PaintingArea::slotActivateLayer(int a){
|
||||
@@ -322,11 +322,16 @@ void PaintingArea::wheelEvent(QWheelEvent*event){
|
||||
// The QPaintEvent is sent to widgets that need to
|
||||
// update themselves
|
||||
void PaintingArea::paintEvent(QPaintEvent*event){
|
||||
this->setFixedSize(QSize(maxWidth,maxHeight));
|
||||
this->drawLayers();
|
||||
|
||||
QPainter painter(this);
|
||||
QRect dirtyRec = event->rect();
|
||||
painter.drawImage(dirtyRec, *Canvas, dirtyRec);
|
||||
QPainter painter(this);
|
||||
|
||||
//insert zoom factor here
|
||||
painter.scale(1,1);
|
||||
|
||||
//calulate image here for scroll
|
||||
painter.drawImage(0,0, *Canvas);
|
||||
update();
|
||||
}
|
||||
|
||||
|
||||
@@ -50,7 +50,7 @@ struct LayerObject {
|
||||
/*!
|
||||
* \brief The PaintingArea class manages the methods and stores information about the current painting area, which is the currently opened project
|
||||
*/
|
||||
class PaintingArea : public QWidget
|
||||
class PaintingArea : public QLabel
|
||||
{
|
||||
friend UnitTest;
|
||||
// Declares our class as a QObject which is the base class
|
||||
@@ -228,6 +228,7 @@ void selectLayerDown();
|
||||
IntelliTool* copyActiveTool();
|
||||
|
||||
QImage* Canvas;
|
||||
QImage ScaledCanvas;
|
||||
int maxWidth;
|
||||
int maxHeight;
|
||||
|
||||
@@ -235,7 +236,7 @@ bool isSettingPolygon = false;
|
||||
|
||||
IntelliRenderSettings renderSettings;
|
||||
IntelliTool* Tool;
|
||||
IntelliPhotoGui* DummyGui;
|
||||
IntelliPhotoGui* guiReference;
|
||||
|
||||
std::vector<LayerObject> layerBundle;
|
||||
int activeLayer = -1;
|
||||
|
||||
@@ -50,7 +50,7 @@ void IntelliTool::onMouseMoved(int x, int y){
|
||||
|
||||
void IntelliTool::onWheelScrolled(int value){
|
||||
//if needed for future general tasks implement in here
|
||||
Area->DummyGui->setToolWidth(value + Toolsettings->getLineWidth());
|
||||
Area->guiReference->setToolWidth(value + Toolsettings->getLineWidth());
|
||||
}
|
||||
|
||||
bool IntelliTool::createToolLayer(){
|
||||
@@ -88,7 +88,7 @@ void IntelliTool::mergeToolLayer(){
|
||||
if(Canvas->image->getPolygonData().size() > 0) {
|
||||
activeLayer->image->setPolygon(Canvas->image->getPolygonData());
|
||||
}
|
||||
Area->DummyGui->UpdateGui();
|
||||
Area->guiReference->UpdateGui();
|
||||
}
|
||||
|
||||
void IntelliTool::deleteToolLayer(){
|
||||
|
||||
Reference in New Issue
Block a user