Changeset 2765 for libpipi


Ignore:
Timestamp:
Aug 25, 2008, 9:13:40 PM (12 years ago)
Author:
Sam Hocevar
Message:
  • Put the random and Bayer stock image generation into pipi/render/*.
Location:
libpipi/trunk/pipi
Files:
3 added
3 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/pipi/Makefile.am

    r2761 r2765  
    2626        $(codec_sources) \
    2727        $(paint_sources) \
     28        $(render_sources) \
    2829        $(combine_sources) \
    2930        $(filter_sources) \
     
    4445        paint/floodfill.c \
    4546        paint/tile.c
     47
     48render_sources = \
     49        render/noise.c \
     50        render/screen.c
    4651
    4752combine_sources = \
  • libpipi/trunk/pipi/pipi.h

    r2761 r2765  
    106106extern pipi_image_t *pipi_resize(pipi_image_t *, int, int);
    107107
     108extern pipi_image_t *pipi_render_random(int, int);
     109extern pipi_image_t *pipi_render_bayer(int, int);
     110
    108111extern pipi_image_t *pipi_rgb(pipi_image_t *, pipi_image_t *, pipi_image_t *);
    109112extern pipi_image_t *pipi_red(pipi_image_t *);
  • libpipi/trunk/pipi/stock.c

    r2760 r2765  
    3636    if(!strncmp(name, "bayer:", 6))
    3737    {
    38         int i, j, w, h, n;
     38        int w, h;
    3939
    4040        w = atoi(name + 6);
     
    4343            return NULL;
    4444        h = atoi(name + 1);
    45         if(w <= 0 || h <= 0)
    46             return NULL;
    4745
    48         for(n = 1; n < w || n < h; n *= 2)
    49             ;
    50 
    51         ret = pipi_new(w, h);
    52         pix = pipi_getpixels(ret, PIPI_PIXELS_Y_F);
    53         data = (float *)pix->pixels;
    54 
    55         for(j = 0; j < h; j++)
    56             for(i = 0; i < w; i++)
    57             {
    58                 int k, l, x = 0;
    59 
    60                 for(k = 1, l = n * n / 4; k < n; k *= 2, l /= 4)
    61                 {
    62                     if((i & k) && (j & k))
    63                         x += l;
    64                     else if(i & k)
    65                         x += 3 * l;
    66                     else if(j & k)
    67                         x += 2 * l;
    68                 }
    69 
    70                 data[j * w + i] = (double)(x + 1) / (n * n + 1);
    71             }
    72 
    73         return ret;
     46        return pipi_render_bayer(w, h);
    7447    }
    7548
     
    196169    if(!strncmp(name, "random:", 7))
    197170    {
    198         unsigned int ctx = 1;
    199         int x, y, t, w, h;
     171        int w, h;
    200172
    201173        w = atoi(name + 7);
     
    207179            return NULL;
    208180
    209         ret = pipi_new(w, h);
    210         pix = pipi_getpixels(ret, PIPI_PIXELS_RGBA_F);
    211         data = (float *)pix->pixels;
    212 
    213         for(y = 0; y < h; y++)
    214             for(x = 0; x < w; x++)
    215             {
    216                 for(t = 0; t < 3; t++)
    217                 {
    218                     long hi, lo;
    219 
    220                     hi = ctx / 12773L;
    221                     lo = ctx % 12773L;
    222                     ctx = 16807L * lo - 2836L * hi;
    223                     if(ctx <= 0)
    224                         ctx += 0x7fffffffL;
    225 
    226                     data[4 * (y * w + x) + t]
    227                         = (double)((ctx % 65536) / 65535.);
    228                 }
    229                 data[4 * (y * w + x) + 3] = 1.0;
    230             }
    231 
    232         return ret;
     181        return pipi_render_random(w, h);
    233182    }
    234183
Note: See TracChangeset for help on using the changeset viewer.