- Timestamp:
- Aug 25, 2008, 9:13:40 PM (13 years ago)
- Location:
- libpipi/trunk/pipi
- Files:
-
- 3 added
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
libpipi/trunk/pipi/Makefile.am
r2761 r2765 26 26 $(codec_sources) \ 27 27 $(paint_sources) \ 28 $(render_sources) \ 28 29 $(combine_sources) \ 29 30 $(filter_sources) \ … … 44 45 paint/floodfill.c \ 45 46 paint/tile.c 47 48 render_sources = \ 49 render/noise.c \ 50 render/screen.c 46 51 47 52 combine_sources = \ -
libpipi/trunk/pipi/pipi.h
r2761 r2765 106 106 extern pipi_image_t *pipi_resize(pipi_image_t *, int, int); 107 107 108 extern pipi_image_t *pipi_render_random(int, int); 109 extern pipi_image_t *pipi_render_bayer(int, int); 110 108 111 extern pipi_image_t *pipi_rgb(pipi_image_t *, pipi_image_t *, pipi_image_t *); 109 112 extern pipi_image_t *pipi_red(pipi_image_t *); -
libpipi/trunk/pipi/stock.c
r2760 r2765 36 36 if(!strncmp(name, "bayer:", 6)) 37 37 { 38 int i, j, w, h, n;38 int w, h; 39 39 40 40 w = atoi(name + 6); … … 43 43 return NULL; 44 44 h = atoi(name + 1); 45 if(w <= 0 || h <= 0)46 return NULL;47 45 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); 74 47 } 75 48 … … 196 169 if(!strncmp(name, "random:", 7)) 197 170 { 198 unsigned int ctx = 1; 199 int x, y, t, w, h; 171 int w, h; 200 172 201 173 w = atoi(name + 7); … … 207 179 return NULL; 208 180 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); 233 182 } 234 183
Note: See TracChangeset
for help on using the changeset viewer.