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

neu

parent 645e6005
No related branches found
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