Show
Ignore:
Timestamp:
06/07/09 17:30:36 (4 years ago)
Author:
bjourne
Message:

I think my optimized loop should be faster than cairo.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • gtkimageview/src/gtkimagetoolcairo.c

    r713 r714  
    5252                          cairo_surface_t *dst) 
    5353{ 
    54     cairo_pattern_t *pattern = cairo_pattern_create_for_surface (src); 
    55     cairo_t *cr = cairo_create (dst); 
    56     cairo_set_antialias (cr, CAIRO_ANTIALIAS_NONE); 
    57     cairo_rectangle (cr, rect->x, rect->y, rect->width, rect->height); 
    58     cairo_clip (cr); 
    59     cairo_set_source (cr, pattern); 
    60     cairo_set_operator (cr, CAIRO_OPERATOR_SOURCE); 
    61     cairo_paint (cr); 
    62     cairo_destroy (cr); 
    63     cairo_pattern_destroy (pattern); 
     54    int src_stride = cairo_image_surface_get_stride (src) / 4; 
     55    int *dst_pixels = (int *) cairo_image_surface_get_data (dst); 
     56    int *src_pixels = (int *) cairo_image_surface_get_data (src); 
     57    int ybase = rect->y * src_stride + rect->x; 
     58    for (int y = 0; y < rect->height; y++) 
     59    { 
     60        int idx = ybase; 
     61        for (int x = 0; x < rect->width; x++) 
     62        { 
     63            dst_pixels[idx] = src_pixels[idx]; 
     64            idx++; 
     65        } 
     66        ybase += src_stride; 
     67    } 
    6468} 
    6569