Changeset 2678


Ignore:
Timestamp:
Aug 8, 2008, 8:07:10 PM (15 years ago)
Author:
Jean-Yves Lamoureux
Message:
  • Handle alpha layer in floodfill (but don't make it conditionnal to the algorithm)
Location:
libpipi/trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • libpipi/trunk/examples/floodfill.c

    r2676 r2678  
    3131    newimg = pipi_copy(img);
    3232    pipi_free(img);
    33     ret = pipi_flood_fill(newimg, atoi(argv[2]), atoi(argv[3]), 1, 0, 0);
     33    ret = pipi_flood_fill(newimg, atoi(argv[2]), atoi(argv[3]), 1, 0, 0, 1);
    3434
    3535    if(!ret) pipi_save(newimg, dstname);
  • libpipi/trunk/pipi/fill/floodfill.c

    r2676 r2678  
    3636static void  pipi_flood_fill_stack_scanline_float(pipi_pixels_t *dstp,
    3737                                                  int x,    int y,
    38                                                   float nr, float ng, float nb,
    39                                                   float or, float og, float ob);
     38                                                  float nr, float ng, float nb, float na,
     39                                                  float or, float og, float ob, float oa);
    4040static int   pop (int *x,int *y, int h);
    4141static int   push(int x, int y, int h);
     
    6464int pipi_flood_fill(pipi_image_t *src,
    6565                    int px, int py,
    66                     float r, float g, float b)
     66                    float r, float g, float b, float a)
    6767{
    6868    pipi_image_t  *dst = src;
     
    8181    if(src->last_modified == PIPI_PIXELS_RGBA32) {
    8282        uint32_t  *dstdata;
    83         unsigned char nr, ng, nb;
     83        unsigned char nr, ng, nb, na;
    8484
    8585        /* Get ARGB32 pointer */
     
    9090        ng = g*255.0f;
    9191        nb = b*255.0f;
     92        na = a*255.0f;
    9293
    9394        dstp->w = w;
    9495        dstp->h = h;
    95         pipi_flood_fill_stack_scanline_u32(dstp, px, py, (nr<<16)|(ng<<8)|(nb), dstdata[px+py*w]);
     96        pipi_flood_fill_stack_scanline_u32(dstp, px, py, (na<<24)|(nr<<16)|(ng<<8)|(nb), dstdata[px+py*w]);
    9697
    9798    } else {
    9899        int gray = (dst->last_modified == PIPI_PIXELS_Y_F);
    99100        float *dstdata;
    100         float or, og, ob;
     101        float or, og, ob, oa;
    101102
    102103        dstp = gray ? pipi_getpixels(dst, PIPI_PIXELS_Y_F)
     
    108109        og = dstdata[(px+py*w)*4 + 1];
    109110        ob = dstdata[(px+py*w)*4 + 2];
     111        oa = dstdata[(px+py*w)*4 + 3];
    110112
    111113        dstp->w = w;
    112114        dstp->h = h;
    113115
    114         pipi_flood_fill_stack_scanline_float(dstp, px, py, r, g, b, or, og, ob);
     116        pipi_flood_fill_stack_scanline_float(dstp, px, py, r, g, b, a, or, og, ob, oa);
    115117    }
    116118
     
    178180static void pipi_flood_fill_stack_scanline_float(pipi_pixels_t *dstp,
    179181                                                 int x,    int y,
    180                                                  float nr, float ng, float nb,
    181                                                  float or, float og, float ob)
     182                                                 float nr, float ng, float nb, float na,
     183                                                 float or, float og, float ob, float oa)
    182184{
    183185    if((nr==or) && (ng==og) && (nb==ob)) return;
     
    215217            cur_line[x*4 + 1] = ng;
    216218            cur_line[x*4 + 2] = nb;
     219            cur_line[x*4 + 3] = na;
    217220
    218221            if(!left && x > 0 && validate_pixel_f(cur_line[xm1],
  • libpipi/trunk/pipi/pipi.h

    r2676 r2678  
    8484
    8585extern int pipi_flood_fill(pipi_image_t *,
    86                            int, int, float, float, float);
     86                           int, int, float, float, float, float);
    8787
    8888extern pipi_image_t *pipi_dither_floydsteinberg(pipi_image_t *, pipi_scan_t);
Note: See TracChangeset for help on using the changeset viewer.