mirror of https://github.com/AxioDL/metaforce.git
Rendering tweaks/bug-fixes
This commit is contained in:
parent
cb205304b6
commit
e8449f3fdb
|
@ -34,6 +34,12 @@ struct IIntBinding : IControlBinding
|
||||||
virtual void changed(int val)=0;
|
virtual void changed(int val)=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
struct IStringBinding : IControlBinding
|
||||||
|
{
|
||||||
|
virtual std::string getDefault() const {return "";}
|
||||||
|
virtual void changed(const std::string& val)=0;
|
||||||
|
};
|
||||||
|
|
||||||
struct CVarControlBinding : IControlBinding
|
struct CVarControlBinding : IControlBinding
|
||||||
{
|
{
|
||||||
HECL::CVar* m_cvar;
|
HECL::CVar* m_cvar;
|
||||||
|
|
|
@ -35,6 +35,16 @@ class FileBrowser : public ModalWindow
|
||||||
std::vector<PathButton> m_pathButtons;
|
std::vector<PathButton> m_pathButtons;
|
||||||
|
|
||||||
Specter::ViewChild<Specter::TextField> m_fileField;
|
Specter::ViewChild<Specter::TextField> m_fileField;
|
||||||
|
struct FileFieldBind : Specter::IStringBinding
|
||||||
|
{
|
||||||
|
FileBrowser& m_browser;
|
||||||
|
FileFieldBind(FileBrowser& browser) : m_browser(browser) {}
|
||||||
|
const char* name() const {return "File Name";}
|
||||||
|
void changed(const std::string& val)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
} m_fileFieldBind;
|
||||||
|
|
||||||
Specter::ViewChild<Specter::ScrollView> m_fileScroll;
|
Specter::ViewChild<Specter::ScrollView> m_fileScroll;
|
||||||
Specter::ViewChild<Specter::Table> m_fileListing;
|
Specter::ViewChild<Specter::Table> m_fileListing;
|
||||||
|
|
||||||
|
|
|
@ -59,7 +59,7 @@ class FontAtlas
|
||||||
friend class FontCache;
|
friend class FontCache;
|
||||||
FT_Face m_face;
|
FT_Face m_face;
|
||||||
boo::ITextureSA* m_tex = nullptr;
|
boo::ITextureSA* m_tex = nullptr;
|
||||||
boo::IGraphicsDataToken m_token;
|
boo::GraphicsDataToken m_token;
|
||||||
uint32_t m_dpi;
|
uint32_t m_dpi;
|
||||||
FT_Fixed m_ftXscale;
|
FT_Fixed m_ftXscale;
|
||||||
FT_UShort m_ftXPpem;
|
FT_UShort m_ftXPpem;
|
||||||
|
|
|
@ -48,7 +48,7 @@ class ModalWindow : public View
|
||||||
boo::IVertexFormat* m_vertsVtxFmt; /* OpenGL only */
|
boo::IVertexFormat* m_vertsVtxFmt; /* OpenGL only */
|
||||||
boo::IShaderDataBinding* m_vertsShaderBinding;
|
boo::IShaderDataBinding* m_vertsShaderBinding;
|
||||||
|
|
||||||
boo::IGraphicsDataToken m_windowGfxData;
|
boo::GraphicsDataToken m_windowGfxData;
|
||||||
|
|
||||||
std::unique_ptr<TextView> m_cornersOutline[4];
|
std::unique_ptr<TextView> m_cornersOutline[4];
|
||||||
std::unique_ptr<TextView> m_cornersFilled[4];
|
std::unique_ptr<TextView> m_cornersFilled[4];
|
||||||
|
|
|
@ -1,13 +1,13 @@
|
||||||
#ifndef SPECTER_TEXTFIELD_HPP
|
#ifndef SPECTER_TEXTFIELD_HPP
|
||||||
#define SPECTER_TEXTFIELD_HPP
|
#define SPECTER_TEXTFIELD_HPP
|
||||||
|
|
||||||
#include "View.hpp"
|
#include "Control.hpp"
|
||||||
#include "TextView.hpp"
|
#include "TextView.hpp"
|
||||||
|
|
||||||
namespace Specter
|
namespace Specter
|
||||||
{
|
{
|
||||||
|
|
||||||
class TextField : public View
|
class TextField : public Control
|
||||||
{
|
{
|
||||||
std::string m_textStr;
|
std::string m_textStr;
|
||||||
std::unique_ptr<TextView> m_text;
|
std::unique_ptr<TextView> m_text;
|
||||||
|
@ -25,7 +25,7 @@ class TextField : public View
|
||||||
void setDisabled();
|
void setDisabled();
|
||||||
|
|
||||||
public:
|
public:
|
||||||
TextField(ViewResources& res, View& parentView);
|
TextField(ViewResources& res, View& parentView, IStringBinding* strBind);
|
||||||
|
|
||||||
void setText(const std::string& str);
|
void setText(const std::string& str);
|
||||||
|
|
||||||
|
|
|
@ -39,7 +39,7 @@ private:
|
||||||
boo::IVertexFormat* m_bgVtxFmt = nullptr; /* OpenGL only */
|
boo::IVertexFormat* m_bgVtxFmt = nullptr; /* OpenGL only */
|
||||||
boo::IShaderDataBinding* m_bgShaderBinding;
|
boo::IShaderDataBinding* m_bgShaderBinding;
|
||||||
SolidShaderVert m_bgRect[4];
|
SolidShaderVert m_bgRect[4];
|
||||||
boo::IGraphicsDataToken m_gfxData;
|
boo::GraphicsDataToken m_gfxData;
|
||||||
|
|
||||||
friend class RootView;
|
friend class RootView;
|
||||||
void buildResources(ViewResources& res);
|
void buildResources(ViewResources& res);
|
||||||
|
|
|
@ -15,8 +15,8 @@ class ThemeData
|
||||||
Zeus::CColor m_uiText = Zeus::CColor::skWhite;
|
Zeus::CColor m_uiText = Zeus::CColor::skWhite;
|
||||||
Zeus::CColor m_fieldText = Zeus::CColor::skBlack;
|
Zeus::CColor m_fieldText = Zeus::CColor::skBlack;
|
||||||
|
|
||||||
Zeus::CColor m_vpBg = {0.2,0.2,0.2,1.0};
|
Zeus::CColor m_vpBg = {0.2, 0.2, 0.2, 1.0};
|
||||||
Zeus::CColor m_tbBg = {0.4,0.4,0.4,1.0};
|
Zeus::CColor m_tbBg = {0.4, 0.4, 0.4, 1.0};
|
||||||
Zeus::CColor m_tooltipBg = {0.0, 0.0, 0.0, 0.65};
|
Zeus::CColor m_tooltipBg = {0.0, 0.0, 0.0, 0.65};
|
||||||
Zeus::CColor m_splashBg = {0.1, 0.1, 0.1, 0.65};
|
Zeus::CColor m_splashBg = {0.1, 0.1, 0.1, 0.65};
|
||||||
|
|
||||||
|
@ -33,11 +33,11 @@ class ThemeData
|
||||||
Zeus::CColor m_button2Disabled = {0.1725, 0.1725, 0.1725, 0.5};
|
Zeus::CColor m_button2Disabled = {0.1725, 0.1725, 0.1725, 0.5};
|
||||||
|
|
||||||
Zeus::CColor m_textfield2Inactive = {0.7823, 0.7823, 0.7823, 1.0};
|
Zeus::CColor m_textfield2Inactive = {0.7823, 0.7823, 0.7823, 1.0};
|
||||||
Zeus::CColor m_textfield1Inactive = {0.4725, 0.4725, 0.4725, 1.0};
|
Zeus::CColor m_textfield1Inactive = {0.5725, 0.5725, 0.5725, 1.0};
|
||||||
Zeus::CColor m_textfield2Hover = {0.8523, 0.8523, 0.8523, 1.0};
|
Zeus::CColor m_textfield2Hover = {0.8523, 0.8523, 0.8523, 1.0};
|
||||||
Zeus::CColor m_textfield1Hover = {0.5425, 0.5425, 0.5425, 1.0};
|
Zeus::CColor m_textfield1Hover = {0.6425, 0.6425, 0.6425, 1.0};
|
||||||
Zeus::CColor m_textfield2Disabled = {0.7823, 0.7823, 0.7823, 0.5};
|
Zeus::CColor m_textfield2Disabled = {0.7823, 0.7823, 0.7823, 0.5};
|
||||||
Zeus::CColor m_textfield1Disabled = {0.4725, 0.4725, 0.4725, 0.5};
|
Zeus::CColor m_textfield1Disabled = {0.5725, 0.5725, 0.5725, 0.5};
|
||||||
|
|
||||||
public:
|
public:
|
||||||
virtual const Zeus::CColor& uiText() const {return m_uiText;}
|
virtual const Zeus::CColor& uiText() const {return m_uiText;}
|
||||||
|
@ -88,7 +88,7 @@ public:
|
||||||
SplitView::Resources m_splitRes;
|
SplitView::Resources m_splitRes;
|
||||||
Toolbar::Resources m_toolbarRes;
|
Toolbar::Resources m_toolbarRes;
|
||||||
Button::Resources m_buttonRes;
|
Button::Resources m_buttonRes;
|
||||||
boo::IGraphicsDataToken m_resData;
|
boo::GraphicsDataToken m_resData;
|
||||||
|
|
||||||
Specter::FontTag m_mainFont;
|
Specter::FontTag m_mainFont;
|
||||||
Specter::FontTag m_monoFont;
|
Specter::FontTag m_monoFont;
|
||||||
|
|
|
@ -273,7 +273,7 @@ void Button::resized(const boo::SWindowRect& root, const boo::SWindowRect& sub)
|
||||||
if (m_style == Style::Block)
|
if (m_style == Style::Block)
|
||||||
{
|
{
|
||||||
textRect.location[0] += 5 * pf;
|
textRect.location[0] += 5 * pf;
|
||||||
textRect.location[1] += 8 * pf;
|
textRect.location[1] += 7 * pf;
|
||||||
}
|
}
|
||||||
m_text->resized(root, textRect);
|
m_text->resized(root, textRect);
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,7 +40,9 @@ static std::vector<HECL::SystemString> PathComponents(const HECL::SystemString&
|
||||||
}
|
}
|
||||||
|
|
||||||
FileBrowser::FileBrowser(ViewResources& res, View& parentView, const HECL::SystemString& initialPath)
|
FileBrowser::FileBrowser(ViewResources& res, View& parentView, const HECL::SystemString& initialPath)
|
||||||
: ModalWindow(res, parentView), m_comps(PathComponents(initialPath))
|
: ModalWindow(res, parentView),
|
||||||
|
m_comps(PathComponents(initialPath)),
|
||||||
|
m_fileFieldBind(*this)
|
||||||
{
|
{
|
||||||
commitResources(res);
|
commitResources(res);
|
||||||
setBackground({0,0,0,0.5});
|
setBackground({0,0,0,0.5});
|
||||||
|
@ -50,7 +52,7 @@ FileBrowser::FileBrowser(ViewResources& res, View& parentView, const HECL::Syste
|
||||||
for (const HECL::SystemString& c : m_comps)
|
for (const HECL::SystemString& c : m_comps)
|
||||||
m_pathButtons.emplace_back(*this, res, idx++, c);
|
m_pathButtons.emplace_back(*this, res, idx++, c);
|
||||||
|
|
||||||
m_fileField.m_view.reset(new TextField(res, *this));
|
m_fileField.m_view.reset(new TextField(res, *this, &m_fileFieldBind));
|
||||||
updateContentOpacity(0.0);
|
updateContentOpacity(0.0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -91,9 +93,6 @@ void FileBrowser::mouseMove(const boo::SWindowCoord& coord)
|
||||||
|
|
||||||
void FileBrowser::mouseEnter(const boo::SWindowCoord& coord)
|
void FileBrowser::mouseEnter(const boo::SWindowCoord& coord)
|
||||||
{
|
{
|
||||||
for (PathButton& b : m_pathButtons)
|
|
||||||
b.m_button.mouseEnter(coord);
|
|
||||||
m_fileField.mouseEnter(coord);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FileBrowser::mouseLeave(const boo::SWindowCoord& coord)
|
void FileBrowser::mouseLeave(const boo::SWindowCoord& coord)
|
||||||
|
@ -122,7 +121,7 @@ void FileBrowser::resized(const boo::SWindowRect& root, const boo::SWindowRect&
|
||||||
pathRect.size[0] = b.m_button.m_view->nominalWidth();
|
pathRect.size[0] = b.m_button.m_view->nominalWidth();
|
||||||
pathRect.size[1] = b.m_button.m_view->nominalHeight();
|
pathRect.size[1] = b.m_button.m_view->nominalHeight();
|
||||||
b.m_button.m_view->resized(root, pathRect);
|
b.m_button.m_view->resized(root, pathRect);
|
||||||
pathRect.location[0] += pathRect.size[0];
|
pathRect.location[0] += pathRect.size[0] + 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
pathRect.location[0] = centerRect.location[0] + 10 * pf;
|
pathRect.location[0] = centerRect.location[0] + 10 * pf;
|
||||||
|
|
|
@ -338,9 +338,7 @@ void ModalWindow::draw(boo::IGraphicsCommandQueue* gfxQ)
|
||||||
{
|
{
|
||||||
gfxQ->setShaderDataBinding(m_vertsShaderBinding);
|
gfxQ->setShaderDataBinding(m_vertsShaderBinding);
|
||||||
gfxQ->setDrawPrimitive(boo::Primitive::TriStrips);
|
gfxQ->setDrawPrimitive(boo::Primitive::TriStrips);
|
||||||
if (m_frame > WIRE_START)
|
|
||||||
gfxQ->draw(0, 22);
|
gfxQ->draw(0, 22);
|
||||||
if (m_frame > SOLID_START)
|
|
||||||
gfxQ->draw(22, 16);
|
gfxQ->draw(22, 16);
|
||||||
|
|
||||||
m_cornersFilled[0]->draw(gfxQ);
|
m_cornersFilled[0]->draw(gfxQ);
|
||||||
|
|
|
@ -5,8 +5,8 @@
|
||||||
namespace Specter
|
namespace Specter
|
||||||
{
|
{
|
||||||
|
|
||||||
TextField::TextField(ViewResources& res, View& parentView)
|
TextField::TextField(ViewResources& res, View& parentView, IStringBinding* strBind)
|
||||||
: View(res, parentView)
|
: Control(res, parentView, strBind)
|
||||||
{
|
{
|
||||||
m_bVertsBuf = res.m_factory->newDynamicBuffer(boo::BufferUse::Vertex, sizeof(SolidShaderVert), 28);
|
m_bVertsBuf = res.m_factory->newDynamicBuffer(boo::BufferUse::Vertex, sizeof(SolidShaderVert), 28);
|
||||||
|
|
||||||
|
@ -96,19 +96,22 @@ void TextField::mouseMove(const boo::SWindowCoord& coord)
|
||||||
|
|
||||||
void TextField::mouseEnter(const boo::SWindowCoord& coord)
|
void TextField::mouseEnter(const boo::SWindowCoord& coord)
|
||||||
{
|
{
|
||||||
|
setHover();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextField::mouseLeave(const boo::SWindowCoord& coord)
|
void TextField::mouseLeave(const boo::SWindowCoord& coord)
|
||||||
{
|
{
|
||||||
|
setInactive();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TextField::resized(const boo::SWindowRect& root, const boo::SWindowRect& sub)
|
void TextField::resized(const boo::SWindowRect& root, const boo::SWindowRect& sub)
|
||||||
{
|
{
|
||||||
View::resized(root, sub);
|
|
||||||
|
|
||||||
float pf = rootView().viewRes().pixelFactor();
|
float pf = rootView().viewRes().pixelFactor();
|
||||||
int width = sub.size[0];
|
int width = sub.size[0];
|
||||||
int height = 20 * pf;
|
int height = 20 * pf;
|
||||||
|
boo::SWindowRect newRect = sub;
|
||||||
|
newRect.size[1] = height;
|
||||||
|
View::resized(root, newRect);
|
||||||
|
|
||||||
m_verts[0].m_pos.assign(1, height+1, 0);
|
m_verts[0].m_pos.assign(1, height+1, 0);
|
||||||
m_verts[1].m_pos.assign(1, 1, 0);
|
m_verts[1].m_pos.assign(1, 1, 0);
|
||||||
|
@ -150,7 +153,7 @@ void TextField::resized(const boo::SWindowRect& root, const boo::SWindowRect& su
|
||||||
|
|
||||||
boo::SWindowRect textRect = sub;
|
boo::SWindowRect textRect = sub;
|
||||||
textRect.location[0] += 5 * pf;
|
textRect.location[0] += 5 * pf;
|
||||||
textRect.location[1] += 8 * pf;
|
textRect.location[1] += 7 * pf;
|
||||||
m_text->resized(root, textRect);
|
m_text->resized(root, textRect);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue