From 2204b5c9f222a62d9538e22a86f1daeb1ccd6a96 Mon Sep 17 00:00:00 2001 From: dipsywong98 Date: Fri, 1 Mar 2019 00:52:01 +0800 Subject: [PATCH 1/3] fixing warp brush --- ImpressionistDoc.h | 1 + PaintView.cpp | 7 +------ 2 files changed, 2 insertions(+), 6 deletions(-) diff --git a/ImpressionistDoc.h b/ImpressionistDoc.h index ab0a1f7..2eec6c6 100644 --- a/ImpressionistDoc.h +++ b/ImpressionistDoc.h @@ -75,6 +75,7 @@ class ImpressionistDoc unsigned char* m_ucHistory; //for undo unsigned char* m_ucAnother; //for another image + unsigned char *m_ucBackup = NULL; int m_alphaMapWidth; int m_alphaMapHeight; diff --git a/PaintView.cpp b/PaintView.cpp index 19faf60..9475d39 100644 --- a/PaintView.cpp +++ b/PaintView.cpp @@ -118,11 +118,6 @@ void PaintView::draw() drawWidth = min( m_nWindowWidth, m_pDoc->m_nPaintWidth ); drawHeight = min( m_nWindowHeight, m_pDoc->m_nPaintHeight ); - if (m_pDoc->m_ucBackup) - { - memcpy(m_pDoc->m_ucPainting, m_pDoc->m_ucBackup, drawWidth*drawHeight * 3); - } - startrow = m_pDoc->m_nPaintHeight - (scrollpos.y + drawHeight); if ( startrow < 0 ) startrow = 0; @@ -166,7 +161,7 @@ void PaintView::draw() case LEFT_MOUSE_DRAG: // updatePainting(); m_pDoc->m_pCurrentBrush->BrushMove( source, target ); - SaveCurrentContent(); + // SaveCurrentContent(); // updateViewport(); break; case LEFT_MOUSE_UP: From 14e0080ef81c7336909e7165a9dfcaf7da01f431 Mon Sep 17 00:00:00 2001 From: dipsywong98 Date: Fri, 1 Mar 2019 01:17:57 +0800 Subject: [PATCH 2/3] fixed overlay issues --- ImpressionistDoc.cpp | 2 +- PaintView.cpp | 256 ++++++++++++++++++++++--------------------- polygonpainterly.bmp | Bin 380454 -> 0 bytes 3 files changed, 134 insertions(+), 124 deletions(-) delete mode 100644 polygonpainterly.bmp diff --git a/ImpressionistDoc.cpp b/ImpressionistDoc.cpp index f159b6c..855b39c 100644 --- a/ImpressionistDoc.cpp +++ b/ImpressionistDoc.cpp @@ -140,7 +140,7 @@ void ImpressionistDoc::swapContent() m_ucPainting = m_ucBitmap; m_ucBitmap = temp; m_ucOriginal = temp; - memcpy(m_ucBackup, m_ucPainting, m_nWidth*m_nHeight * 3); + //memcpy(m_ucBackup, m_ucPainting, m_nWidth*m_nHeight * 3); m_pUI->m_origView->refresh(); m_pUI->m_paintView->refresh(); } diff --git a/PaintView.cpp b/PaintView.cpp index 9475d39..c35dbdf 100644 --- a/PaintView.cpp +++ b/PaintView.cpp @@ -31,7 +31,7 @@ extern std::vector> getGaussianKernel(float sigma, int size); #endif static int eventToDo; -static int isAnEvent=0; +static int isAnEvent = 0; static Point coord; void PaintView::updateViewport() @@ -60,7 +60,9 @@ void PaintView::updateViewport() }); m_pPaintBitstart = m_pDoc->viewport.dataPtr + 3 * ((m_pDoc->m_nPaintWidth * startrow) + scrollpos.x); + RestoreContent(); + m_pPaintBitstart = m_pDoc->m_ucPainting + 3 * ((m_pDoc->m_nPaintWidth * startrow) + scrollpos.x); } @@ -73,66 +75,66 @@ void PaintView::updatePainting() glFlush(); } -PaintView::PaintView(int x, - int y, - int w, - int h, - const char* l) - : Fl_Gl_Window(x,y,w,h,l) +PaintView::PaintView(int x, + int y, + int w, + int h, + const char* l) + : Fl_Gl_Window(x, y, w, h, l) { - m_nWindowWidth = w; - m_nWindowHeight = h; + m_nWindowWidth = w; + m_nWindowHeight = h; } void PaintView::draw() { - #ifndef MESA +#ifndef MESA // To avoid flicker on some machines. glDrawBuffer(GL_FRONT_AND_BACK); - #endif // !MESA +#endif // !MESA glEnable(GL_BLEND); glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); - if(!valid()) + if (!valid()) { glClearColor(0.7f, 0.7f, 0.7f, 1.0); // We're only using 2-D, so turn off depth - glDisable( GL_DEPTH_TEST ); + glDisable(GL_DEPTH_TEST); ortho(); - glClear( GL_COLOR_BUFFER_BIT ); + glClear(GL_COLOR_BUFFER_BIT); } scrollpos;// = GetScrollPosition(); scrollpos.x = 0; - scrollpos.y = 0; + scrollpos.y = 0; - m_nWindowWidth = w(); - m_nWindowHeight = h(); + m_nWindowWidth = w(); + m_nWindowHeight = h(); int drawWidth, drawHeight; - drawWidth = min( m_nWindowWidth, m_pDoc->m_nPaintWidth ); - drawHeight = min( m_nWindowHeight, m_pDoc->m_nPaintHeight ); + drawWidth = min(m_nWindowWidth, m_pDoc->m_nPaintWidth); + drawHeight = min(m_nWindowHeight, m_pDoc->m_nPaintHeight); startrow = m_pDoc->m_nPaintHeight - (scrollpos.y + drawHeight); - if ( startrow < 0 ) startrow = 0; + if (startrow < 0) startrow = 0; - m_pPaintBitstart = m_pDoc->m_ucPainting + + m_pPaintBitstart = m_pDoc->m_ucPainting + 3 * ((m_pDoc->m_nPaintWidth * startrow) + scrollpos.x); - m_nDrawWidth = drawWidth; - m_nDrawHeight = drawHeight; + m_nDrawWidth = drawWidth; + m_nDrawHeight = drawHeight; - m_nStartRow = startrow; - m_nEndRow = startrow + drawHeight; - m_nStartCol = scrollpos.x; - m_nEndCol = m_nStartCol + drawWidth; + m_nStartRow = startrow; + m_nEndRow = startrow + drawHeight; + m_nStartCol = scrollpos.x; + m_nEndCol = m_nStartCol + drawWidth; - if ( m_pDoc->m_ucPainting && !isAnEvent) + if (m_pDoc->m_ucPainting && !isAnEvent) { RestoreContent(); updateViewport(); @@ -140,33 +142,33 @@ void PaintView::draw() bool willSave = false; - if ( m_pDoc->m_ucPainting && isAnEvent) + if (m_pDoc->m_ucPainting && isAnEvent) { // Clear it after processing. - isAnEvent = 0; + isAnEvent = 0; + + Point source(coord.x + m_nStartCol, m_nEndRow - coord.y); + Point target(coord.x, m_nWindowHeight - coord.y); - Point source( coord.x + m_nStartCol, m_nEndRow - coord.y ); - Point target( coord.x, m_nWindowHeight - coord.y ); - // This is the event handler - switch (eventToDo) + switch (eventToDo) { case LEFT_MOUSE_DOWN: - // updatePainting(); + updatePainting(); m_pDoc->recordHistory(); - m_pDoc->m_pCurrentBrush->BrushBegin( source, target ); - // updateViewport(); + m_pDoc->m_pCurrentBrush->BrushBegin(source, target); + updateViewport(); break; case LEFT_MOUSE_DRAG: - // updatePainting(); - m_pDoc->m_pCurrentBrush->BrushMove( source, target ); - // SaveCurrentContent(); - // updateViewport(); + updatePainting(); + m_pDoc->m_pCurrentBrush->BrushMove(source, target); + SaveCurrentContent(); + updateViewport(); break; case LEFT_MOUSE_UP: - m_pDoc->m_pCurrentBrush->BrushEnd( source, target ); - // updatePainting(); + m_pDoc->m_pCurrentBrush->BrushEnd(source, target); + updatePainting(); // SaveCurrentContent(); // RestoreContent(); willSave = true; @@ -175,29 +177,42 @@ void PaintView::draw() m_pDoc->m_pCurrentBrush->RightBegin(source, target); break; case RIGHT_MOUSE_DRAG: - RestoreContent(); + updatePainting(); m_pDoc->m_pCurrentBrush->RightMove(source, target); break; case RIGHT_MOUSE_UP: - RestoreContent(); + updatePainting(); m_pDoc->m_pCurrentBrush->RightEnd(source, target); break; default: - printf("Unknown event!!\n"); + printf("Unknown event!!\n"); break; } } - if(willAutoFill) + if (willAutoFill) { autoFill(); willAutoFill = false; willSave = true; - } else if (willPainterly) + glFlush(); + } + else if (willPainterly) { painterly(); willPainterly = false; willSave = true; + glFlush(); + } + else + { + // for debugging purpose + // Point source(coord.x + m_nStartCol, m_nEndRow - coord.y); + // Point target(coord.x, m_nWindowHeight - coord.y); + // if(source.x>=0 && source.y>=0 && source.x <= m_nWindowWidth-1 && source.y <= m_nWindowHeight) + // { + // m_pDoc->m_pCurrentBrush->BrushMove(source, target); + // } } @@ -209,22 +224,15 @@ void PaintView::draw() glDrawBuffer(GL_BACK); #endif // !MESA - if(willSave) + if (willSave) { SaveCurrentContent(); glFlush(); - memcpy(m_pDoc->m_ucBackup, m_pDoc->m_ucPainting, drawWidth*drawHeight * 3); + updateViewport(); } - updateViewport(); VideoProcessor::continueWriteStream(); - glFlush(); - if(m_pDoc->m_ucPainting && m_pDoc->m_ucBackup) - { - - memcpy(m_pDoc->m_ucPainting, m_pDoc->m_ucBackup, drawWidth*drawHeight * 3); - } } void PaintView::prepareAutoFill() @@ -242,41 +250,41 @@ void PaintView::preparePainterly() int PaintView::handle(int event) { - switch(event) + switch (event) { case FL_ENTER: // refresh(); - // redraw(); + // redraw(); break; case FL_PUSH: coord.x = Fl::event_x(); coord.y = Fl::event_y(); - if (Fl::event_button()>1) - eventToDo=RIGHT_MOUSE_DOWN; + if (Fl::event_button() > 1) + eventToDo = RIGHT_MOUSE_DOWN; else - eventToDo=LEFT_MOUSE_DOWN; - isAnEvent=1; + eventToDo = LEFT_MOUSE_DOWN; + isAnEvent = 1; redraw(); break; case FL_DRAG: coord.x = Fl::event_x(); coord.y = Fl::event_y(); - if (Fl::event_button()>1) - eventToDo=RIGHT_MOUSE_DRAG; + if (Fl::event_button() > 1) + eventToDo = RIGHT_MOUSE_DRAG; else - eventToDo=LEFT_MOUSE_DRAG; - isAnEvent=1; + eventToDo = LEFT_MOUSE_DRAG; + isAnEvent = 1; redraw(); m_pDoc->m_pUI->m_origView->setCursor(coord); break; case FL_RELEASE: coord.x = Fl::event_x(); coord.y = Fl::event_y(); - if (Fl::event_button()>1) - eventToDo=RIGHT_MOUSE_UP; + if (Fl::event_button() > 1) + eventToDo = RIGHT_MOUSE_UP; else - eventToDo=LEFT_MOUSE_UP; - isAnEvent=1; + eventToDo = LEFT_MOUSE_UP; + isAnEvent = 1; redraw(); break; case FL_MOVE: @@ -311,16 +319,16 @@ void PaintView::SaveCurrentContent() // out paint strokes glReadBuffer(GL_BACK); - glPixelStorei( GL_PACK_ALIGNMENT, 1 ); - glPixelStorei( GL_PACK_ROW_LENGTH, m_pDoc->m_nPaintWidth ); - - glReadPixels( 0, - m_nWindowHeight - m_nDrawHeight, - m_nDrawWidth, - m_nDrawHeight, - GL_RGB, - GL_UNSIGNED_BYTE, - m_pPaintBitstart ); + glPixelStorei(GL_PACK_ALIGNMENT, 1); + glPixelStorei(GL_PACK_ROW_LENGTH, m_pDoc->m_nPaintWidth); + + glReadPixels(0, + m_nWindowHeight - m_nDrawHeight, + m_nDrawWidth, + m_nDrawHeight, + GL_RGB, + GL_UNSIGNED_BYTE, + m_pPaintBitstart); } @@ -328,18 +336,18 @@ void PaintView::RestoreContent() { glDrawBuffer(GL_BACK); - glClear( GL_COLOR_BUFFER_BIT ); + glClear(GL_COLOR_BUFFER_BIT); - glRasterPos2i( 0, m_nWindowHeight - m_nDrawHeight ); - glPixelStorei( GL_UNPACK_ALIGNMENT, 1 ); - glPixelStorei( GL_UNPACK_ROW_LENGTH, m_pDoc->m_nPaintWidth ); - glDrawPixels( m_nDrawWidth, - m_nDrawHeight, - GL_RGB, - GL_UNSIGNED_BYTE, - m_pPaintBitstart); + glRasterPos2i(0, m_nWindowHeight - m_nDrawHeight); + glPixelStorei(GL_UNPACK_ALIGNMENT, 1); + glPixelStorei(GL_UNPACK_ROW_LENGTH, m_pDoc->m_nPaintWidth); + glDrawPixels(m_nDrawWidth, + m_nDrawHeight, + GL_RGB, + GL_UNSIGNED_BYTE, + m_pPaintBitstart); -// glDrawBuffer(GL_FRONT); + // glDrawBuffer(GL_FRONT); } void PaintView::autoFill() @@ -362,26 +370,26 @@ void PaintView::autoFill() { for (int j = 0; j < h; j += s) { - points.emplace_back(randAlter(i,r), randAlter(j,r)); + points.emplace_back(randAlter(i, r), randAlter(j, r)); } } unsigned const seed = std::chrono::system_clock::now().time_since_epoch().count(); - std::shuffle(points.begin(), points.end(),std::default_random_engine(seed)); + std::shuffle(points.begin(), points.end(), std::default_random_engine(seed)); - for(auto& pt: points){ + for (auto& pt : points) { const int i = pt.x; const int j = pt.y; // const Point source(i + m_nStartCol, m_nEndRow - j); - if(randAttr) + if (randAttr) { - m_pDoc->m_pUI->setSize(randAlter(size,r)); - m_pDoc->m_pUI->setLineWidth(randAlter(lineWidth,r)); - m_pDoc->m_pUI->setLineAngle(randAlter(lineAngle,r)); + m_pDoc->m_pUI->setSize(randAlter(size, r)); + m_pDoc->m_pUI->setLineWidth(randAlter(lineWidth, r)); + m_pDoc->m_pUI->setLineAngle(randAlter(lineAngle, r)); } const Point target(i, j + m_nWindowHeight - m_nDrawHeight); m_pDoc->m_pCurrentBrush->BrushBegin(target, target); m_pDoc->m_pCurrentBrush->BrushEnd(target, target); - + } // glFlush(); @@ -410,23 +418,23 @@ void PaintView::kernelHelper(unsigned char* before, unsigned char* target, const { int size = kernel.size(); float total = 0; - for (int i = 0; i radii; - for(int i=0; im_pUI->m_painterlyBlur; std::vector> kernel = getGaussianKernel(blur, r); unsigned char* ref = new unsigned char[w*h * 3]; - if(blur == 0) + if (blur == 0) { memcpy(ref, m_pDoc->m_ucOriginal, w*h * 3); - }else + } + else { kernelHelper(m_pDoc->m_ucOriginal, ref, kernel, w, h, false); } @@ -504,7 +513,7 @@ void PaintView::paintLayer(unsigned char* canvas, unsigned char* ref, int r) { const int w = m_pDoc->m_nWidth; const int h = m_pDoc->m_nHeight; - int grid= r * m_pDoc->m_pUI->m_painterlyGridSize; + int grid = r * m_pDoc->m_pUI->m_painterlyGridSize; int threshold = m_pDoc->m_pUI->m_painterlyThreshold; std::vector strokes; @@ -512,11 +521,11 @@ void PaintView::paintLayer(unsigned char* canvas, unsigned char* ref, int r) std::vector diff(w*h); // 1. calculate difference matrix - for(int i = 0; ierror) + if (e > error) { argMax = Point(a, b); error = e; @@ -551,11 +560,12 @@ void PaintView::paintLayer(unsigned char* canvas, unsigned char* ref, int r) } sumError /= gridSum; - if(sumError > threshold) + if (sumError > threshold) { // std::vectors = makeStrokes(r, x, y, ref, w); strokes.push_back(argMax); - }else + } + else { nob.push_back(argMax); } @@ -567,10 +577,10 @@ void PaintView::paintLayer(unsigned char* canvas, unsigned char* ref, int r) std::shuffle(strokes.begin(), strokes.end(), rng); // std::random_shuffle(nob.begin(), nob.end()); int sizeOriginal = m_pDoc->getSize(); - for(auto&& p:strokes) + for (auto&& p : strokes) { m_pDoc->m_pUI->setSize(r); - m_pDoc->m_pCurrentBrush->BrushBegin(p.x,p.y,r,ref,canvas); + m_pDoc->m_pCurrentBrush->BrushBegin(p.x, p.y, r, ref, canvas); m_pDoc->m_pCurrentBrush->BrushEnd(p, p); } m_pDoc->m_pUI->setSize(sizeOriginal); diff --git a/polygonpainterly.bmp b/polygonpainterly.bmp deleted file mode 100644 index 0eac6c6aab93d0c613e0289b25a4592dc508b977..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 380454 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 z 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 From 2d9d03128ba5e4da52db890b4b40c6e2af7b2851 Mon Sep 17 00:00:00 2001 From: dipsywong98 Date: Fri, 1 Mar 2019 01:32:01 +0800 Subject: [PATCH 3/3] fix line brush right drag --- LineBrush.cpp | 6 +++--- PaintView.cpp | 8 ++++++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/LineBrush.cpp b/LineBrush.cpp index 77935d3..1baa095 100644 --- a/LineBrush.cpp +++ b/LineBrush.cpp @@ -85,7 +85,7 @@ void LineBrush::BrushEnd(const Point source, const Point target) void LineBrush::RightBegin(const Point source, const Point target) { - start = source; + start = target; } void LineBrush::RightMove(const Point source, const Point target) @@ -93,7 +93,7 @@ void LineBrush::RightMove(const Point source, const Point target) glColor3f(1, 0, 0); glBegin(GL_LINES); glVertex2d(start.x, start.y); - glVertex2d(source.x, source.y); + glVertex2d(target.x, target.y); glEnd(); } @@ -101,7 +101,7 @@ void LineBrush::RightEnd(const Point source, const Point target) { ImpressionistDoc* pDoc = GetDocument(); ImpressionistUI* dlg = pDoc->m_pUI; - int angle = static_cast(radToDeg(atan2(source.y - start.y, source.x - start.x))); + int angle = static_cast(radToDeg(atan2(target.y - start.y, target.x - start.x))); dlg->setLineAngle(angle); } diff --git a/PaintView.cpp b/PaintView.cpp index c35dbdf..ffc44b2 100644 --- a/PaintView.cpp +++ b/PaintView.cpp @@ -169,19 +169,23 @@ void PaintView::draw() case LEFT_MOUSE_UP: m_pDoc->m_pCurrentBrush->BrushEnd(source, target); updatePainting(); - // SaveCurrentContent(); - // RestoreContent(); + SaveCurrentContent(); + RestoreContent(); willSave = true; break; case RIGHT_MOUSE_DOWN: + updateViewport(); m_pDoc->m_pCurrentBrush->RightBegin(source, target); break; case RIGHT_MOUSE_DRAG: updatePainting(); + updateViewport(); m_pDoc->m_pCurrentBrush->RightMove(source, target); + glFlush(); break; case RIGHT_MOUSE_UP: updatePainting(); + updateViewport(); m_pDoc->m_pCurrentBrush->RightEnd(source, target); break;