mirror of
https://github.com/creyD/intelliphoto.git
synced 2026-04-12 19:40:28 +02:00
Merge branch 'dev' of https://gitlab.com/creyd/intelliphoto into dev
This commit is contained in:
@@ -40,7 +40,7 @@ void IntelliImage::resizeImage(QImage*image, const QSize &newSize){
|
||||
return;
|
||||
|
||||
// Create a new image to display and fill it with white
|
||||
QImage newImage(newSize, QImage::Format_ARGB32);
|
||||
QImage newImage(newSize, QImage::Format_ARGB32);
|
||||
newImage.fill(qRgb(255, 255, 255));
|
||||
|
||||
// Draw the image
|
||||
|
||||
@@ -14,7 +14,7 @@ IntelliRasterImage::~IntelliRasterImage(){
|
||||
}
|
||||
|
||||
IntelliImage* IntelliRasterImage::getDeepCopy(){
|
||||
IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), false);
|
||||
IntelliRasterImage* raster = new IntelliRasterImage(imageData.width(), imageData.height(), false);
|
||||
raster->imageData.fill(Qt::transparent);
|
||||
raster->TypeOfImage = IntelliImage::ImageType::RASTERIMAGE;
|
||||
return raster;
|
||||
|
||||
@@ -19,7 +19,7 @@ QImage IntelliShapedImage::getDisplayable(int alpha){
|
||||
}
|
||||
|
||||
IntelliImage* IntelliShapedImage::getDeepCopy(){
|
||||
IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), false);
|
||||
IntelliShapedImage* shaped = new IntelliShapedImage(imageData.width(), imageData.height(), false);
|
||||
shaped->setPolygon(this->polygonData);
|
||||
shaped->imageData.fill(Qt::transparent);
|
||||
shaped->TypeOfImage = IntelliImage::ImageType::SHAPEDIMAGE;
|
||||
@@ -31,7 +31,7 @@ void IntelliShapedImage::calculateVisiblity(){
|
||||
this->imageData = imageData.convertToFormat(QImage::Format_ARGB32);
|
||||
}
|
||||
|
||||
if(polygonData.size()<=2) {
|
||||
if(polygonData.size()<=2) {
|
||||
QColor clr;
|
||||
for(int y=0; y<imageData.height(); y++) {
|
||||
for(int x=0; x<imageData.width(); x++) {
|
||||
@@ -50,7 +50,7 @@ void IntelliShapedImage::calculateVisiblity(){
|
||||
for(int x=0; x<imageData.width(); x++) {
|
||||
QPoint ptr(x,y);
|
||||
clr = imageData.pixelColor(x,y);
|
||||
bool isInPolygon = IntelliTriangulation::isInPolygon(triangles, ptr);
|
||||
bool isInPolygon = IntelliTriangulation::isInPolygon(triangles, ptr);
|
||||
if(isInPolygon) {
|
||||
clr.setAlpha(std::min(255, clr.alpha()));
|
||||
}else{
|
||||
@@ -90,7 +90,7 @@ void IntelliShapedImage::setPolygon(const std::vector<QPoint>& polygonData){
|
||||
for(auto element:polygonData) {
|
||||
this->polygonData.push_back(QPoint(element.x(), element.y()));
|
||||
}
|
||||
triangles = IntelliTriangulation::calculateTriangles(polygonData);
|
||||
triangles = IntelliTriangulation::calculateTriangles(polygonData);
|
||||
}
|
||||
calculateVisiblity();
|
||||
return;
|
||||
|
||||
@@ -21,21 +21,21 @@
|
||||
PaintingArea::PaintingArea(int maxWidth, int maxHeight, QWidget*parent)
|
||||
: QWidget(parent){
|
||||
this->Tool = nullptr;
|
||||
this->setLayerDimensions(maxWidth, maxHeight);
|
||||
//this->addLayer(200,200,0,0,IntelliImage::ImageType::SHAPEDIMAGE);
|
||||
//layerBundle[0].image->drawPlain(QColor(0,0,255,255));
|
||||
//std::vector<QPoint> polygon;
|
||||
//polygon.push_back(QPoint(100,000));
|
||||
//polygon.push_back(QPoint(200,100));
|
||||
//polygon.push_back(QPoint(100,200));
|
||||
//polygon.push_back(QPoint(000,100));
|
||||
//layerBundle[0].image->setPolygon(polygon);
|
||||
//
|
||||
//this->addLayer(200,200,150,150,IntelliImage::ImageType::RASTERIMAGE);
|
||||
//layerBundle[1].image->drawPlain(QColor(0,255,0,255));
|
||||
//layerBundle[1].alpha=200;
|
||||
this->setLayerDimensions(maxWidth, maxHeight);
|
||||
this->addLayer(200,200,0,0,IntelliImage::ImageType::SHAPEDIMAGE);
|
||||
layerBundle[0].image->drawPlain(QColor(0,0,255,255));
|
||||
std::vector<QPoint> polygon;
|
||||
polygon.push_back(QPoint(100,000));
|
||||
polygon.push_back(QPoint(200,100));
|
||||
polygon.push_back(QPoint(100,200));
|
||||
polygon.push_back(QPoint(000,100));
|
||||
layerBundle[0].image->setPolygon(polygon);
|
||||
|
||||
activeLayer=-1;
|
||||
this->addLayer(200,200,150,150,IntelliImage::ImageType::RASTERIMAGE);
|
||||
layerBundle[1].image->drawPlain(QColor(0,255,0,255));
|
||||
layerBundle[1].alpha=200;
|
||||
|
||||
activeLayer=0;
|
||||
}
|
||||
|
||||
PaintingArea::~PaintingArea(){
|
||||
@@ -170,13 +170,13 @@ void PaintingArea::movePositionActive(int x, int y){
|
||||
}
|
||||
|
||||
void PaintingArea::moveActiveLayer(int idx){
|
||||
if(Tool != nullptr){
|
||||
if(Tool->getIsDrawing()){
|
||||
IntelliTool* temp = copyActiveTool();
|
||||
delete this->Tool;
|
||||
this->Tool = temp;
|
||||
}
|
||||
}
|
||||
if(Tool != nullptr) {
|
||||
if(Tool->getIsDrawing()) {
|
||||
IntelliTool* temp = copyActiveTool();
|
||||
delete this->Tool;
|
||||
this->Tool = temp;
|
||||
}
|
||||
}
|
||||
if(idx==1) {
|
||||
this->selectLayerUp();
|
||||
}else if(idx==-1) {
|
||||
|
||||
@@ -22,13 +22,13 @@
|
||||
* \param widthOffset - Stores the number of pixles from the left side of the painting area
|
||||
* \param heightOffset - Stores the number of pixles from the top of the painting area
|
||||
*/
|
||||
struct LayerObject{
|
||||
IntelliImage* image;
|
||||
int width;
|
||||
int height;
|
||||
int widthOffset;
|
||||
int heightOffset;
|
||||
int alpha=255;
|
||||
struct LayerObject {
|
||||
IntelliImage* image;
|
||||
int width;
|
||||
int height;
|
||||
int widthOffset;
|
||||
int heightOffset;
|
||||
int alpha=255;
|
||||
};
|
||||
|
||||
/*!
|
||||
@@ -36,12 +36,12 @@ struct LayerObject{
|
||||
*/
|
||||
class PaintingArea : public QWidget
|
||||
{
|
||||
// Declares our class as a QObject which is the base class
|
||||
// for all Qt objects
|
||||
// QObjects handle events
|
||||
Q_OBJECT
|
||||
friend IntelliTool;
|
||||
friend IntelliPhotoGui;
|
||||
// Declares our class as a QObject which is the base class
|
||||
// for all Qt objects
|
||||
// QObjects handle events
|
||||
Q_OBJECT
|
||||
friend IntelliTool;
|
||||
friend IntelliPhotoGui;
|
||||
public:
|
||||
/*!
|
||||
* \brief PaintingArea is the constructor of the PaintingArea class, which initiates the working environment
|
||||
@@ -181,50 +181,50 @@ public:
|
||||
IntelliColorPicker colorPicker;
|
||||
|
||||
public slots:
|
||||
// Events to handle
|
||||
/*!
|
||||
* \brief The slotActivateLayer method handles the event of selecting one layer as active
|
||||
* \param a - idx of the layer to be active
|
||||
*/
|
||||
void slotActivateLayer(int a);
|
||||
/*!
|
||||
* \brief The slotDeleteActiveLayer method handles the deletion of the active layer
|
||||
*/
|
||||
void slotDeleteActiveLayer();
|
||||
// Events to handle
|
||||
/*!
|
||||
* \brief The slotActivateLayer method handles the event of selecting one layer as active
|
||||
* \param a - idx of the layer to be active
|
||||
*/
|
||||
void slotActivateLayer(int a);
|
||||
/*!
|
||||
* \brief The slotDeleteActiveLayer method handles the deletion of the active layer
|
||||
*/
|
||||
void slotDeleteActiveLayer();
|
||||
|
||||
protected:
|
||||
void mousePressEvent(QMouseEvent *event) override;
|
||||
void mouseMoveEvent(QMouseEvent *event) override;
|
||||
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||
void mousePressEvent(QMouseEvent*event) override;
|
||||
void mouseMoveEvent(QMouseEvent*event) override;
|
||||
void mouseReleaseEvent(QMouseEvent*event) override;
|
||||
|
||||
void wheelEvent(QWheelEvent *event) override;
|
||||
// Updates the painting area where we are painting
|
||||
void paintEvent(QPaintEvent *event) override;
|
||||
void wheelEvent(QWheelEvent*event) override;
|
||||
// Updates the painting area where we are painting
|
||||
void paintEvent(QPaintEvent*event) override;
|
||||
|
||||
// Makes sure the area we are drawing on remains
|
||||
// as large as the widget
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
// Makes sure the area we are drawing on remains
|
||||
// as large as the widget
|
||||
void resizeEvent(QResizeEvent*event) override;
|
||||
|
||||
private:
|
||||
void setLayerDimensions(int maxWidth, int maxHeight);
|
||||
void selectLayerUp();
|
||||
void selectLayerDown();
|
||||
IntelliTool* copyActiveTool();
|
||||
void setLayerDimensions(int maxWidth, int maxHeight);
|
||||
void selectLayerUp();
|
||||
void selectLayerDown();
|
||||
IntelliTool* copyActiveTool();
|
||||
|
||||
QImage* Canvas;
|
||||
int maxWidth;
|
||||
int maxHeight;
|
||||
QImage* Canvas;
|
||||
int maxWidth;
|
||||
int maxHeight;
|
||||
|
||||
IntelliRenderSettings renderSettings;
|
||||
IntelliTool* Tool;
|
||||
IntelliPhotoGui* DummyGui;
|
||||
|
||||
std::vector<LayerObject> layerBundle;
|
||||
int activeLayer=-1;
|
||||
std::vector<LayerObject> layerBundle;
|
||||
int activeLayer=-1;
|
||||
|
||||
void drawLayers(bool forSaving=false);
|
||||
void drawLayers(bool forSaving=false);
|
||||
|
||||
void resizeLayer(QImage *image_res, const QSize &newSize);
|
||||
void resizeLayer(QImage*image_res, const QSize &newSize);
|
||||
|
||||
// Helper for Tool
|
||||
bool createTempTopLayer(int idx);
|
||||
|
||||
Reference in New Issue
Block a user