Changeset 00ddb40 in mainline for uspace/lib/softrend


Ignore:
Timestamp:
2014-08-31T20:10:20Z (11 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
5713e5f
Parents:
8d3512f1
Message:

Get rid of black alias at the edge of rotated windows

Location:
uspace/lib/softrend
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • uspace/lib/softrend/filter.c

    r8d3512f1 r00ddb40  
    3838#include <io/pixel.h>
    3939
     40
    4041static long round(double val)
    4142{
     
    5960}
    6061
    61 static pixel_t get_pixel(pixelmap_t *pixmap, sysarg_t x, sysarg_t y, bool tile)
    62 {
    63         if (tile) {
    64                 x %= pixmap->width;
    65                 y %= pixmap->height;
    66         }
    67 
    68         return pixelmap_get_pixel(pixmap, (sysarg_t) x, (sysarg_t) y);
    69 }
    7062
    7163static inline pixel_t blend_pixels(size_t count, float *weights,
     
    8476}
    8577
    86 pixel_t filter_nearest(pixelmap_t *pixmap, double x, double y, bool tile)
     78pixel_t filter_nearest(pixelmap_t *pixmap, double x, double y,
     79    pixelmap_extend_t extend)
    8780{
    88         return get_pixel(pixmap, round(x), round(y), tile);
     81        return pixelmap_get_extended_pixel(pixmap, round(x), round(y), extend);
    8982}
    9083
    91 pixel_t filter_bilinear(pixelmap_t *pixmap, double x, double y, bool tile)
     84pixel_t filter_bilinear(pixelmap_t *pixmap, double x, double y,
     85    pixelmap_extend_t extend)
    9286{
    9387        long x1 = floor(x);
     
    9791       
    9892        if (y1 == y2 && x1 == x2) {
    99                 return get_pixel(pixmap, (sysarg_t) x1, (sysarg_t) y1,
    100                     tile);
     93                return pixelmap_get_extended_pixel(pixmap,
     94                    (sysarg_t) x1, (sysarg_t) y1, extend);
    10195        }
    10296       
     
    10599       
    106100        pixel_t pixels[4];
    107         pixels[0] = get_pixel(pixmap, x1, y1, tile);
    108         pixels[1] = get_pixel(pixmap, x2, y1, tile);
    109         pixels[2] = get_pixel(pixmap, x1, y2, tile);
    110         pixels[3] = get_pixel(pixmap, x2, y2, tile);
     101        pixels[0] = pixelmap_get_extended_pixel(pixmap, x1, y1, extend);
     102        pixels[1] = pixelmap_get_extended_pixel(pixmap, x2, y1, extend);
     103        pixels[2] = pixelmap_get_extended_pixel(pixmap, x1, y2, extend);
     104        pixels[3] = pixelmap_get_extended_pixel(pixmap, x2, y2, extend);
    111105       
    112106        float weights[4];
     
    119113}
    120114
    121 pixel_t filter_bicubic(pixelmap_t *pixmap, double x, double y, bool tile)
     115pixel_t filter_bicubic(pixelmap_t *pixmap, double x, double y,
     116    pixelmap_extend_t extend)
    122117{
    123118        // TODO
  • uspace/lib/softrend/filter.h

    r8d3512f1 r00ddb40  
    4040#include <io/pixelmap.h>
    4141
    42 typedef pixel_t (*filter_t)(pixelmap_t *, double, double, bool);
     42typedef pixel_t (*filter_t)(pixelmap_t *, double, double, pixelmap_extend_t);
    4343
    44 extern pixel_t filter_nearest(pixelmap_t *, double, double, bool);
    45 extern pixel_t filter_bilinear(pixelmap_t *, double, double, bool);
    46 extern pixel_t filter_bicubic(pixelmap_t *, double, double, bool);
     44extern pixel_t filter_nearest(pixelmap_t *, double, double, pixelmap_extend_t);
     45extern pixel_t filter_bilinear(pixelmap_t *, double, double, pixelmap_extend_t);
     46extern pixel_t filter_bicubic(pixelmap_t *, double, double, pixelmap_extend_t);
    4747
    4848#endif
Note: See TracChangeset for help on using the changeset viewer.