Update MiniEngine_Widget.cpp

This commit is contained in:
Kirigaya Kazuto 2017-03-02 13:12:41 +08:00 committed by GitHub
parent 11b1125d29
commit 58469b06f0

View File

@ -1,6 +1,12 @@
#include "MiniEngine_Widget.h" #include "MiniEngine_Widget.h"
using namespace MiniEngine; using namespace MiniEngine;
namespace MiniEngine
{
namespace Widget
{
void Brush::setArea(Rect Area) void Brush::setArea(Rect Area)
{ {
area=Area; area=Area;
@ -10,28 +16,29 @@ int Brush::copy(Texture t,Rect src,Rect dst)
{ {
dst.x+=area.x; dst.x+=area.x;
dst.y+=area.y; dst.y+=area.y;
if(stretching)
if(dst.x>area.x+area.w||dst.y>area.y+area.h)
{ {
if(dst.w>area.w) /// Not Printed.
{ return 1;
dst.w=area.w;
}
if(dst.h>area.h)
{
dst.h=area.h;
}
} }
else
if(dst.x+dst.w>area.x+area.w)
{ {
if(dst.w>area.w) /// Some parts will not be printed.
{ src.w=src.w*(area.w-dst.x+area.x)/dst.w;
dst.w=src.w=area.w;
} dst.w=area.w-(dst.x-area.x);
if(dst.h>area.h)
{
src.w=src.h=area.h;
}
} }
if(dst.y+dst.h>area.y+area.h)
{
/// Some parts will not be printed
src.h=src.h*(area.h-dst.y+area.y)/dst.h;
dst.h=area.h-(dst.y-area.y);
}
return Renderer::copy(t,src,dst); return Renderer::copy(t,src,dst);
} }
@ -40,34 +47,38 @@ int Brush::copyTo(Texture t,Rect dst)
dst.x+=area.x; dst.x+=area.x;
dst.y+=area.y; dst.y+=area.y;
if(streching) if(dst.x>area.x+area.w||dst.y>area.y+area.h)
{ {
if(dst.w>area.w) /// Not Printed.
{ return 1;
dst.w=area.w;
}
if(dst.h>area.h)
{
dst.h=area.h;
}
return Renderer::copyTo(t,dst);
} }
else
if(dst.x+dst.w>area.x+area.w||dst.y+dst.h>area.y+area.h)
{ {
/// Some parts will not be printed.
Rect src=t.getSize(); Rect src=t.getSize();
src.x=src.y=0; src.x=src.y=0;
if(dst.w>area.w)
if(dst.x+dst.w>area.x+area.w)
{ {
src.w=dst.w=area.w; src.w=src.w*(area.w-dst.x+area.x)/dst.w;
dst.w=area.w-(dst.x-area.x);
} }
if(dst.h>area.h)
if(dst.y+dst.h>area.y+area.h)
{ {
src.h=dst.h=area.h; src.h=src.h*(area.h-dst.y+area.y)/dst.h;
dst.h=area.h-(dst.y-area.y);
} }
return Renderer::copy(t,src,dst); return Renderer::copy(t,src,dst);
} }
else
{
return Renderer::copyTo(t,dst);
}
} }
int Brush::copyTo(Texture t,Point lupoint) int Brush::copyTo(Texture t,Point lupoint)
@ -81,24 +92,35 @@ int Brush::copyFill(Texture t,Rect src)
return Renderer::copy(t,src,dst); return Renderer::copy(t,src,dst);
} }
int Brush::copyFullFill(Texture t ) int Brush::copyFullFill(Texture t)
{ {
Rect dst=area; Rect dst=area;
return Renderer::copyTo(t,dst); return Renderer::copyTo(t,dst);
} }
Board::Board(Window wnd,Rect Area) Board::Board(Rect Area)
{ {
area=Area; area=Area;
fullwnd=wnd.getSize();
} }
Brush Board::getBrush() Brush Board::getBrush()
{ {
Brush b; Brush b;
b.setArea(area);
return b; return b;
} }
Rect Board::getArea()
{
return area;
}
ButtonBase::ButtonBase() ButtonBase::ButtonBase()
{ {
status=0; status=0;
@ -124,11 +146,24 @@ void ButtonBase::setRect(Rect SensorArea)
rect=SensorArea; rect=SensorArea;
} }
virtual void ButtonBase::draw(Brush& brush) void ButtonBase::draw(Brush& brush) /// virtual
{ {
switch(status) switch(status)
{ {
case 0: case 0:
brush.copyTo( ) break;
case 1:
break;
case 2:
break;
} }
} }
void ButtonBase::handle(SDL_Event e,int& running,int& update) /// virtual
{
}
}/// End of namespace MiniEngine::Widget
}/// End of namespace MiniEngine::Widget