Ignore:
Timestamp:
05/21/09 22:55:13 (4 years ago)
Author:
sam
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.