Single text positioning property

https://github.com/mapbox/mapbox-gl-style-spec/issues/197
This commit is contained in:
John Firebaugh
2014-11-03 15:07:33 -08:00
parent 9a3b740fcc
commit 0790b574b4
5 changed files with 29 additions and 33 deletions

View File

@@ -64,8 +64,7 @@ public:
float line_height = 1.2f * 24 /* em */;
float letter_spacing = 0.0f * 24 /* em */;
TextJustifyType justify = TextJustifyType::Center;
TextHorizontalAlignType horizontal_align = TextHorizontalAlignType::Center;
TextVerticalAlignType vertical_align = TextVerticalAlignType::Center;
TextAnchorType anchor = TextAnchorType::Center;
float max_angle = 45.0f /* degrees */;
float rotate = 0.0f;
float slant = 0.0f;

View File

@@ -152,30 +152,20 @@ MBGL_DEFINE_ENUM_CLASS(TextJustifyTypeClass, TextJustifyType, {
// -------------------------------------------------------------------------------------------------
enum class TextHorizontalAlignType : uint8_t {
enum class TextAnchorType : uint8_t {
Center,
Left,
Center,
Right,
};
MBGL_DEFINE_ENUM_CLASS(TextHorizontalAlignTypeClass, TextHorizontalAlignType, {
{ TextHorizontalAlignType::Left, "left" },
{ TextHorizontalAlignType::Center, "center" },
{ TextHorizontalAlignType::Right, "right" },
});
// -------------------------------------------------------------------------------------------------
enum class TextVerticalAlignType : uint8_t {
Top,
Center,
Bottom,
Bottom
};
MBGL_DEFINE_ENUM_CLASS(TextVerticalAlignTypeClass, TextVerticalAlignType, {
{ TextVerticalAlignType::Top, "top" },
{ TextVerticalAlignType::Center, "center" },
{ TextVerticalAlignType::Bottom, "bottom" },
MBGL_DEFINE_ENUM_CLASS(TextAnchorTypeClass, TextAnchorType, {
{ TextAnchorType::Center, "center" },
{ TextAnchorType::Left, "left" },
{ TextAnchorType::Right, "right" },
{ TextAnchorType::Top, "top" },
{ TextAnchorType::Bottom, "bottom" },
});
// -------------------------------------------------------------------------------------------------

View File

@@ -103,16 +103,24 @@ void SymbolBucket::addFeatures(const VectorTileLayer &layer, const FilterExpress
const std::vector<SymbolFeature> features = processFeatures(layer, filter, glyphStore, sprite);
float horizontalAlign = 0.5;
if (properties.text.horizontal_align == TextHorizontalAlignType::Right)
horizontalAlign = 1;
else if (properties.text.horizontal_align == TextHorizontalAlignType::Left)
horizontalAlign = 0;
float verticalAlign = 0.5;
if (properties.text.vertical_align == TextVerticalAlignType::Bottom)
verticalAlign = 1;
else if (properties.text.vertical_align == TextVerticalAlignType::Top)
verticalAlign = 0;
switch (properties.text.anchor) {
case TextAnchorType::Center:
break;
case TextAnchorType::Right:
horizontalAlign = 1;
break;
case TextAnchorType::Left:
horizontalAlign = 0;
break;
case TextAnchorType::Bottom:
verticalAlign = 1;
break;
case TextAnchorType::Top:
verticalAlign = 0;
break;
}
float justify = 0.5;
if (properties.text.justify == TextJustifyType::Right) justify = 1;

View File

@@ -801,8 +801,7 @@ void StyleParser::parseLayout(JSVal value, util::ptr<StyleLayer> &layer) {
render.text.letter_spacing *= 24; // em
}
parseRenderProperty<TextJustifyTypeClass>(value, render.text.justify, "text-justify");
parseRenderProperty<TextHorizontalAlignTypeClass>(value, render.text.horizontal_align, "text-horizontal-align");
parseRenderProperty<TextVerticalAlignTypeClass>(value, render.text.vertical_align, "text-vertical-align");
parseRenderProperty<TextAnchorTypeClass>(value, render.text.anchor, "text-anchor");
parseRenderProperty(value, render.text.max_angle, "text-max-angle");
parseRenderProperty(value, render.text.rotate, "text-rotate");
parseRenderProperty(value, render.text.slant, "text-slant");

2
styles

Submodule styles updated: 65dc5c9b7e...225f78f428