diff --git a/toonz/sources/tnztools/bluredbrush.cpp b/toonz/sources/tnztools/bluredbrush.cpp index 1425cc3e..a502effe 100644 --- a/toonz/sources/tnztools/bluredbrush.cpp +++ b/toonz/sources/tnztools/bluredbrush.cpp @@ -52,10 +52,14 @@ void putOnRasterCM(const TRasterCM32P &out, const TRaster32P &in, int styleId, continue; } bool sameStyleId = styleId == outPix->getInk(); + // line with lock alpha : use original pixel's tone // line with the same style : multiply tones // line with different style : pick darker tone - int tone = sameStyleId ? outPix->getTone() * (255 - inPix->m) / 255 - : std::min(255 - inPix->m, outPix->getTone()); + int tone = lockAlpha + ? outPix->getTone() + : sameStyleId + ? outPix->getTone() * (255 - inPix->m) / 255 + : std::min(255 - inPix->m, outPix->getTone()); int ink = !sameStyleId && outPix->getTone() < 255 - inPix->m ? outPix->getInk() : styleId; diff --git a/toonz/sources/tnztools/mypainttoonzbrush.cpp b/toonz/sources/tnztools/mypainttoonzbrush.cpp index 73a97c35..66668fde 100644 --- a/toonz/sources/tnztools/mypainttoonzbrush.cpp +++ b/toonz/sources/tnztools/mypainttoonzbrush.cpp @@ -34,10 +34,13 @@ void putOnRasterCM(const TRasterCM32P &out, const TRaster32P &in, int styleId, continue; } bool sameStyleId = styleId == outPix->getInk(); + // line with lock alpha : use original pixel's tone // line with the same style : multiply tones // line with different style : pick darker tone - int tone = sameStyleId ? outPix->getTone() * (255 - inPix->m) / 255 - : std::min(255 - inPix->m, outPix->getTone()); + int tone = lockAlpha ? outPix->getTone() + : sameStyleId + ? outPix->getTone() * (255 - inPix->m) / 255 + : std::min(255 - inPix->m, outPix->getTone()); int ink = !sameStyleId && outPix->getTone() < 255 - inPix->m ? outPix->getInk() : styleId; diff --git a/toonz/sources/toonzlib/rasterstrokegenerator.cpp b/toonz/sources/toonzlib/rasterstrokegenerator.cpp index f2ee7b82..80a4b404 100644 --- a/toonz/sources/toonzlib/rasterstrokegenerator.cpp +++ b/toonz/sources/toonzlib/rasterstrokegenerator.cpp @@ -234,7 +234,8 @@ void RasterStrokeGenerator::placeOver(const TRasterCM32P &out, } } if (inTone <= outTone) { - *outPix = TPixelCM32(inPix->getInk(), outPix->getPaint(), inTone); + *outPix = TPixelCM32(inPix->getInk(), outPix->getPaint(), + m_modifierLockAlpha ? outTone : inTone); } } if (m_task == ERASE) {