Ignore:
Timestamp:
May 21, 2009, 10:55:13 PM (11 years ago)
Author:
Sam Hocevar
Message:

Change the dirty rectangle API once again so that calling applications get
a more natural (x,y,w,h) 4-tuple to handle.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • libcaca/trunk/caca/driver/vga.c

    r3489 r3494  
    121121        char *screen = (char *)(intptr_t)0x000b8000;
    122122        uint32_t const *cvchars, *cvattrs;
    123         int xmin, ymin, xmax, ymax;
     123        int dx, dy, dw, dh;
    124124
    125         caca_get_dirty_rectangle(dp->cv, i, &xmin, &ymin, &xmax, &ymax);
     125        caca_get_dirty_rect(dp->cv, i, &dx, &dy, &dw, &dh);
    126126
    127127        cvchars = (uint32_t const *)caca_get_canvas_chars(dp->cv)
    128                     + xmin + ymin * dp->cv->width;
     128                    + dx + dy * dp->cv->width;
    129129        cvattrs = (uint32_t const *)caca_get_canvas_attrs(dp->cv)
    130                     + xmin + ymin * dp->cv->width;
     130                    + dx + dy * dp->cv->width;
    131131
    132         screen += ymin * dp->cv->width + xmin;
     132        screen += dy * dp->cv->width + dx;
    133133
    134         for(y = ymin; y <= ymax; y++)
     134        for(y = dy; y < dy + dh; y++)
    135135        {
    136             for(x = xmin; x <= xmax; x++)
     136            for(x = dx; x < dx + dw; x++)
    137137            {
    138138                char ch = caca_utf32_to_cp437(*cvchars++);
    139                 if(x < xmax && *cvchars == CACA_MAGIC_FULLWIDTH)
     139                if(x < dx + dw - 1 && *cvchars == CACA_MAGIC_FULLWIDTH)
    140140                {
    141141                    *screen++ = '[';
     
    149149            }
    150150
    151             cvchars += dp->cv->width - (xmax - xmin) - 1;
    152             cvattrs += dp->cv->width - (xmax - xmin) - 1;
    153             screen += 2 * (dp->cv->width - (xmax - xmin) - 1);
     151            cvchars += dp->cv->width - dw;
     152            cvattrs += dp->cv->width - dw;
     153            screen += 2 * (dp->cv->width - dw);
    154154        }
    155155    }
Note: See TracChangeset for help on using the changeset viewer.