Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDalai Felinto <dfelinto@gmail.com>2012-08-19 07:05:38 +0400
committerDalai Felinto <dfelinto@gmail.com>2012-08-19 07:05:38 +0400
commit48eb27791bcd0b28b3fad384552009fa4b712d00 (patch)
treecf5cd3bd86ec2c28a20c357ebb3176ad273a6675 /source/blender/compositor/operations/COM_DistanceMatteOperation.cpp
parente4a6602a9ac9c7d43a882770f19323b6d5616a4b (diff)
The Distance Node in 2.49/2.5/2.6 pre-tiles has a different calculation for RGB and YCC. While RGB
calculate the distance in 3d between R,G and B, the YCC only takes Cb and Cr into consideration. This commit makes COM_DistanceMatteOperation inheritable and expose the calculate distance function to be re-implemented for the YCC node operation. Thanks Troy Sobotka for the report over email. Patch incorporates review suggestions by Jeroen Bakker.
Diffstat (limited to 'source/blender/compositor/operations/COM_DistanceMatteOperation.cpp')
-rw-r--r--source/blender/compositor/operations/COM_DistanceMatteOperation.cpp90
1 files changed, 0 insertions, 90 deletions
diff --git a/source/blender/compositor/operations/COM_DistanceMatteOperation.cpp b/source/blender/compositor/operations/COM_DistanceMatteOperation.cpp
deleted file mode 100644
index b65b5e0f224..00000000000
--- a/source/blender/compositor/operations/COM_DistanceMatteOperation.cpp
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2011, Blender Foundation.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * as published by the Free Software Foundation; either version 2
- * of the License, or (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software Foundation,
- * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- *
- * Contributor:
- * Dalai Felinto
- */
-
-#include "COM_DistanceMatteOperation.h"
-#include "BLI_math.h"
-
-DistanceMatteOperation::DistanceMatteOperation() : NodeOperation()
-{
- addInputSocket(COM_DT_COLOR);
- addInputSocket(COM_DT_COLOR);
- addOutputSocket(COM_DT_VALUE);
-
- this->m_inputImageProgram = NULL;
- this->m_inputKeyProgram = NULL;
-}
-
-void DistanceMatteOperation::initExecution()
-{
- this->m_inputImageProgram = this->getInputSocketReader(0);
- this->m_inputKeyProgram = this->getInputSocketReader(1);
-}
-
-void DistanceMatteOperation::deinitExecution()
-{
- this->m_inputImageProgram = NULL;
- this->m_inputKeyProgram = NULL;
-}
-
-void DistanceMatteOperation::executePixel(float output[4], float x, float y, PixelSampler sampler)
-{
- float inKey[4];
- float inImage[4];
-
- const float tolerance = this->m_settings->t1;
- const float falloff = this->m_settings->t2;
-
- float distance;
- float alpha;
-
- this->m_inputKeyProgram->read(inKey, x, y, sampler);
- this->m_inputImageProgram->read(inImage, x, y, sampler);
-
- distance = sqrt(pow((inKey[0] - inImage[0]), 2) +
- pow((inKey[1] - inImage[1]), 2) +
- pow((inKey[2] - inImage[2]), 2));
-
- /* store matte(alpha) value in [0] to go with
- * COM_SetAlphaOperation and the Value output
- */
-
- /*make 100% transparent */
- if (distance < tolerance) {
- output[0] = 0.f;
- }
- /*in the falloff region, make partially transparent */
- else if (distance < falloff + tolerance) {
- distance = distance - tolerance;
- alpha = distance / falloff;
- /*only change if more transparent than before */
- if (alpha < inImage[3]) {
- output[0] = alpha;
- }
- else { /* leave as before */
- output[0] = inImage[3];
- }
- }
- else {
- /* leave as before */
- output[0] = inImage[3];
- }
-}
-