mirror of
https://github.com/Kiritow/MiniEngine.git
synced 2024-03-22 13:11:22 +08:00
Update Brush,Board and BaseButton.
This commit is contained in:
parent
238f52a93e
commit
0a2efcf8fe
|
@ -1,4 +1,6 @@
|
||||||
#include "MiniEngine_Widget.h"
|
#include "MiniEngine_Widget.h"
|
||||||
|
#include <iostream>
|
||||||
|
using namespace std;
|
||||||
using namespace MiniEngine;
|
using namespace MiniEngine;
|
||||||
|
|
||||||
namespace MiniEngine
|
namespace MiniEngine
|
||||||
|
@ -98,16 +100,19 @@ int Brush::copyFullFill(Texture t)
|
||||||
return Renderer::copyTo(t,dst);
|
return Renderer::copyTo(t,dst);
|
||||||
}
|
}
|
||||||
|
|
||||||
Board::Board(Rect Area)
|
Brush::Brush(Renderer Rnd) : Renderer(Rnd)
|
||||||
{
|
{
|
||||||
area=Area;
|
|
||||||
|
}
|
||||||
|
|
||||||
|
Board::Board(Renderer Rnd,Rect Area) : area(Area),brush(Rnd)
|
||||||
|
{
|
||||||
|
brush.setArea(area);
|
||||||
}
|
}
|
||||||
|
|
||||||
Brush Board::getBrush()
|
Brush Board::getBrush()
|
||||||
{
|
{
|
||||||
Brush b;
|
return brush;
|
||||||
b.setArea(area);
|
|
||||||
return b;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect Board::getArea()
|
Rect Board::getArea()
|
||||||
|
@ -123,7 +128,7 @@ Rect Board::getArea()
|
||||||
|
|
||||||
ButtonBase::ButtonBase()
|
ButtonBase::ButtonBase()
|
||||||
{
|
{
|
||||||
status=0;
|
status=1;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ButtonBase::setTextureClicked(Texture Clicked)
|
void ButtonBase::setTextureClicked(Texture Clicked)
|
||||||
|
@ -148,20 +153,89 @@ void ButtonBase::setRect(Rect SensorArea)
|
||||||
|
|
||||||
void ButtonBase::draw(Brush& brush) /// virtual
|
void ButtonBase::draw(Brush& brush) /// virtual
|
||||||
{
|
{
|
||||||
|
int ret=-1;
|
||||||
switch(status)
|
switch(status)
|
||||||
{
|
{
|
||||||
case 0:
|
|
||||||
break;
|
|
||||||
case 1:
|
case 1:
|
||||||
|
ret=brush.copyTo(t1,rect);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
ret=brush.copyTo(t2,rect);
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
ret=brush.copyTo(t3,rect);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ButtonBase::handle(SDL_Event e,int& running,int& update) /// virtual
|
int ButtonBase::handle(SDL_Event e,int& running,int& update) /// virtual
|
||||||
{
|
{
|
||||||
|
switch(e.type)
|
||||||
|
{
|
||||||
|
case SDL_MOUSEMOTION:
|
||||||
|
{
|
||||||
|
if(Point(e.motion.x,e.motion.y).inRect(rect))
|
||||||
|
{
|
||||||
|
if(status==1)
|
||||||
|
{
|
||||||
|
if(onmouseover) onmouseover();
|
||||||
|
status=2;
|
||||||
|
update=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if(status==2)
|
||||||
|
{
|
||||||
|
if(onmouseout) onmouseout();
|
||||||
|
status=1;
|
||||||
|
update=1;
|
||||||
|
}
|
||||||
|
else if(status==3)
|
||||||
|
{
|
||||||
|
if(onrelease) onrelease();
|
||||||
|
if(onmouseout) onmouseout();
|
||||||
|
status=1;
|
||||||
|
update=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDL_MOUSEBUTTONDOWN:
|
||||||
|
{
|
||||||
|
if(Point(e.button.x,e.button.y).inRect(rect))
|
||||||
|
{
|
||||||
|
if(status==2)
|
||||||
|
{
|
||||||
|
if(onclicked) onclicked();
|
||||||
|
status=3;
|
||||||
|
update=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case SDL_MOUSEBUTTONUP:
|
||||||
|
{
|
||||||
|
if(Point(e.button.x,e.button.y).inRect(rect))
|
||||||
|
{
|
||||||
|
if(status==3)
|
||||||
|
{
|
||||||
|
if(onrelease) onrelease();
|
||||||
|
status=2;
|
||||||
|
update=1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
}/// End of namespace MiniEngine::Widget
|
}/// End of namespace MiniEngine::Widget
|
||||||
|
|
|
@ -19,18 +19,22 @@ public:
|
||||||
int copyTo(Texture t, Point lupoint);
|
int copyTo(Texture t, Point lupoint);
|
||||||
int copyFill(Texture t,Rect src);
|
int copyFill(Texture t,Rect src);
|
||||||
int copyFullFill(Texture t);
|
int copyFullFill(Texture t);
|
||||||
|
protected:
|
||||||
|
Brush(Renderer Rnd);
|
||||||
private:
|
private:
|
||||||
Rect area,fullarea;
|
Rect area,fullarea;
|
||||||
|
friend class Board;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Board
|
class Board
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Board(Rect Area);
|
Board(Renderer Rnd,Rect Area);
|
||||||
Brush getBrush();
|
Brush getBrush();
|
||||||
Rect getArea();
|
Rect getArea();
|
||||||
private:
|
private:
|
||||||
Rect area;
|
Rect area;
|
||||||
|
Brush brush;
|
||||||
};
|
};
|
||||||
|
|
||||||
class Drawable
|
class Drawable
|
||||||
|
@ -43,7 +47,7 @@ public:
|
||||||
class Interactive
|
class Interactive
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
virtual void handle(SDL_Event e,int& running,int& update)=0;
|
virtual int handle(SDL_Event e,int& running,int& update)=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
class ButtonBase : public Drawable, public Interactive
|
class ButtonBase : public Drawable, public Interactive
|
||||||
|
@ -55,7 +59,9 @@ public:
|
||||||
void setTextureClicked(Texture Clicked);
|
void setTextureClicked(Texture Clicked);
|
||||||
void setRect(Rect SensorArea);
|
void setRect(Rect SensorArea);
|
||||||
virtual void draw(Brush& brush);
|
virtual void draw(Brush& brush);
|
||||||
virtual void handle(SDL_Event e,int& running,int& update);
|
virtual int handle(SDL_Event e,int& running,int& update);
|
||||||
|
|
||||||
|
std::function<void()> onmouseover,onclicked,onrelease,onmouseout;
|
||||||
private:
|
private:
|
||||||
int status;
|
int status;
|
||||||
Texture t1,t2,t3;
|
Texture t1,t2,t3;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user