label: remove shadow, rename some properties

This commit is contained in:
2019-08-20 07:12:18 +07:00
parent 2eecc0ae6e
commit 72da71be37
4 changed files with 27 additions and 173 deletions

View File

@@ -14,7 +14,7 @@ namespace e2d
{
class font_asset final : public content_asset<font_asset, font> {
public:
static const char* type_name() noexcept { return "bmfont_asset"; }
static const char* type_name() noexcept { return "font_asset"; }
static load_async_result load_async(const library& library, str_view address);
};
}

View File

@@ -52,48 +52,24 @@ namespace e2d
label& valigh(valigns value) noexcept;
[[nodiscard]] valigns valign() const noexcept;
label& char_width(f32 value) noexcept;
f32 char_width() const noexcept;
label& char_edge(f32 value) noexcept;
f32 char_edge() const noexcept;
label& glyph_dilate(f32 value) noexcept;
[[nodiscard]] f32 glyph_dilate() const noexcept;
label& outline_width(f32 value) noexcept;
f32 outline_width() const noexcept;
label& outline_edge(f32 value) noexcept;
f32 outline_edge() const noexcept;
[[nodiscard]] f32 outline_width() const noexcept;
label& outline_color(const color32& value) noexcept;
color32 outline_color() const noexcept;
label& shadow_width(f32 value) noexcept;
f32 shadow_width() const noexcept;
label& shadow_edge(f32 value) noexcept;
f32 shadow_edge() const noexcept;
label& shadow_offset(const v2f& value) noexcept;
v2f shadow_offset() const noexcept;
label& shadow_color(const color32& value) noexcept;
color32 shadow_color() const noexcept;
[[nodiscard]] const color32& outline_color() const noexcept;
private:
str32 text_;
font_asset::ptr font_;
color32 tint_ = color32::white();
f32 width_ = 0.f;
haligns halign_ = haligns::left;
haligns halign_ = haligns::center;
valigns valign_ = valigns::baseline;
f32 char_width_ = 0.f;
f32 char_edge_ = 0.f;
f32 outline_width_ = 0.5f;
f32 outline_edge_ = 0.1f;
f32 glyph_dilate_ = 0.f;
f32 outline_width_ = 0.f;
color32 outline_color_ = color32::white();
f32 shadow_width_ = 0.f;
f32 shadow_edge_ = 0.f;
v2f shadow_offset_ = v2f::zero();
color32 shadow_color_ = color32::white();
};
template <>
@@ -184,22 +160,13 @@ namespace e2d
return valign_;
}
inline label& label::char_width(f32 value) noexcept {
char_width_ = value;
inline label& label::glyph_dilate(f32 value) noexcept {
glyph_dilate_ = value;
return *this;
}
inline f32 label::char_width() const noexcept {
return char_width_;
}
inline label& label::char_edge(f32 value) noexcept {
char_edge_ = value;
return *this;
}
inline f32 label::char_edge() const noexcept {
return char_edge_;
inline f32 label::glyph_dilate() const noexcept {
return glyph_dilate_;
}
inline label& label::outline_width(f32 value) noexcept {
@@ -211,57 +178,12 @@ namespace e2d
return outline_width_;
}
inline label& label::outline_edge(f32 value) noexcept {
outline_edge_ = value;
return *this;
}
inline f32 label::outline_edge() const noexcept {
return outline_edge_;
}
inline label& label::outline_color(const color32& value) noexcept {
outline_color_ = value;
return *this;
}
inline color32 label::outline_color() const noexcept {
inline const color32& label::outline_color() const noexcept {
return outline_color_;
}
inline label& label::shadow_width(f32 value) noexcept {
shadow_width_ = value;
return *this;
}
inline f32 label::shadow_width() const noexcept {
return shadow_width_;
}
inline label& label::shadow_edge(f32 value) noexcept {
shadow_edge_ = value;
return *this;
}
inline f32 label::shadow_edge() const noexcept {
return shadow_edge_;
}
inline label& label::shadow_offset(const v2f& value) noexcept {
shadow_offset_ = value;
return *this;
}
inline v2f label::shadow_offset() const noexcept {
return shadow_offset_;
}
inline label& label::shadow_color(const color32& value) noexcept {
shadow_color_ = value;
return *this;
}
inline color32 label::shadow_color() const noexcept {
return shadow_color_;
}
}

View File

@@ -43,15 +43,9 @@ namespace e2d
"width" : { "type" : "number" },
"halign" : { "$ref": "#/definitions/haligns" },
"valign" : { "$ref": "#/definitions/valigns" },
"char_width" : { "type" : "number" },
"char_edge" : { "type" : "number" },
"glyph_dilate" : { "type" : "number" },
"outline_width" : { "type" : "number" },
"outline_edge" : { "type" : "number" },
"outline_color" : { "$ref": "#/common_definitions/color" },
"shadow_width" : { "type" : "number" },
"shadow_edge" : { "type" : "number" },
"shadow_offset" : { "$ref": "#/common_definitions/v2" },
"shadow_color" : { "$ref": "#/common_definitions/color" }
"outline_color" : { "$ref": "#/common_definitions/color" }
},
"definitions" : {
"haligns" : {
@@ -137,22 +131,13 @@ namespace e2d
component.valigh(valign);
}
if ( ctx.root.HasMember("char_width") ) {
f32 char_width = component.char_width();
if ( !json_utils::try_parse_value(ctx.root["char_width"], char_width) ) {
the<debug>().error("LABEL: Incorrect formatting of 'char_width' property");
if ( ctx.root.HasMember("glyph_dilate") ) {
f32 glyph_dilate = component.glyph_dilate();
if ( !json_utils::try_parse_value(ctx.root["glyph_dilate"], glyph_dilate) ) {
the<debug>().error("LABEL: Incorrect formatting of 'glyph_dilate' property");
return false;
}
component.char_width(char_width);
}
if ( ctx.root.HasMember("char_edge") ) {
f32 char_edge = component.char_edge();
if ( !json_utils::try_parse_value(ctx.root["char_edge"], char_edge) ) {
the<debug>().error("LABEL: Incorrect formatting of 'char_edge' property");
return false;
}
component.char_edge(char_edge);
component.glyph_dilate(glyph_dilate);
}
if ( ctx.root.HasMember("outline_width") ) {
@@ -164,15 +149,6 @@ namespace e2d
component.outline_width(outline_width);
}
if ( ctx.root.HasMember("outline_edge") ) {
f32 outline_edge = component.outline_edge();
if ( !json_utils::try_parse_value(ctx.root["outline_edge"], outline_edge) ) {
the<debug>().error("LABEL: Incorrect formatting of 'outline_edge' property");
return false;
}
component.outline_edge(outline_edge);
}
if ( ctx.root.HasMember("outline_color") ) {
color32 outline_color = component.outline_color();
if ( !json_utils::try_parse_value(ctx.root["outline_color"], outline_color) ) {
@@ -182,42 +158,6 @@ namespace e2d
component.outline_color(outline_color);
}
if ( ctx.root.HasMember("shadow_width") ) {
f32 shadow_width = component.shadow_width();
if ( !json_utils::try_parse_value(ctx.root["shadow_width"], shadow_width) ) {
the<debug>().error("LABEL: Incorrect formatting of 'shadow_width' property");
return false;
}
component.shadow_width(shadow_width);
}
if ( ctx.root.HasMember("shadow_edge") ) {
f32 shadow_edge = component.shadow_edge();
if ( !json_utils::try_parse_value(ctx.root["shadow_edge"], shadow_edge) ) {
the<debug>().error("LABEL: Incorrect formatting of 'shadow_edge' property");
return false;
}
component.shadow_edge(shadow_edge);
}
if ( ctx.root.HasMember("shadow_offset") ) {
v2f shadow_offset = component.shadow_offset();
if ( !json_utils::try_parse_value(ctx.root["shadow_offset"], shadow_offset) ) {
the<debug>().error("LABEL: Incorrect formatting of 'shadow_offset' property");
return false;
}
component.shadow_offset(shadow_offset);
}
if ( ctx.root.HasMember("shadow_color") ) {
color32 shadow_color = component.shadow_color();
if ( !json_utils::try_parse_value(ctx.root["shadow_color"], shadow_color) ) {
the<debug>().error("LABEL: Incorrect formatting of 'shadow_color' property");
return false;
}
component.shadow_color(shadow_color);
}
return true;
}

View File

@@ -274,26 +274,18 @@ namespace e2d
return;
}
vec2 shadow_offset = l.shadow_offset();
shadow_offset.x /= texture_p->content()->size().x;
shadow_offset.y /= texture_p->content()->size().y;
shadow_offset.x = -shadow_offset.x;
color oc(l.outline_color());
color sc(l.shadow_color());
const f32 glyph_dilate = math::clamp(l.glyph_dilate(), -1.f, 1.0f);
const f32 outline_width = math::clamp(l.outline_width(), 0.f, 1.f - glyph_dilate);
const v4f outline_color = make_vec4(color(l.outline_color()));
r.properties(render::property_block()
.sampler("u_texture", render::sampler_state()
.texture(texture_p->content())
.min_filter(render::sampler_min_filter::linear)
.mag_filter(render::sampler_mag_filter::linear))
.property("u_char_width", l.char_width())
.property("u_char_edge", l.char_edge())
.property("u_outline_width", l.outline_width())
.property("u_outline_edge", l.outline_edge())
.property("u_outline_color", make_vec4(oc.r, oc.g, oc.b, oc.a))
.property("u_shadow_width", l.shadow_width())
.property("u_shadow_edge", l.shadow_edge())
.property("u_shadow_offset", shadow_offset)
.property("u_shadow_color", make_vec4(sc.r, sc.g, sc.b, sc.a)));
.property("u_glyph_dilate", glyph_dilate)
.property("u_outline_width", outline_width)
.property("u_outline_color", outline_color));
}
});