113 lines
3.2 KiB
C++
113 lines
3.2 KiB
C++
#include "ToggleImageButtonInstance.h"
|
|
|
|
ToggleImageButtonInstance::ToggleImageButtonInstance(G3D::TextureRef newImage,
|
|
G3D::TextureRef overImage,
|
|
G3D::TextureRef downImage,
|
|
G3D::TextureRef disableImage,
|
|
G3D::TextureRef newImage2,
|
|
G3D::TextureRef overImage2,
|
|
G3D::TextureRef downImage2,
|
|
G3D::TextureRef disableImage2) : ImageButtonInstance(newImage, overImage, downImage, disableImage)
|
|
{
|
|
image2 = newImage2;
|
|
openGLID2 = image2->getOpenGLID();
|
|
image_ovr2 = overImage2;
|
|
if(!image_ovr2.isNull())
|
|
openGLID2_ovr = image_ovr2->getOpenGLID();
|
|
image_dn2 = downImage2;
|
|
if(!image_dn2.isNull())
|
|
openGLID2_dn = image_dn2->getOpenGLID();
|
|
image_ds2 = disableImage2;
|
|
if(!image_ds2.isNull())
|
|
openGLID2_ds = image_ds2->getOpenGLID();
|
|
checked = false;
|
|
className = "ToggleImageButton";
|
|
}
|
|
|
|
ToggleImageButtonInstance::~ToggleImageButtonInstance(void)
|
|
{
|
|
//Delete everything on destruction
|
|
image2.~ReferenceCountedPointer();
|
|
delete image2.getPointer();
|
|
image_ovr2.~ReferenceCountedPointer();
|
|
delete image_ovr2.getPointer();
|
|
image_ds2.~ReferenceCountedPointer();
|
|
delete image_ds2.getPointer();
|
|
image_dn2.~ReferenceCountedPointer();
|
|
delete image_dn2.getPointer();
|
|
image = NULL;
|
|
image_ovr = NULL;
|
|
image_ds = NULL;
|
|
image_dn = NULL;
|
|
delete listener;
|
|
listener = NULL;
|
|
selected = false;
|
|
}
|
|
|
|
|
|
void ToggleImageButtonInstance::drawObj(RenderDevice* rd, Vector2 mousePos, bool mouseDown)
|
|
{
|
|
bool drawDisabledBox = false;
|
|
Vector2 positionRelative = position;
|
|
if(floatRight && floatBottom)
|
|
{
|
|
positionRelative = Vector2(rd->getWidth() + position.x, rd->getHeight() + position.y);
|
|
}
|
|
else if(floatBottom)
|
|
{
|
|
positionRelative = Vector2(position.x, rd->getHeight() + position.y);
|
|
}
|
|
else if(floatRight)
|
|
{
|
|
positionRelative = Vector2(rd->getWidth() + position.x, position.y);
|
|
}
|
|
int renderimage = openGLID;
|
|
|
|
{
|
|
if(selected == true && !image_dn.isNull() && !disabled)
|
|
{
|
|
renderimage = openGLID_dn;
|
|
}
|
|
else if(disabled)
|
|
{
|
|
if(!image_ds.isNull())
|
|
renderimage = openGLID_ds;
|
|
else
|
|
drawDisabledBox = true;
|
|
}
|
|
else if(mouseInArea(positionRelative.x, positionRelative.y, positionRelative.x + size.x, positionRelative.y + size.y, mousePos.x, mousePos.y))
|
|
{
|
|
if(mouseDown && !image_dn.isNull())
|
|
{
|
|
renderimage = openGLID_dn;
|
|
}
|
|
else if(!image_ovr.isNull())
|
|
{
|
|
renderimage = openGLID_ovr;
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
|
|
glEnable( GL_TEXTURE_2D );
|
|
glEnable(GL_BLEND);// you enable blending function
|
|
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
|
glBindTexture( GL_TEXTURE_2D, renderimage);
|
|
glBegin( GL_QUADS );
|
|
glTexCoord2d(0.0,0.0);
|
|
glVertex2f( positionRelative.x, positionRelative.y );
|
|
glTexCoord2d( 1.0,0.0 );
|
|
glVertex2f( positionRelative.x + size.x, positionRelative.y );
|
|
glTexCoord2d( 1.0,1.0 );
|
|
glVertex2f( positionRelative.x + size.x, positionRelative.y + size.y );
|
|
glTexCoord2d( 0.0,1.0 );
|
|
glVertex2f( positionRelative.x, positionRelative.y + size.y );
|
|
glEnd();
|
|
glDisable( GL_TEXTURE_2D );
|
|
|
|
if(drawDisabledBox)
|
|
{
|
|
Draw::box(Box(Vector3(positionRelative.x, positionRelative.y, 0), Vector3(positionRelative.x+size.x, positionRelative.y+size.y, 0)), rd, Color4(0.7F,0.7F,0.7F,0.3F), Color4::clear());
|
|
}
|
|
} |