add ThemeEngine and DefaultThemeEngine
This commit is contained in:
parent
e17c910b50
commit
e5dd5720e6
@ -27,7 +27,7 @@ namespace hgl
|
||||
|
||||
protected:
|
||||
|
||||
virtual bool ThemeRender(Form *)=0;
|
||||
virtual ThemeForm *CreateForm(Form *,RenderTarget *,RenderCommand *)=0;
|
||||
|
||||
public:
|
||||
|
||||
@ -40,7 +40,7 @@ namespace hgl
|
||||
virtual bool Registry(Form *,const VkFormat format=DefaultRenderTargetFormat);
|
||||
virtual void Unregistry(Form *);
|
||||
virtual bool Resize(Form *,const uint32_t,const uint32_t,const VkFormat format=DefaultRenderTargetFormat);
|
||||
virtual void Render(Form *);
|
||||
virtual bool Render(Form *);
|
||||
};//class ThemeEngine
|
||||
|
||||
// ThemeEngine *CreateThemeEngine();
|
||||
|
@ -15,11 +15,13 @@ namespace hgl
|
||||
protected:
|
||||
|
||||
Form *form;
|
||||
|
||||
RenderTarget *render_target;
|
||||
RenderCommand *cmd_buf;
|
||||
|
||||
public:
|
||||
|
||||
ThemeForm(Form *,RenderTarget *);
|
||||
ThemeForm(Form *,RenderTarget *,RenderCommand *);
|
||||
virtual ~ThemeForm();
|
||||
|
||||
RenderTarget * GetRenderTarget(){return render_target;}
|
||||
@ -27,7 +29,8 @@ namespace hgl
|
||||
|
||||
void Resize(uint w,uint h);
|
||||
|
||||
|
||||
bool BeginRender();
|
||||
bool EndRender();
|
||||
};//class ThemeForm
|
||||
}//namespace gui
|
||||
}//namespace hgl
|
||||
|
@ -20,23 +20,9 @@ namespace hgl
|
||||
{
|
||||
}
|
||||
|
||||
bool DefaultThemeEngine::Registry(Form *f)
|
||||
{
|
||||
if(!f)return(false);
|
||||
if(form_list.KeyExist(f))return(false);
|
||||
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
void DefaultThemeEngine::Unregistry(Form *f)
|
||||
{
|
||||
if(!f)return;
|
||||
if(!form_list.KeyExist(f))return;
|
||||
}
|
||||
|
||||
void DefaultThemeEngine::Render(Form *f)
|
||||
ThemeForm *DefaultThemeEngine::CreateForm(Form *f,RenderTarget *rt,RenderCommand *rc)
|
||||
{
|
||||
return(new DTForm(f,rt,rc));
|
||||
}
|
||||
}//namespace default_theme
|
||||
}//namespace gui
|
||||
|
@ -20,22 +20,15 @@ namespace hgl
|
||||
*/
|
||||
class DefaultThemeEngine:public ThemeEngine
|
||||
{
|
||||
|
||||
//struct
|
||||
//{
|
||||
// Material * m;
|
||||
// MaterialInstance * mi;
|
||||
//}panel;
|
||||
|
||||
public:
|
||||
|
||||
DefaultThemeEngine(GPUDevice *dev):ThemeEngine(dev){}
|
||||
using ThemeEngine::ThemeEngine;
|
||||
virtual ~DefaultThemeEngine() override;
|
||||
|
||||
bool Init() override;
|
||||
void Clear() override;
|
||||
|
||||
bool ThemeRender(Form *) override;
|
||||
ThemeForm *CreateForm(Form *,RenderTarget *,RenderCommand *) override;
|
||||
};//class DefaultThemeEngine:public ThemeEngine
|
||||
}//namespace default_theme
|
||||
}//namespace gui
|
||||
|
@ -32,7 +32,9 @@ namespace hgl
|
||||
const uint width=power_to_2(w);
|
||||
const uint height=power_to_2(h);
|
||||
|
||||
return device->CreateColorRenderTarget(width,height,format);
|
||||
FramebufferInfo fbi(format,w,h);
|
||||
|
||||
return device->CreateRenderTarget(&fbi);
|
||||
}
|
||||
|
||||
bool ThemeEngine::Registry(Form *f,const VkFormat format)
|
||||
@ -47,8 +49,8 @@ namespace hgl
|
||||
RenderTarget *rt=CreateRenderTarget(size.x,size.y,format);
|
||||
|
||||
if(!rt)return(false);
|
||||
|
||||
ThemeForm *tf=new ThemeForm(f,rt);
|
||||
|
||||
ThemeForm *tf=CreateForm(f,rt);
|
||||
|
||||
form_list.Add(f,tf);
|
||||
|
||||
@ -103,12 +105,24 @@ namespace hgl
|
||||
tf->Resize(w,h);
|
||||
return(true);
|
||||
}
|
||||
|
||||
void ThemeEngine::Render(Form *f)
|
||||
|
||||
bool ThemeEngine::Render(Form *f)
|
||||
{
|
||||
if(!f)return;
|
||||
if(!f)return(false);
|
||||
|
||||
const Vector2f &size=f->GetSize();
|
||||
|
||||
if(size.x==0&&size.y==0)return(false);
|
||||
|
||||
ThemeForm *tf;
|
||||
|
||||
if(!form_list.Get(f,tf))
|
||||
return(false);
|
||||
|
||||
tf->BeginRender();
|
||||
|
||||
|
||||
tf->EndRender();
|
||||
}
|
||||
}//namespace gui
|
||||
}//namespace hgl
|
@ -1,17 +1,21 @@
|
||||
#include<hgl/gui/ThemeForm.h>
|
||||
#include<hgl/graph/VKCommandBuffer.h>
|
||||
|
||||
namespace hgl
|
||||
{
|
||||
namespace gui
|
||||
{
|
||||
ThemeForm::ThemeForm(Form *f,RenderTarget *rt)
|
||||
ThemeForm::ThemeForm(Form *f,RenderTarget *rt,RenderCommand *rc)
|
||||
{
|
||||
form=f;
|
||||
render_target=rt;
|
||||
render_target=rt;
|
||||
cmd_buf=rc;
|
||||
}
|
||||
|
||||
ThemeForm::~ThemeForm()
|
||||
{
|
||||
delete cmd_buf;
|
||||
delete render_target;
|
||||
}
|
||||
|
||||
bool ThemeForm::SetRenderTarget(RenderTarget *rt)
|
||||
@ -29,5 +33,25 @@ namespace hgl
|
||||
{
|
||||
form->OnResize(w,h);
|
||||
}
|
||||
|
||||
bool ThemeForm::BeginRender()
|
||||
{
|
||||
if(!cmd_buf->Begin())return(false);
|
||||
if(!cmd_buf->BindFramebuffer(render_target->GetRenderPass(),render_target->GetFramebuffer()))return(false);
|
||||
|
||||
cmd_buf->SetClearColor(0,0,0,0,1.0f);
|
||||
|
||||
return(true);
|
||||
}
|
||||
|
||||
bool ThemeForm::EndRender()
|
||||
{
|
||||
if(!cmd_buf->End())return(false);
|
||||
|
||||
if(!render_target->Submit(cmd_buf))return(false);
|
||||
if(!render_target->WaitQueue())return(false);
|
||||
|
||||
return(true);
|
||||
}
|
||||
}//namespace gui
|
||||
}//namespace hgl
|
||||
|
Loading…
x
Reference in New Issue
Block a user