Ignore:
Timestamp:
May 15, 2011, 5:32:56 PM (12 years ago)
Author:
Sam Hocevar
Message:

imlib: refactor GetClip?, SetClip? etc. to use vec2i.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • abuse/trunk/src/particle.cpp

    r643 r665  
    171171void part_frame::draw(image *screen, int x, int y, int dir)
    172172{
    173   int cx1, cy1, cx2, cy2;
    174   screen->GetClip(cx1, cy1, cx2, cy2);
    175   if (x + x1 >= cx2 || x + x2 < cx1 || y + y1 >= cy2 || y + y2 < cy1) return;
     173    vec2i caa, cbb;
     174    screen->GetClip(caa, cbb);
     175
     176    if (x + x1 >= cbb.x || x + x2 < caa.x || y + y1 >= cbb.y || y + y2 < caa.y)
     177       return;
    176178
    177179  part *pon=data;
    178   cy1 -= y;
    179   cy2 -= y;
     180  caa.y -= y;
     181  cbb.y -= y;
    180182
    181183  int i=t;
    182   while (i && pon->y<cy1) { pon++; i--; }
     184  while (i && pon->y<caa.y) { pon++; i--; }
    183185  if (!i) return ;
    184186  screen->Lock();
    185187  if (dir>0)
    186188  {
    187     while (i && pon->y < cy2)
     189    while (i && pon->y < cbb.y)
    188190    {
    189191      long dx=x-pon->x;
    190       if (dx >= cx1 && dx < cx2)
     192      if (dx >= caa.x && dx < cbb.x)
    191193      *(screen->scan_line(pon->y+y)+dx)=pon->color;
    192194      i--;
     
    195197  } else
    196198  {
    197     while (i && pon->y < cy2)
     199    while (i && pon->y < cbb.y)
    198200    {
    199201      long dx=pon->x+x;
    200       if (dx >= cx1 && dx < cx2)
     202      if (dx >= caa.x && dx < cbb.x)
    201203        *(screen->scan_line(pon->y+y)+dx)=pon->color;
    202204      i--;
     
    209211void scatter_line(int x1, int y1, int x2, int y2, int c, int s)
    210212{
    211     int cx1, cy1, cx2, cy2;
    212     main_screen->GetClip(cx1, cy1, cx2, cy2);
     213    vec2i caa, cbb;
     214    main_screen->GetClip(caa, cbb);
    213215
    214216    int t = abs( x2 - x1 ) > abs( y2 - y1 ) ? abs( x2 - x1 ) + 1 : abs( y2 - y1 ) + 1;
     
    224226        x = ( xo >> 16 ) + ( jrand() >> s ) - xm;
    225227        y = ( yo >> 16 ) + ( jrand() >> s ) - ym;
    226         if( !( x < cx1 || y < cy1 || x >= cx2 || y >= cy2 ) )
     228        if( !( x < caa.x || y < caa.y || x >= cbb.x || y >= cbb.y ) )
    227229        {
    228230            *(main_screen->scan_line( y ) + x ) = c;
     
    238240void ascatter_line(int x1, int y1, int x2, int y2, int c1, int c2, int s)
    239241{
    240     int cx1, cy1, cx2, cy2;
    241     main_screen->GetClip(cx1, cy1, cx2, cy2);
     242    vec2i caa, cbb;
     243    main_screen->GetClip(caa, cbb);
    242244
    243245    int t = abs( x2 - x1 ) > abs( y2 - y1 ) ? abs( x2 - x1 ) + 1 : abs( y2 - y1 ) + 1;
     
    259261        // FIXME: these clip values seemed wrong to me before the GetClip
    260262        // refactoring.
    261         if( !( x <= cx1 || y <= cy1 || x >= cx2 - 1 || y >= cy2 - 1) )
     263        if( !( x <= caa.x || y <= caa.y || x >= cbb.x - 1 || y >= cbb.y - 1) )
    262264        {
    263265            addr = main_screen->scan_line( y ) + x;
Note: See TracChangeset for help on using the changeset viewer.