Changeset b5416c3 in mainline


Ignore:
Timestamp:
2012-08-18T18:36:55Z (12 years ago)
Author:
Martin Sucha <sucha14@…>
Branches:
lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
Children:
d17a4a9
Parents:
beb5683
Message:

Use point structure instead of two variables for position in some places.

Location:
uspace/srv/hid/compositor
Files:
2 edited

Legend:

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

    rbeb5683 rb5416c3  
    9292        sysarg_t id;
    9393        uint8_t state;
    94         sysarg_t hpos;
    95         sysarg_t vpos;
     94        desktop_point_t pos;
    9695        sysarg_t btn_num;
    97         sysarg_t btn_hpos;
    98         sysarg_t btn_vpos;
    99         int accum_dx;
    100         int accum_dy;
     96        desktop_point_t btn_pos;
     97        desktop_vector_t accum;
    10198        sysarg_t grab_flags;
    10299        bool pressed;
     
    135132        vslmode_t mode;
    136133        async_sess_t *sess;
    137         sysarg_t hpos;
    138         sysarg_t vpos;
     134        desktop_point_t pos;
    139135        surface_t *surface;
    140136} viewport_t;
     
    174170
    175171        link_initialize(&p->link);
    176         p->hpos = coord_origin;
    177         p->vpos = coord_origin;
     172        p->pos.x = coord_origin;
     173        p->pos.y = coord_origin;
    178174        p->btn_num = 1;
    179         p->btn_hpos = p->hpos;
    180         p->btn_vpos = p->vpos;
    181         p->accum_dx = 0;
    182         p->accum_dy = 0;
     175        p->btn_pos = p->pos;
     176        p->accum.x = 0;
     177        p->accum.y = 0;
    183178        p->grab_flags = GF_EMPTY;
    184179        p->pressed = false;
     
    307302                bool isec_vp = rectangle_intersect(
    308303                    x_dmg_glob, y_dmg_glob, w_dmg_glob, h_dmg_glob,
    309                     vp->hpos, vp->vpos, w_dmg_vp, h_dmg_vp,
     304                    vp->pos.x, vp->pos.y, w_dmg_vp, h_dmg_vp,
    310305                    &x_dmg_vp, &y_dmg_vp, &w_dmg_vp, &h_dmg_vp);
    311306
     
    313308
    314309                        /* Paint background color. */
    315                         for (sysarg_t y = y_dmg_vp - vp->vpos; y <  y_dmg_vp - vp->vpos + h_dmg_vp; ++y) {
    316                                 for (sysarg_t x = x_dmg_vp - vp->hpos; x < x_dmg_vp - vp->hpos + w_dmg_vp; ++x) {
     310                        for (sysarg_t y = y_dmg_vp - vp->pos.y; y <  y_dmg_vp - vp->pos.y + h_dmg_vp; ++y) {
     311                                for (sysarg_t x = x_dmg_vp - vp->pos.x; x < x_dmg_vp - vp->pos.x + w_dmg_vp; ++x) {
    317312                                        surface_put_pixel(vp->surface, x, y, bg_color);
    318313                                }
     
    352347                                         * coordinates. */
    353348                                        transform = win->transform;
    354                                         double hpos = vp->hpos;
    355                                         double vpos = vp->vpos;
    356                                         transform_translate(&transform, -hpos, -vpos);
     349                                        double_point_t pos;
     350                                        pos.x = vp->pos.x;
     351                                        pos.y = vp->pos.y;
     352                                        transform_translate(&transform, -pos.x, -pos.y);
    357353
    358354                                        source_set_transform(&source, transform);                               
     
    361357
    362358                                        drawctx_transfer(&context,
    363                                             x_dmg_win - vp->hpos, y_dmg_win - vp->vpos, w_dmg_win, h_dmg_win);
     359                                            x_dmg_win - vp->pos.x, y_dmg_win - vp->pos.y, w_dmg_win, h_dmg_win);
    364360                                }
    365361                        }
     
    375371                                bool isec_ptr = rectangle_intersect(
    376372                                    x_dmg_vp, y_dmg_vp, w_dmg_vp, h_dmg_vp,
    377                                     ptr->hpos, ptr->vpos, w_dmg_ptr, h_dmg_ptr,
     373                                    ptr->pos.x, ptr->pos.y, w_dmg_ptr, h_dmg_ptr,
    378374                                    &x_dmg_ptr, &y_dmg_ptr, &w_dmg_ptr, &h_dmg_ptr);
    379375
     
    386382
    387383                                        pixel_t pix = 0;
    388                                         sysarg_t x_vp = x_dmg_ptr - vp->hpos;
    389                                         sysarg_t y_vp = y_dmg_ptr - vp->vpos;
    390                                         sysarg_t x_ptr = x_dmg_ptr - ptr->hpos;
    391                                         sysarg_t y_ptr = y_dmg_ptr - ptr->vpos;
     384                                        sysarg_t x_vp = x_dmg_ptr - vp->pos.x;
     385                                        sysarg_t y_vp = y_dmg_ptr - vp->pos.y;
     386                                        sysarg_t x_ptr = x_dmg_ptr - ptr->pos.x;
     387                                        sysarg_t y_ptr = y_dmg_ptr - ptr->pos.y;
    392388
    393389                                        for (sysarg_t y = 0; y < h_dmg_ptr; ++y) {
     
    901897
    902898        link_initialize(&vp->link);
    903         vp->hpos = coord_origin;
    904         vp->vpos = coord_origin;
     899        vp->pos.x = coord_origin;
     900        vp->pos.y = coord_origin;
    905901
    906902        /* Establish output bidirectional connection. */
     
    1002998        /* window_list_mtx locked by caller */
    1003999
    1004         int dx = pointer->accum_dx;
    1005         int dy = pointer->accum_dy;
    1006         pointer->accum_dx = 0;
    1007         pointer->accum_dy = 0;
     1000        int dx = pointer->accum.x;
     1001        int dy = pointer->accum.y;
     1002        pointer->accum.x = 0;
     1003        pointer->accum.y = 0;
    10081004
    10091005        bool move = (pointer->grab_flags & GF_MOVE_X) || (pointer->grab_flags & GF_MOVE_Y);
     
    10891085        /* Update pointer position. */
    10901086        fibril_mutex_lock(&pointer_list_mtx);
    1091         sysarg_t old_hpos = pointer->hpos;
    1092         sysarg_t old_vpos = pointer->vpos;
     1087        desktop_point_t old_pos = pointer->pos;
    10931088        sysarg_t cursor_width;
    10941089        sysarg_t cursor_height;
    10951090        surface_get_resolution(pointer->cursor.states[pointer->state],
    10961091             &cursor_width, &cursor_height);
    1097         pointer->hpos += dx;
    1098         pointer->vpos += dy;
     1092        pointer->pos.x += dx;
     1093        pointer->pos.y += dy;
    10991094        fibril_mutex_unlock(&pointer_list_mtx);
    1100         comp_damage(old_hpos, old_vpos, cursor_width, cursor_height);
    1101         comp_damage(old_hpos + dx, old_vpos + dy, cursor_width, cursor_height);
     1095        comp_damage(old_pos.x, old_pos.y, cursor_width, cursor_height);
     1096        comp_damage(old_pos.x + dx, old_pos.y + dy, cursor_width, cursor_height);
    11021097
    11031098        fibril_mutex_lock(&window_list_mtx);
     
    11111106                        sysarg_t width, height;
    11121107                        surface_get_resolution(top->surface, &width, &height);
    1113                         within_client = comp_coord_to_client(pointer->hpos, pointer->vpos,
     1108                        within_client = comp_coord_to_client(pointer->pos.x, pointer->pos.y,
    11141109                            top->transform, width, height, &point_x, &point_y);
    11151110                        fibril_mutex_unlock(&window_list_mtx);
     
    11301125                } else {
    11311126                        /* Pointer is grabbed by top-level window action. */
    1132                         pointer->accum_dx += dx;
    1133                         pointer->accum_dy += dy;
     1127                        pointer->accum.x += dx;
     1128                        pointer->accum.y += dy;
    11341129#if ANIMATE_WINDOW_TRANSFORMS == 1
    11351130                        sysarg_t x, y, width, height;
     
    11531148
    11541149        if (bpress) {
    1155                 pointer->btn_hpos = pointer->hpos;
    1156                 pointer->btn_vpos = pointer->vpos;
     1150                pointer->btn_pos = pointer->pos;
    11571151                pointer->btn_num = bnum;
    11581152                pointer->pressed = true;
     
    11671161                sysarg_t x, y, width, height;
    11681162                surface_get_resolution(win->surface, &width, &height);
    1169                 bool within_client = comp_coord_to_client(pointer->hpos, pointer->vpos,
     1163                bool within_client = comp_coord_to_client(pointer->pos.x, pointer->pos.y,
    11701164                    win->transform, width, height, &x, &y);
    11711165                fibril_mutex_unlock(&window_list_mtx);
     
    12021196                        if (win->surface) {
    12031197                                surface_get_resolution(win->surface, &width, &height);
    1204                                 within_client = comp_coord_to_client(pointer->hpos, pointer->vpos,
     1198                                within_client = comp_coord_to_client(pointer->pos.x, pointer->pos.y,
    12051199                                    win->transform, width, height, &point_x, &point_y);
    12061200                        }
     
    15181512                        switch (key) {
    15191513                        case KC_I:
    1520                                 vp->hpos += 0;
    1521                                 vp->vpos += -20;
     1514                                vp->pos.x += 0;
     1515                                vp->pos.y += -20;
    15221516                                break;
    15231517                        case KC_K:
    1524                                 vp->hpos += 0;
    1525                                 vp->vpos += 20;
     1518                                vp->pos.x += 0;
     1519                                vp->pos.y += 20;
    15261520                                break;
    15271521                        case KC_J:
    1528                                 vp->hpos += -20;
    1529                                 vp->vpos += 0;
     1522                                vp->pos.x += -20;
     1523                                vp->pos.y += 0;
    15301524                                break;
    15311525                        case KC_L:
    1532                                 vp->hpos += 20;
    1533                                 vp->vpos += 0;
     1526                                vp->pos.x += 20;
     1527                                vp->pos.y += 0;
    15341528                                break;
    15351529                        default:
    1536                                 vp->hpos += 0;
    1537                                 vp->vpos += 0;
     1530                                vp->pos.x += 0;
     1531                                vp->pos.y += 0;
    15381532                                break;
    15391533                        }
    15401534                       
    1541                         sysarg_t x = vp->hpos;
    1542                         sysarg_t y = vp->vpos;
     1535                        sysarg_t x = vp->pos.x;
     1536                        sysarg_t y = vp->pos.y;
    15431537                        sysarg_t width, height;
    15441538                        surface_get_resolution(vp->surface, &width, &height);
  • uspace/srv/hid/compositor/compositor.h

    rbeb5683 rb5416c3  
    3636#define COMPOSITOR_COMPOSITOR_H_
    3737
     38typedef native_t desktop_coord_t;
     39typedef struct {
     40        desktop_coord_t x;
     41        desktop_coord_t y;
     42} desktop_point_t;
     43typedef desktop_point_t desktop_vector_t;
     44
     45/* TODO remove? */
     46typedef struct {
     47        double x;
     48        double y;
     49} double_point_t;
     50typedef double_point_t double_vector_t;
     51
    3852#endif
    3953
Note: See TracChangeset for help on using the changeset viewer.