aboutsummaryrefslogtreecommitdiff
path: root/iosApp/WhirlyGlobeMaplyComponent.xcframework/ios-arm64/WhirlyGlobeMaplyComponent.framework/Headers/MaplyQuadSampler.h
blob: 2f9ec391e23be2682da8c05ddc531404b380e5e2 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
/*
 *  MaplyQuadSampler.h
 *  WhirlyGlobe-MaplyComponent
 *
 *  Created by Steve Gifford on 3/27/18.
 *  Copyright 2011-2022 Saildrone Inc
 *
 *  Licensed under the Apache License, Version 2.0 (the "License");
 *  you may not use this file except in compliance with the License.
 *  You may obtain a copy of the License at
 *  http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing, software
 *  distributed under the License is distributed on an "AS IS" BASIS,
 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 *  See the License for the specific language governing permissions and
 *  limitations under the License.
 *
 */

#import <WhirlyGlobeMaplyComponent/MaplyControllerLayer.h>
#import <WhirlyGlobeMaplyComponent/MaplyCoordinateSystem.h>
#import <WhirlyGlobeMaplyComponent/MaplyTileSourceNew.h>
#import <WhirlyGlobeMaplyComponent/MaplyRenderController.h>

/**
    Sampling parameters.
 
    These are used to describe how we want to break down the globe or
    flat projection onto the globe.
  */
@interface MaplySamplingParams : NSObject

/// The coordinate system we'll be sampling from.
@property (nonatomic,nonnull,strong) MaplyCoordinateSystem *coordSys;

/// Min zoom level for sampling.  Don't set this to anything other than 0 or 1
@property (nonatomic) int minZoom;

/// Max zoom level for sampling
@property (nonatomic) int maxZoom;

/// We may want to calculate zoom levels beyond what we actually load.
/// Useful for zoom scaled features and enable/disable based on zoome
@property (nonatomic) int reportedMaxZoom;

/// Maximum number of tiles to load
@property (nonatomic) int maxTiles;

/// Cutoff for loading tiles.  This is size in screen space (pixels^2)
@property (nonatomic) double minImportance;

/// Normally we always load the lowest level
/// If this is set we only load those lowest level tiles that pass this test
/// Must be greater than zero and not equal to minImportance to take effect.
@property (nonatomic) double minImportanceTop;

/// Generate geometry to cover the north and south poles
/// Only works for world-wide projections
@property (nonatomic) bool coverPoles;

/// If set, generate skirt geometry to hide the edges between levels
@property (nonatomic) bool edgeMatching;

/// Tesselation values per level for breaking down the coordinate system (e.g. globe)
@property (nonatomic) int tessX,tessY;

/// If set, we'll scale the bounding boxes of individual tiles by this before evaluating
@property (nonatomic) float boundScale;

/// If set, we'll always load the lowest level first and then whatever the target level is
/// Turn this off to get true single level loading
/// `forceMinLevelHeight` must be greater than zero for this to have any effect.
@property (nonatomic) bool forceMinLevel;

/// If set, we'll turn on forceMinLevel and only use it when the viewer is above this height
@property (nonatomic) double forceMinLevelHeight;

/// If set, we'll try to load a single level
@property (nonatomic) bool singleLevel;

/// If set, the tiles are clipped to this boundary
@property (nonatomic) MaplyBoundingBoxD clipBounds;
@property (nonatomic,readonly) bool hasClipBounds;

/**
 Detail the levels you want loaded in target level mode.
 
 The layer calculates the optimal target level.  The entries in this array are relative to that level or absolute.  For example [0,-4,-2] means the layer will always try to load levels 0, targetLevel-4 and targetLevel-2, but only the latter two if they make sense.
 */
@property (nonatomic,nullable,strong) NSArray *levelLoads;

/**
 Set the min importance for just one level.
 
 This is useful if you want your lower levels loaded more aggressively.
 */
- (void)setMinImportance:(double)minImportance forLevel:(int)level;

/// Decide if these sampling params are the same as others
- (bool)isEqualTo:(MaplySamplingParams *__nonnull)other;

@end