Сравнительное объектно-ориентированное проектирование - 34 стр.

UptoLike

Составители: 

34
// Здесь используется то, что оператор присвоения в C возвращает присвоенное значение
// Переменная result приобретает новое значение и одновременно возвращает его как
// условие оператора if
if (result=result &&
Contains(Rect(newPos.x,newPos.y,newPos.x+size.cx,newPos.y+size.cy),
spriteList->ClientRect))
{
bool VisState=visible;
Visible=false;
location=newPos;
Visible=VisState;
}
return result;
}
// Перемещает спрайт в точку newPos
bool __fastcall TSprite::MoveTo(TPoint const newPos)
{
TSize s;
s.cx=newPos.x-location.x;s.cy=newPos.y-location.y;
return Move(s);
}
// Готовит изображение спрайта
void __fastcall TSprite::BeginPaint()
{
SetMask(Z);
for (int i=spriteList->Count-1;i>=Z+1;i--)
if (sprite->mask && sprite->visible) sprite->Restore();
}
// Устанавливает маску для спрайта с индексом anID (слой)
void __fastcall TSprite::SetMask(int const anID)
{
for (int i=anID+1;i<spriteList->Count;i++)
{
sprite->mask= sprite->Intersect(anID,i) || sprite->mask;
if (mask) SetMask(i);
}
}
// Завершает изображение спрайта
void __fastcall TSprite::EndPaint()
{
for (int i=Z+1;i<spriteList->Count;i++)
if (sprite->mask)
{
if (sprite->visible) sprite->Paint();
sprite->mask=false;
}
}