aboutsummaryrefslogtreecommitdiff
path: root/iosApp/WhirlyGlobe.xcframework/ios-arm64/WhirlyGlobe.framework/Headers/MaplyQuadLoader.h
diff options
context:
space:
mode:
Diffstat (limited to 'iosApp/WhirlyGlobe.xcframework/ios-arm64/WhirlyGlobe.framework/Headers/MaplyQuadLoader.h')
-rw-r--r--iosApp/WhirlyGlobe.xcframework/ios-arm64/WhirlyGlobe.framework/Headers/MaplyQuadLoader.h236
1 files changed, 236 insertions, 0 deletions
diff --git a/iosApp/WhirlyGlobe.xcframework/ios-arm64/WhirlyGlobe.framework/Headers/MaplyQuadLoader.h b/iosApp/WhirlyGlobe.xcframework/ios-arm64/WhirlyGlobe.framework/Headers/MaplyQuadLoader.h
new file mode 100644
index 0000000..65ad61f
--- /dev/null
+++ b/iosApp/WhirlyGlobe.xcframework/ios-arm64/WhirlyGlobe.framework/Headers/MaplyQuadLoader.h
@@ -0,0 +1,236 @@
+/*
+ * MaplyQuadLoader.h
+ *
+ * Created by Steve Gifford on 2/12/19.
+ * Copyright 2012-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 <Foundation/Foundation.h>
+#import <WhirlyGlobe/MaplyControllerLayer.h>
+#import <WhirlyGlobe/MaplyCoordinateSystem.h>
+#import <WhirlyGlobe/MaplyTileSourceNew.h>
+#import <WhirlyGlobe/MaplyRenderController.h>
+#import <WhirlyGlobe/MaplyQuadSampler.h>
+#import <WhirlyGlobe/MaplyRemoteTileFetcher.h>
+
+@class MaplyQuadLoaderBase;
+
+/**
+ Passed in to and returned by the Loader Interpreter.
+
+ We pass this into the interpreter with the unparsed data. It parses it and passes that
+ data back, possibly with an error.
+ */
+@interface MaplyLoaderReturn : NSObject
+
+/// Initialize with the loader this will be attached to
+- (id __nonnull)initWithLoader:(MaplyQuadLoaderBase * __nonnull)loader;
+
+/// Tile this is the data for
+@property (nonatomic) MaplyTileID tileID;
+
+/// If set, the frame. -1 by default
+@property (nonatomic,readonly) int frame;
+
+/// Data returned from a tile request. Unparsed.
+/// You can add multiple of these, but the interpreter should be expecting that
+- (void)addTileData:(id __nonnull) tileData;
+
+/// Return the tile NSData objects as an array
+- (NSArray<id> * __nonnull)getTileData;
+
+/// Return the first data object. You're probably only expecting the one.
+- (id __nullable)getFirstData;
+
+/// Set when the QuadLoader cancels a tile. You can check this in your dataForTile:
+- (bool)isCancelled;
+
+/// If this is set, the tile failed to parse
+/// You can set it and the system will deal with the results
+@property (nonatomic,strong) NSError * __nullable error;
+
+@end
+
+/**
+ Loader Interpreter converts raw data into images and objects.
+
+ Converts data returned from a remote source (or cache) into images and/or
+ MaplyComponentObjects that have already been added to the view (disabled).
+ */
+@protocol MaplyLoaderInterpreter<NSObject>
+
+/** Set when the loader first starts up.
+
+ If you need to tweak loader settings, do it here.
+ */
+- (void)setLoader:(MaplyQuadLoaderBase * __nonnull)loader;
+
+/**
+ Parse the data coming back from a remote request and turn it into something we can use.
+
+ Convert the NSData passed in to image and component objects (e.g. add stuff to the view controller).
+ Everything added should be disabled to start.
+ */
+- (void)dataForTile:(MaplyLoaderReturn * __nonnull)loadReturn loader:(MaplyQuadLoaderBase * __nonnull)loader;
+
+/**
+ Notification that the tile was unloaded by the system. If you're tracking your own resources, you may need this.
+ */
+- (void)tileUnloaded:(MaplyTileID)tileID;
+
+@end
+
+/** Base class for the quad loaders.
+
+ The image, frame, and data paging loaders all share much of the same functionality.
+ */
+@interface MaplyQuadLoaderBase : NSObject
+
+/**
+ Control how tiles are indexed, either from the lower left or the upper left.
+
+ If set, we'll use the OSM approach (also Google Maps) to y indexing. That's that default and it's normally what you're run into.
+
+ Strictly speaking, TMS addressing (the standard) is flipped the other way. So if your tile source looks odd, try setting this to false.
+
+ Default value is true.
+ */
+@property (nonatomic) bool flipY;
+
+/// Set for a lot of debugging output
+@property (nonatomic,assign) bool debugMode;
+
+/// View controller this is attached to.
+/// Useful for delegate calls that might not be tracking that.
+@property (nonatomic,readonly,weak,nullable) NSObject<MaplyRenderControllerProtocol> *viewC;
+
+/// If set, we'll call the interpreter on this queue
+@property (nonatomic,nullable,strong) dispatch_queue_t queue;
+
+/// Number of simulataneous tiles we'll parse
+/// This is really just a limit on the number of tiles we'lll parse concurrently to keep memory use under control
+@property (nonatomic) unsigned int numSimultaneousTiles;
+
+// True if the loader is not currently loading anything
+- (bool)isLoading;
+
+/**
+ Calculate the bounding box for a single tile in geographic.
+
+ This is a utility method for calculating the extents of a given tile in geographic (e.g. lon/lat).
+
+ @param tileID The ID for the tile we're interested in.
+
+ @return The lower left and upper right corner of the tile in geographic coordinates. Returns kMaplyNullBoundingBox in case of error
+ */
+- (MaplyBoundingBox)geoBoundsForTile:(MaplyTileID)tileID;
+
+/**
+ Calculate the bounding box for a single tile in geographic using doubles.
+
+ This is a utility method for calculating the extents of a given tile in geographic (e.g. lon/lat).
+
+ @param tileID The ID for the tile we're interested in.
+
+ @return The lower left and upper right corner of the tile in geographic coordinates. Returns kMaplyNullBoundingBoxD in case of error
+ */
+- (MaplyBoundingBoxD)geoBoundsForTileD:(MaplyTileID)tileID;
+
+/**
+ Calculate the bounding box for a single tile in the local coordinate system.
+
+ This utility method calculates the bounding box for a tile in the coordinate system used for the layer.
+
+ @param tileID The ID for the tile we're interested in.
+
+ @return The lower left and upper right corner of the tile in local coordinates.
+ */
+- (MaplyBoundingBox)boundsForTile:(MaplyTileID)tileID;
+
+/**
+ Calculate the bounding box for a single tile in the local coordinate system using doubles.
+
+ This utility method calculates the bounding box for a tile in the coordinate system used for the layer.
+
+ @param tileID The ID for the tile we're interested in.
+
+ @return The lower left and upper right corner of the tile in geographic coordinates.
+ */
+- (MaplyBoundingBoxD)boundsForTileD:(MaplyTileID)tileID;
+
+/**
+ Return the center of the tile in display coordinates.
+
+ @param tileID The ID for the tile we're interested in.
+
+ @return Return the center in display space for the given tile.
+ */
+- (MaplyCoordinate3d)displayCenterForTile:(MaplyTileID)tileID;
+
+/**
+ Each sampling layer allocates a slot to keep track of continuous zoom levels.
+ Those are passed all the way through to the individual shaders.
+ */
+- (int)getZoomSlot;
+
+/// Use a specific tile fetcher rather than the one shared by everyone else
+- (void)setTileFetcher:(NSObject<MaplyTileFetcher> * __nonnull)tileFetcher;
+
+/// Set the interpreter for the data coming back. If you're just getting images, don't set this.
+- (void)setInterpreter:(NSObject<MaplyLoaderInterpreter> * __nonnull)interp;
+
+/// Return the current interpreter
+- (NSObject<MaplyLoaderInterpreter> * __nullable)getInterpreter;
+
+/**
+ Change the interpreter and reload all the data.
+ <br>
+ You can change the tile interpreter being used to build objects and images.
+ This will then force a reload of the tiles (hopefully from cache) and the
+ visuals will change as everything comes in.
+ */
+- (void)changeInterpreter:(NSObject<MaplyLoaderInterpreter> *__nonnull)interp;
+
+/**
+ Force a reload of the data.
+ <br>
+ All the current loads will be cancelled, any in flight will be ignored
+ and the loader will ask for a whole new set of data.
+ */
+- (void)reload;
+
+/**
+ Force a reload of the tiles overlapping a bounding box.
+ <br>
+ All the current loads will be cancelled, any in flight will be ignored
+ and the loader will ask for a whole new set of data.
+ */
+- (void)reloadArea:(MaplyBoundingBox)bounds;
+
+
+/**
+ Force a reload of the tiles overlapping a set of bounding boxes
+ <br>
+ All the current loads will be cancelled, any in flight will be ignored
+ and the loader will ask for a whole new set of data.
+ */
+- (void)reloadAreas:(NSArray<NSValue*>* __nullable)bounds;
+
+/** Turn off the loader and shut things down.
+ This unregisters us with the sampling layer and shuts down the various objects we created.
+ */
+- (void)shutdown;
+
+@end