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:
authorJeroen Bakker <jeroen@blender.org>2021-03-08 15:41:52 +0300
committerJeroen Bakker <jeroen@blender.org>2021-03-08 15:41:52 +0300
commit1775ea74c152ba7cf27a8bc1f071b40992c89013 (patch)
tree310fbe4e107734a16b3164adb1a65bd918935855 /source/blender/compositor/operations/COM_AntiAliasOperation.cpp
parentb9cd2f4531ca670c196b0b14b1359d0f375103c2 (diff)
Cleanup: Change extension .cpp to .cc
Diffstat (limited to 'source/blender/compositor/operations/COM_AntiAliasOperation.cpp')
-rw-r--r--source/blender/compositor/operations/COM_AntiAliasOperation.cpp201
1 files changed, 0 insertions, 201 deletions
diff --git a/source/blender/compositor/operations/COM_AntiAliasOperation.cpp b/source/blender/compositor/operations/COM_AntiAliasOperation.cpp
deleted file mode 100644
index 684485c40cb..00000000000
--- a/source/blender/compositor/operations/COM_AntiAliasOperation.cpp
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * 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.
- *
- * Copyright 2011, Blender Foundation.
- */
-
-#include "COM_AntiAliasOperation.h"
-#include "BLI_math.h"
-#include "BLI_utildefines.h"
-
-#include "MEM_guardedalloc.h"
-
-#include "RE_texture.h"
-
-/* An implementation of the Scale3X edge-extrapolation algorithm.
- *
- * Code from GIMP plugin, based on code from Adam D. Moss <adam@gimp.org>
- * licensed by the MIT license.
- */
-static int extrapolate9(float *E0,
- float *E1,
- float *E2,
- float *E3,
- float *E4,
- float *E5,
- float *E6,
- float *E7,
- float *E8,
- const float *A,
- const float *B,
- const float *C,
- const float *D,
- const float *E,
- const float *F,
- const float *G,
- const float *H,
- const float *I)
-{
-#define PEQ(X, Y) (fabsf(*X - *Y) < 1e-3f)
-#define PCPY(DST, SRC) \
- do { \
- *DST = *SRC; \
- } while (0)
- if ((!PEQ(B, H)) && (!PEQ(D, F))) {
- if (PEQ(D, B)) {
- PCPY(E0, D);
- }
- else {
- PCPY(E0, E);
- }
- if ((PEQ(D, B) && !PEQ(E, C)) || (PEQ(B, F) && !PEQ(E, A))) {
- PCPY(E1, B);
- }
- else {
- PCPY(E1, E);
- }
- if (PEQ(B, F)) {
- PCPY(E2, F);
- }
- else {
- PCPY(E2, E);
- }
- if ((PEQ(D, B) && !PEQ(E, G)) || (PEQ(D, H) && !PEQ(E, A))) {
- PCPY(E3, D);
- }
- else {
- PCPY(E3, E);
- }
- PCPY(E4, E);
- if ((PEQ(B, F) && !PEQ(E, I)) || (PEQ(H, F) && !PEQ(E, C))) {
- PCPY(E5, F);
- }
- else {
- PCPY(E5, E);
- }
- if (PEQ(D, H)) {
- PCPY(E6, D);
- }
- else {
- PCPY(E6, E);
- }
- if ((PEQ(D, H) && !PEQ(E, I)) || (PEQ(H, F) && !PEQ(E, G))) {
- PCPY(E7, H);
- }
- else {
- PCPY(E7, E);
- }
- if (PEQ(H, F)) {
- PCPY(E8, F);
- }
- else {
- PCPY(E8, E);
- }
- return 1;
- }
-
- return 0;
-
-#undef PEQ
-#undef PCPY
-}
-
-AntiAliasOperation::AntiAliasOperation()
-{
- this->addInputSocket(COM_DT_VALUE);
- this->addOutputSocket(COM_DT_VALUE);
- this->m_valueReader = nullptr;
- this->setComplex(true);
-}
-
-void AntiAliasOperation::initExecution()
-{
- this->m_valueReader = this->getInputSocketReader(0);
-}
-
-void AntiAliasOperation::executePixel(float output[4], int x, int y, void *data)
-{
- MemoryBuffer *input_buffer = (MemoryBuffer *)data;
- const int buffer_width = input_buffer->getWidth(), buffer_height = input_buffer->getHeight();
- if (y < 0 || y >= buffer_height || x < 0 || x >= buffer_width) {
- output[0] = 0.0f;
- }
- else {
- const float *buffer = input_buffer->getBuffer();
- const float *row_curr = &buffer[y * buffer_width];
- if (x == 0 || x == buffer_width - 1 || y == 0 || y == buffer_height - 1) {
- output[0] = row_curr[x];
- return;
- }
- const float *row_prev = &buffer[(y - 1) * buffer_width],
- *row_next = &buffer[(y + 1) * buffer_width];
- float ninepix[9];
- if (extrapolate9(&ninepix[0],
- &ninepix[1],
- &ninepix[2],
- &ninepix[3],
- &ninepix[4],
- &ninepix[5],
- &ninepix[6],
- &ninepix[7],
- &ninepix[8],
- &row_prev[x - 1],
- &row_prev[x],
- &row_prev[x + 1],
- &row_curr[x - 1],
- &row_curr[x],
- &row_curr[x + 1],
- &row_next[x - 1],
- &row_next[x],
- &row_next[x + 1])) {
- /* Some rounding magic to so make weighting correct with the
- * original coefficients.
- */
- unsigned char result = ((3 * ninepix[0] + 5 * ninepix[1] + 3 * ninepix[2] + 5 * ninepix[3] +
- 6 * ninepix[4] + 5 * ninepix[5] + 3 * ninepix[6] + 5 * ninepix[7] +
- 3 * ninepix[8]) *
- 255.0f +
- 19.0f) /
- 38.0f;
- output[0] = result / 255.0f;
- }
- else {
- output[0] = row_curr[x];
- }
- }
-}
-
-void AntiAliasOperation::deinitExecution()
-{
- this->m_valueReader = nullptr;
-}
-
-bool AntiAliasOperation::determineDependingAreaOfInterest(rcti *input,
- ReadBufferOperation *readOperation,
- rcti *output)
-{
- rcti imageInput;
- NodeOperation *operation = getInputOperation(0);
- imageInput.xmax = input->xmax + 1;
- imageInput.xmin = input->xmin - 1;
- imageInput.ymax = input->ymax + 1;
- imageInput.ymin = input->ymin - 1;
- return operation->determineDependingAreaOfInterest(&imageInput, readOperation, output);
-}
-
-void *AntiAliasOperation::initializeTileData(rcti *rect)
-{
- return getInputOperation(0)->initializeTileData(rect);
-}