Changeset 00ddb40 in mainline for uspace/lib/softrend/filter.c


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

File:
1 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
Note: See TracChangeset for help on using the changeset viewer.