diff options
author | John Firebaugh <john.firebaugh@gmail.com> | 2016-09-13 13:50:27 -0700 |
---|---|---|
committer | John Firebaugh <john.firebaugh@gmail.com> | 2016-09-16 09:00:54 -0700 |
commit | a8dd1bbbb8f9053923179fd45b2dfcbb86e3f474 (patch) | |
tree | fac3c39d91b7060ff1659e55df64cd7f8a8143df /src | |
parent | 1f375581c3a31adea9281a7494a73e5c8f1c9a17 (diff) | |
download | qtlocation-mapboxgl-a8dd1bbbb8f9053923179fd45b2dfcbb86e3f474.tar.gz |
[core] Move SymbolInstance and SymbolFeature into their own files
Diffstat (limited to 'src')
-rw-r--r-- | src/mbgl/layout/merge_lines.cpp | 1 | ||||
-rw-r--r-- | src/mbgl/layout/merge_lines.hpp | 6 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_feature.hpp | 17 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_instance.cpp | 34 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_instance.hpp | 34 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_layout.cpp | 27 | ||||
-rw-r--r-- | src/mbgl/layout/symbol_layout.hpp | 34 |
7 files changed, 94 insertions, 59 deletions
diff --git a/src/mbgl/layout/merge_lines.cpp b/src/mbgl/layout/merge_lines.cpp index 1e33a655e7..ddae9c2c8d 100644 --- a/src/mbgl/layout/merge_lines.cpp +++ b/src/mbgl/layout/merge_lines.cpp @@ -1,4 +1,5 @@ #include <mbgl/layout/merge_lines.hpp> +#include <mbgl/layout/symbol_feature.hpp> #include <boost/functional/hash.hpp> diff --git a/src/mbgl/layout/merge_lines.hpp b/src/mbgl/layout/merge_lines.hpp index bb4c01f6a2..4cce39a652 100644 --- a/src/mbgl/layout/merge_lines.hpp +++ b/src/mbgl/layout/merge_lines.hpp @@ -1,11 +1,15 @@ #pragma once +#include <mbgl/tile/geometry_tile_data.hpp> + #include <unordered_map> #include <string> #include <vector> -#include <mbgl/layout/symbol_layout.hpp> namespace mbgl { + +class SymbolFeature; + namespace util { unsigned int mergeFromRight(std::vector<SymbolFeature> &features, diff --git a/src/mbgl/layout/symbol_feature.hpp b/src/mbgl/layout/symbol_feature.hpp new file mode 100644 index 0000000000..3b4eb78d86 --- /dev/null +++ b/src/mbgl/layout/symbol_feature.hpp @@ -0,0 +1,17 @@ +#pragma once + +#include <mbgl/tile/geometry_tile_data.hpp> + +#include <string> + +namespace mbgl { + +class SymbolFeature { +public: + GeometryCollection geometry; + std::u32string label; + std::string sprite; + std::size_t index; +}; + +} // namespace mbgl diff --git a/src/mbgl/layout/symbol_instance.cpp b/src/mbgl/layout/symbol_instance.cpp new file mode 100644 index 0000000000..64b913200e --- /dev/null +++ b/src/mbgl/layout/symbol_instance.cpp @@ -0,0 +1,34 @@ +#include <mbgl/layout/symbol_instance.hpp> +#include <mbgl/style/layers/symbol_layer_properties.hpp> + +namespace mbgl { + +using namespace style; + +SymbolInstance::SymbolInstance(Anchor& anchor, const GeometryCoordinates& line, + const Shaping& shapedText, const PositionedIcon& shapedIcon, + const SymbolLayoutProperties& layout, const bool addToBuffers, const uint32_t index_, + const float textBoxScale, const float textPadding, const SymbolPlacementType textPlacement, + const float iconBoxScale, const float iconPadding, const SymbolPlacementType iconPlacement, + const GlyphPositions& face, const IndexedSubfeature& indexedFeature) : + point(anchor.point), + index(index_), + hasText(shapedText), + hasIcon(shapedIcon), + + // Create the quads used for rendering the glyphs. + glyphQuads(addToBuffers && shapedText ? + getGlyphQuads(anchor, shapedText, textBoxScale, line, layout, textPlacement, face) : + SymbolQuads()), + + // Create the quad used for rendering the icon. + iconQuads(addToBuffers && shapedIcon ? + getIconQuads(anchor, shapedIcon, line, layout, iconPlacement, shapedText) : + SymbolQuads()), + + // Create the collision features that will be used to check whether this symbol instance can be placed + textCollisionFeature(line, anchor, shapedText, textBoxScale, textPadding, textPlacement, indexedFeature), + iconCollisionFeature(line, anchor, shapedIcon, iconBoxScale, iconPadding, iconPlacement, indexedFeature) + {} + +} // namespace mbgl diff --git a/src/mbgl/layout/symbol_instance.hpp b/src/mbgl/layout/symbol_instance.hpp new file mode 100644 index 0000000000..3087bf09f9 --- /dev/null +++ b/src/mbgl/layout/symbol_instance.hpp @@ -0,0 +1,34 @@ +#pragma once + +#include <mbgl/text/quads.hpp> +#include <mbgl/text/collision_feature.hpp> + +namespace mbgl { + +struct Anchor; +class IndexedSubfeature; + +namespace style { +class SymbolLayoutProperties; +} // namespace style + +class SymbolInstance { +public: + explicit SymbolInstance(Anchor& anchor, const GeometryCoordinates& line, + const Shaping& shapedText, const PositionedIcon& shapedIcon, + const style::SymbolLayoutProperties&, const bool inside, const uint32_t index, + const float textBoxScale, const float textPadding, style::SymbolPlacementType textPlacement, + const float iconBoxScale, const float iconPadding, style::SymbolPlacementType iconPlacement, + const GlyphPositions& face, const IndexedSubfeature& indexedfeature); + + Point<float> point; + uint32_t index; + bool hasText; + bool hasIcon; + SymbolQuads glyphQuads; + SymbolQuads iconQuads; + CollisionFeature textCollisionFeature; + CollisionFeature iconCollisionFeature; +}; + +} // namespace mbgl diff --git a/src/mbgl/layout/symbol_layout.cpp b/src/mbgl/layout/symbol_layout.cpp index 2a85ead32b..5161d3c34b 100644 --- a/src/mbgl/layout/symbol_layout.cpp +++ b/src/mbgl/layout/symbol_layout.cpp @@ -23,33 +23,6 @@ namespace mbgl { using namespace style; -SymbolInstance::SymbolInstance(Anchor& anchor, const GeometryCoordinates& line, - const Shaping& shapedText, const PositionedIcon& shapedIcon, - const SymbolLayoutProperties& layout, const bool addToBuffers, const uint32_t index_, - const float textBoxScale, const float textPadding, const SymbolPlacementType textPlacement, - const float iconBoxScale, const float iconPadding, const SymbolPlacementType iconPlacement, - const GlyphPositions& face, const IndexedSubfeature& indexedFeature) : - point(anchor.point), - index(index_), - hasText(shapedText), - hasIcon(shapedIcon), - - // Create the quads used for rendering the glyphs. - glyphQuads(addToBuffers && shapedText ? - getGlyphQuads(anchor, shapedText, textBoxScale, line, layout, textPlacement, face) : - SymbolQuads()), - - // Create the quad used for rendering the icon. - iconQuads(addToBuffers && shapedIcon ? - getIconQuads(anchor, shapedIcon, line, layout, iconPlacement, shapedText) : - SymbolQuads()), - - // Create the collision features that will be used to check whether this symbol instance can be placed - textCollisionFeature(line, anchor, shapedText, textBoxScale, textPadding, textPlacement, indexedFeature), - iconCollisionFeature(line, anchor, shapedIcon, iconBoxScale, iconPadding, iconPlacement, indexedFeature) - {} - - SymbolLayout::SymbolLayout(std::string bucketName_, std::string sourceLayerName_, uint32_t overscaling_, diff --git a/src/mbgl/layout/symbol_layout.hpp b/src/mbgl/layout/symbol_layout.hpp index 83a3735061..e365e7b443 100644 --- a/src/mbgl/layout/symbol_layout.hpp +++ b/src/mbgl/layout/symbol_layout.hpp @@ -1,10 +1,9 @@ #pragma once -#include <mbgl/tile/geometry_tile_data.hpp> #include <mbgl/map/mode.hpp> -#include <mbgl/text/collision_feature.hpp> -#include <mbgl/text/quads.hpp> #include <mbgl/style/layers/symbol_layer_properties.hpp> +#include <mbgl/layout/symbol_feature.hpp> +#include <mbgl/layout/symbol_instance.hpp> #include <memory> #include <map> @@ -13,47 +12,20 @@ namespace mbgl { +class GeometryTileLayer; class CollisionTile; class SpriteAtlas; class SpriteStore; class GlyphAtlas; class GlyphStore; -class IndexedSubfeature; class SymbolBucket; namespace style { class Filter; } // namespace style -class SymbolFeature { -public: - GeometryCollection geometry; - std::u32string label; - std::string sprite; - std::size_t index; -}; - struct Anchor; -class SymbolInstance { -public: - explicit SymbolInstance(Anchor& anchor, const GeometryCoordinates& line, - const Shaping& shapedText, const PositionedIcon& shapedIcon, - const style::SymbolLayoutProperties&, const bool inside, const uint32_t index, - const float textBoxScale, const float textPadding, style::SymbolPlacementType textPlacement, - const float iconBoxScale, const float iconPadding, style::SymbolPlacementType iconPlacement, - const GlyphPositions& face, const IndexedSubfeature& indexedfeature); - - Point<float> point; - uint32_t index; - bool hasText; - bool hasIcon; - SymbolQuads glyphQuads; - SymbolQuads iconQuads; - CollisionFeature textCollisionFeature; - CollisionFeature iconCollisionFeature; -}; - class SymbolLayout { public: SymbolLayout(std::string bucketName_, |