Changeset 652


Ignore:
Timestamp:
May 14, 2011, 4:00:48 PM (9 years ago)
Author:
Sam Hocevar
Message:

imlib: merge JCMouse into EventHandler?.

Location:
abuse/trunk/src
Files:
2 deleted
6 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/imlib/Makefile.am

    r643 r652  
    2727    video.cpp video.h \
    2828    event.cpp event.h \
    29     mouse.h timing.h jdir.h visobj.h \
     29    timing.h jdir.h visobj.h \
    3030    $(NULL)
    3131
  • abuse/trunk/src/imlib/event.cpp

    r643 r652  
    2727#include "event.h"
    2828#include "video.h"
     29#include "filter.h"
     30
     31//
     32// Constructor
     33//
     34EventHandler::EventHandler(image *screen, palette *pal)
     35{
     36    CHECK(screen && pal);
     37    last_keystat = get_key_flags();
     38    m_pending = 0;
     39
     40    m_screen = screen;
     41
     42    // Mouse stuff
     43    uint8_t mouse_sprite[]=
     44    {
     45        0, 2, 0, 0, 0, 0, 0, 0,
     46        2, 1, 2, 0, 0, 0, 0, 0,
     47        2, 1, 1, 2, 0, 0, 0, 0,
     48        2, 1, 1, 1, 2, 0, 0, 0,
     49        2, 1, 1, 1, 1, 2, 0, 0,
     50        2, 1, 1, 1, 1, 1, 2, 0,
     51        0, 2, 1, 1, 2, 2, 0, 0,
     52        0, 0, 2, 1, 1, 2, 0, 0,
     53        0, 0, 2, 1, 1, 2, 0, 0,
     54        0, 0, 0, 2, 2, 0, 0, 0
     55    };
     56
     57    Filter f;
     58    f.Set(1, pal->brightest(1));
     59    f.Set(2, pal->darkest(1));
     60    image *im = new image(vec2i(8, 10), mouse_sprite);
     61    f.Apply(im);
     62
     63    m_sprite = new sprite(screen, im, 100, 100);
     64    m_pos = m_lastpos = screen->Size() / 2;
     65    m_button = m_lastbutton = 0;
     66    m_center = vec2i(0, 0);
     67
     68    // Platform-specific stuff
     69    SysInit();
     70}
    2971
    3072//
     
    3375EventHandler::~EventHandler()
    3476{
    35     delete mouse;
     77    ;
    3678}
    3779
  • abuse/trunk/src/imlib/event.h

    r645 r652  
    2828#include "keys.h"
    2929#include "sprite.h"
    30 #include "mouse.h"
    3130
    3231class Jwindow;
     
    7069    }
    7170
    72   JCMouse *mouse;
    73   sprite *mouse_sprite() { return mouse->mouse_sprite(); }
     71    void SysInit();
     72    void SysWarpMouse(vec2i pos);
     73
    7474  int IsPending();
    7575  void Get(Event &ev);
    7676  void add_redraw(int X1, int Y1, int X2, int Y2, void *Start);
    77   void mouse_status(int &x, int &y, int &button)
     77  void flush_screen();
     78
     79  int has_mouse() { return 1; }
     80  void set_mouse_shape(image *im, int centerx, int centery)
    7881  {
    79     if (mouse)
    80     {
    81       x = mouse->x();
    82       y = mouse->y();
    83       button = mouse->button();
    84     } else x = y = button = 0;
     82    m_sprite->change_visual(im);
     83    m_center = vec2i(-centerx, -centery);
    8584  }
    86   void flush_screen();
    87   int has_mouse() { return mouse->exists(); }
    88   void set_mouse_shape(image *im, int centerx, int centery) { mouse->set_shape(im, -centerx, -centery); }
    89   void set_mouse_position(int mx, int my) { if (mouse) mouse->set_position(mx, my); }
     85  void set_mouse_position(int mx, int my)
     86  {
     87    m_pos = vec2i(Min(mx, m_screen->Size().x - 1),
     88                  Min(my, m_screen->Size().y - 1));
     89    SysWarpMouse(m_pos);
     90  }
    9091
    9192private:
     
    9394
    9495    linked_list m_events;
    95     int mhere, m_pending, last_keystat, last_key;
     96    int m_pending, last_keystat, last_key;
    9697    sprite_controller sc;
     98
     99    image *m_screen;
     100
     101protected:
     102    /* Mouse information */
     103    sprite *m_sprite;
     104    vec2i m_pos, m_lastpos, m_center;
     105    int m_button, m_lastbutton;
    97106};
    98107
  • abuse/trunk/src/imlib/jwindow.cpp

    r650 r652  
    328328void WindowManager::flush_screen()
    329329{
    330     Jwindow *p, *q;
    331 
    332330    int mx = 0, my = 0;
    333     image *mouse_pic = NULL, *mouse_save = NULL;
    334 
    335     if(has_mouse())
    336     {
    337         mouse_pic = mouse_sprite()->visual;
    338         mouse_save = mouse_sprite()->save;
    339         mx = mouse->drawx();
    340         my = mouse->drawy();
    341 
    342         mouse_save->PutPart(m_surf, 0, 0, mx, my,
    343                             mx + mouse_pic->Size().x - 1,
    344                             my + mouse_pic->Size().y - 1);
    345         m_surf->PutImage(mouse_pic, vec2i(mx, my), 1);
    346     }
    347 
    348     for(p = m_first; p; p = p->next)
    349         if(!p->is_hidden())
     331
     332    if (has_mouse())
     333    {
     334        mx = (m_pos - m_center).x;
     335        my = (m_pos - m_center).y;
     336
     337        m_sprite->save->PutPart(m_surf, 0, 0, mx, my,
     338                                mx + m_sprite->visual->Size().x - 1,
     339                                my + m_sprite->visual->Size().y - 1);
     340        m_surf->PutImage(m_sprite->visual, vec2i(mx, my), 1);
     341    }
     342
     343    for (Jwindow *p = m_first; p; p = p->next)
     344        if (!p->is_hidden())
    350345            m_surf->delete_dirty(p->x, p->y, p->x + p->l, p->y + p->h);
    351346    update_dirty(m_surf);
    352347
    353     if(has_mouse())
    354         m_surf->PutImage(mouse_save, vec2i(mx, my));
    355 
    356     for(p = m_first; p; p = p->next)
    357     {
    358         if(p->is_hidden())
     348    if (has_mouse())
     349        m_surf->PutImage(m_sprite->save, vec2i(mx, my));
     350
     351    for (Jwindow *p = m_first; p; p = p->next)
     352    {
     353        if (p->is_hidden())
    359354            continue;
    360355
    361         if(has_mouse())
     356        if (has_mouse())
    362357        {
    363             mouse_save->PutPart(p->m_surf, 0, 0, mx - p->x, my - p->y,
    364                                 mx - p->x + mouse_pic->Size().x - 1,
    365                                 my - p->y + mouse_pic->Size().y - 1);
    366             p->m_surf->PutImage(mouse_pic, vec2i(mx - p->x, my - p->y), 1);
     358            m_sprite->save->PutPart(p->m_surf, 0, 0, mx - p->x, my - p->y,
     359                                    mx - p->x + m_sprite->visual->Size().x - 1,
     360                                    my - p->y + m_sprite->visual->Size().y - 1);
     361            p->m_surf->PutImage(m_sprite->visual,
     362                                vec2i(mx - p->x, my - p->y), 1);
    367363        }
    368364
    369365//          m_surf->delete_dirty(p->x, p->y, p->x+p->l, p->y+p->h);
    370         for(q = p->next; q; q = q->next)
    371             if(!q->is_hidden())
     366        for (Jwindow *q = p->next; q; q = q->next)
     367            if (!q->is_hidden())
    372368                p->m_surf->delete_dirty(q->x - p->x, q->y - p->y,
    373                                           q->x + q->l - p->x,
    374                                           q->y + q->h - p->y);
     369                                        q->x + q->l - p->x,
     370                                        q->y + q->h - p->y);
    375371        update_dirty(p->m_surf, p->x, p->y);
    376         if(has_mouse())
    377             p->m_surf->PutImage(mouse_save, vec2i(mx - p->x, my - p->y), 0);
     372        if (has_mouse())
     373            p->m_surf->PutImage(m_sprite->save, vec2i(mx - p->x, my - p->y), 0);
    378374    }
    379375}
  • abuse/trunk/src/sdlport/Makefile.am

    r623 r652  
    66libsdlport_a_SOURCES = \
    77    video.cpp \
    8     mouse.cpp \
    98    event.cpp \
    109    sound.cpp sound.h \
  • abuse/trunk/src/sdlport/event.cpp

    r647 r652  
    3030#include "palette.h"
    3131#include "video.h"
    32 #include "mouse.h"
    3332#include "event.h"
    3433#include "timing.h"
     
    4039short mouse_buttons[5] = { 0, 0, 0, 0, 0 };
    4140
    42 //
    43 // Constructor
    44 //
    45 EventHandler::EventHandler(image *screen, palette *pal)
    46 {
    47     CHECK(screen && pal);
    48     mouse = new JCMouse(screen, pal);
    49     mhere = mouse->exists();
    50     last_keystat = get_key_flags();
    51     m_pending = 0;
    52 
     41void EventHandler::SysInit()
     42{
    5343    // Ignore activate events
    5444    SDL_EventState(SDL_ACTIVEEVENT, SDL_IGNORE);
     45}
     46
     47void EventHandler::SysWarpMouse(vec2i pos)
     48{
     49    SDL_WarpMouse(pos.x, pos.y);
    5550}
    5651
     
    112107    // NOTE : that the mouse status should be known
    113108    // even if another event has occurred.
    114     ev.mouse_move.x = mouse->x();
    115     ev.mouse_move.y = mouse->y();
    116     ev.mouse_button = mouse->button();
     109    ev.mouse_move.x = m_pos.x;
     110    ev.mouse_move.y = m_pos.y;
     111    ev.mouse_button = m_button;
    117112
    118113    // Gather next event
     
    173168        ev.mouse_button &= (0xff - RIGHT_BUTTON);
    174169    }
    175     mouse->update(ev.mouse_move.x, ev.mouse_move.y, ev.mouse_button);
     170    m_pos = vec2i(ev.mouse_move.x, ev.mouse_move.y);
     171    m_button = ev.mouse_button;
    176172
    177173    // Sort out other kinds of events
Note: See TracChangeset for help on using the changeset viewer.