Ignore:
Timestamp:
Apr 20, 2011, 9:02:33 PM (11 years ago)
Author:
Sam Hocevar
Message:

imlib: refactor dirty_rect clipping coordiantes so that the upper
bound is no longer inclusive. It will make things easier in the future.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/imlib/image.h

    r515 r518  
    6363{
    6464private:
    65     int16_t l, h;
    66     int16_t clipx1, clipy1, clipx2, clipy2;
     65    int m_l, m_h;
     66    int m_clipx1, m_clipy1, m_clipx2, m_clipy2;
    6767
    6868public:
     
    7474
    7575    image_descriptor(vec2i size, int keep_dirties = 1, int static_memory = 0);
    76     int16_t bound_x1(int16_t x1)  { return x1 < clipx1 ? clipx1 : x1; }
    77     int16_t bound_y1(int16_t y1)  { return y1 < clipy1 ? clipy1 : y1; }
    78     int16_t bound_x2(int16_t x2)  { return x2 > clipx2 ? clipx2 : x2; }
    79     int16_t bound_y2(int16_t y2)  { return y2 > clipy2 ? clipy2 : y2; }
    80     int16_t x1_clip() { return clipx1; }
    81     int16_t y1_clip() { return clipy1; }
    82     int16_t x2_clip() { return clipx2; }
    83     int16_t y2_clip() { return clipy2; }
    84     void dirty_area(int16_t x1, int16_t y1, int16_t x2, int16_t y2) { ; }
    85     void clean_area(int16_t x1, int16_t y1, int16_t x2, int16_t y2) { ; }
    86     void clear_dirties();
    87     int16_t get_dirty_area(int16_t &x1, int16_t &y1, int16_t &x2, int16_t &y2)
    88     {
    89         return 0;
    90     }
    91     void get_clip(int16_t &x1, int16_t &y1, int16_t &x2, int16_t &y2)
    92     {
    93         x1 = clipx1; y1 = clipy1; x2 = clipx2; y2 = clipy2;
    94     }
    95     void set_clip(int16_t x1, int16_t y1, int16_t x2, int16_t y2)
    96     {
    97         if(x2 < x1) x2 = x1;
    98         if(y2 < y1) y2 = y1;
    99         if(x1 < 0) clipx1 = 0; else clipx1 = x1;
    100         if(y1 < 0) clipy1 = 0; else clipy1 = y1;
    101         if(x2 >= l) clipx2 = l - 1; else clipx2 = x2;
    102         if(y2 >= h) clipy2 = h - 1; else clipy2 = y2;
    103     }
    104     void reduce_dirties();
    105     void add_dirty(int x1, int y1, int x2, int y2);
     76    int bound_x1(int x1) { return x1 < m_clipx1 ? m_clipx1 : x1; }
     77    int bound_y1(int y1) { return y1 < m_clipy1 ? m_clipy1 : y1; }
     78    int bound_x2(int x2) { return x2 > m_clipx2 ? m_clipx2 : x2; }
     79    int bound_y2(int y2) { return y2 > m_clipy2 ? m_clipy2 : y2; }
     80    inline int x1_clip() { return m_clipx1; }
     81    inline int y1_clip() { return m_clipy1; }
     82    inline int x2_clip() { return m_clipx2; }
     83    inline int y2_clip() { return m_clipy2; }
     84    void ClearDirties();
     85    void GetClip(int &x1, int &y1, int &x2, int &y2)
     86    {
     87        x1 = m_clipx1; y1 = m_clipy1; x2 = m_clipx2; y2 = m_clipy2;
     88    }
     89    void SetClip(int x1, int y1, int x2, int y2)
     90    {
     91        if(x2 < x1 + 1) x2 = x1 + 1;
     92        if(y2 < y1 + 1) y2 = y1 + 1;
     93        m_clipx1 = Max(x1, 0); m_clipy1 = Max(y1, 0);
     94        m_clipx2 = Min(x2, m_l); m_clipy2 = Min(y2, m_h);
     95    }
     96    void ReduceDirties();
     97    void AddDirty(int x1, int y1, int x2, int y2);
    10698    void delete_dirty(int x1, int y1, int x2, int y2);
    107     void resize(int16_t length, int16_t height)
    108     {
    109         l = length; h = height;
    110         clipx1 = 0; clipy1 = 0; clipx2 = l - 1; clipy2 = h - 1;
     99    void Resize(vec2i size)
     100    {
     101        m_l = size.x; m_h = size.y;
     102        m_clipx1 = 0; m_clipy1 = 0; m_clipx2 = m_l; m_clipy2 = m_h;
    111103    }
    112104};
     
    174166    void burn_led(int16_t x, int16_t y, int32_t num, int16_t color,
    175167                  int16_t scale = 1);
    176     void set_clip(int16_t x1, int16_t y1, int16_t x2, int16_t y2);
    177     void get_clip(int16_t &x1,int16_t &y1,int16_t &x2,int16_t &y2);
    178     void in_clip(int16_t x1, int16_t y1, int16_t x2, int16_t y2);
     168    void SetClip(int x1, int y1, int x2, int y2);
     169    void GetClip(int &x1, int &y1, int &x2, int &y2);
     170    void InClip(int x1, int y1, int x2, int y2);
    179171
    180172    void dirt_off()
     
    187179    }
    188180
    189     void add_dirty(int x1, int y1, int x2, int y2)
    190     {
    191         if(m_special) m_special->add_dirty(x1, y1, x2, y2);
     181    void AddDirty(int x1, int y1, int x2, int y2)
     182    {
     183        if (m_special) m_special->AddDirty(x1, y1, x2, y2);
    192184    }
    193185    void delete_dirty(int x1, int y1, int x2, int y2)
     
    195187        if(m_special) m_special->delete_dirty(x1, y1, x2, y2);
    196188    }
    197     void clear_dirties()
    198     {
    199         if(m_special) m_special->clear_dirties();
     189    void ClearDirties()
     190    {
     191        if (m_special) m_special->ClearDirties();
    200192    }
    201193    void dither(palette *pal); // use a b&w palette!
Note: See TracChangeset for help on using the changeset viewer.