Ignore:
Timestamp:
Aug 23, 2008, 11:11:15 AM (12 years ago)
Author:
Sam Hocevar
Message:
  • rgb.c: implement pipi_red(), pipi_green() and pipi_blue() to extract separate channels.
File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/combine/rgb.c

    r2753 r2754  
    6161}
    6262
     63pipi_image_t *pipi_red(pipi_image_t *src)
     64{
     65    pipi_image_t *dst;
     66    pipi_pixels_t *srcp, *dstp;
     67    float *srcdata, *dstdata;
     68    int x, y, w, h;
     69
     70    w = src->w;
     71    h = src->h;
     72
     73    dst = pipi_new(w, h);
     74    dstp = pipi_getpixels(dst, PIPI_PIXELS_Y_F);
     75    dstdata = (float *)dstp->pixels;
     76
     77    srcp = pipi_getpixels(src, PIPI_PIXELS_RGBA_F);
     78    srcdata = (float *)srcp->pixels;
     79
     80    for(y = 0; y < h; y++)
     81        for(x = 0; x < w; x++)
     82            dstdata[y * w + x] = srcdata[4 * (y * w + x)];
     83
     84    return dst;
     85}
     86
     87pipi_image_t *pipi_green(pipi_image_t *src)
     88{
     89    pipi_image_t *dst;
     90    pipi_pixels_t *srcp, *dstp;
     91    float *srcdata, *dstdata;
     92    int x, y, w, h;
     93
     94    w = src->w;
     95    h = src->h;
     96
     97    dst = pipi_new(w, h);
     98    dstp = pipi_getpixels(dst, PIPI_PIXELS_Y_F);
     99    dstdata = (float *)dstp->pixels;
     100
     101    srcp = pipi_getpixels(src, PIPI_PIXELS_RGBA_F);
     102    srcdata = (float *)srcp->pixels;
     103
     104    for(y = 0; y < h; y++)
     105        for(x = 0; x < w; x++)
     106            dstdata[y * w + x] = srcdata[4 * (y * w + x) + 1];
     107
     108    return dst;
     109}
     110
     111pipi_image_t *pipi_blue(pipi_image_t *src)
     112{
     113    pipi_image_t *dst;
     114    pipi_pixels_t *srcp, *dstp;
     115    float *srcdata, *dstdata;
     116    int x, y, w, h;
     117
     118    w = src->w;
     119    h = src->h;
     120
     121    dst = pipi_new(w, h);
     122    dstp = pipi_getpixels(dst, PIPI_PIXELS_Y_F);
     123    dstdata = (float *)dstp->pixels;
     124
     125    srcp = pipi_getpixels(src, PIPI_PIXELS_RGBA_F);
     126    srcdata = (float *)srcp->pixels;
     127
     128    for(y = 0; y < h; y++)
     129        for(x = 0; x < w; x++)
     130            dstdata[y * w + x] = srcdata[4 * (y * w + x) + 2];
     131
     132    return dst;
     133}
     134
Note: See TracChangeset for help on using the changeset viewer.