Ignore:
Timestamp:
2014-08-31T14:53:51Z (10 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
00ddb40
Parents:
c6c39d4f
Message:

Implement a bilinear filter and use it when compositing windows.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • uspace/srv/hid/compositor/compositor.c

    rc6c39d4f r8d3512f1  
    8484static sysarg_t coord_origin;
    8585static pixel_t bg_color;
     86static filter_t filter = filter_bilinear;
     87static unsigned int filter_index = 1;
    8688
    8789typedef struct {
     
    408410
    409411                        source_init(&source);
    410                         source_set_filter(&source, filter_nearest);
     412                        source_set_filter(&source, filter);
    411413                        drawctx_init(&context, vp->surface);
    412414                        drawctx_set_compose(&context, compose_over);
     
    18181820            key == KC_O || key == KC_P);
    18191821        bool kconsole_switch = (mods & KM_ALT) && (key == KC_M);
    1820 
    1821         bool filter = (type == KEY_RELEASE) && (win_transform || win_resize ||
     1822        bool filter_switch = (mods & KM_ALT) && (key == KC_Y);
     1823
     1824        bool key_filter = (type == KEY_RELEASE) && (win_transform || win_resize ||
    18221825            win_opacity || win_close || win_switch || viewport_move ||
    1823             viewport_change || kconsole_switch);
    1824 
    1825         if (filter) {
     1826            viewport_change || kconsole_switch || filter_switch);
     1827
     1828        if (key_filter) {
    18261829                /* no-op */
    18271830        } else if (win_transform) {
     
    20912094                if (console_kcon())
    20922095                        active = false;
     2096        } else if (filter_switch) {
     2097                filter_index++;
     2098                if (filter_index > 1)
     2099                        filter_index = 0;
     2100                if (filter_index == 0) {
     2101                        filter = filter_nearest;
     2102                }
     2103                else {
     2104                        filter = filter_bilinear;
     2105                }
     2106                comp_damage(0, 0, UINT32_MAX, UINT32_MAX);
    20932107        } else {
    20942108                window_event_t *event = (window_event_t *) malloc(sizeof(window_event_t));
Note: See TracChangeset for help on using the changeset viewer.