ZRect::Draw
This commit is contained in:
parent
0e65cbda2d
commit
a123fd50c9
@ -1,6 +1,9 @@
|
||||
ZEngine Version Log for Version 0.7.7
|
||||
$Id: changelog.txt,v 1.3 2002/12/01 07:56:17 cozman Exp $
|
||||
$Id: changelog.txt,v 1.4 2002/12/01 08:36:39 cozman Exp $
|
||||
|
||||
0.7.8
|
||||
-Added ZRect::Draw using OpenGL.
|
||||
-Fixed ZRectTest to use new ZRect.
|
||||
|
||||
0.7.7
|
||||
-Changed behavior of core ZEngine class methods to reflect new OpenGL behavior.
|
||||
|
@ -13,7 +13,7 @@
|
||||
File: ZE_ZRect.h <br>
|
||||
Description: Header file for core ZEngine Rectangle Object. <br>
|
||||
Author(s): James Turk <br>
|
||||
$Id: ZE_ZRect.h,v 1.1 2002/11/21 05:41:11 cozman Exp $<br>
|
||||
$Id: ZE_ZRect.h,v 1.2 2002/12/01 08:36:39 cozman Exp $<br>
|
||||
|
||||
\file ZE_ZRect.h
|
||||
\brief Definition file for ZRect.
|
||||
@ -36,15 +36,15 @@ namespace ZE
|
||||
**/
|
||||
class ZRect
|
||||
{
|
||||
private:
|
||||
protected:
|
||||
//! X Position of top left corner of rectangle.
|
||||
int mX;
|
||||
int rX;
|
||||
//! Y Position of top left corner of rectangle.
|
||||
int mY;
|
||||
int rY;
|
||||
//! Width of Rectangle.
|
||||
int mWidth;
|
||||
int rWidth;
|
||||
//! Height of Rectangle.
|
||||
int mHeight;
|
||||
int rHeight;
|
||||
|
||||
public:
|
||||
|
||||
@ -93,6 +93,17 @@ class ZRect
|
||||
**/
|
||||
bool operator<(const ZRect &rhs) const;
|
||||
|
||||
/*!
|
||||
\brief Draw rectangle. (filled)
|
||||
|
||||
Draw the ZRect, this function is mainly provided for testing purposes.
|
||||
\param red Red component of color (0-255).
|
||||
\param green Green component of color (0-255).
|
||||
\param blue Blue component of color (0-255).
|
||||
\param alpha Alpha component of color (0-255).
|
||||
**/
|
||||
void Draw(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha=255);
|
||||
|
||||
/*!
|
||||
\brief Changes the location of the rectangle.
|
||||
|
||||
|
@ -13,7 +13,7 @@
|
||||
File: ZE_ZRect.cpp <br>
|
||||
Description: Implementation source file for core ZEngine Rectangle Object. <br>
|
||||
Author(s): James Turk <br>
|
||||
$Id: ZE_ZRect.cpp,v 1.1 2002/11/21 05:41:13 cozman Exp $<br>
|
||||
$Id: ZE_ZRect.cpp,v 1.2 2002/12/01 08:36:39 cozman Exp $<br>
|
||||
|
||||
\file ZE_ZRect.cpp
|
||||
\brief Source file for ZRect.
|
||||
@ -27,17 +27,17 @@ namespace ZE
|
||||
{
|
||||
|
||||
ZRect::ZRect() :
|
||||
mX(0),mY(0),mWidth(0),mHeight(0)
|
||||
rX(0),rY(0),rWidth(0),rHeight(0)
|
||||
{
|
||||
}
|
||||
|
||||
ZRect::ZRect(int x, int y, int width, int height) :
|
||||
mX(x),mY(y),mWidth(width),mHeight(height)
|
||||
rX(x),rY(y),rWidth(width),rHeight(height)
|
||||
{
|
||||
}
|
||||
|
||||
ZRect::ZRect(const ZRect &rhs) :
|
||||
mX(rhs.X()),mY(rhs.Y()),mWidth(rhs.Width()),mHeight(rhs.Height())
|
||||
rX(rhs.X()),rY(rhs.Y()),rWidth(rhs.Width()),rHeight(rhs.Height())
|
||||
{
|
||||
}
|
||||
|
||||
@ -45,10 +45,10 @@ const ZRect& ZRect::operator=(const ZRect &rhs)
|
||||
{
|
||||
if(this != &rhs)
|
||||
{
|
||||
mX = rhs.X();
|
||||
mY = rhs.Y();
|
||||
mWidth = rhs.Width();
|
||||
mHeight = rhs.Height();
|
||||
rX = rhs.X();
|
||||
rY = rhs.Y();
|
||||
rWidth = rhs.Width();
|
||||
rHeight = rhs.Height();
|
||||
}
|
||||
return *this;
|
||||
}
|
||||
@ -57,27 +57,27 @@ bool ZRect::operator<(const ZRect &rhs) const
|
||||
{
|
||||
//< is the one that is closer to top corner (as a whole)//
|
||||
|
||||
if(mY < rhs.Y()) //check Ys
|
||||
if(rY < rhs.Y()) //check Ys
|
||||
return true;
|
||||
else if(mY > rhs.Y())
|
||||
else if(rY > rhs.Y())
|
||||
return false;
|
||||
else
|
||||
{
|
||||
if(mX < rhs.X()) //check Xs
|
||||
if(rX < rhs.X()) //check Xs
|
||||
return true;
|
||||
else if(mX > rhs.X())
|
||||
else if(rX > rhs.X())
|
||||
return false;
|
||||
else
|
||||
{
|
||||
if(mHeight < rhs.Height()) //check heights
|
||||
if(rHeight < rhs.Height()) //check heights
|
||||
return true;
|
||||
else if(mHeight > rhs.Height())
|
||||
else if(rHeight > rhs.Height())
|
||||
return false;
|
||||
else
|
||||
{
|
||||
if(mWidth < rhs.Width()) //check widths
|
||||
if(rWidth < rhs.Width()) //check widths
|
||||
return true;
|
||||
else if(mWidth > rhs.Width())
|
||||
else if(rWidth > rhs.Width())
|
||||
return false;
|
||||
else
|
||||
return false; //nothing left to check they are ==
|
||||
@ -86,39 +86,50 @@ bool ZRect::operator<(const ZRect &rhs) const
|
||||
}
|
||||
}
|
||||
|
||||
void ZRect::Draw(Uint8 red, Uint8 green, Uint8 blue, Uint8 alpha)
|
||||
{
|
||||
glColor4ub(red,green,blue,alpha);
|
||||
glBegin(GL_QUADS);
|
||||
glVertex2i(rX, rY);
|
||||
glVertex2i(rX+rWidth, rY);
|
||||
glVertex2i(rX+rWidth, rY+rHeight);
|
||||
glVertex2i(rX, rY+rHeight);
|
||||
glEnd();
|
||||
}
|
||||
|
||||
void ZRect::Move(int x, int y)
|
||||
{
|
||||
mX = x;
|
||||
mY = y;
|
||||
rX = x;
|
||||
rY = y;
|
||||
}
|
||||
|
||||
void ZRect::MoveRel(int xMove, int yMove)
|
||||
{
|
||||
mX += xMove;
|
||||
mY += yMove;
|
||||
rX += xMove;
|
||||
rY += yMove;
|
||||
}
|
||||
|
||||
void ZRect::Resize(int width, int height)
|
||||
{
|
||||
mWidth = width;
|
||||
mHeight = height;
|
||||
rWidth = width;
|
||||
rHeight = height;
|
||||
}
|
||||
|
||||
void ZRect::ResizeRel(int widthChange, int heightChange)
|
||||
{
|
||||
mWidth += widthChange;
|
||||
mHeight += heightChange;
|
||||
rWidth += widthChange;
|
||||
rHeight += heightChange;
|
||||
}
|
||||
|
||||
bool ZRect::Intersects(const ZRect &rect) const
|
||||
{
|
||||
return !(mX > rect.Right() || rect.Left() > mX+mWidth ||
|
||||
mY > rect.Bottom() || rect.Top() > mY+mHeight);
|
||||
return !(rX > rect.Right() || rect.Left() > rX+rWidth ||
|
||||
rY > rect.Bottom() || rect.Top() > rY+rHeight);
|
||||
}
|
||||
|
||||
bool ZRect::Contains(int x, int y) const
|
||||
{
|
||||
return x > mX && x < mX+mWidth && y > mY && y < mY+mHeight;
|
||||
return x > rX && x < rX+rWidth && y > rY && y < rY+rHeight;
|
||||
}
|
||||
|
||||
bool ZRect::Contains(const ZRect &rect) const
|
||||
@ -134,10 +145,10 @@ ZRect ZRect::Intersection(const ZRect &rect) const
|
||||
|
||||
if(Intersects(rect))
|
||||
{
|
||||
tempX = mX > rect.X() ? mX : rect.X();
|
||||
tempY = mY > rect.Y() ? mY : rect.Y();
|
||||
tempW = mX+mWidth < rect.Right() ? mX+mWidth : rect.Right();
|
||||
tempH = mY+mHeight < rect.Bottom() ? mY+mHeight : rect.Bottom();
|
||||
tempX = rX > rect.X() ? rX : rect.X();
|
||||
tempY = rY > rect.Y() ? rY : rect.Y();
|
||||
tempW = rX+rWidth < rect.Right() ? rX+rWidth : rect.Right();
|
||||
tempH = rY+rHeight < rect.Bottom() ? rY+rHeight : rect.Bottom();
|
||||
|
||||
tempW -= tempX; //adjust width and height
|
||||
tempH -= tempY;
|
||||
@ -150,52 +161,52 @@ SDL_Rect ZRect::SDLrect() const
|
||||
{
|
||||
SDL_Rect ret;
|
||||
|
||||
ret.x = static_cast<Sint16>(mX);
|
||||
ret.y = static_cast<Sint16>(mY);
|
||||
ret.w = static_cast<Sint16>(mWidth);
|
||||
ret.h = static_cast<Sint16>(mHeight);
|
||||
ret.x = static_cast<Sint16>(rX);
|
||||
ret.y = static_cast<Sint16>(rY);
|
||||
ret.w = static_cast<Sint16>(rWidth);
|
||||
ret.h = static_cast<Sint16>(rHeight);
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int ZRect::X() const
|
||||
{
|
||||
return mX;
|
||||
return rX;
|
||||
}
|
||||
|
||||
int ZRect::Y() const
|
||||
{
|
||||
return mY;
|
||||
return rY;
|
||||
}
|
||||
|
||||
int ZRect::Left() const
|
||||
{
|
||||
return mX;
|
||||
return rX;
|
||||
}
|
||||
|
||||
int ZRect::Right() const
|
||||
{
|
||||
return mX+mWidth;
|
||||
return rX+rWidth;
|
||||
}
|
||||
|
||||
int ZRect::Top() const
|
||||
{
|
||||
return mY;
|
||||
return rY;
|
||||
}
|
||||
|
||||
int ZRect::Bottom() const
|
||||
{
|
||||
return mY+mHeight;
|
||||
return rY+rHeight;
|
||||
}
|
||||
|
||||
int ZRect::Width() const
|
||||
{
|
||||
return mWidth;
|
||||
return rWidth;
|
||||
}
|
||||
|
||||
int ZRect::Height() const
|
||||
{
|
||||
return mHeight;
|
||||
return rHeight;
|
||||
}
|
||||
|
||||
} //namespace ZE
|
||||
|
@ -69,9 +69,9 @@ void Test()
|
||||
}
|
||||
|
||||
engine->Clear();
|
||||
engine->Clear(engine->MapColor(255,0,0,128),&moveRect.SDLrect());
|
||||
engine->Clear(engine->MapColor(0,0,255),&stillRect.SDLrect());
|
||||
engine->Clear(engine->MapColor(0,255,0),&moveRect.Intersection(stillRect).SDLrect());
|
||||
moveRect.Draw(255,0,0,128);
|
||||
stillRect.Draw(0,0,255,128);
|
||||
moveRect.Intersection(stillRect).Draw(0,255,0);
|
||||
engine->UpdateScreen();
|
||||
|
||||
} while(!engine->QuitRequested());
|
||||
|
Loading…
Reference in New Issue
Block a user