Skip to content
Snippets Groups Projects
Commit fc1a668d authored by passscod's avatar passscod
Browse files

neu

parent 645e6005
Branches
No related tags found
No related merge requests found
......@@ -12,6 +12,12 @@ void Picture::addLayer(layer_t *layer){
if(maxY<layer->qImage->size().height()+layer->yOffset){
maxY=layer->qImage->size().height()+layer->yOffset;
}
if(minX>layer->xOffset||minX==-1){
minX=layer->xOffset;
}
if(minY>layer->yOffset||minY==-1){
minY=layer->yOffset;
}
return;
}
void Picture::addLayer(QImage *qImage){
......@@ -27,6 +33,8 @@ void Picture::addLayer(QImage *qImage){
if(maxY<qImage->size().height()){
maxY=qImage->size().height();
}
minX=0;
minY=0;
addLayer(layer);
return;
}
......@@ -43,6 +51,8 @@ void Picture::addLayer(int width, int height){
if(maxY<height){
maxY=height;
}
minX=0;
minY=0;
addLayer(layer);
return;
}
......@@ -51,6 +61,10 @@ void Picture::removeLayer(unsigned int index){
currentLayer=nullptr;
}
layers.erase(layers.begin()+index);
maxX=0;
maxY=0;
minX=-1;
minY=-1;
for (int i = 0; i < layers.size(); i++){
if(maxX<layers[i]->qImage->size().width()+layers[i]->xOffset){
maxX=layers[i]->qImage->size().width()+layers[i]->xOffset;
......@@ -58,6 +72,12 @@ void Picture::removeLayer(unsigned int index){
if(maxY<layers[i]->qImage->size().height()+layers[i]->yOffset){
maxY=layers[i]->qImage->size().height()+layers[i]->yOffset;
}
if(minX>layers[i]->xOffset||minX==-1){
minX=layers[i]->xOffset;
}
if(minY>layers[i]->yOffset||minY==-1){
minY=layers[i]->yOffset;
}
}
return;
}
......@@ -141,6 +161,9 @@ bool Picture::isVisible(unsigned int index){
QSize Picture::getMaxSize(){
return QSize(maxX,maxY);
}
QSize Picture::getMinOffset(){
return QSize(minX,minY);
}
int Picture::currentXOffset(){
return currentLayer->xOffset;
}
......@@ -156,40 +179,56 @@ int Picture::yOffset(unsigned int index){
void Picture::setCurrentXOffset(int offset){
currentLayer->xOffset+=offset;
maxX=0;
minX=-1;
for (int i = 0; i < layers.size(); i++){
if(maxX<layers[i]->qImage->size().width()+layers[i]->xOffset){
maxX=layers[i]->qImage->size().width()+layers[i]->xOffset;
}
if(minX>layers[i]->xOffset||minX==-1){
minX=layers[i]->xOffset;
}
}
return;
}
void Picture::setCurrentYOffset(int offset){
currentLayer->yOffset+=offset;
maxY=0;
minY=-1;
for (int i = 0; i < layers.size(); i++){
if(maxY<layers[i]->qImage->size().height()+layers[i]->yOffset){
maxY=layers[i]->qImage->size().height()+layers[i]->yOffset;
}
if(minY>layers[i]->yOffset||minY==-1){
minY=layers[i]->yOffset;
}
}
return;
}
void Picture::setXOffset(unsigned int index, int offset){
layers[index]->xOffset+=offset;
maxX=0;
minX=-1;
for (int i = 0; i < layers.size(); i++){
if(maxX<layers[i]->qImage->size().width()+layers[i]->xOffset){
maxX=layers[i]->qImage->size().width()+layers[i]->xOffset;
}
if(minX>layers[i]->xOffset||minX==-1){
minX=layers[i]->xOffset;
}
}
return;
}
void Picture::setYOffset(unsigned int index, int offset){
layers[index]->yOffset+=offset;
maxY=0;
minY=-1;
for (int i = 0; i < layers.size(); i++){
if(maxY<layers[i]->qImage->size().height()+layers[i]->yOffset){
maxY=layers[i]->qImage->size().height()+layers[i]->yOffset;
}
if(minY>layers[i]->yOffset||minY==-1){
minY=layers[i]->yOffset;
}
}
return;
}
......@@ -202,9 +241,12 @@ Picture::Picture(std::string name){
layers = std::vector<layer_t*>();
maxX=0;
maxY=0;
minX=-1;
minY=-1;
}
Picture::~Picture(){
for (unsigned int i = 0; i < layers.size(); i++){
delete layers[i];
}
}
......@@ -33,6 +33,7 @@ class Picture{
void makeVisible(unsigned int index, bool visible);
bool isVisible(unsigned int index);
QSize getMaxSize();
QSize getMinOffset();
unsigned int getLayerCount();
unsigned int getCurrentLayerIndex();
int currentXOffset();
......@@ -54,6 +55,8 @@ class Picture{
layer_t *currentLayer;
int maxX;
int maxY;
int minX;
int minY;
};
#endif /* !PICTURE_H */
......@@ -87,52 +87,12 @@ ImageViewer::ImageViewer(QWidget *parent)
connect(drawDock,QOverload<para1>::of(&DrawDock::drawShowI),this,&ImageViewer::drawShowI);
connect(drawDock,QOverload<para2>::of(&DrawDock::drawShowII),this,&ImageViewer::drawShowII);
/*
for(int i = 0; i <256; i++){
colorVect.append(QColor(255,255,255,255).rgba());
colorButtons.push_back(new QToolButton());
QString str;
str.sprintf("background-color: qlineargradient(stop:0 #%02x%02x%02x);",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
colorButtons[i]->setStyleSheet(str);
colorButtons[i]->setCheckable(true);
connect(colorButtons[i], SIGNAL(clicked()),this, SLOT(changeColor()));
}*/
//newLayerDock->setColorVect(colorVect);
//drawDock->setColorVect(colorVect);
//colorDock->setColorVect(colorVect);
transLationDock = new TranslationDock(interactionTool);
connect(transLationDock,QOverload<toolParameters_t*>::of(&TranslationDock::getParams),this,&ImageViewer::setTranslationParams);
connect(transLationDock,&TranslationDock::update,this,&ImageViewer::updateall);
/*
addColor(QColor(255,255,255,255),0);
addColor(QColor(127,127,127,255),1);
addColor(QColor(0,0,0,255),2);
addColor(QColor(0,255,255,255),3);
addColor(QColor(0,127,127,255),4);
addColor(QColor(127,255,255,255),5);
addColor(QColor(127,0,0,255),6);
addColor(QColor(255,127,127,255),7);
addColor(QColor(255,0,0,255),8);
addColor(QColor(255,0,255,255),9);
addColor(QColor(127,0,127,255),10);
addColor(QColor(255,127,255,255),11);
addColor(QColor(0,127,0,255),12);
addColor(QColor(127,255,127,255),13);
addColor(QColor(0,255,0,255),14);
addColor(QColor(255,255,0,255),15);
addColor(QColor(127,127,0,255),16);
addColor(QColor(255,255,127,255),17);
addColor(QColor(0,0,127,255),18);
addColor(QColor(127,127,255,255),19);
addColor(QColor(0,0,255,255),20);
addColor(QColor(0,0,0,0),255);*/
//createLayerDock();
colorDock = new ColorDock(interactionTool);
connect(colorDock,&ColorDock::updateVisible,this,&ImageViewer::updateVisible);
connect(colorDock,QOverload<QVector<QRgb>>::of(&ColorDock::updateColorVect),this,&ImageViewer::updateColorVector);
......@@ -161,55 +121,6 @@ ImageViewer::ImageViewer(QWidget *parent)
resize(QGuiApplication::primaryScreen()->availableSize() * 3 / 5);
}
//! [0]
//! [2]
/*
void ImageViewer::createColorDock(){
colorButtons = std::vector<QToolButton*>();
//QPixmap px(20, 20);
for(int i = 0; i <256; i++){
colorButtons.push_back(new QToolButton());
//px.fill(colorVect[i]);
//colorButtons[i]->setIcon(px);
colorButtons[i]->setCheckable(true);
QString str;
//str.append(qRed(colorVect[i]));
//str.append(";");
str.sprintf("background-color: qlineargradient(stop:0 #%02x%02x%02x);",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
//printf("background-color: #%02x%02x%02x;\n",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
colorButtons[i]->setStyleSheet(str);
//if(i==drawColorIndex){
// colorButton->setStyleSheet(str);
//}
connect(colorButtons[i], SIGNAL(clicked()),this, SLOT(changeColor()));
//connect(colorButtons[i], SIGNAL(clicked()),colorButtons[i], SLOT(toggle()));
}
colorDock = new QDockWidget(tr("Colortable"), this);
colorDock->setAllowedAreas(Qt::BottomDockWidgetArea);
colorLayout = new QGridLayout();
for (int i = 0; i < 64; i++) {
colorLayout->addWidget(colorButtons[4*i],0,i);
colorLayout->addWidget(colorButtons[4*i+1],1,i);
colorLayout->addWidget(colorButtons[4*i+2],2,i);
colorLayout->addWidget(colorButtons[4*i+3],3,i);
}
colors = new QWidget(colorDock);
colors->setLayout(colorLayout);
ColorScrollArea = new QScrollArea();
ColorScrollArea->setWidget(colors);
colorDock->setWidget(ColorScrollArea);
addDockWidget(Qt::BottomDockWidgetArea, colorDock);
colorDock->setFeatures(QDockWidget::DockWidgetMovable|QDockWidget::DockWidgetFloatable);
//
}*/
bool ImageViewer::loadFile(const QString &fileName)
{
......@@ -580,113 +491,6 @@ void ImageViewer::mouseReleaseEvent(QMouseEvent *event)
updateVisible();
}
}
/*
void ImageViewer::updateColors(){
QPixmap px(20, 20);
colorVect = interactionTool->getPicture()->getCurrentLayerAsQ()->colorTable();
for(int i = 0; i <256; i++){
px.fill(colorVect[i]);
//colorButtons[i]->setIcon(px);
QString str;
//str.append(qRed(colorVect[i]));
//str.append(";");
str.sprintf("background-color: qlineargradient(stop:0 #%02x%02x%02x);",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
//printf("background-color: #%02x%02x%02x;\n",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
colorButtons[i]->setStyleSheet(str);
}
newLayerDock->setColorVect(colorVect);
drawDock->setColorVect(colorVect);
if(interactionTool->getPicture()->isShaped()){
addColor(QColor(255,255,255,0),255);
QPainter p(&px);
QPen pen(QColor(255,0,0,255));
pen.setWidth(2);
p.setPen(pen);
p.drawLine(1,1,19,1);
p.drawLine(19,1,19,19);
p.drawLine(19,19,1,19);
p.drawLine(1,19,1,1);
p.drawLine(1,19,19,1);
p.drawLine(19,19,1,1);
//colorAct[255]->setIcon(px);
//colorAct[255]->setEnabled(false);
colorButtons[255]->setStyleSheet("background-color: #FFFFFF;\n");
colorButtons[255]->setIcon(px);
colorButtons[255]->setEnabled(false);
} else {
//colorAct[255]->setEnabled(true);
colorButtons[255]->setEnabled(true);
px.fill(QColor(255,255,255,0));
colorButtons[255]->setIcon(px);
}
//colorButton->setMenu(colorMenu);
}
void ImageViewer::addColor(QColor col, int pos){
QPixmap px(20, 20);
colorVect[pos]=col.rgba();
px.fill(colorVect[pos]);
//colorButtons[i]->setIcon(px);
QString str;
//str.append(qRed(colorVect[i]));
//str.append(";");
//str.sprintf("#%02x%02x%02x",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
str.sprintf("background-color: qlineargradient(stop:0.5 #%02x%02x%02x);",qRed(colorVect[pos]),qGreen(colorVect[pos]),qBlue(colorVect[pos]));
//printf("background-color: #%02x%02x%02x;\n",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
colorButtons[pos]->setStyleSheet(str);
colorButtons[pos]->setChecked(false);
if (hasLayer){
interactionTool->getPicture()->getCurrentLayerAsQ()->setColor(pos,colorVect[pos]);
//setImage(*interactionTool->getPicture()->getCurrentLayerAsQ());
//updateLayers();
layerDock->updateLayers();
updateVisible();
}
newLayerDock->setColorVect(colorVect);
drawDock->setColorVect(colorVect);
}
void ImageViewer::changeColor(){
for (int i = 0; i < colorButtons.size(); i++) {
if (colorButtons[i]->isChecked()){
QPixmap px(20, 20);
QString str2;
str2.sprintf("Color %d",i);
colorVect[i]=QColorDialog().getColor(Qt::white,nullptr,str2,QColorDialog::ShowAlphaChannel).rgba();
newLayerDock->setColorVect(colorVect);
drawDock->setColorVect(colorVect);
px.fill(colorVect[i]);
//colorButtons[i]->setIcon(px);
//colorAct[i]->setIcon(px);
QString str;
//str.append(qRed(colorVect[i]));
//str.append(";");
//str.sprintf("#%02x%02x%02x",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
str.sprintf("background-color: qlineargradient(stop:0.5 #%02x%02x%02x);",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
//printf("background-color: #%02x%02x%02x;\n",qRed(colorVect[i]),qGreen(colorVect[i]),qBlue(colorVect[i]));
colorButtons[i]->setStyleSheet(str);
//if(i==drawColorIndex){
// colorButton->setStyleSheet(str);
//}
colorButtons[i]->setChecked(false);
if (hasLayer){
interactionTool->getPicture()->getCurrentLayerAsQ()->setColor(i,colorVect[i]);
//setImage(*interactionTool->getPicture()->getCurrentLayerAsQ());
//updateLayers();
layerDock->updateLayers();
updateVisible();
}
//colorButton->setMenu(colorMenu);
}
}
}*/
void ImageViewer::newLayer(){
//param = new toolParameters_t;
......@@ -712,18 +516,32 @@ void ImageViewer::updateVisible(){
}
void ImageViewer::calculateVisible(){
QPixmap *px = new QPixmap(interactionTool->getPicture()->getMaxSize());
px->fill(QColor(0,0,0,0));
QSize ms = interactionTool->getPicture()->getMinOffset();
int mdx=ms.width()%10;
int mdy=ms.height()%10;
bool c=true;
bool ug=(px->size().height()/10+1-ms.height()/10)%2==1;
QPainter *painter= new QPainter(px);
QBrush *br1 = new QBrush(QColor(100,100,100));
QBrush *br2 = new QBrush(QColor(200,200,200));
for (int i = 0; i < px->size().width()/10+1;i++){
for (int j = 0; j < px->size().height()/10+1;j++){
if((i+j)&1){
painter->fillRect(i*10,j*10,10,10,*br1);
//QBrush *br3 = new QBrush(QColor(0,0,0,0));
for (int i = ms.width()/10; i < px->size().width()/10+1;i++){
if(!ug&&i>ms.width()/10){
c=!c;
}
for (int j = ms.height()/10; j < px->size().height()/10+1;j++){
if(c){
painter->fillRect(i*10+mdx,j*10+mdy,10,10,*br1);
c=!c;
} else {
painter->fillRect(i*10,j*10,10,10,*br2);
painter->fillRect(i*10+mdx,j*10+mdy,10,10,*br2);
c=!c;
}
}
}
//painter->fillRect(0,0,px->size().width(),ms.height(),*br3);
//painter->fillRect(0,0,ms.width(),px->size().height(),*br3);
for (int i = 0; i < interactionTool->getPicture()->getLayerCount(); i++) {
if (layerDock->isLayerCheckboxChecked(i)){
painter->drawImage(interactionTool->getPicture()->xOffset(i),interactionTool->getPicture()->yOffset(i),*interactionTool->getPicture()->getLayerAsQ(i));
......@@ -739,7 +557,6 @@ void ImageViewer::makeShaped(){
//updateColors();
colorDock->updateColors();
}
}
bool ImageViewer::getHasLayer(){
......
......@@ -121,37 +121,14 @@ private slots:
void about();
void draw();
void translate();
//void calcTranslation();
//void doTranslation();
void setTranslationParams(toolParameters_t * param);
void setMergeParams(toolParameters_t * param);
void updateHasLayer(bool b);
void updateall();
void updateWithoutLayer();
void updateVisible();
//void pencil();
//void startDraw();
//void lines();
//void notFilledRect();
//void filledRect();
//void existingColor();
//void newColor();
//void actualColorVect();
//void standartColorVect();
//void smallColorVect();
//void customColorVect();
//void setNewColor();
//void setDrawColor();
//void changeColor();
//void changeCurrentLayer();
//void updateVisible();
void makeShaped();
void newLayer();
//void addNewLayer();
//void setWidth(int w);
//void setNewLayerX(int w);
//void setNewLayerY(int w);
//void scrollAreaChanged();
void drawShowI(para1 p);
void drawShowII(para2 p);
void updateLayerDock();
......@@ -159,14 +136,7 @@ private slots:
private:
void createActions();
//void createColorDock();
//void createLayerDock();
//void createTranslateDock();
//void createDrawDock();
void createMenus();
//void createNewLayerDock();
//void addColor(QColor col, int pos);
void updateActions();
bool saveFile(const QString &fileName);
void setImage(QImage newImage);
......@@ -177,43 +147,11 @@ private:
QImage image;
QLabel *imageLabel;
QScrollArea *scrollArea;
//QScrollArea *ColorScrollArea;
//QScrollArea *layerScrollArea;
//QWidget *colors;
//QWidget *layers;
QMenu *viewMenu;
//QDockWidget *colorDock;
QDockWidget *layerDockW;
//QGridLayout* colorLayout;
//QGridLayout* layerLayout;
//std::vector<QToolButton*> colorButtons;
//std::vector<QPushButton*> layerButtons;
//std::vector<QCheckBox*> layerCheckboxes;
QVector<QRgb> colorVect;
QVector<QRgb> newColorVect;
//QList<QAction*> colorAct;
//QPushButton *colorButton;
//QSlider *drawSlider;
//QSpinBox *drawSpinbox;
//QSlider *newLayerXSlider;
//QSpinBox *newLayerXSpinbox;
//QSlider *newLayerYSlider;
//QSpinBox *newLayerYSpinbox;
//QPushButton *drawStartButton;
//QMenu *colorMenu;
/*QCheckBox *mirrorCheckbox;
QLineEdit *zoomXInp;
QLineEdit *zoomYInp;
QLineEdit *rotInp;
QLabel *translationLabelA;
QLabel *translationLabelB;
QLabel *translationLabelC;
QLabel *translationLabelD;
QMatrix *transMat;*/
//QPushButton *newColorButton;
//drawModus_e actDrawModus = drawModus_e::pencil;
//QRgb newLayerColor;
//QGridLayout *newLayerLayout;
QPixmap *pixmap;
//QCheckBox *ignoreShaped;
//QRadioButton *newColormap[4];
......@@ -222,13 +160,6 @@ private:
bool moveStart = false;
//bool isNewLayerColor = false;
double scaleFactor = 1.0;
//bool isDraw=false;
//bool isRot;
//int drawWidth=3;
//int newLayerX = 100;
//int newLayerY = 100;
//int drawColorIndex=0;
//bool drawStart=false;
bool hasLayer=false;
toolParameters_t *param = nullptr;
InteractionTool *interactionTool;
......
No preview for this file type
......@@ -203,7 +203,6 @@ DIST = /usr/lib/qt/mkspecs/features/spec_pre.prf \
/usr/lib/qt/mkspecs/features/qt_config.prf \
/usr/lib/qt/mkspecs/linux-g++/qmake.conf \
/usr/lib/qt/mkspecs/features/spec_post.prf \
../GUI/.qmake.stash \
/usr/lib/qt/mkspecs/features/exclusive_builds.prf \
/usr/lib/qt/mkspecs/features/toolchain.prf \
/usr/lib/qt/mkspecs/features/default_pre.prf \
......@@ -374,7 +373,6 @@ Makefile: ../GUI/imageviewer.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/l
/usr/lib/qt/mkspecs/features/qt_config.prf \
/usr/lib/qt/mkspecs/linux-g++/qmake.conf \
/usr/lib/qt/mkspecs/features/spec_post.prf \
.qmake.stash \
/usr/lib/qt/mkspecs/features/exclusive_builds.prf \
/usr/lib/qt/mkspecs/features/toolchain.prf \
/usr/lib/qt/mkspecs/features/default_pre.prf \
......@@ -502,7 +500,6 @@ Makefile: ../GUI/imageviewer.pro /usr/lib/qt/mkspecs/linux-g++/qmake.conf /usr/l
/usr/lib/qt/mkspecs/features/qt_config.prf:
/usr/lib/qt/mkspecs/linux-g++/qmake.conf:
/usr/lib/qt/mkspecs/features/spec_post.prf:
.qmake.stash:
/usr/lib/qt/mkspecs/features/exclusive_builds.prf:
/usr/lib/qt/mkspecs/features/toolchain.prf:
/usr/lib/qt/mkspecs/features/default_pre.prf:
......
No preview for this file type
No preview for this file type
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment