Ignore:
Timestamp:
Aug 21, 2008, 12:00:23 AM (12 years ago)
Author:
Sam Hocevar
Message:
  • color.c: implement pipi_threshold().
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/filter/color.c

    r2725 r2747  
    244244}
    245245
     246pipi_image_t *pipi_threshold(pipi_image_t *src, double val)
     247{
     248    pipi_image_t *dst;
     249    pipi_pixels_t *srcp, *dstp;
     250    float *srcdata, *dstdata;
     251    int x, y, w, h, gray;
     252
     253    w = src->w;
     254    h = src->h;
     255
     256    gray = (src->last_modified == PIPI_PIXELS_Y_F);
     257
     258    srcp = gray ? pipi_getpixels(src, PIPI_PIXELS_Y_F)
     259                : pipi_getpixels(src, PIPI_PIXELS_RGBA_F);
     260    srcdata = (float *)srcp->pixels;
     261
     262    dst = pipi_new(w, h);
     263    dstp = gray ? pipi_getpixels(dst, PIPI_PIXELS_Y_F)
     264                : pipi_getpixels(dst, PIPI_PIXELS_RGBA_F);
     265    dstdata = (float *)dstp->pixels;
     266
     267    for(y = 0; y < h; y++)
     268    {
     269        for(x = 0; x < w; x++)
     270        {
     271            if(gray)
     272            {
     273                dstdata[y * w + x] = srcdata[y * w + x] < val ? 0. : 1.;
     274            }
     275            else
     276            {
     277                int d = 4 * (y * w + x);
     278
     279                dstdata[d] = srcdata[d] < val ? 0. : 1.;
     280                dstdata[d + 1] = srcdata[d + 1] < val ? 0. : 1.;
     281                dstdata[d + 2] = srcdata[d + 2] < val ? 0. : 1.;
     282                dstdata[d + 3] = srcdata[d + 3] < val ? 0. : 1.;
     283            }
     284        }
     285    }
     286
     287    return dst;
     288}
     289
Note: See TracChangeset for help on using the changeset viewer.