void PaintArea::mouseMoveEvent(QMouseEvent *event) { if (_tool == 1) { if (scribbling) drawLineTo(event->pos()); } else if (_tool == 2) { if (scribbling) drawEraser(event->pos()); } else if (_tool == 3) { image = _scroll; QPoint This = lastPoint; _scroll = image; drawStraightLine(lastPoint, event->pos()); lastPoint = This; } else if (_tool == 4) { image = _scroll; QPoint This = lastPoint; _scroll = image; drawRectangle(lastPoint, event->pos()); lastPoint = This; } else if (_tool == 5) { image = _scroll; QPoint This = lastPoint; _scroll = image; drawEclipse(lastPoint, event->pos()); lastPoint = This; } else if (_tool == 8) { image = _scroll; QPoint This = lastPoint; _scroll = image; drawRectRound(lastPoint, event->pos()); lastPoint = This; } else if (_tool == 9) { image = _scroll; QPoint This = lastPoint; _scroll = image; drawCopyRect(lastPoint, event->pos()); lastPoint = This; } else if (_tool == 11) { if (scribbling) drawSpray(event->pos()); } }
void PaintArea::mousePressEvent(QMouseEvent *event) { if (event->button() == Qt::RightButton) _right = true; else _right = false; if (_tool != 0) { _redo.clear(); emit noRedo(); } if (_isselect) { Undo(); _isselect = false; emit noCopy(); } lastPoint = event->pos(); if (_tool == 7) { _history.push_back(image); emit enableUndo(); drawWord(lastPoint); } else if (_tool == 6) { _history.push_back(image); emit enableUndo(); drawBucket(event->pos()); } else if (_tool == 10) { _history.push_back(image); emit enableUndo(); Paste(event->pos()); } else if (_tool == 12) { if (event->button() == Qt::LeftButton) zoomIn(); else zoomOut(); } else { _history.push_back(image); emit enableUndo(); _scroll = image; scribbling = true; if (_tool == 1) drawLineTo(event->pos()); else if (_tool == 2) drawEraser(event->pos()); else if (_tool == 11) drawSpray(event->pos()); } }
void PaintArea::mouseReleaseEvent(QMouseEvent *event) { if (_tool == 1) { if (event->button() == Qt::LeftButton && scribbling) { drawLineTo(event->pos()); scribbling = false; } } else if (_tool == 2) { if (event->button() == Qt::LeftButton && scribbling) { drawEraser(event->pos()); scribbling = false; } } else if (_tool == 3) { drawStraightLine(lastPoint, event->pos()); } else if (_tool == 4) { drawRectangle(lastPoint, event->pos()); } else if (_tool == 5) { drawEclipse(lastPoint, event->pos()); } else if (_tool == 8) { drawRectRound(lastPoint, event->pos()); } else if (_tool == 11) { if ((event->buttons() & Qt::LeftButton) && scribbling) drawSpray(event->pos()); } }
void canvas() { int button,mousex,mousey; //local mouse variables if(cur_panel==0&&canvas_flag!=1) { top_panel_buttons(tool_but_num,0,5); hover_text(cur_tool); button_click((2+cur_tool*20),2,(18+cur_tool*20),18); canvas_flag=1; } else if(cur_panel==1&&canvas_flag!=2) { hover_text(cur_tool); top_panel_buttons(buttons_data[cur_tool-1],0,5); button_click((2+cur_style*20),2,(18+cur_style*20),18); canvas_flag=2; } hover_text(cur_tool); getmousepos(&button,&mousex,&mousey); for(;mousey>20;getmousepos(&button,&mousex,&mousey)) { if(button==1) { restrictmouseptr(0,27,xmax,ymax); switch(cur_tool) { case 4: user_text(mousex,mousey); break; case 5: pencil(); break; case 6: brush(2); break; case 7: bfill(mousex,mousey); break; case 8: brush(1); break; case 9: user_pickcolor(); break; case 10: user_line(); break; case 11: drawRectangle(); break; case 12: drawEllipse(); break; case 13: drawSpray(); break; case 14: drawSpiral(); break; case 15:user_clip(); break; case 16:user_poly(); break; case 17:drawCircle(cur_style); break; } } else { restrictmouseptr(0,0,xmax,ymax); } } }
void KIconEditGrid::mouseReleaseEvent( QMouseEvent *e ) { if(!e || (e->button() != LeftButton)) return; int row = findRow( e->pos().y() ); int col = findCol( e->pos().x() ); btndown = false; end.setX(col); end.setY(row); int cell = row * numCols() + col; switch( tool ) { case Eraser: currentcolor = TRANSPARENT; case Freehand: { if(!img->valid(col, row)) return; setColor( cell, currentcolor ); //if ( selected != cell ) //{ //modified = true; int prevSel = selected; selected = cell; repaint((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize, false); repaint(col*cellsize,row*cellsize, cellsize, cellsize, false); //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); //updateCell( row, col, FALSE ); *((uint*)img->scanLine(row) + col) = colorAt(cell); p = *img; //} break; } case Ellipse: case Circle: case FilledEllipse: case FilledCircle: { drawEllipse(true); break; } case FilledRect: case Rect: { drawRect(true); break; } case Line: { drawLine(true); break; } case Spray: { drawSpray(QPoint(col, row)); break; } case FloodFill: { QApplication::setOverrideCursor(waitCursor); drawFlood(col, row, colorAt(cell)); QApplication::restoreOverrideCursor(); updateColors(); emit needPainting(); p = *img; break; } case Find: { currentcolor = colorAt(cell); if ( selected != cell ) { int prevSel = selected; selected = cell; repaint((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize, false); repaint(col*cellsize,row*cellsize, cellsize, cellsize, false); //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); //updateCell( row, col, FALSE ); } break; } default: break; } emit changed(QPixmap(p)); //emit colorschanged(numColors(), data()); }
void KIconEditGrid::mouseMoveEvent( QMouseEvent *e ) { if(!e) return; int row = findRow( e->pos().y() ); int col = findCol( e->pos().x() ); int cell = row * numCols() + col; QPoint tmpp(col, row); if(tmpp == end) return; if(img->valid(col, row)) { //debug("%d X %d", col, row); emit poschanged(col, row); emit xposchanged((col*scaling())+scaling()/2); // for the rulers emit yposchanged((row*scaling())+scaling()/2); } if(ispasting && !btndown && img->valid(col, row)) { if( (col + cbsize.width()) > (numCols()-1) ) insrect.setX(numCols()-insrect.width()); else insrect.setX(col); if( (row + cbsize.height()) > (numRows()-1) ) insrect.setY(numRows()-insrect.height()); else insrect.setY(row); insrect.setSize(cbsize); //debug("Moving: %d x %d", insrect.width(), insrect.height()); start = insrect.topLeft(); end = insrect.bottomRight(); drawRect(false); return; } if(!img->valid(col, row) || !btndown) return; end.setX(col); end.setY(row); if(isselecting) { if(tool == SelectRect) drawRect(false); else drawEllipse(false); return; } switch( tool ) { case Eraser: currentcolor = TRANSPARENT; case Freehand: { setColor( cell, currentcolor ); //img.setPixel(col, row, currentcolor.pixel()); if ( selected != cell ) { modified = true; int prevSel = selected; selected = cell; repaint((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize, false); repaint(col*cellsize,row*cellsize, cellsize, cellsize, false); //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); //updateCell( row, col, FALSE ); *((uint*)img->scanLine(row) + col) = (colorAt(cell)); } break; } case Find: { iconcolors.closestMatch(colorAt(cell)); if ( selected != cell ) { int prevSel = selected; selected = cell; repaint((prevSel%numCols())*cellsize,(prevSel/numCols())*cellsize, cellsize, cellsize, false); repaint(col*cellsize,row*cellsize, cellsize, cellsize, false); //updateCell( prevSel/numCols(), prevSel%numCols(), FALSE ); //updateCell( row, col, FALSE ); } break; } case Ellipse: case Circle: case FilledEllipse: case FilledCircle: { drawEllipse(false); break; } //case Select: case FilledRect: case Rect: { drawRect(false); break; } case Line: { drawLine(false); break; } case Spray: { drawSpray(QPoint(col, row)); modified = true; break; } default: break; } p = *img; emit changed(QPixmap(p)); //emit colorschanged(numColors(), data()); }