mirror of
https://github.com/Kiritow/MiniEngine.git
synced 2024-03-22 13:11:22 +08:00
Update constant attribute in class Surface, Renderer, Window,
SharedLibrary
This commit is contained in:
parent
4d636586c2
commit
aacd73d728
158
MiniEngine.cpp
158
MiniEngine.cpp
|
@ -434,9 +434,10 @@ namespace MiniEngine
|
||||||
return _surf.get();
|
return _surf.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<SDL_Surface>& Surface::_getex()
|
//private
|
||||||
|
void Surface::_set_no_delete(SDL_Surface* p)
|
||||||
{
|
{
|
||||||
return _surf;
|
_surf.reset(p,[](SDL_Surface*){});
|
||||||
}
|
}
|
||||||
|
|
||||||
Surface::Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,int Amask) throw(ErrorViewer)
|
Surface::Surface(int width,int height,int depth,int Rmask,int Gmask,int Bmask,int Amask) throw(ErrorViewer)
|
||||||
|
@ -485,6 +486,39 @@ namespace MiniEngine
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
Surface Surface::load(const std::string& filename)
|
||||||
|
{
|
||||||
|
Surface s;
|
||||||
|
s.loadAs(filename);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
Surface Surface::load(const RWOP& rwop)
|
||||||
|
{
|
||||||
|
Surface s;
|
||||||
|
s.loadAs(rwop);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
Surface Surface::create(int width, int height, int depth, int Rmask, int Gmask, int Bmask, int Amask)
|
||||||
|
{
|
||||||
|
Surface s;
|
||||||
|
s.create(width,height,depth,Rmask,Gmask,Bmask,Amask);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
//static
|
||||||
|
Surface Surface::create(int width, int height, int depth, Uint32 surfaceFormat)
|
||||||
|
{
|
||||||
|
Surface s;
|
||||||
|
s.create(width,height,depth,surfaceFormat);
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int Surface::loadAs(const std::string& filename)
|
int Surface::loadAs(const std::string& filename)
|
||||||
{
|
{
|
||||||
SDL_Surface* temp=IMG_Load(filename.c_str());
|
SDL_Surface* temp=IMG_Load(filename.c_str());
|
||||||
|
@ -592,25 +626,25 @@ namespace MiniEngine
|
||||||
return IMG_SavePNG(_get(),filename.c_str());
|
return IMG_SavePNG(_get(),filename.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blit(const Surface& s,Rect src,Rect dst)
|
int Surface::blit(const Surface& s,const Rect& src,const Rect& dst)
|
||||||
{
|
{
|
||||||
SDL_Rect rsrc=src.toSDLRect();
|
SDL_Rect rsrc=src.toSDLRect();
|
||||||
SDL_Rect rdst=dst.toSDLRect();
|
SDL_Rect rdst=dst.toSDLRect();
|
||||||
return SDL_BlitSurface(s._get(),&rsrc,_get(),&rdst);
|
return SDL_BlitSurface(s._get(),&rsrc,_get(),&rdst);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitTo(const Surface& s,Rect dst)
|
int Surface::blitTo(const Surface& s,const Rect& dst)
|
||||||
{
|
{
|
||||||
SDL_Rect rdst=dst.toSDLRect();
|
SDL_Rect rdst=dst.toSDLRect();
|
||||||
return SDL_BlitSurface(s._get(),NULL,_get(),&rdst);
|
return SDL_BlitSurface(s._get(),NULL,_get(),&rdst);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitTo(const Surface& s,Point lupoint)
|
int Surface::blitTo(const Surface& s,const Point& lupoint)
|
||||||
{
|
{
|
||||||
return blitTo(s,Rect(lupoint.x,lupoint.y,s.getw(),s.geth()));
|
return blitTo(s,Rect(lupoint.x,lupoint.y,s.getw(),s.geth()));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitFill(const Surface& s,Rect src)
|
int Surface::blitFill(const Surface& s,const Rect& src)
|
||||||
{
|
{
|
||||||
SDL_Rect rsrc=src.toSDLRect();
|
SDL_Rect rsrc=src.toSDLRect();
|
||||||
return SDL_BlitSurface(s._get(),&rsrc,_get(),NULL);
|
return SDL_BlitSurface(s._get(),&rsrc,_get(),NULL);
|
||||||
|
@ -621,25 +655,25 @@ namespace MiniEngine
|
||||||
return SDL_BlitSurface(s._get(),NULL,_get(),NULL);
|
return SDL_BlitSurface(s._get(),NULL,_get(),NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitScaled(const Surface& s,Rect src,Rect dst)
|
int Surface::blitScaled(const Surface& s,const Rect& src,const Rect& dst)
|
||||||
{
|
{
|
||||||
SDL_Rect rsrc=src.toSDLRect();
|
SDL_Rect rsrc=src.toSDLRect();
|
||||||
SDL_Rect rdst=dst.toSDLRect();
|
SDL_Rect rdst=dst.toSDLRect();
|
||||||
return SDL_BlitScaled(s._get(),&rsrc,_get(),&rdst);
|
return SDL_BlitScaled(s._get(),&rsrc,_get(),&rdst);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitScaledTo(const Surface& s,Rect dst)
|
int Surface::blitScaledTo(const Surface& s,const Rect& dst)
|
||||||
{
|
{
|
||||||
SDL_Rect rdst=dst.toSDLRect();
|
SDL_Rect rdst=dst.toSDLRect();
|
||||||
return SDL_BlitScaled(s._get(),NULL,_get(),&rdst);
|
return SDL_BlitScaled(s._get(),NULL,_get(),&rdst);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitScaledTo(const Surface& s,Point lupoint)
|
int Surface::blitScaledTo(const Surface& s,const Point& lupoint)
|
||||||
{
|
{
|
||||||
return blitScaledTo(s,Rect(lupoint.x,lupoint.y,s.getw(),s.geth()));
|
return blitScaledTo(s,Rect(lupoint.x,lupoint.y,s.getw(),s.geth()));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Surface::blitScaledFill(const Surface& s,Rect src)
|
int Surface::blitScaledFill(const Surface& s,const Rect& src)
|
||||||
{
|
{
|
||||||
SDL_Rect rsrc=src.toSDLRect();
|
SDL_Rect rsrc=src.toSDLRect();
|
||||||
return SDL_BlitScaled(s._get(),&rsrc,_get(),NULL);
|
return SDL_BlitScaled(s._get(),&rsrc,_get(),NULL);
|
||||||
|
@ -696,7 +730,7 @@ namespace MiniEngine
|
||||||
return mode;
|
return mode;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Surface::setRGBA(RGBA pack)
|
void Surface::setRGBA(const RGBA& pack)
|
||||||
{
|
{
|
||||||
setColorMode(pack.toColorMode());
|
setColorMode(pack.toColorMode());
|
||||||
setAlphaMode(pack.a);
|
setAlphaMode(pack.a);
|
||||||
|
@ -831,7 +865,7 @@ namespace MiniEngine
|
||||||
return RGBA(getColorMode(), getAlphaMode());
|
return RGBA(getColorMode(), getAlphaMode());
|
||||||
}
|
}
|
||||||
|
|
||||||
void Texture::setRGBA(RGBA pack)
|
void Texture::setRGBA(const RGBA& pack)
|
||||||
{
|
{
|
||||||
setColorMode(pack.toColorMode());
|
setColorMode(pack.toColorMode());
|
||||||
setAlphaMode(pack.a);
|
setAlphaMode(pack.a);
|
||||||
|
@ -869,17 +903,16 @@ namespace MiniEngine
|
||||||
return _rnd.get();
|
return _rnd.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::setColor(RGBA pack)
|
int Renderer::setColor(const RGBA& pack)
|
||||||
{
|
{
|
||||||
return SDL_SetRenderDrawColor(_get(), pack.r, pack.g, pack.b, pack.a);
|
return SDL_SetRenderDrawColor(_get(), pack.r, pack.g, pack.b, pack.a);
|
||||||
}
|
}
|
||||||
|
|
||||||
RGBA Renderer::getColor()
|
RGBA Renderer::getColor() const
|
||||||
{
|
{
|
||||||
Uint8 r, g, b, a;
|
Uint8 r, g, b, a;
|
||||||
SDL_GetRenderDrawColor(_get(), &r, &g, &b, &a);
|
SDL_GetRenderDrawColor(_get(), &r, &g, &b, &a);
|
||||||
RGBA pack(r, g, b, a);
|
return RGBA(r, g, b, a);
|
||||||
return pack;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::setBlendMode(BlendMode mode)
|
int Renderer::setBlendMode(BlendMode mode)
|
||||||
|
@ -887,7 +920,7 @@ namespace MiniEngine
|
||||||
return SDL_SetRenderDrawBlendMode(_get(), _internal::getSDLBlendModeFromBlendMode(mode));
|
return SDL_SetRenderDrawBlendMode(_get(), _internal::getSDLBlendModeFromBlendMode(mode));
|
||||||
}
|
}
|
||||||
|
|
||||||
BlendMode Renderer::getBlendMode()
|
BlendMode Renderer::getBlendMode() const
|
||||||
{
|
{
|
||||||
SDL_BlendMode temp;
|
SDL_BlendMode temp;
|
||||||
SDL_GetRenderDrawBlendMode(_get(), &temp);
|
SDL_GetRenderDrawBlendMode(_get(), &temp);
|
||||||
|
@ -906,19 +939,19 @@ namespace MiniEngine
|
||||||
return SDL_SetRenderTarget(_get(), nullptr);
|
return SDL_SetRenderTarget(_get(), nullptr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::fillRect(Rect rect)
|
int Renderer::fillRect(const Rect& rect)
|
||||||
{
|
{
|
||||||
auto inr = rect.toSDLRect();
|
auto inr = rect.toSDLRect();
|
||||||
return SDL_RenderFillRect(_get(), &inr);
|
return SDL_RenderFillRect(_get(), &inr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::drawRect(Rect rect)
|
int Renderer::drawRect(const Rect& rect)
|
||||||
{
|
{
|
||||||
auto inr = rect.toSDLRect();
|
auto inr = rect.toSDLRect();
|
||||||
return SDL_RenderDrawRect(_get(), &inr);
|
return SDL_RenderDrawRect(_get(), &inr);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::drawPoint(Point p)
|
int Renderer::drawPoint(const Point& p)
|
||||||
{
|
{
|
||||||
return SDL_RenderDrawPoint(_get(),p.x,p.y);
|
return SDL_RenderDrawPoint(_get(),p.x,p.y);
|
||||||
}
|
}
|
||||||
|
@ -933,36 +966,39 @@ namespace MiniEngine
|
||||||
SDL_RenderPresent(_get());
|
SDL_RenderPresent(_get());
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::copy(Texture t, Rect src, Rect dst)
|
int Renderer::copy(const Texture& t, const Rect& src, const Rect& dst)
|
||||||
{
|
{
|
||||||
SDL_Rect s = src.toSDLRect();
|
SDL_Rect s = src.toSDLRect();
|
||||||
SDL_Rect d = dst.toSDLRect();
|
SDL_Rect d = dst.toSDLRect();
|
||||||
return SDL_RenderCopy(_get(), t._get(), &s, &d);
|
return SDL_RenderCopy(_get(), t._get(), &s, &d);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::copyTo(Texture t, Rect dst)
|
int Renderer::copyTo(const Texture& t, const Rect& dst)
|
||||||
{
|
{
|
||||||
SDL_Rect d = dst.toSDLRect();
|
SDL_Rect d = dst.toSDLRect();
|
||||||
return SDL_RenderCopy(_get(), t._get(), NULL, &d);
|
return SDL_RenderCopy(_get(), t._get(), NULL, &d);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::copyTo(Texture t, Point lupoint)
|
int Renderer::copyTo(const Texture& t, const Point& lupoint)
|
||||||
{
|
{
|
||||||
return copyTo(t, Rect(lupoint.x, lupoint.y, t.getw(), t.geth()));
|
return copyTo(t, Rect(lupoint.x, lupoint.y, t.getw(), t.geth()));
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::copyFill(Texture t, Rect src)
|
int Renderer::copyFill(const Texture& t, const Rect& src)
|
||||||
{
|
{
|
||||||
SDL_Rect s = src.toSDLRect();
|
SDL_Rect s = src.toSDLRect();
|
||||||
return SDL_RenderCopy(_get(), t._get(), &s, NULL);
|
return SDL_RenderCopy(_get(), t._get(), &s, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::copyFullFill(Texture t)
|
int Renderer::copyFullFill(const Texture& t)
|
||||||
{
|
{
|
||||||
return SDL_RenderCopy(_get(), t._get(), NULL, NULL);
|
return SDL_RenderCopy(_get(), t._get(), NULL, NULL);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Renderer::supercopy(Texture t,bool srcfull,Rect src,bool dstfull,Rect dst,double angle,bool haspoint,Point center,FlipMode mode)
|
int Renderer::supercopy(const Texture& t,
|
||||||
|
bool srcfull,const Rect& src,bool dstfull,const Rect& dst,
|
||||||
|
double angle,
|
||||||
|
bool haspoint,const Point& center,FlipMode mode)
|
||||||
{
|
{
|
||||||
SDL_Rect R1,R2;
|
SDL_Rect R1,R2;
|
||||||
SDL_Point P;
|
SDL_Point P;
|
||||||
|
@ -1060,7 +1096,7 @@ namespace MiniEngine
|
||||||
return t;
|
return t;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Renderer::isReady()
|
bool Renderer::isReady() const
|
||||||
{
|
{
|
||||||
return (_get() != nullptr);
|
return (_get() != nullptr);
|
||||||
}
|
}
|
||||||
|
@ -1187,7 +1223,7 @@ namespace MiniEngine
|
||||||
|
|
||||||
Renderer Window::getRenderer() const
|
Renderer Window::getRenderer() const
|
||||||
{
|
{
|
||||||
return winrnd;
|
return _winrnd;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::setRenderer(std::initializer_list<RendererType> RendererFlags)
|
void Window::setRenderer(std::initializer_list<RendererType> RendererFlags)
|
||||||
|
@ -1200,14 +1236,14 @@ namespace MiniEngine
|
||||||
_setRenderer_Real(flag);
|
_setRenderer_Real(flag);
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect Window::getSize()
|
Rect Window::getSize() const
|
||||||
{
|
{
|
||||||
int w, h;
|
int w, h;
|
||||||
SDL_GetWindowSize(_get(), &w, &h);
|
SDL_GetWindowSize(_get(), &w, &h);
|
||||||
return Rect(0, 0, w, h);
|
return Rect(0, 0, w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::setSize(Rect sizeRect)
|
void Window::setSize(const Rect& sizeRect)
|
||||||
{
|
{
|
||||||
setSize(sizeRect.w, sizeRect.h);
|
setSize(sizeRect.w, sizeRect.h);
|
||||||
}
|
}
|
||||||
|
@ -1217,11 +1253,11 @@ namespace MiniEngine
|
||||||
SDL_SetWindowSize(_get(), w, h);
|
SDL_SetWindowSize(_get(), w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
Rect Window::getPosition()
|
Point Window::getPosition() const
|
||||||
{
|
{
|
||||||
int x, y;
|
int x, y;
|
||||||
SDL_GetWindowPosition(_get(), &x, &y);
|
SDL_GetWindowPosition(_get(), &x, &y);
|
||||||
return Rect(x, y, 0, 0);
|
return Point(x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::setPosition(int x, int y)
|
void Window::setPosition(int x, int y)
|
||||||
|
@ -1229,19 +1265,17 @@ namespace MiniEngine
|
||||||
SDL_SetWindowPosition(_get(), x, y);
|
SDL_SetWindowPosition(_get(), x, y);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// FIXME: Use class Point or class Rect ?
|
void Window::setPosition(const Point& point)
|
||||||
|
|
||||||
void Window::setPosition(Point point)
|
|
||||||
{
|
{
|
||||||
SDL_SetWindowPosition(_get(), point.x, point.y);
|
SDL_SetWindowPosition(_get(), point.x, point.y);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Window::setTitle(std::string Title)
|
void Window::setTitle(const std::string& Title)
|
||||||
{
|
{
|
||||||
SDL_SetWindowTitle(_get(), Title.c_str());
|
SDL_SetWindowTitle(_get(), Title.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string Window::getTitle()
|
std::string Window::getTitle() const
|
||||||
{
|
{
|
||||||
return std::string(SDL_GetWindowTitle(_get()));
|
return std::string(SDL_GetWindowTitle(_get()));
|
||||||
}
|
}
|
||||||
|
@ -1251,31 +1285,25 @@ namespace MiniEngine
|
||||||
SDL_SetWindowGrab(_get(),isGrab?SDL_TRUE:SDL_FALSE);
|
SDL_SetWindowGrab(_get(),isGrab?SDL_TRUE:SDL_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool Window::getGrab()
|
bool Window::getGrab() const
|
||||||
{
|
{
|
||||||
return (SDL_GetWindowGrab(_get())==SDL_TRUE)?true:false;
|
return (SDL_GetWindowGrab(_get())==SDL_TRUE)?true:false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if _MINIENGINE_SDL_VERSION_ATLEAST(2,0,5)
|
||||||
int Window::setOpacity(float opacity)
|
int Window::setOpacity(float opacity)
|
||||||
{
|
{
|
||||||
#if _MINIENGINE_SDL_VERSION_ATLEAST(2,0,5)
|
|
||||||
return SDL_SetWindowOpacity(_get(),opacity);
|
return SDL_SetWindowOpacity(_get(),opacity);
|
||||||
#else
|
|
||||||
return -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
|
||||||
float Window::getOpacity() const
|
float Window::getOpacity() const
|
||||||
{
|
{
|
||||||
#if _MINIENGINE_SDL_VERSION_ATLEAST(2,0,5)
|
|
||||||
float op=-1;
|
float op=-1;
|
||||||
SDL_GetWindowOpacity(_get(),&op);
|
SDL_GetWindowOpacity(_get(),&op);
|
||||||
return op;
|
return op;
|
||||||
#else
|
|
||||||
return -1;
|
|
||||||
#endif
|
|
||||||
}
|
}
|
||||||
|
#endif /// End of SDL2 2.0.5 Require.
|
||||||
|
|
||||||
|
/// FIXME: Not Implemented.
|
||||||
void Window::setResizable(bool resizable)
|
void Window::setResizable(bool resizable)
|
||||||
{
|
{
|
||||||
//SDL_SetWindowResizable(_get(), resizable?SDL_TRUE:SDL_FALSE);
|
//SDL_SetWindowResizable(_get(), resizable?SDL_TRUE:SDL_FALSE);
|
||||||
|
@ -1316,7 +1344,7 @@ namespace MiniEngine
|
||||||
SDL_Surface* temp = SDL_GetWindowSurface(_get());
|
SDL_Surface* temp = SDL_GetWindowSurface(_get());
|
||||||
Surface s;
|
Surface s;
|
||||||
/// Don't Free This Surface
|
/// Don't Free This Surface
|
||||||
s._getex().reset(temp, [](SDL_Surface*) {});
|
s._set_no_delete(temp);
|
||||||
return s;
|
return s;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1347,10 +1375,10 @@ namespace MiniEngine
|
||||||
// private
|
// private
|
||||||
void Window::_setRenderer_Real(Uint32 flags)
|
void Window::_setRenderer_Real(Uint32 flags)
|
||||||
{
|
{
|
||||||
winrnd._rnd.reset(SDL_CreateRenderer(_get(), -1, flags), SDL_DestroyRenderer);
|
_winrnd._rnd.reset(SDL_CreateRenderer(_get(), -1, flags), SDL_DestroyRenderer);
|
||||||
}
|
}
|
||||||
|
|
||||||
int Window::showSimpleMessageBox(MessageBoxType type,std::string Title,std::string Message)
|
int Window::showSimpleMessageBox(MessageBoxType type,const std::string& Title,const std::string& Message) const
|
||||||
{
|
{
|
||||||
Uint32 flags=0;
|
Uint32 flags=0;
|
||||||
switch(type)
|
switch(type)
|
||||||
|
@ -1373,6 +1401,24 @@ namespace MiniEngine
|
||||||
return SDL_IsScreenKeyboardShown(_get())==SDL_TRUE;
|
return SDL_IsScreenKeyboardShown(_get())==SDL_TRUE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// Experimental
|
||||||
|
void Window::resetRenderer()
|
||||||
|
{
|
||||||
|
/// Check if there is a renderer exists.
|
||||||
|
if(SDL_GetRenderer(_get())!=nullptr)
|
||||||
|
{
|
||||||
|
/// Clear internal Renderer class.
|
||||||
|
_winrnd._clear();
|
||||||
|
/// Check again.
|
||||||
|
if(SDL_GetRenderer(_get())!=nullptr)
|
||||||
|
{
|
||||||
|
/// If it still exists, (May be some other Renderer is holding)
|
||||||
|
/// then destroy it.
|
||||||
|
SDL_DestroyRenderer(SDL_GetRenderer(_get()));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void Font::_set(TTF_Font* p)
|
void Font::_set(TTF_Font* p)
|
||||||
{
|
{
|
||||||
_font.reset(p,TTF_CloseFont);
|
_font.reset(p,TTF_CloseFont);
|
||||||
|
@ -1722,16 +1768,19 @@ namespace MiniEngine
|
||||||
va_end(ap);
|
va_end(ap);
|
||||||
}
|
}
|
||||||
|
|
||||||
void* SharedLibrary::_get()
|
//private
|
||||||
|
void* SharedLibrary::_get() const
|
||||||
{
|
{
|
||||||
return _obj.get();
|
return _obj.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//private
|
||||||
void SharedLibrary::_set(void* ptr)
|
void SharedLibrary::_set(void* ptr)
|
||||||
{
|
{
|
||||||
_obj.reset(ptr,SDL_UnloadObject);
|
_obj.reset(ptr,SDL_UnloadObject);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//private
|
||||||
void SharedLibrary::_clear()
|
void SharedLibrary::_clear()
|
||||||
{
|
{
|
||||||
_obj.reset();
|
_obj.reset();
|
||||||
|
@ -1748,11 +1797,6 @@ namespace MiniEngine
|
||||||
load(Filename);
|
load(Filename);
|
||||||
}
|
}
|
||||||
|
|
||||||
SharedLibrary::~SharedLibrary()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
int SharedLibrary::load(const std::string& Filename)
|
int SharedLibrary::load(const std::string& Filename)
|
||||||
{
|
{
|
||||||
if(_get()!=nullptr) return -1; /// Loaded
|
if(_get()!=nullptr) return -1; /// Loaded
|
||||||
|
@ -1778,7 +1822,7 @@ namespace MiniEngine
|
||||||
else return -1; /// Not Loaded.
|
else return -1; /// Not Loaded.
|
||||||
}
|
}
|
||||||
|
|
||||||
void* SharedLibrary::get(const std::string& FunctionName)
|
void* SharedLibrary::get(const std::string& FunctionName) const
|
||||||
{
|
{
|
||||||
if(_get()==nullptr) return nullptr;
|
if(_get()==nullptr) return nullptr;
|
||||||
else return SDL_LoadFunction(_get(),FunctionName.c_str());
|
else return SDL_LoadFunction(_get(),FunctionName.c_str());
|
||||||
|
|
91
MiniEngine.h
91
MiniEngine.h
|
@ -125,16 +125,16 @@ namespace MiniEngine
|
||||||
int setBlendMode(BlendMode mode);
|
int setBlendMode(BlendMode mode);
|
||||||
|
|
||||||
/// Rendering functions. Copy an external surface to this surface. So it has no constant attribute.
|
/// Rendering functions. Copy an external surface to this surface. So it has no constant attribute.
|
||||||
int blit(const Surface& s,Rect src,Rect dst);
|
int blit(const Surface& s,const Rect& src,const Rect& dst);
|
||||||
int blitTo(const Surface& t, Rect dst);
|
int blitTo(const Surface& t, const Rect& dst);
|
||||||
int blitTo(const Surface& t, Point lupoint);
|
int blitTo(const Surface& t, const Point& lupoint);
|
||||||
int blitFill(const Surface& t, Rect src);
|
int blitFill(const Surface& t, const Rect& src);
|
||||||
int blitFullFill(const Surface& t);
|
int blitFullFill(const Surface& t);
|
||||||
|
|
||||||
int blitScaled(const Surface& s,Rect src,Rect dst);
|
int blitScaled(const Surface& s,const Rect& src,const Rect& dst);
|
||||||
int blitScaledTo(const Surface& t, Rect dst);
|
int blitScaledTo(const Surface& t, const Rect& dst);
|
||||||
int blitScaledTo(const Surface& t, Point lupoint);
|
int blitScaledTo(const Surface& t, const Point& lupoint);
|
||||||
int blitScaledFill(const Surface& t, Rect src);
|
int blitScaledFill(const Surface& t, const Rect& src);
|
||||||
int blitScaledFullFill(const Surface& t);
|
int blitScaledFullFill(const Surface& t);
|
||||||
|
|
||||||
int setClipRect(const Rect& clipRect);
|
int setClipRect(const Rect& clipRect);
|
||||||
|
@ -147,7 +147,7 @@ namespace MiniEngine
|
||||||
ColorMode getColorMode() const;
|
ColorMode getColorMode() const;
|
||||||
int setColorMode(ColorMode mode);
|
int setColorMode(ColorMode mode);
|
||||||
RGBA getRGBA() const;
|
RGBA getRGBA() const;
|
||||||
void setRGBA(RGBA pack);
|
void setRGBA(const RGBA& pack);
|
||||||
|
|
||||||
bool mustlock() const;
|
bool mustlock() const;
|
||||||
int lock();
|
int lock();
|
||||||
|
@ -162,9 +162,9 @@ namespace MiniEngine
|
||||||
private:
|
private:
|
||||||
std::shared_ptr<SDL_Surface> _surf;
|
std::shared_ptr<SDL_Surface> _surf;
|
||||||
void _set(SDL_Surface*);
|
void _set(SDL_Surface*);
|
||||||
|
void _set_no_delete(SDL_Surface*);
|
||||||
void _clear();
|
void _clear();
|
||||||
SDL_Surface* _get() const;
|
SDL_Surface* _get() const;
|
||||||
std::shared_ptr<SDL_Surface>& _getex();
|
|
||||||
|
|
||||||
friend class Window;
|
friend class Window;
|
||||||
friend class Renderer;
|
friend class Renderer;
|
||||||
|
@ -190,7 +190,7 @@ namespace MiniEngine
|
||||||
ColorMode getColorMode() const;
|
ColorMode getColorMode() const;
|
||||||
int setColorMode(ColorMode mode);
|
int setColorMode(ColorMode mode);
|
||||||
RGBA getRGBA() const;
|
RGBA getRGBA() const;
|
||||||
void setRGBA(RGBA pack);
|
void setRGBA(const RGBA& pack);
|
||||||
|
|
||||||
void release();
|
void release();
|
||||||
protected:
|
protected:
|
||||||
|
@ -213,35 +213,38 @@ namespace MiniEngine
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Renderer() = default;
|
Renderer() = default;
|
||||||
int setColor(RGBA pack);
|
int setColor(const RGBA& pack);
|
||||||
RGBA getColor();
|
RGBA getColor() const;
|
||||||
int setBlendMode(BlendMode mode);
|
int setBlendMode(BlendMode mode);
|
||||||
BlendMode getBlendMode();
|
BlendMode getBlendMode() const;
|
||||||
|
|
||||||
int setTarget(Texture& t);
|
int setTarget(Texture& t);
|
||||||
int setTarget();
|
int setTarget();
|
||||||
|
|
||||||
int fillRect(Rect rect);
|
int fillRect(const Rect& rect);
|
||||||
int drawRect(Rect rect);
|
int drawRect(const Rect& rect);
|
||||||
int drawPoint(Point p);
|
int drawPoint(const Point& p);
|
||||||
|
|
||||||
int clear();
|
int clear();
|
||||||
void update();
|
void update();
|
||||||
|
|
||||||
int copy(Texture t, Rect src, Rect dst);
|
int copy(const Texture& t, const Rect& src, const Rect& dst);
|
||||||
int copyTo(Texture t, Rect dst);
|
int copyTo(const Texture& t, const Rect& dst);
|
||||||
int copyTo(Texture t, Point lupoint);
|
int copyTo(const Texture& t, const Point& lupoint);
|
||||||
int copyFill(Texture t, Rect src);
|
int copyFill(const Texture& t, const Rect& src);
|
||||||
int copyFullFill(Texture t);
|
int copyFullFill(const Texture& t);
|
||||||
|
|
||||||
int supercopy(Texture t,bool srcfull,Rect src,bool dstfull,Rect dst,double angle,bool haspoint,Point center,FlipMode mode);
|
int supercopy(const Texture& t,
|
||||||
|
bool srcfull,const Rect& src,bool dstfull,const Rect& dst,
|
||||||
|
double angle,
|
||||||
|
bool haspoint,const Point& center,FlipMode mode);
|
||||||
|
|
||||||
Texture render(const Surface& surf) const throw (ErrorViewer);
|
Texture render(const Surface& surf) const throw (ErrorViewer);
|
||||||
Texture loadTexture(const std::string& FileName) const throw(ErrorViewer);
|
Texture loadTexture(const std::string& FileName) const throw(ErrorViewer);
|
||||||
Texture loadTextureRW(const RWOP& rwop) const throw(ErrorViewer);
|
Texture loadTextureRW(const RWOP& rwop) const throw(ErrorViewer);
|
||||||
Texture createTexture(int Width, int Height) const throw(ErrorViewer);
|
Texture createTexture(int Width, int Height) const throw(ErrorViewer);
|
||||||
|
|
||||||
bool isReady();
|
bool isReady() const;
|
||||||
|
|
||||||
void release();
|
void release();
|
||||||
private:
|
private:
|
||||||
|
@ -322,32 +325,31 @@ namespace MiniEngine
|
||||||
|
|
||||||
void setRenderer(std::initializer_list<RendererType>);
|
void setRenderer(std::initializer_list<RendererType>);
|
||||||
|
|
||||||
Rect getSize();
|
Rect getSize() const;
|
||||||
void setSize(Rect sizeRect);
|
void setSize(const Rect& sizeRect);
|
||||||
void setSize(int w, int h);
|
void setSize(int w, int h);
|
||||||
|
|
||||||
Rect getPosition();
|
Point getPosition() const;
|
||||||
void setPosition(int x, int y);
|
void setPosition(int x, int y);
|
||||||
/// FIXME: Use class Point or class Rect ?
|
void setPosition(const Point& point);
|
||||||
void setPosition(Point point);
|
|
||||||
|
|
||||||
|
void setTitle(const std::string& Title);
|
||||||
|
std::string getTitle() const;
|
||||||
|
|
||||||
void setTitle(std::string Title);
|
void setGrab(bool isGrab);
|
||||||
std::string getTitle();
|
bool getGrab() const;
|
||||||
|
|
||||||
void setGrab(bool);
|
|
||||||
bool getGrab();
|
|
||||||
|
|
||||||
|
#if _MINIENGINE_SDL_VERSION_ATLEAST(2,0,5)
|
||||||
/// SDL2.0.5 Required.
|
/// SDL2.0.5 Required.
|
||||||
/// If MiniEngine Runs on a lower version of SDL,
|
|
||||||
/// setOpacity() and getOpacity() always returns -1
|
|
||||||
int setOpacity(float opacity);
|
int setOpacity(float opacity);
|
||||||
float getOpacity() const;
|
float getOpacity() const;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/// FIXME: Not Implemented.
|
||||||
void setResizable(bool resizable);
|
void setResizable(bool resizable);
|
||||||
|
|
||||||
/// Use UTF8 in Title and Message please.
|
/// Use UTF8 in Title and Message please.
|
||||||
int showSimpleMessageBox(MessageBoxType type,std::string Title,std::string Message);
|
int showSimpleMessageBox(MessageBoxType type,const std::string& Title,const std::string& Message) const;
|
||||||
|
|
||||||
void show();
|
void show();
|
||||||
void hide();
|
void hide();
|
||||||
|
@ -361,6 +363,11 @@ namespace MiniEngine
|
||||||
bool isScreenKeyboardShown();
|
bool isScreenKeyboardShown();
|
||||||
|
|
||||||
void release();
|
void release();
|
||||||
|
|
||||||
|
/// Experimental : Free current renderer.
|
||||||
|
/// This will cause all existing Renderer class throw an error on delete.
|
||||||
|
/// This function destroy current renderer (if exist) and all Renderer class will not be notified.
|
||||||
|
void resetRenderer();
|
||||||
protected:
|
protected:
|
||||||
template<typename... Args>
|
template<typename... Args>
|
||||||
void _setRenderer(int& refcalc,RendererType Type,Args&&... args)
|
void _setRenderer(int& refcalc,RendererType Type,Args&&... args)
|
||||||
|
@ -383,7 +390,7 @@ namespace MiniEngine
|
||||||
void _clear();
|
void _clear();
|
||||||
SDL_Window* _get() const;
|
SDL_Window* _get() const;
|
||||||
|
|
||||||
Renderer winrnd;
|
Renderer _winrnd;
|
||||||
};
|
};
|
||||||
|
|
||||||
enum class FontStyle { Normal, Bold, Italic, UnderLine, StrikeThrough };
|
enum class FontStyle { Normal, Bold, Italic, UnderLine, StrikeThrough };
|
||||||
|
@ -501,7 +508,7 @@ namespace MiniEngine
|
||||||
public:
|
public:
|
||||||
SharedLibrary();
|
SharedLibrary();
|
||||||
SharedLibrary(const std::string& Filename);
|
SharedLibrary(const std::string& Filename);
|
||||||
~SharedLibrary();
|
~SharedLibrary()=default;
|
||||||
int load(const std::string& Filename);
|
int load(const std::string& Filename);
|
||||||
int unload();
|
int unload();
|
||||||
|
|
||||||
|
@ -511,10 +518,10 @@ namespace MiniEngine
|
||||||
return std::function<ReturnType(Arguments...)>(reinterpret_cast<ReturnType(*)(Arguments...)>(get(FunctionName)));
|
return std::function<ReturnType(Arguments...)>(reinterpret_cast<ReturnType(*)(Arguments...)>(get(FunctionName)));
|
||||||
}
|
}
|
||||||
|
|
||||||
void* get(const std::string& FunctionName);
|
void* get(const std::string& FunctionName) const;
|
||||||
void release();
|
void release();
|
||||||
private:
|
private:
|
||||||
void* _get();
|
void* _get() const;
|
||||||
void _set(void*);
|
void _set(void*);
|
||||||
void _clear();
|
void _clear();
|
||||||
std::shared_ptr<void> _obj;
|
std::shared_ptr<void> _obj;
|
||||||
|
@ -594,7 +601,7 @@ namespace MiniEngine
|
||||||
|
|
||||||
int enable();
|
int enable();
|
||||||
int disable();
|
int disable();
|
||||||
bool isenable();
|
bool isenable() const;
|
||||||
void detach();
|
void detach();
|
||||||
~Timer();
|
~Timer();
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user