Bug fix: Pan view not displayed correctly
[geeqie.git] / src / zonedetect.h
1 /*
2  * Copyright (c) 2018, Bertold Van den Bergh (vandenbergh@bertold.org)
3  * All rights reserved.
4  *
5  * Redistribution and use in source and binary forms, with or without
6  * modification, are permitted provided that the following conditions are met:
7  *     * Redistributions of source code must retain the above copyright
8  *       notice, this list of conditions and the following disclaimer.
9  *     * Redistributions in binary form must reproduce the above copyright
10  *       notice, this list of conditions and the following disclaimer in the
11  *       documentation and/or other materials provided with the distribution.
12  *     * Neither the name of the author nor the
13  *       names of its contributors may be used to endorse or promote products
14  *       derived from this software without specific prior written permission.
15  *
16  * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
17  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19  * DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR DISTRIBUTOR BE LIABLE FOR ANY
20  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21  * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22  * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
25  * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26  */
27
28 #include <cstddef>
29 #include <cstdint>
30
31 #ifndef INCL_ZONEDETECT_H_
32 #define INCL_ZONEDETECT_H_
33
34 #if !defined(ZD_EXPORT)
35 #if defined(_MSC_VER)
36 #define ZD_EXPORT __declspec(dllimport)
37 #else
38 #define ZD_EXPORT
39 #endif
40 #endif
41
42 enum ZDLookupResult {
43     ZD_LOOKUP_IGNORE = -3,
44     ZD_LOOKUP_END = -2,
45     ZD_LOOKUP_PARSE_ERROR = -1,
46     ZD_LOOKUP_NOT_IN_ZONE = 0,
47     ZD_LOOKUP_IN_ZONE = 1,
48     ZD_LOOKUP_IN_EXCLUDED_ZONE = 2,
49     ZD_LOOKUP_ON_BORDER_VERTEX = 3,
50     ZD_LOOKUP_ON_BORDER_SEGMENT = 4
51 };
52
53 struct ZoneDetectResult {
54     ZDLookupResult lookupResult;
55
56     uint32_t polygonId;
57     uint32_t metaId;
58     uint8_t numFields;
59     char **fieldNames;
60     char **data;
61 };
62
63 struct ZoneDetect;
64
65 #ifdef __cplusplus
66 extern "C" {
67 #endif
68
69 ZD_EXPORT ZoneDetect *ZDOpenDatabase(const char *path);
70 ZD_EXPORT ZoneDetect *ZDOpenDatabaseFromMemory(void* buffer, size_t length);
71 ZD_EXPORT void        ZDCloseDatabase(ZoneDetect *library);
72
73 ZD_EXPORT ZoneDetectResult *ZDLookup(const ZoneDetect *library, float lat, float lon, float *safezone);
74 ZD_EXPORT void              ZDFreeResults(ZoneDetectResult *results);
75
76 ZD_EXPORT const char *ZDGetNotice(const ZoneDetect *library);
77 ZD_EXPORT uint8_t     ZDGetTableType(const ZoneDetect *library);
78 ZD_EXPORT const char *ZDLookupResultToString(ZDLookupResult result);
79
80 ZD_EXPORT int         ZDSetErrorHandler(void (*handler)(int, int));
81 ZD_EXPORT const char *ZDGetErrorString(int errZD);
82
83 ZD_EXPORT float* ZDPolygonToList(const ZoneDetect *library, uint32_t polygonId, size_t* length);
84
85 ZD_EXPORT char* ZDHelperSimpleLookupString(const ZoneDetect* library, float lat, float lon);
86
87 #ifdef __cplusplus
88 }
89 #endif
90
91 #endif // INCL_ZONEDETECT_H_