Ignore:
Timestamp:
Apr 21, 2009, 1:56:41 AM (11 years ago)
Author:
Sam Hocevar
Message:

resize.c: add pipi_crop() and the --crop flag.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/resize.c

    r3398 r3415  
    124124}
    125125
     126pipi_image_t *pipi_crop(pipi_image_t *src, int w, int h, int dx, int dy)
     127{
     128    float *srcdata, *dstdata;
     129    pipi_image_t *dst;
     130    pipi_pixels_t *srcp, *dstp;
     131    int y, off, len;
     132
     133    srcp = pipi_get_pixels(src, PIPI_PIXELS_RGBA_F32);
     134    srcdata = (float *)srcp->pixels;
     135
     136    dst = pipi_new(w, h);
     137    dstp = pipi_get_pixels(dst, PIPI_PIXELS_RGBA_F32);
     138    dstdata = (float *)dstp->pixels;
     139
     140    off = dx;
     141    len = w;
     142
     143    if(dx < 0)
     144    {
     145        len += dx;
     146        dx = 0;
     147    }
     148
     149    if(dx + len > srcp->w)
     150        len = srcp->w - dx;
     151
     152    if(len > 0)
     153    {
     154        for(y = 0; y < h; y++)
     155        {
     156            if(y + dy < 0 || y + dy >= srcp->h)
     157                continue;
     158
     159            memcpy(dstdata + y * w * 4,
     160                   srcdata + ((y + dy) * srcp->w + dx) * 4,
     161                   len * 4 * sizeof(float));
     162        }
     163    }
     164
     165    return dst;
     166}
     167
Note: See TracChangeset for help on using the changeset viewer.