mirror of
https://github.com/Kiritow/MiniEngine.git
synced 2024-03-22 13:11:22 +08:00
remove SDLEngine old code.
This commit is contained in:
parent
112c1081aa
commit
7505db992a
|
@ -1,32 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "../config.h"
|
|
||||||
#include <functional>
|
|
||||||
|
|
||||||
//#include <SDL2/SDL_events.h>
|
|
||||||
namespace MiniEngine
|
|
||||||
{
|
|
||||||
|
|
||||||
class MouseEvent
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
struct EventData
|
|
||||||
{
|
|
||||||
int x,y;
|
|
||||||
}
|
|
||||||
public:
|
|
||||||
int type;
|
|
||||||
EventData data;
|
|
||||||
};
|
|
||||||
class MouseEventListener
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MouseEventListener();
|
|
||||||
|
|
||||||
function<void(const MouseEvent&)> onButtonDown;
|
|
||||||
function<void(const MouseEvent&)> onButtonUp;
|
|
||||||
|
|
||||||
function<void(const MouseEvent&)> onMotion;
|
|
||||||
function<void(const MouseEvent&)> onWheel;
|
|
||||||
};
|
|
||||||
|
|
||||||
}/// End of namespace MiniEngine
|
|
|
@ -1,47 +0,0 @@
|
||||||
#include "Widget.h"
|
|
||||||
|
|
||||||
using namespace Engine;
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
namespace MiniEngine
|
|
||||||
{
|
|
||||||
/// Brush
|
|
||||||
#include "widget_brush.hpp"
|
|
||||||
|
|
||||||
struct SimpleProgressBar::impl
|
|
||||||
{
|
|
||||||
int percentage;
|
|
||||||
int w,h;
|
|
||||||
RGBA ucolor,lcolor;
|
|
||||||
};
|
|
||||||
|
|
||||||
SimpleProgressBar::SimpleProgressBar(int incw,int inch,RGBA upper_color,RGBA lower_color)
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
pimpl->w=incw;
|
|
||||||
pimpl->h=inch;
|
|
||||||
pimpl->ucolor=upper_color;
|
|
||||||
pimpl->lcolor=lower_color;
|
|
||||||
pimpl->percentage=0;
|
|
||||||
}
|
|
||||||
void SimpleProgressBar::DrawAt(Renderer& rnd,int x,int y)
|
|
||||||
{
|
|
||||||
RGBA prev=rnd.getColor();
|
|
||||||
if(pimpl->percentage)
|
|
||||||
{
|
|
||||||
rnd.setColor(pimpl->ucolor);
|
|
||||||
rnd.fillRect(Rect(x,y,pimpl->w*pimpl->percentage/100,pimpl->h));
|
|
||||||
}
|
|
||||||
if(pimpl->percentage-100)
|
|
||||||
{
|
|
||||||
rnd.setColor(pimpl->lcolor);
|
|
||||||
rnd.fillRect(Rect(x+pimpl->w*pimpl->percentage/100,y,pimpl->w*(100-pimpl->percentage)/100,pimpl->h));
|
|
||||||
}
|
|
||||||
rnd.setColor(prev);
|
|
||||||
}
|
|
||||||
void SimpleProgressBar::setPercentage(int iPercentage)
|
|
||||||
{
|
|
||||||
pimpl->percentage=min(max(0,iPercentage),100);
|
|
||||||
}
|
|
||||||
|
|
||||||
}/// End of namespace MiniEngine
|
|
|
@ -1,89 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "../config.h"
|
|
||||||
#include <string>
|
|
||||||
|
|
||||||
#define _MINI_ENGINE_IMPL_COPY_DECL(ClassName) _SDL_ENGINE_IMPL_COPY_DECL(ClassName)
|
|
||||||
#define _MINI_ENGINE_IMPL _SDL_ENGINE_IMPL
|
|
||||||
namespace MiniEngine
|
|
||||||
{
|
|
||||||
|
|
||||||
class Stage;
|
|
||||||
|
|
||||||
class Brush
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
~Brush();
|
|
||||||
_MINI_ENGINE_IMPL_COPY_DECL(Brush)
|
|
||||||
|
|
||||||
void copy(Engine::Texture t,Engine::Rect src,Engine::Rect dst,bool autoZoom);
|
|
||||||
void copyTo(Engine::Texture t,Engine::Rect dst,bool autoZoom);
|
|
||||||
void copyFill(Engine::Texture t,Engine::Rect src);
|
|
||||||
void copyFullFill(Engine::Texture t);
|
|
||||||
public:
|
|
||||||
Brush(const Engine::Window& rnd,Engine::Rect DrawableArea);
|
|
||||||
private:
|
|
||||||
_MINI_ENGINE_IMPL
|
|
||||||
friend class Stage;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Stage
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Stage();
|
|
||||||
~Stage();
|
|
||||||
};
|
|
||||||
|
|
||||||
class Drawable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual int Draw(const Brush& brush)=0;
|
|
||||||
virtual Engine::Rect getSize()=0;
|
|
||||||
};
|
|
||||||
|
|
||||||
class BaseButton : public Drawable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
BaseButton();
|
|
||||||
BaseButton(const BaseButton&);
|
|
||||||
BaseButton& operator = (const BaseButton&);
|
|
||||||
BaseButton(BaseButton&&);
|
|
||||||
BaseButton& operator = (BaseButton&&);
|
|
||||||
|
|
||||||
virtual int Draw(const Brush& brush);
|
|
||||||
virtual Engine::Rect getSize();
|
|
||||||
|
|
||||||
virtual ~BaseButton();
|
|
||||||
private:
|
|
||||||
struct impl;
|
|
||||||
impl* pimpl;
|
|
||||||
};
|
|
||||||
|
|
||||||
class SimpleButton : public BaseButton
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
/// Default Style
|
|
||||||
SimpleButton();
|
|
||||||
SimpleButton(std::string word,
|
|
||||||
Engine::RGBA color_word,
|
|
||||||
Engine::RGBA color_background,
|
|
||||||
Engine::RGBA color_highlight);
|
|
||||||
SimpleButton(const SimpleButton&);
|
|
||||||
SimpleButton& operator = (const SimpleButton&);
|
|
||||||
SimpleButton(SimpleButton&&);
|
|
||||||
SimpleButton& operator = (SimpleButton&&);
|
|
||||||
~SimpleButton();
|
|
||||||
};
|
|
||||||
|
|
||||||
class SimpleProgressBar
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SimpleProgressBar(int incw,int inch,Engine::RGBA upper_color,Engine::RGBA lower_color);
|
|
||||||
void DrawAt(Engine::Renderer& rnd,int x,int y);
|
|
||||||
void setPercentage(int iPercentage);
|
|
||||||
~SimpleProgressBar();
|
|
||||||
private:
|
|
||||||
struct impl;
|
|
||||||
impl* pimpl;
|
|
||||||
};
|
|
||||||
|
|
||||||
}/// End of namespace MiniEngine.
|
|
|
@ -1,69 +0,0 @@
|
||||||
struct Brush::impl
|
|
||||||
{
|
|
||||||
Renderer rnd;
|
|
||||||
Rect area;
|
|
||||||
impl(const Renderer& incrnd) : rnd(incrnd)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
};
|
|
||||||
Brush::Brush(const Window& wnd,Rect DrawableArea) /// Protected
|
|
||||||
{
|
|
||||||
pimpl=new impl(wnd.getRenderer());
|
|
||||||
pimpl->area=DrawableArea;
|
|
||||||
}
|
|
||||||
void Brush::copy(Texture t,Rect src,Rect dst,bool autoZoom)
|
|
||||||
{
|
|
||||||
dst.x+=pimpl->area.x;
|
|
||||||
dst.y+=pimpl->area.y;
|
|
||||||
if(dst.w>pimpl->area.w) dst.w=pimpl->area.w;
|
|
||||||
if(dst.h>pimpl->area.h) dst.h=pimpl->area.h;
|
|
||||||
if(autoZoom)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
if(src.w>pimpl->area.w) src.w=pimpl->area.w;
|
|
||||||
if(src.h>pimpl->area.h) src.h=pimpl->area.h;
|
|
||||||
}
|
|
||||||
pimpl->rnd.copy(t,src,dst);
|
|
||||||
}
|
|
||||||
void Brush::copyTo(Texture t,Rect dst,bool autoZoom)
|
|
||||||
{
|
|
||||||
dst.x+=pimpl->area.x;
|
|
||||||
dst.y+=pimpl->area.y;
|
|
||||||
|
|
||||||
if(dst.w>pimpl->area.w) dst.w=pimpl->area.w;
|
|
||||||
if(dst.h>pimpl->area.h) dst.h=pimpl->area.h;
|
|
||||||
|
|
||||||
if(autoZoom)
|
|
||||||
{
|
|
||||||
pimpl->rnd.copyTo(t,dst);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
int w=t.getw();
|
|
||||||
int h=t.geth();
|
|
||||||
if(w>pimpl->area.w) w=pimpl->area.w;
|
|
||||||
if(h>pimpl->area.h) h=pimpl->area.h;
|
|
||||||
Rect src(0,0,w,h);
|
|
||||||
pimpl->rnd.copy(t,src,dst);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
void Brush::copyFill(Texture t,Rect src)
|
|
||||||
{
|
|
||||||
Rect dst=pimpl->area;
|
|
||||||
pimpl->rnd.copy(t,src,dst);
|
|
||||||
}
|
|
||||||
|
|
||||||
void Brush::copyFullFill(Texture t)
|
|
||||||
{
|
|
||||||
Rect dst=pimpl->area;
|
|
||||||
pimpl->rnd.copyTo(t,dst);
|
|
||||||
}
|
|
||||||
|
|
||||||
Brush::~Brush()
|
|
||||||
{
|
|
||||||
delete pimpl;
|
|
||||||
}
|
|
|
@ -1,9 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "mini_engine.h"
|
|
||||||
|
|
||||||
namespace App
|
|
||||||
{
|
|
||||||
/** Entrance of Application.
|
|
||||||
*/
|
|
||||||
void Main();
|
|
||||||
}
|
|
|
@ -1,42 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
class InitManager_SDL
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InitManager_SDL();
|
|
||||||
~InitManager_SDL();
|
|
||||||
};
|
|
||||||
|
|
||||||
class InitManager_TTF
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InitManager_TTF();
|
|
||||||
~InitManager_TTF();
|
|
||||||
int openFont(const char* FileName,int Size);
|
|
||||||
int closeFont();
|
|
||||||
TTF_Font* font();
|
|
||||||
private:
|
|
||||||
TTF_Font* _font;
|
|
||||||
static int ctm;
|
|
||||||
};
|
|
||||||
|
|
||||||
class InitManager_IMG
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InitManager_IMG();
|
|
||||||
~InitManager_IMG();
|
|
||||||
SDL_Surface* loadimage(const char* FileName);
|
|
||||||
SDL_Texture* loadtexture(SDL_Renderer* rnd,const char* Filename);
|
|
||||||
};
|
|
||||||
class InitManager_Mix
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
InitManager_Mix();
|
|
||||||
~InitManager_Mix();
|
|
||||||
};
|
|
||||||
|
|
||||||
extern InitManager_SDL* syssdl;
|
|
||||||
extern InitManager_IMG* sysimg;
|
|
||||||
extern InitManager_TTF* systtf;
|
|
||||||
extern InitManager_Mix* sysmix;
|
|
|
@ -1,60 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "config.h"
|
|
||||||
#include <memory>
|
|
||||||
|
|
||||||
#define _MUSIC_MANAGER_IMPL \
|
|
||||||
struct impl; \
|
|
||||||
std::shared_ptr<impl> pimpl;
|
|
||||||
|
|
||||||
/// Fwd Decl
|
|
||||||
class MusicPlayer;
|
|
||||||
|
|
||||||
class Music
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Music();
|
|
||||||
Music(const char* MusicFileName);
|
|
||||||
int load(const char* MusicFileName);
|
|
||||||
int unload();
|
|
||||||
bool ready();
|
|
||||||
~Music();
|
|
||||||
private:
|
|
||||||
_MUSIC_MANAGER_IMPL
|
|
||||||
|
|
||||||
friend class MusicPlayer;
|
|
||||||
};
|
|
||||||
|
|
||||||
class SoundEffect
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SoundEffect();
|
|
||||||
SoundEffect(const char* SoundEffectFileName);
|
|
||||||
int load(const char* SoundEffectFileName);
|
|
||||||
~SoundEffect();
|
|
||||||
private:
|
|
||||||
_MUSIC_MANAGER_IMPL
|
|
||||||
};
|
|
||||||
|
|
||||||
class MusicPlayer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MusicPlayer(int freq=MIX_DEFAULT_FREQUENCY,Uint16 format=MIX_DEFAULT_FORMAT,int soundChannel=2,int chunkSize=1024);
|
|
||||||
~MusicPlayer();
|
|
||||||
int play();
|
|
||||||
int stop();
|
|
||||||
int add(Music& music,int times);
|
|
||||||
private:
|
|
||||||
static MusicPlayer* pInstance;
|
|
||||||
_MUSIC_MANAGER_IMPL
|
|
||||||
};
|
|
||||||
|
|
||||||
class SoundEffectPlayer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
SoundEffectPlayer();
|
|
||||||
~SoundEffectPlayer();
|
|
||||||
int play(SoundEffect& soundeffect,int times);
|
|
||||||
private:
|
|
||||||
_MUSIC_MANAGER_IMPL;
|
|
||||||
};
|
|
||||||
|
|
|
@ -1,38 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#ifdef __C4DROID__
|
|
||||||
#define _WINDOW_PROGRAM
|
|
||||||
#endif // __C4DROID__
|
|
||||||
|
|
||||||
#include <cstdio>
|
|
||||||
#include <cstdlib>
|
|
||||||
#include <cstring>
|
|
||||||
|
|
||||||
/// If you have configured SDL2 header files,
|
|
||||||
/// they will be used first.
|
|
||||||
|
|
||||||
#include "SDL2/SDL.h"
|
|
||||||
#undef main
|
|
||||||
|
|
||||||
#include "SDL2/SDL_ttf.h"
|
|
||||||
#include "SDL2/SDL_image.h"
|
|
||||||
#include "SDL2/SDL_mixer.h"
|
|
||||||
|
|
||||||
class NonCopyable
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NonCopyable()=default;
|
|
||||||
~NonCopyable()=default;
|
|
||||||
NonCopyable(const NonCopyable&)=delete;
|
|
||||||
NonCopyable& operator = (const NonCopyable&)=delete;
|
|
||||||
};
|
|
||||||
|
|
||||||
extern FILE* _log_fp;
|
|
||||||
|
|
||||||
#ifdef _WINDOW_PROGRAM
|
|
||||||
#define mlog_init() _log_fp=fopen("mini_engine_log.txt","w")
|
|
||||||
#define mlog(fmt,args...) do {if(_log_fp) {fprintf(_log_fp,fmt,##args);fprintf(_log_fp,"\n");fflush(_log_fp);} }while(0)
|
|
||||||
#else
|
|
||||||
#define mlog_init()
|
|
||||||
#define mlog(fmt,args...) printf(fmt,##args);printf("\n")
|
|
||||||
#endif
|
|
|
@ -1,9 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "basic_config.h"
|
|
||||||
|
|
||||||
#include "sdl_engine.h"
|
|
||||||
|
|
||||||
namespace Global
|
|
||||||
{
|
|
||||||
void ErrorQuit(const char* ErrorMessage);
|
|
||||||
}
|
|
|
@ -1,22 +0,0 @@
|
||||||
#pragma once
|
|
||||||
|
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/// InitManager
|
|
||||||
#include "InitManager.h"
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/// MusicManager
|
|
||||||
#include "MusicManager.h"
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/// Widget
|
|
||||||
#include "MiniEngine/Widget.h"
|
|
||||||
|
|
||||||
/******************************************************************************/
|
|
||||||
/// Application
|
|
||||||
#include "App.h"
|
|
||||||
|
|
||||||
void AllInit();
|
|
||||||
void AllQuit();
|
|
|
@ -1,158 +0,0 @@
|
||||||
#pragma once
|
|
||||||
#include "basic_config.h"
|
|
||||||
|
|
||||||
SDL_Texture* RenderText(SDL_Renderer* rnd,TTF_Font* font,const char* Text,SDL_Color color,int* pw,int* ph);
|
|
||||||
SDL_Texture* RenderUTF8(SDL_Renderer* rnd,TTF_Font* font,const char* Text,SDL_Color color,int* pw,int* ph);
|
|
||||||
void TextureDraw(SDL_Renderer* rnd,SDL_Texture* texture,int dstx,int dsty);
|
|
||||||
bool isInRect(int x,int y,SDL_Rect rect);
|
|
||||||
bool isInRect(int x,int y,int LU_x,int LU_y,int RD_x,int RD_y);
|
|
||||||
void ClearMessageQueue();
|
|
||||||
|
|
||||||
int MyChangeDir(const char* DirName);
|
|
||||||
|
|
||||||
namespace Engine
|
|
||||||
{
|
|
||||||
class Rect
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Rect();
|
|
||||||
Rect(int incx,int incy,int incw,int inch);
|
|
||||||
SDL_Rect toSDLRect();
|
|
||||||
~Rect();
|
|
||||||
|
|
||||||
int x,y,w,h;
|
|
||||||
};
|
|
||||||
class RGBA
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RGBA();
|
|
||||||
RGBA(int incr,int incg,int incb,int inca);
|
|
||||||
~RGBA();
|
|
||||||
|
|
||||||
SDL_Color toSDLColor();
|
|
||||||
|
|
||||||
int r,g,b,a;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Renderer;
|
|
||||||
class Texture;
|
|
||||||
class Font;
|
|
||||||
|
|
||||||
#define _SDL_ENGINE_IMPL_COPY_DECL(ClassName) \
|
|
||||||
ClassName(const ClassName&); \
|
|
||||||
ClassName(ClassName&&); \
|
|
||||||
ClassName& operator = (const ClassName&); \
|
|
||||||
ClassName& operator = (ClassName&&);
|
|
||||||
|
|
||||||
#define _SDL_ENGINE_IMPL \
|
|
||||||
struct impl; \
|
|
||||||
impl* pimpl;
|
|
||||||
|
|
||||||
#define DEFAULT_WIDTH 1024
|
|
||||||
#define DEFAULT_HEIGHT 768
|
|
||||||
|
|
||||||
class Window
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Window(int winw,int winh);
|
|
||||||
~Window();
|
|
||||||
|
|
||||||
_SDL_ENGINE_IMPL_COPY_DECL(Window);
|
|
||||||
|
|
||||||
Renderer getRenderer() const;
|
|
||||||
void resetRenderer();
|
|
||||||
|
|
||||||
Rect getSize();
|
|
||||||
|
|
||||||
void setSize(Rect r);
|
|
||||||
|
|
||||||
private:
|
|
||||||
_SDL_ENGINE_IMPL
|
|
||||||
};
|
|
||||||
|
|
||||||
class Surface
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
~Surface();
|
|
||||||
_SDL_ENGINE_IMPL_COPY_DECL(Surface);
|
|
||||||
protected:
|
|
||||||
Surface();
|
|
||||||
private:
|
|
||||||
_SDL_ENGINE_IMPL
|
|
||||||
friend class Renderer;
|
|
||||||
friend class Font;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Renderer
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
virtual ~Renderer();
|
|
||||||
_SDL_ENGINE_IMPL_COPY_DECL(Renderer);
|
|
||||||
|
|
||||||
int clear();
|
|
||||||
void update();
|
|
||||||
int copy(Texture t,Rect src,Rect dst);
|
|
||||||
int copyTo(Texture t,Rect dst);
|
|
||||||
int copyFill(Texture t,Rect src);
|
|
||||||
int copyFullFill(Texture t);
|
|
||||||
Texture loadImage(const char* FileName);
|
|
||||||
Texture render(Surface surface);
|
|
||||||
|
|
||||||
int setColor(RGBA pack);
|
|
||||||
RGBA getColor(int* pStatus=nullptr);
|
|
||||||
|
|
||||||
int fillRect(Rect rect);
|
|
||||||
int drawRect(Rect rect);
|
|
||||||
|
|
||||||
/// Not Recommended
|
|
||||||
SDL_Renderer* getDirectRenderer();
|
|
||||||
protected:
|
|
||||||
Renderer();
|
|
||||||
private:
|
|
||||||
_SDL_ENGINE_IMPL
|
|
||||||
friend class Window;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Texture
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
~Texture();
|
|
||||||
int getw();
|
|
||||||
int geth();
|
|
||||||
_SDL_ENGINE_IMPL_COPY_DECL(Texture);
|
|
||||||
protected:
|
|
||||||
Texture();
|
|
||||||
private:
|
|
||||||
_SDL_ENGINE_IMPL
|
|
||||||
friend class Renderer;
|
|
||||||
};
|
|
||||||
|
|
||||||
class Font
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
Font();
|
|
||||||
Font(const char* FontFileName,int sz);
|
|
||||||
int use(const char* FontFileName,int sz);
|
|
||||||
~Font();
|
|
||||||
|
|
||||||
_SDL_ENGINE_IMPL_COPY_DECL(Font);
|
|
||||||
|
|
||||||
Texture renderText(Renderer rnd,const char* Word,RGBA fg);
|
|
||||||
Texture renderTextShaded(Renderer rnd,const char* Word,RGBA fg,RGBA bg);
|
|
||||||
Texture renderTextSolid(Renderer rnd,const char* Word,RGBA fg);
|
|
||||||
|
|
||||||
Texture renderUTF8(Renderer rnd,const char* Word,RGBA fg);
|
|
||||||
Texture renderUTF8Shaded(Renderer rnd,const char* Word,RGBA fg,RGBA bg);
|
|
||||||
Texture renderUTF8Solid(Renderer rnd,const char* Word,RGBA fg);
|
|
||||||
private:
|
|
||||||
_SDL_ENGINE_IMPL
|
|
||||||
};
|
|
||||||
|
|
||||||
class SDLSystem
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
static void delay(int ms);
|
|
||||||
};
|
|
||||||
|
|
||||||
}/// End of namespace Engine
|
|
||||||
|
|
|
@ -1,14 +0,0 @@
|
||||||
CXXFLAGS = -std=c++14 -Wall -O2 -D__C4DROID__ -Iinclude
|
|
||||||
LDFLAGS =
|
|
||||||
LDLIBS = -lSDL2_image -lSDL2_net -ltiff -ljpeg -lpng -lz -lSDL2_ttf -lfreetype -lSDL2_mixer -lSDL2_test -lsmpeg2 -lvorbisfile -lvorbis -logg -lstdc++ -lSDL2 -lEGL -lGLESv1_CM -lGLESv2 -landroid -Wl,--no-undefined -shared
|
|
||||||
|
|
||||||
PROG = program_name
|
|
||||||
OBJS = basic_config.o sdl_engine.o config.o InitManager.o mini_engine.o App.o main.o
|
|
||||||
|
|
||||||
all: $(PROG)
|
|
||||||
|
|
||||||
$(PROG): $(OBJS)
|
|
||||||
$(CXX) $(CXXFLAGS) $(LDFLAGS) $(LDLIBS) -o $@ $(OBJS) `sdl2-config --cflags --libs`
|
|
||||||
|
|
||||||
clean:
|
|
||||||
rm -f $(PROG) $(OBJS)
|
|
|
@ -1,44 +0,0 @@
|
||||||
#include "App.h"
|
|
||||||
|
|
||||||
using namespace Engine;
|
|
||||||
using namespace MiniEngine;
|
|
||||||
|
|
||||||
namespace App
|
|
||||||
{
|
|
||||||
/// Application Main Method
|
|
||||||
void Main()
|
|
||||||
{
|
|
||||||
Window wnd(1366,768);///16:9
|
|
||||||
Renderer rnd=wnd.getRenderer();
|
|
||||||
Font bigf;
|
|
||||||
if(bigf.use("msyh.ttf",72)<0)
|
|
||||||
{
|
|
||||||
mlog("Failed to open Font.");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
rnd.clear();
|
|
||||||
rnd.update();
|
|
||||||
|
|
||||||
MusicPlayer player;
|
|
||||||
Music m;
|
|
||||||
int ret=m.load("res/music.mp3");
|
|
||||||
printf("ret=%d\n",ret);
|
|
||||||
ret=player.add(m,-1);
|
|
||||||
printf("ret=%d\n",ret);
|
|
||||||
ret=player.play();
|
|
||||||
printf("ret=%d\n",ret);
|
|
||||||
printf("%s\n",Mix_GetError());
|
|
||||||
|
|
||||||
while(1) SDL_PollEvent(0);
|
|
||||||
|
|
||||||
/*
|
|
||||||
/// Sample Code of Brush
|
|
||||||
Brush b(wnd,Rect(wnd.getSize().w/2-50,wnd.getSize().h/2-50,100,100));
|
|
||||||
Texture t=rnd.loadImage("D:\\sample.png");
|
|
||||||
Rect dst(0,0,wnd.getSize().w,wnd.getSize().h);
|
|
||||||
b.copyTo(t,dst,false);
|
|
||||||
rnd.update();
|
|
||||||
SDL_Delay(2000);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,119 +0,0 @@
|
||||||
#include "InitManager.h"
|
|
||||||
|
|
||||||
InitManager_SDL::InitManager_SDL()
|
|
||||||
{
|
|
||||||
if(SDL_Init(SDL_INIT_EVERYTHING)<0)
|
|
||||||
{
|
|
||||||
#ifndef __C4DROID__
|
|
||||||
Global::ErrorQuit("Failed to init SDL2.");
|
|
||||||
#else
|
|
||||||
/// C4droid does not fully support SDL2,
|
|
||||||
/// so initializing everything crashes.
|
|
||||||
#endif
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_SDL::~InitManager_SDL()
|
|
||||||
{
|
|
||||||
SDL_Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_IMG::InitManager_IMG()
|
|
||||||
{
|
|
||||||
if(IMG_Init(IMG_INIT_JPG|IMG_INIT_PNG)<0)
|
|
||||||
{
|
|
||||||
Global::ErrorQuit("Failed to init SDL2 Image.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Surface* InitManager_IMG::loadimage(const char* Filename)
|
|
||||||
{
|
|
||||||
return IMG_Load(Filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Texture* InitManager_IMG::loadtexture(SDL_Renderer* rnd,const char* Filename)
|
|
||||||
{
|
|
||||||
return IMG_LoadTexture(rnd,Filename);
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_IMG::~InitManager_IMG()
|
|
||||||
{
|
|
||||||
IMG_Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
int InitManager_TTF::ctm=0;
|
|
||||||
|
|
||||||
InitManager_TTF::InitManager_TTF()
|
|
||||||
{
|
|
||||||
/// ~_~ check ctm and add it anyway
|
|
||||||
if(ctm++>0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
if(TTF_Init()<0)
|
|
||||||
{
|
|
||||||
Global::ErrorQuit("Failed to init SDL2 TTF.");
|
|
||||||
}
|
|
||||||
_font=NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
int InitManager_TTF::openFont(const char* FileName,int Size)
|
|
||||||
{
|
|
||||||
_font=TTF_OpenFont(FileName,Size);
|
|
||||||
if(_font==NULL) return -1;
|
|
||||||
else return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
TTF_Font* InitManager_TTF::font()
|
|
||||||
{
|
|
||||||
return _font;
|
|
||||||
}
|
|
||||||
|
|
||||||
int InitManager_TTF::closeFont()
|
|
||||||
{
|
|
||||||
TTF_CloseFont(_font);
|
|
||||||
_font=NULL;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_TTF::~InitManager_TTF()
|
|
||||||
{
|
|
||||||
/// Close Font anyway.
|
|
||||||
if(_font) closeFont();
|
|
||||||
|
|
||||||
/// ~_~ Firstly ctm=ctm-1, if ctm still > 0, then return ( TTF_Quit Not Executed )
|
|
||||||
if(--ctm>0)
|
|
||||||
{
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
TTF_Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_Mix::InitManager_Mix()
|
|
||||||
{
|
|
||||||
if(Mix_Init(MIX_INIT_MP3)<0)
|
|
||||||
{
|
|
||||||
Global::ErrorQuit("Failed to Init Mixer.");
|
|
||||||
}
|
|
||||||
|
|
||||||
/*
|
|
||||||
if(Mix_OpenAudio(44100, AUDIO_S16SYS, 2, 1024)<0)
|
|
||||||
{
|
|
||||||
Global::ErrorQuit("Failed to OpenAudio");
|
|
||||||
}
|
|
||||||
Mix_AllocateChannels(32);
|
|
||||||
*/
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_Mix::~InitManager_Mix()
|
|
||||||
{
|
|
||||||
//Mix_CloseAudio();
|
|
||||||
Mix_Quit();
|
|
||||||
}
|
|
||||||
|
|
||||||
InitManager_SDL* syssdl=NULL;
|
|
||||||
InitManager_IMG* sysimg=NULL;
|
|
||||||
InitManager_TTF* systtf=NULL;
|
|
||||||
InitManager_Mix* sysmix=NULL;
|
|
|
@ -1,86 +0,0 @@
|
||||||
#include "MusicManager.h"
|
|
||||||
#include <memory>
|
|
||||||
#include <vector>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
struct Music::impl
|
|
||||||
{
|
|
||||||
friend class Music;
|
|
||||||
shared_ptr<Mix_Music> sMusic;
|
|
||||||
};
|
|
||||||
Music::Music()
|
|
||||||
{
|
|
||||||
pimpl.reset(new impl);
|
|
||||||
}
|
|
||||||
Music::Music(const char* MusicFileName) : Music()
|
|
||||||
{
|
|
||||||
load(MusicFileName);
|
|
||||||
}
|
|
||||||
int Music::load(const char* MusicFileName)
|
|
||||||
{
|
|
||||||
Mix_Music* ptemp=Mix_LoadMUS(MusicFileName);
|
|
||||||
if(ptemp==nullptr) return -1;
|
|
||||||
pimpl->sMusic.reset(ptemp,Mix_FreeMusic);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
int Music::unload()
|
|
||||||
{
|
|
||||||
printf("Unloaded.\n");
|
|
||||||
if(pimpl->sMusic.get())
|
|
||||||
{
|
|
||||||
printf("Reset to NULL\n");
|
|
||||||
pimpl->sMusic.reset();
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
else return -2;
|
|
||||||
}
|
|
||||||
bool Music::ready()
|
|
||||||
{
|
|
||||||
return (pimpl->sMusic.get()!=nullptr);
|
|
||||||
}
|
|
||||||
Music::~Music()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
struct MusicPlayer::impl
|
|
||||||
{
|
|
||||||
vector<pair<Music,int>> vec;
|
|
||||||
};
|
|
||||||
MusicPlayer::MusicPlayer(int freq,Uint16 format,int soundChannel,int chunkSize)
|
|
||||||
{
|
|
||||||
pimpl.reset(new impl);
|
|
||||||
if(pInstance) return;
|
|
||||||
Mix_OpenAudio(freq,format,soundChannel,chunkSize);
|
|
||||||
pInstance=this;
|
|
||||||
}
|
|
||||||
MusicPlayer::~MusicPlayer()
|
|
||||||
{
|
|
||||||
if(pInstance) Mix_CloseAudio();
|
|
||||||
pInstance=nullptr;
|
|
||||||
}
|
|
||||||
int MusicPlayer::play()
|
|
||||||
{
|
|
||||||
return Mix_PlayMusic(pimpl->vec.front().first.pimpl->sMusic.get(),pimpl->vec.front().second);
|
|
||||||
}
|
|
||||||
int MusicPlayer::add(Music& music,int times)
|
|
||||||
{
|
|
||||||
if(!music.ready()) return -1;
|
|
||||||
pimpl->vec.push_back(make_pair(music,times));
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
MusicPlayer* MusicPlayer::pInstance=nullptr;
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct SoundEffect::impl
|
|
||||||
{
|
|
||||||
friend class SoundEffect;
|
|
||||||
shared_ptr<Mix_Chunk> sChunk;
|
|
||||||
};
|
|
||||||
|
|
||||||
SoundEffect::SoundEffect()
|
|
||||||
{
|
|
||||||
pimpl.reset(new impl);
|
|
||||||
}
|
|
|
@ -1,3 +0,0 @@
|
||||||
#include "basic_config.h"
|
|
||||||
|
|
||||||
FILE* _log_fp=NULL;
|
|
|
@ -1,10 +0,0 @@
|
||||||
#include "config.h"
|
|
||||||
|
|
||||||
namespace Global
|
|
||||||
{
|
|
||||||
void ErrorQuit(const char* ErrorMessage)
|
|
||||||
{
|
|
||||||
mlog(ErrorMessage);
|
|
||||||
exit(0);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,13 +0,0 @@
|
||||||
#include "config.h"
|
|
||||||
#include "App.h"
|
|
||||||
|
|
||||||
int main()
|
|
||||||
{
|
|
||||||
/// Initialize SDL2...
|
|
||||||
AllInit();
|
|
||||||
/// Call Application Main
|
|
||||||
App::Main();
|
|
||||||
/// Clean Up SDL2
|
|
||||||
AllQuit();
|
|
||||||
return 0;
|
|
||||||
}
|
|
|
@ -1,20 +0,0 @@
|
||||||
#include "mini_engine.h"
|
|
||||||
|
|
||||||
void AllInit()
|
|
||||||
{
|
|
||||||
mlog_init();
|
|
||||||
|
|
||||||
syssdl=new InitManager_SDL;
|
|
||||||
sysimg=new InitManager_IMG;
|
|
||||||
systtf=new InitManager_TTF;
|
|
||||||
sysmix=new InitManager_Mix;
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void AllQuit()
|
|
||||||
{
|
|
||||||
delete sysmix;
|
|
||||||
delete systtf;
|
|
||||||
delete sysimg;
|
|
||||||
delete syssdl;
|
|
||||||
}
|
|
|
@ -1,144 +0,0 @@
|
||||||
#include "sdl_engine.h"
|
|
||||||
#include "unistd.h"
|
|
||||||
#include <memory>
|
|
||||||
using namespace std;
|
|
||||||
|
|
||||||
SDL_Texture* RenderUTF8(SDL_Renderer* rnd,TTF_Font* font,const char* Text,SDL_Color color,int* pw,int* ph)
|
|
||||||
{
|
|
||||||
SDL_Surface* surf=TTF_RenderUTF8_Blended(font,Text,color);
|
|
||||||
if(surf==NULL) return NULL;
|
|
||||||
SDL_Texture* texture=SDL_CreateTextureFromSurface(rnd,surf);
|
|
||||||
SDL_FreeSurface(surf);
|
|
||||||
if(pw&&ph) SDL_QueryTexture(texture,NULL,NULL,pw,ph);
|
|
||||||
return texture;
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isInRect(int x,int y,SDL_Rect rect)
|
|
||||||
{
|
|
||||||
return ((x>=rect.x&&x<=rect.x+rect.w)&&(y>=rect.y&&y<=rect.y+rect.h));
|
|
||||||
}
|
|
||||||
|
|
||||||
bool isInRect(int x,int y,int LU_x,int LU_y,int RD_x,int RD_y)
|
|
||||||
{
|
|
||||||
return ((x>=LU_x&&x<=RD_x)&&(y>=LU_y&&y<=RD_y));
|
|
||||||
}
|
|
||||||
|
|
||||||
void ClearMessageQueue()
|
|
||||||
{
|
|
||||||
/// Clear Message Queue
|
|
||||||
while(SDL_PeepEvents(NULL,1,SDL_GETEVENT,SDL_FIRSTEVENT,SDL_LASTEVENT));
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Color color_white { 255,255,255 };
|
|
||||||
SDL_Color color_black { 0,0,0 };
|
|
||||||
|
|
||||||
int MyChangeDir(const char* DirName)
|
|
||||||
{
|
|
||||||
mlog("Change Dir to \"%s\"",DirName);
|
|
||||||
int ret=chdir(DirName);
|
|
||||||
mlog("Change Dir returns %d",ret);
|
|
||||||
return ret;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
namespace Engine
|
|
||||||
{
|
|
||||||
|
|
||||||
/// Rect
|
|
||||||
#include "sdl_engine_rect.hpp"
|
|
||||||
|
|
||||||
struct Renderer::impl
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
friend class Renderer;
|
|
||||||
shared_ptr<SDL_Renderer> sRnd;
|
|
||||||
public:
|
|
||||||
void set(SDL_Renderer* rnd)
|
|
||||||
{
|
|
||||||
sRnd.reset(rnd,SDL_DestroyRenderer);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Window::impl
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
friend class Window;
|
|
||||||
shared_ptr<SDL_Window> sWnd;
|
|
||||||
Renderer rnd;
|
|
||||||
public:
|
|
||||||
void set(SDL_Window* wnd)
|
|
||||||
{
|
|
||||||
sWnd.reset(wnd,SDL_DestroyWindow);
|
|
||||||
rnd.pimpl->set(SDL_CreateRenderer(wnd,-1,SDL_RENDERER_ACCELERATED|SDL_RENDERER_TARGETTEXTURE));
|
|
||||||
}
|
|
||||||
SDL_Window* getRawWindow()
|
|
||||||
{
|
|
||||||
return sWnd.get();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Texture::impl
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
friend class Texture;
|
|
||||||
shared_ptr<SDL_Texture> sText;
|
|
||||||
int w,h;
|
|
||||||
public:
|
|
||||||
void set(SDL_Texture* text)
|
|
||||||
{
|
|
||||||
sText.reset(text,SDL_DestroyTexture);
|
|
||||||
SDL_QueryTexture(text,NULL,NULL,&w,&h);
|
|
||||||
}
|
|
||||||
SDL_Texture* getRawTexture()
|
|
||||||
{
|
|
||||||
return sText.get();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Surface::impl
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
friend class Surface;
|
|
||||||
shared_ptr<SDL_Surface> sSurf;
|
|
||||||
public:
|
|
||||||
void set(SDL_Surface* surf)
|
|
||||||
{
|
|
||||||
sSurf.reset(surf,SDL_FreeSurface);
|
|
||||||
}
|
|
||||||
SDL_Surface* getRawSurface()
|
|
||||||
{
|
|
||||||
return sSurf.get();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
struct Font::impl
|
|
||||||
{
|
|
||||||
private:
|
|
||||||
friend class Font;
|
|
||||||
shared_ptr<TTF_Font> sTTF;
|
|
||||||
public:
|
|
||||||
void set(TTF_Font* font)
|
|
||||||
{
|
|
||||||
sTTF.reset(font,TTF_CloseFont);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
/// Window
|
|
||||||
#include "sdl_engine_window.hpp"
|
|
||||||
/// Renderer
|
|
||||||
#include "sdl_engine_renderer.hpp"
|
|
||||||
/// Surface
|
|
||||||
#include "sdl_engine_surface.hpp"
|
|
||||||
/// Texture
|
|
||||||
#include "sdl_engine_texture.hpp"
|
|
||||||
/// RGBA
|
|
||||||
#include "sdl_engine_rgba.hpp"
|
|
||||||
/// Font
|
|
||||||
#include "sdl_engine_font.hpp"
|
|
||||||
|
|
||||||
void SDLSystem::delay(int ms)
|
|
||||||
{
|
|
||||||
SDL_Delay(ms);
|
|
||||||
}
|
|
||||||
|
|
||||||
}/// End of namespace Engine
|
|
|
@ -1,61 +0,0 @@
|
||||||
Font::Font()
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Font::Font(const char* FontFileName,int sz) : Font()
|
|
||||||
{
|
|
||||||
use(FontFileName,sz);
|
|
||||||
}
|
|
||||||
|
|
||||||
Font::Font(const Font& inc) : Font()
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
}
|
|
||||||
Font& Font::operator = (const Font& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
Font::Font(Font&& inc)
|
|
||||||
{
|
|
||||||
pimpl=inc.pimpl;
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
}
|
|
||||||
Font& Font::operator = (Font&& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Font::~Font()
|
|
||||||
{
|
|
||||||
delete pimpl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Font::use(const char* FontFileName,int sz)
|
|
||||||
{
|
|
||||||
TTF_Font* font=TTF_OpenFont(FontFileName,sz);
|
|
||||||
if(font==NULL) return -1;
|
|
||||||
pimpl->sTTF.reset(font,TTF_CloseFont);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
Texture Font::renderText(Renderer rnd,const char* Word,RGBA fg)
|
|
||||||
{
|
|
||||||
Surface surf;
|
|
||||||
surf.pimpl->set(TTF_RenderText_Blended(pimpl->sTTF.get(),Word,fg.toSDLColor()));
|
|
||||||
Texture t=rnd.render(surf);
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
Texture Font::renderUTF8(Renderer rnd,const char* Word,RGBA fg)
|
|
||||||
{
|
|
||||||
Surface surf;
|
|
||||||
surf.pimpl->set(TTF_RenderUTF8_Blended(pimpl->sTTF.get(),Word,fg.toSDLColor()));
|
|
||||||
Texture t=rnd.render(surf);
|
|
||||||
return t;
|
|
||||||
}
|
|
|
@ -1,25 +0,0 @@
|
||||||
Rect::Rect()
|
|
||||||
{
|
|
||||||
x=y=w=h=0;
|
|
||||||
}
|
|
||||||
Rect::Rect(int incx,int incy,int incw,int inch)
|
|
||||||
{
|
|
||||||
x=incx;
|
|
||||||
y=incy;
|
|
||||||
w=incw;
|
|
||||||
h=inch;
|
|
||||||
}
|
|
||||||
Rect::~Rect()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
SDL_Rect Rect::toSDLRect()
|
|
||||||
{
|
|
||||||
SDL_Rect rect;
|
|
||||||
rect.x=x;
|
|
||||||
rect.y=y;
|
|
||||||
rect.w=w;
|
|
||||||
rect.h=h;
|
|
||||||
return rect;
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
Renderer::Renderer()
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
}
|
|
||||||
Renderer::Renderer(const Renderer& inc) : Renderer()
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
}
|
|
||||||
Renderer& Renderer::operator = (const Renderer& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
Renderer::Renderer(Renderer&& inc)
|
|
||||||
{
|
|
||||||
pimpl=inc.pimpl;
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
}
|
|
||||||
Renderer& Renderer::operator = (Renderer&& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Renderer::~Renderer()
|
|
||||||
{
|
|
||||||
delete pimpl;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Renderer::clear()
|
|
||||||
{
|
|
||||||
return SDL_RenderClear(pimpl->sRnd.get());
|
|
||||||
}
|
|
||||||
Texture Renderer::loadImage(const char* FileName)
|
|
||||||
{
|
|
||||||
Texture t;
|
|
||||||
t.pimpl->set(IMG_LoadTexture(pimpl->sRnd.get(),FileName));
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
Texture Renderer::render(Surface surface)
|
|
||||||
{
|
|
||||||
Texture t;
|
|
||||||
t.pimpl->set(SDL_CreateTextureFromSurface(pimpl->sRnd.get(),surface.pimpl->getRawSurface()));
|
|
||||||
return t;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Renderer::update()
|
|
||||||
{
|
|
||||||
SDL_RenderPresent(pimpl->sRnd.get());
|
|
||||||
}
|
|
||||||
|
|
||||||
int Renderer::copy(Texture t,Rect src,Rect dst)
|
|
||||||
{
|
|
||||||
SDL_Rect s=src.toSDLRect();
|
|
||||||
SDL_Rect d=dst.toSDLRect();
|
|
||||||
return SDL_RenderCopy(pimpl->sRnd.get(),t.pimpl->getRawTexture(),&s,&d);
|
|
||||||
}
|
|
||||||
int Renderer::copyTo(Texture t,Rect dst)
|
|
||||||
{
|
|
||||||
SDL_Rect d=dst.toSDLRect();
|
|
||||||
return SDL_RenderCopy(pimpl->sRnd.get(),t.pimpl->getRawTexture(),NULL,&d);
|
|
||||||
}
|
|
||||||
int Renderer::copyFill(Texture t,Rect src)
|
|
||||||
{
|
|
||||||
SDL_Rect s=src.toSDLRect();
|
|
||||||
return SDL_RenderCopy(pimpl->sRnd.get(),t.pimpl->getRawTexture(),&s,NULL);
|
|
||||||
}
|
|
||||||
int Renderer::copyFullFill(Texture t)
|
|
||||||
{
|
|
||||||
return SDL_RenderCopy(pimpl->sRnd.get(),t.pimpl->getRawTexture(),NULL,NULL);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Renderer::setColor(RGBA pack)
|
|
||||||
{
|
|
||||||
return SDL_SetRenderDrawColor(pimpl->sRnd.get(),pack.r,pack.g,pack.b,pack.a);
|
|
||||||
}
|
|
||||||
|
|
||||||
RGBA Renderer::getColor(int* pstatus)
|
|
||||||
{
|
|
||||||
Uint8 r,g,b,a;
|
|
||||||
int ret=SDL_GetRenderDrawColor(pimpl->sRnd.get(),&r,&g,&b,&a);
|
|
||||||
RGBA pack(r,g,b,a);
|
|
||||||
if(pstatus) *pstatus=ret;
|
|
||||||
return pack;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Renderer::fillRect(Rect rect)
|
|
||||||
{
|
|
||||||
auto inr=rect.toSDLRect();
|
|
||||||
return SDL_RenderFillRect(pimpl->sRnd.get(),&inr);
|
|
||||||
}
|
|
||||||
|
|
||||||
int Renderer::drawRect(Rect rect)
|
|
||||||
{
|
|
||||||
auto inr=rect.toSDLRect();
|
|
||||||
return SDL_RenderDrawRect(pimpl->sRnd.get(),&inr);
|
|
||||||
}
|
|
|
@ -1,24 +0,0 @@
|
||||||
RGBA::RGBA()
|
|
||||||
{
|
|
||||||
r=g=b=a=0;
|
|
||||||
}
|
|
||||||
RGBA::RGBA(int incr,int incg,int incb,int inca)
|
|
||||||
{
|
|
||||||
r=incr;
|
|
||||||
g=incg;
|
|
||||||
b=incb;
|
|
||||||
a=inca;
|
|
||||||
}
|
|
||||||
SDL_Color RGBA::toSDLColor()
|
|
||||||
{
|
|
||||||
SDL_Color color;
|
|
||||||
color.r=r;
|
|
||||||
color.g=g;
|
|
||||||
color.b=b;
|
|
||||||
color.a=a;
|
|
||||||
return color;
|
|
||||||
}
|
|
||||||
RGBA::~RGBA()
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
|
@ -1,27 +0,0 @@
|
||||||
Surface::Surface()
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
}
|
|
||||||
Surface::Surface(const Surface& inc) : Surface()
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
}
|
|
||||||
Surface& Surface::operator = (const Surface& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
Surface::Surface(Surface&& inc)
|
|
||||||
{
|
|
||||||
pimpl=inc.pimpl;
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
}
|
|
||||||
Surface& Surface::operator = (Surface&& inc)
|
|
||||||
{
|
|
||||||
*(pimpl)=*(inc.pimpl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
Surface::~Surface()
|
|
||||||
{
|
|
||||||
delete pimpl;
|
|
||||||
}
|
|
|
@ -1,37 +0,0 @@
|
||||||
Texture::Texture()
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
}
|
|
||||||
Texture::Texture(const Texture& inc) : Texture()
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
}
|
|
||||||
Texture& Texture::operator = (const Texture& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
Texture::Texture(Texture&& inc)
|
|
||||||
{
|
|
||||||
pimpl=inc.pimpl;
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
}
|
|
||||||
Texture& Texture::operator = (Texture&& inc)
|
|
||||||
{
|
|
||||||
*(pimpl)=*(inc.pimpl);
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
int Texture::getw()
|
|
||||||
{
|
|
||||||
return pimpl->w;
|
|
||||||
}
|
|
||||||
int Texture::geth()
|
|
||||||
{
|
|
||||||
return pimpl->h;
|
|
||||||
}
|
|
||||||
Texture::~Texture()
|
|
||||||
{
|
|
||||||
delete pimpl;
|
|
||||||
}
|
|
|
@ -1,55 +0,0 @@
|
||||||
Window::Window(int winw,int winh)
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
SDL_Window* wnd=SDL_CreateWindow("Engine",SDL_WINDOWPOS_CENTERED,SDL_WINDOWPOS_CENTERED,winw,winh,SDL_WINDOW_SHOWN);
|
|
||||||
pimpl->set(wnd);
|
|
||||||
}
|
|
||||||
|
|
||||||
Window::Window(const Window& inc)
|
|
||||||
{
|
|
||||||
pimpl=new impl;
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
}
|
|
||||||
|
|
||||||
Window& Window::operator = (const Window& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
Window::Window(Window&& inc)
|
|
||||||
{
|
|
||||||
pimpl=inc.pimpl;
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
}
|
|
||||||
|
|
||||||
Window& Window::operator = (Window&& inc)
|
|
||||||
{
|
|
||||||
*pimpl=*(inc.pimpl);
|
|
||||||
inc.pimpl=nullptr;
|
|
||||||
return *this;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Window::~Window()
|
|
||||||
{
|
|
||||||
delete pimpl;
|
|
||||||
}
|
|
||||||
|
|
||||||
Renderer Window::getRenderer() const
|
|
||||||
{
|
|
||||||
return pimpl->rnd;
|
|
||||||
}
|
|
||||||
|
|
||||||
Rect Window::getSize()
|
|
||||||
{
|
|
||||||
int w,h;
|
|
||||||
SDL_GetWindowSize(pimpl->getRawWindow(),&w,&h);
|
|
||||||
Rect rect(0,0,w,h);
|
|
||||||
return rect;
|
|
||||||
}
|
|
||||||
|
|
||||||
void Window::setSize(Rect rect)
|
|
||||||
{
|
|
||||||
SDL_SetWindowSize(pimpl->getRawWindow(),rect.w,rect.h);
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user