package org.mapfish.print.map.geotools.grid; import org.geotools.styling.Style; import org.mapfish.print.config.Template; import org.mapfish.print.map.geotools.FeatureSourceSupplier; /** * The supported Grid types. */ public enum GridType { /** * Represents a Grid that consists of lines. */ LINES(new LineGridStrategy()), /** * Represents a Grid that consists of points where the lines would intersect if the grid was a set of lines. */ POINTS(new PointGridStrategy()); /** * The strategy to use for this type. */ final GridTypeStrategy strategy; GridType(final GridTypeStrategy strategy) { this.strategy = strategy; } /** * The code for getting the features and default style for the {@link GridType}. */ interface GridTypeStrategy { /** * Returns the default style for this type. * * @param template The template the grid layer is part of * @param layerData the layer parameters */ Style defaultStyle(Template template, GridParam layerData); /** * Return the features for the grid. During the creation of the features the grid labels should be added to the label * collector for rendering at the end of the process. * * @param template The template the grid layer is part of * @param layerData the layer parameters * @param labels the collector for the labels. */ FeatureSourceSupplier createFeatureSource(Template template, GridParam layerData, LabelPositionCollector labels); } }