Changeset 522


Ignore:
Timestamp:
Apr 22, 2011, 4:12:43 AM (12 years ago)
Author:
Sam Hocevar
Message:

imlib: change loop logic here and there to be nicer to the cache.

File:
1 edited

Legend:

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

    r521 r522  
    237237int32_t image::total_pixels(uint8_t background)
    238238{
    239     int16_t i, j;
    240     int32_t co;
    241     uint8_t *c;
    242 
     239    int ret = 0;
    243240    Lock();
    244     for(co = 0, i = m_size.y - 1; i >= 0; i--)
    245     {
    246         c = scan_line(i);
    247         for(j = m_size.x - 1; j >= 0; j--, c++)
    248             if(*c != background) co++;
     241    for(int i = 0; i < m_size.y; i++)
     242    {
     243        uint8_t *c = scan_line(i);
     244        for (int x = 0; x < m_size.x; x++)
     245            if (c[x] != background)
     246                ret++;
    249247    }
    250248    Unlock();
    251     return co;
     249    return ret;
    252250}
    253251
    254252void image::clear(int16_t color)
    255253{
    256     int16_t i;
    257 
    258254    Lock();
    259255    if(color == -1)
     
    262258    {
    263259        if(m_special->x1_clip() < m_special->x2_clip())
    264             for(i = m_special->y2_clip() - 1; i >= m_special->y1_clip(); i--)
    265                 memset(scan_line(i) + m_special->x1_clip(), color,
     260            for(int j = m_special->y1_clip(); j <m_special->y2_clip(); j++)
     261                memset(scan_line(j) + m_special->x1_clip(), color,
    266262                       m_special->x2_clip() - m_special->x1_clip());
    267263    }
    268264    else
    269         for(i = m_size.y - 1; i >= 0; i--)
    270             memset(scan_line(i), color, m_size.x);
     265        for(int j = 0; j < m_size.y; j++)
     266            memset(scan_line(j), color, m_size.x);
    271267    AddDirty(0, 0, m_size.x, m_size.y);
    272268    Unlock();
     
    278274    image *im = new image(m_size);
    279275    im->Lock();
    280     for(int i = m_size.y - 1; i >= 0; i--)
    281         memcpy(im->scan_line(i), scan_line(i), m_size.x);
     276    for(int j = 0; j < m_size.y; j++)
     277        memcpy(im->scan_line(j), scan_line(j), m_size.x);
    282278    im->Unlock();
    283279    Unlock();
     
    11251121  uint8_t *sl;
    11261122  Lock();
    1127   for (y=m_size.y-1; y>=0; y--)
     1123  for (y = 0; y < m_size.y; y++)
    11281124  {
    11291125    sl=scan_line(y);
    1130     for (i=0, j=y%4, x=m_size.x-1; x>=0; x--)
    1131     {
    1132       if (pal->red(sl[x])>dt_matrix[j*4+i])
    1133     sl[x]=255;
    1134       else sl[x]=0;
    1135       if (i==3) i=0; else i++;
    1136     }
     1126    for (i=0, j=y%4, x=0; x < m_size.x; x++)
     1127      sl[x] = (pal->red(sl[x]) > dt_matrix[j * 4 + (x & 3)]) ? 255 : 0;
    11371128  }
    11381129  Unlock();
     
    11981189    dst=scan_line(ydst)+xdst;
    11991190    if (xd<0)
    1200       for (xt=xtot; xt; xt--)
    1201         *(dst++)=*(src++);
    1202       else for (xt=xtot; xt; xt--)
    1203         *(dst--)=*(src--);
     1191      for (xt = 0; xt < xtot; xt++)
     1192        *dst++ = *src++;
     1193      else for (xt = 0; xt < xtot; xt++)
     1194        *dst-- = *src--;
    12041195    if (yd<0) { ysrc++; ydst++; } else { ysrc--; ydst--; }
    12051196  }
Note: See TracChangeset for help on using the changeset viewer.