Ignore:
Timestamp:
May 14, 2011, 3:06:23 AM (11 years ago)
Author:
Sam Hocevar
Message:

imlib: make some Image methods use vec2i.

File:
1 edited

Legend:

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

    r644 r650  
    319319
    320320
    321 void image::PutImage(image *im, int16_t x, int16_t y, char transparent)
     321void image::PutImage(image *im, vec2i pos, int transparent)
    322322{
    323323    int16_t i, j, xl, yl;
     
    327327    if(m_special)
    328328    {
    329         PutPart(im, x, y, 0, 0, im->m_size.x-1, im->m_size.y-1, transparent);
     329        PutPart(im, pos.x, pos.y, 0, 0, im->m_size.x-1, im->m_size.y-1, transparent);
    330330        return;
    331331    }
    332332
    333     if(x < m_size.x && y < m_size.y)
     333    if(pos.x < m_size.x && pos.y < m_size.y)
    334334    {
    335335        xl = im->m_size.x;
    336         if(x + xl > m_size.x) // clip to the border of the screen
    337             xl = m_size.x - x;
     336        if(pos.x + xl > m_size.x) // clip to the border of the screen
     337            xl = m_size.x - pos.x;
    338338        yl = im->m_size.y;
    339         if(y + yl > m_size.y)
    340             yl = m_size.y - y;
     339        if(pos.y + yl > m_size.y)
     340            yl = m_size.y - pos.y;
    341341
    342342        int startx = 0, starty = 0;
    343         if(x < 0)
     343        if(pos.x < 0)
    344344        {
    345             startx = -x;
    346             x = 0;
    347         }
    348         if(y < 0)
     345            startx = -pos.x;
     346            pos.x = 0;
     347        }
     348        if(pos.y < 0)
    349349        {
    350             starty = -y;
    351             y = 0;
     350            starty = -pos.y;
     351            pos.y = 0;
    352352        }
    353353
     
    355355            return;
    356356
    357         AddDirty(x, y, x + xl, y + yl);
     357        AddDirty(pos.x, pos.y, pos.x + xl, pos.y + yl);
    358358        Lock();
    359359        im->Lock();
    360         for(j = starty; j < yl; j++, y++)
     360        for(j = starty; j < yl; j++, pos.y++)
    361361        {
    362             pg1 = scan_line(y);
     362            pg1 = scan_line(pos.y);
    363363            pg2 = im->scan_line(j);
    364364            if(transparent)
    365365            {
    366                 for(i = startx, source = pg2+startx, dest = pg1 + x;
     366                for(i = startx, source = pg2+startx, dest = pg1 + pos.x;
    367367                    i < xl;
    368368                    i++, source++, dest++)
     
    373373            }
    374374            else
    375                 memcpy(&pg1[x], pg2, xl); // straight copy
     375                memcpy(&pg1[pos.x], pg2, xl); // straight copy
    376376        }
    377377        im->Unlock();
     
    475475  Lock();
    476476  im->Lock();
    477   pg1 = scan_line(y);
    478   pg2 = im->scan_line(y1);
    479477
    480478  if (transparent)
     
    482480    for (j=0; j<ylen; j++)
    483481    {
     482      pg1 = scan_line(y + j);
     483      pg2 = im->scan_line(y1 + j);
    484484      for (i=0, source=&pg2[x1], dest=&pg1[x]; i<xlen; i++, source++, dest++)
    485485        if (*source) *dest=*source;
    486       pg1=next_line(y+j, pg1);
    487       pg2=im->next_line(y1+j, pg2);
    488486    }
    489487  }
     
    491489  for (j=0; j<ylen; j++)
    492490  {
     491    pg1 = scan_line(y + j);
     492    pg2 = im->scan_line(y1 + j);
    493493    memcpy(&pg1[x], &pg2[x1], xlen);   // strait copy
    494     pg1 = next_line(y+j, pg1);
    495     pg2 = im->next_line(y1+j, pg2);
    496494  }
    497495  im->Unlock();
Note: See TracChangeset for help on using the changeset viewer.