diff options
author | sanine <sanine.not@pm.me> | 2023-02-12 23:53:22 -0600 |
---|---|---|
committer | sanine <sanine.not@pm.me> | 2023-02-12 23:53:22 -0600 |
commit | f1fe73d1909a2448a004a88362a1a532d0d4f7c3 (patch) | |
tree | ab37ae3837e2f858de2932bcee9f26e69fab3db1 /libs/cairo-1.16.0/test/pdiff/lpyramid.c | |
parent | f567ea1e2798fd3156a416e61f083ea3e6b95719 (diff) |
switch to tinyobj and nanovg from assimp and cairo
Diffstat (limited to 'libs/cairo-1.16.0/test/pdiff/lpyramid.c')
-rw-r--r-- | libs/cairo-1.16.0/test/pdiff/lpyramid.c | 116 |
1 files changed, 0 insertions, 116 deletions
diff --git a/libs/cairo-1.16.0/test/pdiff/lpyramid.c b/libs/cairo-1.16.0/test/pdiff/lpyramid.c deleted file mode 100644 index bd402c7..0000000 --- a/libs/cairo-1.16.0/test/pdiff/lpyramid.c +++ /dev/null @@ -1,116 +0,0 @@ -/* - Laplacian Pyramid - Copyright (C) 2006 Yangli Hector Yee - - 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, Suite 500, Boston, MA 02110-1335, USA -*/ - -#include "lpyramid.h" -#include <stdio.h> -#include <stdlib.h> -#include <string.h> - -struct _lpyramid { - /* Successively blurred versions of the original image */ - float *levels[MAX_PYR_LEVELS]; - - int width; - int height; -}; - -static void -convolve (lpyramid_t *pyramid, float *a, const float *b) -/* convolves image b with the filter kernel and stores it in a */ -{ - int y,x,i,j; - const float Kernel[] = {0.05f, 0.25f, 0.4f, 0.25f, 0.05f}; - int width = pyramid->width; - int height = pyramid->height; - - for (y=0; y<height; y++) { - for (x=0; x<width; x++) { - float sum = 0.f; - for (j=-2; j<=2; j++) { - float sum_i = 0.f; - int ny=y+j; - if (ny<0) ny=-ny; - if (ny>=height) ny=2*height - ny - 1; - ny *= width; - for (i=-2; i<=2; i++) { - int nx=x+i; - if (nx<0) nx=-nx; - if (nx>=width) nx=2*width - nx - 1; - sum_i += Kernel[i+2] * b[ny + nx]; - } - sum += sum_i * Kernel[j+2]; - } - *a++ = sum; - } - } -} - -/* - * Construction/Destruction - */ - -lpyramid_t * -lpyramid_create (float *image, int width, int height) -{ - lpyramid_t *pyramid; - int i; - - pyramid = malloc (sizeof (lpyramid_t)); - if (pyramid == NULL) { - fprintf (stderr, "Out of memory.\n"); - exit (1); - } - pyramid->width = width; - pyramid->height = height; - - /* Make the Laplacian pyramid by successively - * copying the earlier levels and blurring them */ - for (i=0; i<MAX_PYR_LEVELS; i++) { - pyramid->levels[i] = malloc (width * height * sizeof (float)); - if (pyramid->levels[i] == NULL) { - fprintf (stderr, "Out of memory.\n"); - exit (1); - } - if (i == 0) { - memcpy (pyramid->levels[i], image, width * height * sizeof (float)); - } else { - convolve(pyramid, pyramid->levels[i], pyramid->levels[i - 1]); - } - } - - return pyramid; -} - -void -lpyramid_destroy (lpyramid_t *pyramid) -{ - int i; - - for (i=0; i<MAX_PYR_LEVELS; i++) - free (pyramid->levels[i]); - - free (pyramid); -} - -float -lpyramid_get_value (lpyramid_t *pyramid, int x, int y, int level) -{ - int index = x + y * pyramid->width; - int l = level; - if (l > MAX_PYR_LEVELS) - l = MAX_PYR_LEVELS; - return pyramid->levels[l][index]; -} |