Skip to content
This repository was archived by the owner on Aug 8, 2023. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
29 changes: 25 additions & 4 deletions cmake/core-files.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -154,6 +154,8 @@ set(MBGL_CORE_FILES

# renderer
src/mbgl/renderer/bucket.hpp
src/mbgl/renderer/bucket_parameters.cpp
src/mbgl/renderer/bucket_parameters.hpp
src/mbgl/renderer/circle_bucket.cpp
src/mbgl/renderer/circle_bucket.hpp
src/mbgl/renderer/debug_bucket.cpp
Expand All @@ -162,6 +164,8 @@ set(MBGL_CORE_FILES
src/mbgl/renderer/fill_bucket.hpp
src/mbgl/renderer/frame_history.cpp
src/mbgl/renderer/frame_history.hpp
src/mbgl/renderer/group_by_layout.cpp
src/mbgl/renderer/group_by_layout.hpp
src/mbgl/renderer/line_bucket.cpp
src/mbgl/renderer/line_bucket.hpp
src/mbgl/renderer/paint_parameters.hpp
Expand All @@ -177,8 +181,26 @@ set(MBGL_CORE_FILES
src/mbgl/renderer/painter_symbol.cpp
src/mbgl/renderer/raster_bucket.cpp
src/mbgl/renderer/raster_bucket.hpp
src/mbgl/renderer/render_background_layer.cpp
src/mbgl/renderer/render_background_layer.hpp
src/mbgl/renderer/render_circle_layer.cpp
src/mbgl/renderer/render_circle_layer.hpp
src/mbgl/renderer/render_custom_layer.cpp
src/mbgl/renderer/render_custom_layer.hpp
src/mbgl/renderer/render_fill_extrusion_layer.cpp
src/mbgl/renderer/render_fill_extrusion_layer.hpp
src/mbgl/renderer/render_fill_layer.cpp
src/mbgl/renderer/render_fill_layer.hpp
src/mbgl/renderer/render_item.hpp
src/mbgl/renderer/render_layer.cpp
src/mbgl/renderer/render_layer.hpp
src/mbgl/renderer/render_line_layer.cpp
src/mbgl/renderer/render_line_layer.hpp
src/mbgl/renderer/render_pass.hpp
src/mbgl/renderer/render_raster_layer.cpp
src/mbgl/renderer/render_raster_layer.hpp
src/mbgl/renderer/render_symbol_layer.cpp
src/mbgl/renderer/render_symbol_layer.hpp
src/mbgl/renderer/render_tile.cpp
src/mbgl/renderer/render_tile.hpp
src/mbgl/renderer/symbol_bucket.cpp
Expand Down Expand Up @@ -247,22 +269,19 @@ set(MBGL_CORE_FILES
include/mbgl/style/filter_evaluator.hpp
include/mbgl/style/image.hpp
include/mbgl/style/layer.hpp
include/mbgl/style/layer_type.hpp
include/mbgl/style/property_value.hpp
include/mbgl/style/query.hpp
include/mbgl/style/source.hpp
include/mbgl/style/transition_options.hpp
include/mbgl/style/types.hpp
include/mbgl/style/undefined.hpp
src/mbgl/style/bucket_parameters.cpp
src/mbgl/style/bucket_parameters.hpp
src/mbgl/style/cascade_parameters.hpp
src/mbgl/style/class_dictionary.cpp
src/mbgl/style/class_dictionary.hpp
src/mbgl/style/cross_faded_property_evaluator.cpp
src/mbgl/style/cross_faded_property_evaluator.hpp
src/mbgl/style/data_driven_property_evaluator.hpp
src/mbgl/style/group_by_layout.cpp
src/mbgl/style/group_by_layout.hpp
src/mbgl/style/image.cpp
src/mbgl/style/layer.cpp
src/mbgl/style/layer_impl.cpp
Expand All @@ -285,6 +304,8 @@ set(MBGL_CORE_FILES
src/mbgl/style/source_observer.hpp
src/mbgl/style/style.cpp
src/mbgl/style/style.hpp
src/mbgl/style/style.hpp
src/mbgl/style/style.hpp
src/mbgl/style/tile_source_impl.cpp
src/mbgl/style/tile_source_impl.hpp
src/mbgl/style/types.cpp
Expand Down
4 changes: 3 additions & 1 deletion cmake/test-files.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,9 @@ set(MBGL_TEST_FILES
# programs
test/programs/binary_program.test.cpp

# renderer
test/renderer/group_by_layout.test.cpp

# sprite
test/sprite/sprite_atlas.test.cpp
test/sprite/sprite_parser.test.cpp
Expand Down Expand Up @@ -90,7 +93,6 @@ set(MBGL_TEST_FILES
test/style/function/source_function.test.cpp

# style
test/style/group_by_layout.test.cpp
test/style/paint_property.test.cpp
test/style/source.test.cpp
test/style/style.test.cpp
Expand Down
38 changes: 15 additions & 23 deletions include/mbgl/style/layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

#include <mbgl/util/noncopyable.hpp>
#include <mbgl/util/any.hpp>
#include <mbgl/style/layer_type.hpp>
#include <mbgl/style/types.hpp>

#include <memory>
Expand Down Expand Up @@ -36,23 +37,16 @@ class FillExtrusionLayer;
* auto circleLayer = std::make_unique<CircleLayer>("my-circle-layer");
*/
class Layer : public mbgl::util::noncopyable {
public:
class Impl;

protected:
enum class Type {
Fill,
Line,
Circle,
Symbol,
Raster,
Background,
Custom,
FillExtrusion,
};

class Impl;
const Type type;
Layer(Type, std::unique_ptr<Impl>);
const LayerType type;
Layer(LayerType, std::unique_ptr<Impl>);

public:

virtual ~Layer();

// Check whether this layer is of the given subtype.
Expand Down Expand Up @@ -85,21 +79,21 @@ class Layer : public mbgl::util::noncopyable {
template <class V>
auto accept(V&& visitor) {
switch (type) {
case Type::Fill:
case LayerType::Fill:
return visitor(*as<FillLayer>());
case Type::Line:
case LayerType::Line:
return visitor(*as<LineLayer>());
case Type::Circle:
case LayerType::Circle:
return visitor(*as<CircleLayer>());
case Type::Symbol:
case LayerType::Symbol:
return visitor(*as<SymbolLayer>());
case Type::Raster:
case LayerType::Raster:
return visitor(*as<RasterLayer>());
case Type::Background:
case LayerType::Background:
return visitor(*as<BackgroundLayer>());
case Type::Custom:
case LayerType::Custom:
return visitor(*as<CustomLayer>());
case Type::FillExtrusion:
case LayerType::FillExtrusion:
return visitor(*as<FillExtrusionLayer>());
}
}
Expand All @@ -123,8 +117,6 @@ class Layer : public mbgl::util::noncopyable {
// object here, so that separately-obtained references to this object share
// identical platform-native peers.
any peer;

friend std::string layoutKey(const Layer&);
};

} // namespace style
Expand Down
18 changes: 18 additions & 0 deletions include/mbgl/style/layer_type.hpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
#pragma once

namespace mbgl {
namespace style {

enum class LayerType {
Fill,
Line,
Circle,
Symbol,
Raster,
Background,
Custom,
FillExtrusion,
};

} // namespace style
} // namespace mbgl
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/background_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -50,7 +50,7 @@ class BackgroundLayer : public Layer {

template <>
inline bool Layer::is<BackgroundLayer>() const {
return type == Type::Background;
return type == LayerType::Background;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/circle_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -100,7 +100,7 @@ class CircleLayer : public Layer {

template <>
inline bool Layer::is<CircleLayer>() const {
return type == Type::Circle;
return type == LayerType::Circle;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/fill_extrusion_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class FillExtrusionLayer : public Layer {

template <>
inline bool Layer::is<FillExtrusionLayer>() const {
return type == Type::FillExtrusion;
return type == LayerType::FillExtrusion;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/fill_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -82,7 +82,7 @@ class FillLayer : public Layer {

template <>
inline bool Layer::is<FillLayer>() const {
return type == Type::Fill;
return type == LayerType::Fill;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/layer.hpp.ejs
Original file line number Diff line number Diff line change
Expand Up @@ -75,7 +75,7 @@ public:

template <>
inline bool Layer::is<<%- camelize(type) %>Layer>() const {
return type == Type::<%- camelize(type) %>;
return type == LayerType::<%- camelize(type) %>;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/line_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -120,7 +120,7 @@ class LineLayer : public Layer {

template <>
inline bool Layer::is<LineLayer>() const {
return type == Type::Line;
return type == LayerType::Line;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/raster_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ class RasterLayer : public Layer {

template <>
inline bool Layer::is<RasterLayer>() const {
return type == Type::Raster;
return type == LayerType::Raster;
}

} // namespace style
Expand Down
2 changes: 1 addition & 1 deletion include/mbgl/style/layers/symbol_layer.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -264,7 +264,7 @@ class SymbolLayer : public Layer {

template <>
inline bool Layer::is<SymbolLayer>() const {
return type == Type::Symbol;
return type == LayerType::Symbol;
}

} // namespace style
Expand Down
19 changes: 9 additions & 10 deletions src/mbgl/geometry/feature_index.cpp
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
#include <mbgl/geometry/feature_index.hpp>
#include <mbgl/style/style.hpp>
#include <mbgl/style/layer.hpp>
#include <mbgl/style/layer_impl.hpp>
#include <mbgl/style/layers/symbol_layer.hpp>
#include <mbgl/renderer/render_layer.hpp>
#include <mbgl/renderer/render_symbol_layer.hpp>
#include <mbgl/text/collision_tile.hpp>
#include <mbgl/util/constants.hpp>
#include <mbgl/util/math.hpp>
Expand Down Expand Up @@ -61,7 +60,7 @@ static int16_t getAdditionalQueryRadius(const RenderedQueryOptions& queryOptions

// Determine the additional radius needed factoring in property functions
float additionalRadius = 0;
auto getQueryRadius = [&](const style::Layer& layer) {
auto getQueryRadius = [&](const RenderLayer& layer) {
auto bucket = tile.getBucket(layer);
if (bucket) {
additionalRadius = std::max(additionalRadius, bucket->getQueryRadius(layer) * pixelsToTileUnits);
Expand All @@ -70,13 +69,13 @@ static int16_t getAdditionalQueryRadius(const RenderedQueryOptions& queryOptions

if (queryOptions.layerIDs) {
for (const auto& layerID : *queryOptions.layerIDs) {
style::Layer* layer = style.getLayer(layerID);
RenderLayer* layer = style.getRenderLayer(layerID);
if (layer) {
getQueryRadius(*layer);
}
}
} else {
for (const style::Layer* layer : style.getLayers()) {
for (const RenderLayer* layer : style.getRenderLayers()) {
getQueryRadius(*layer);
}
}
Expand Down Expand Up @@ -156,10 +155,10 @@ void FeatureIndex::addFeature(
continue;
}

auto styleLayer = style.getLayer(layerID);
if (!styleLayer ||
(!styleLayer->is<style::SymbolLayer>() &&
!styleLayer->baseImpl->queryIntersectsFeature(queryGeometry, *geometryTileFeature, tileID.z, bearing, pixelsToTileUnits))) {
auto renderLayer = style.getRenderLayer(layerID);
if (!renderLayer ||
(!renderLayer->is<RenderSymbolLayer>() &&
!renderLayer->queryIntersectsFeature(queryGeometry, *geometryTileFeature, tileID.z, bearing, pixelsToTileUnits))) {
continue;
}

Expand Down
17 changes: 9 additions & 8 deletions src/mbgl/layout/symbol_layout.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,8 @@
#include <mbgl/layout/clip_lines.hpp>
#include <mbgl/renderer/symbol_bucket.hpp>
#include <mbgl/style/filter_evaluator.hpp>
#include <mbgl/style/bucket_parameters.hpp>
#include <mbgl/style/layers/symbol_layer.hpp>
#include <mbgl/renderer/bucket_parameters.hpp>
#include <mbgl/renderer/render_symbol_layer.hpp>
#include <mbgl/style/layers/symbol_layer_impl.hpp>
#include <mbgl/sprite/sprite_atlas.hpp>
#include <mbgl/text/get_anchors.hpp>
Expand All @@ -22,6 +22,7 @@
#include <mbgl/math/log2.hpp>
#include <mbgl/util/platform.hpp>
#include <mbgl/util/logging.hpp>
#include <mbgl/tile/geometry_tile_data.hpp>

#include <mapbox/polylabel.hpp>

Expand All @@ -38,7 +39,7 @@ static bool has(const style::SymbolLayoutProperties::PossiblyEvaluated& layout)
}

SymbolLayout::SymbolLayout(const BucketParameters& parameters,
const std::vector<const Layer*>& layers,
const std::vector<const RenderLayer*>& layers,
const GeometryTileLayer& sourceLayer,
IconDependencies& iconDependencies,
uintptr_t _spriteAtlasMapIndex,
Expand All @@ -51,11 +52,11 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters,
spriteAtlasMapIndex(_spriteAtlasMapIndex),
tileSize(util::tileSize * overscaling),
tilePixelRatio(float(util::EXTENT) / tileSize),
textSize(layers.at(0)->as<SymbolLayer>()->impl->layout.unevaluated.get<TextSize>()),
iconSize(layers.at(0)->as<SymbolLayer>()->impl->layout.unevaluated.get<IconSize>())
textSize(layers.at(0)->as<RenderSymbolLayer>()->impl->layout.unevaluated.get<TextSize>()),
iconSize(layers.at(0)->as<RenderSymbolLayer>()->impl->layout.unevaluated.get<IconSize>())
{

const SymbolLayer::Impl& leader = *layers.at(0)->as<SymbolLayer>()->impl;
const SymbolLayer::Impl& leader = *layers.at(0)->as<RenderSymbolLayer>()->impl;

layout = leader.layout.evaluate(PropertyEvaluationParameters(zoom));

Expand Down Expand Up @@ -89,8 +90,8 @@ SymbolLayout::SymbolLayout(const BucketParameters& parameters,

for (const auto& layer : layers) {
layerPaintProperties.emplace(layer->getID(), std::make_pair(
layer->as<SymbolLayer>()->impl->iconPaintProperties(),
layer->as<SymbolLayer>()->impl->textPaintProperties()
layer->as<RenderSymbolLayer>()->iconPaintProperties(),
layer->as<RenderSymbolLayer>()->textPaintProperties()
));
}

Expand Down
9 changes: 4 additions & 5 deletions src/mbgl/layout/symbol_layout.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -15,21 +15,20 @@

namespace mbgl {

class GeometryTileLayer;
class BucketParameters;
class CollisionTile;
class SymbolBucket;
class Anchor;
class RenderLayer;

namespace style {
class BucketParameters;
class Filter;
class Layer;
} // namespace style

class SymbolLayout {
public:
SymbolLayout(const style::BucketParameters&,
const std::vector<const style::Layer*>&,
SymbolLayout(const BucketParameters&,
const std::vector<const RenderLayer*>&,
const GeometryTileLayer&,
IconDependencies&,
uintptr_t,
Expand Down
Loading