CartoType UWP API 9.0-11-g64131709d
for development in C#, VB.NET and C++
Loading...
Searching...
No Matches
CartoTypeFeatureInfo.h
1/*
2CartoTypeFeatureInfo.h
3Copyright (C) CartoType Ltd 2022.
4See www.cartotype.com for more information.
5*/
6
7#pragma once
8
9#include <cartotype_feature_info.h>
10#include "CartoTypeResult.h"
11
12namespace CartoType
13{
14
16inline uint32_t constexpr FeatureTypeCode(int A,int B,int C)
17 {
18 return (char(A - 'a' + 1) << 10) | (char(B - 'a' + 1) << 5) | (char(C - 'a' + 1));
19 }
20
29public enum class FeatureType
30 {
31 Motorway = 0,
32 MotorwayLink = 1,
33 TrunkRoad = 2,
34 TrunkLink = 3,
35 PrimaryRoad = 4,
36 PrimaryLink = 5,
37 SecondaryRoad = 6,
38 SecondaryLink = 7,
39 TertiaryRoad = 8,
40 UnclassifiedRoad = 9,
41 ResidentialRoad = 10,
42 Track = 11,
43 ServiceRoad = 12,
44 PedestrianRoad = 13,
45 VehicularFerry = 14,
46 PassengerFerry = 15,
47 LivingStreet = 16,
48 Cycleway = 17,
49 Path = 18,
50 Footway = 19,
51 Bridleway = 20,
52 Steps = 21,
53 OtherRoad = 22,
54 UnpavedRoad = 23,
55 Railway = 24,
56 LightRail = 25,
57 Subway = 26,
58 AerialWay = 27,
59 SkiDownhill = 28,
60 SkiNordic = 29,
61 Waterway = 30,
62 UnknownRoute = 31,
63
64 UnknownNonRoute = 32,
65
66 AdminArea1 = FeatureTypeCode('a','a','a'),
67 AdminArea2 = FeatureTypeCode('a','a','b'),
68 AdminArea3 = FeatureTypeCode('a','a','c'),
69 AdminArea4 = FeatureTypeCode('a','a','d'),
70 AdminArea5 = FeatureTypeCode('a','a','e'),
71 AdminArea6 = FeatureTypeCode('a','a','f'),
72 AdminArea7 = FeatureTypeCode('a','a','g'),
73 AdminArea8 = FeatureTypeCode('a','a','h'),
74 AdminArea9 = FeatureTypeCode('a','a','i'),
75 AdminArea10 = FeatureTypeCode('a','a','j'),
76 Address = FeatureTypeCode('a','d','d'),
77 Aerodrome = FeatureTypeCode('a','e','r'),
78 Airport = FeatureTypeCode('a','i','r'),
79 AirportGate = FeatureTypeCode('a','g','t'),
80 AirportHoldingPosition = FeatureTypeCode('a','h','p'),
81 Allotments = FeatureTypeCode('a','l','l'),
82 AlpineHut = FeatureTypeCode('a','l','p'),
83 AmbulanceStation = FeatureTypeCode('a','m','b'),
84 Apron = FeatureTypeCode('a','p','r'),
85 AerialWayPylon = FeatureTypeCode('a','p','y'),
86 Artwork = FeatureTypeCode('a','r','t'),
87 AerialWayStation = FeatureTypeCode('a','s','t'),
88 AirTerminal = FeatureTypeCode('a','t','e'),
89 Atm = FeatureTypeCode('a','t','m'),
90 Attraction = FeatureTypeCode('a','t','t'),
91 Bar = FeatureTypeCode('b','a','r'),
92 Basin = FeatureTypeCode('b','a','s'),
93 Bay = FeatureTypeCode('b','a','y'),
94 Beach = FeatureTypeCode('b','e','a'),
95 Beacon = FeatureTypeCode('b','e','c'),
96 BedAndBreakfast = FeatureTypeCode('b','e','d'),
97 Bench = FeatureTypeCode('b','e','n'),
98 Bank = FeatureTypeCode('b','n','k'),
99 Boatyard = FeatureTypeCode('b','o','a'),
100 Borough = FeatureTypeCode('b','o','r'),
101 Boundary = FeatureTypeCode('b','o','u'),
102 BicycleParking = FeatureTypeCode('b','p','k'),
103 BicycleRental = FeatureTypeCode('b','r','e'),
104 BareRock = FeatureTypeCode('b','r','c'),
105 Barracks = FeatureTypeCode('b','r','k'),
106 BrownField = FeatureTypeCode('b','r','o'),
107 BusStop = FeatureTypeCode('b','s','p'),
108 BusStation = FeatureTypeCode('b','s','t'),
109 BufferStop = FeatureTypeCode('b','u','f'),
110 Building = FeatureTypeCode('b','u','i'),
111 Bunker = FeatureTypeCode('b','u','n'),
112 Cabin = FeatureTypeCode('c','a','b'),
113 Cafe = FeatureTypeCode('c','a','f'),
114 CampSite = FeatureTypeCode('c','a','m'),
115 Canal = FeatureTypeCode('c','a','n'),
116 CaveEntrance = FeatureTypeCode('c','a','v'),
117 CableCar = FeatureTypeCode('c','c','r'),
118 CableDistributionCabinet = FeatureTypeCode('c','d','c'),
119 Cemetery = FeatureTypeCode('c','e','m'),
120 ChairLift = FeatureTypeCode('c','h','a'),
121 CheckPoint = FeatureTypeCode('c','h','e'),
122 Chalet = FeatureTypeCode('c','h','l'),
123 CivilBoundary = FeatureTypeCode('c','i','b'),
124 Cinema = FeatureTypeCode('c','i','n'),
125 City = FeatureTypeCode('c','i','t'),
126 Cliff = FeatureTypeCode('c','l','f'),
127 Clinic = FeatureTypeCode('c','l','i'),
128 Commercial = FeatureTypeCode('c','m','r'),
129 Coastline = FeatureTypeCode('c','o','a'),
130 College = FeatureTypeCode('c','o','l'),
131 Common = FeatureTypeCode('c','o','m'),
132 Construction = FeatureTypeCode('c','n','s'),
133 Conservation = FeatureTypeCode('c','n','v'),
134 Continent = FeatureTypeCode('c','o','n'),
135 County = FeatureTypeCode('c','o','u'),
136 CarPark = FeatureTypeCode('c','p','k'),
137 CarRental = FeatureTypeCode('c','r','e'),
138 Crossing = FeatureTypeCode('c','r','o'),
139 Country = FeatureTypeCode('c','r','y'),
140 CarSharing = FeatureTypeCode('c','s','h'),
141 CutLine = FeatureTypeCode('c','u','t'),
142 CarWash = FeatureTypeCode('c','w','a'),
143 CaravanSite = FeatureTypeCode('c','v','n'),
144 CyclingRoute = FeatureTypeCode('c','y','r'),
145 Dam = FeatureTypeCode('d','a','m'),
146 DangerArea = FeatureTypeCode('d','a','n'),
147 Dentist = FeatureTypeCode('d','e','n'),
148 Disused = FeatureTypeCode('d','i','s'),
149 Ditch = FeatureTypeCode('d','i','t'),
150 Dock = FeatureTypeCode('d','o','c'),
151 DogPark = FeatureTypeCode('d','o','g'),
152 Drain = FeatureTypeCode('d','r','a'),
153 DragLift = FeatureTypeCode('d','r','g'),
154 Doctors = FeatureTypeCode('d','r','s'),
155 District = FeatureTypeCode('d','s','t'),
156 ElectricVehicleCharging = FeatureTypeCode('e','v','c'),
157 Farm = FeatureTypeCode('f','a','r'),
158 FarmYard = FeatureTypeCode('f','a','y'),
159 Fell = FeatureTypeCode('f','e','l'),
160 FerryTerminal = FeatureTypeCode('f','e','t'),
161 FastFood = FeatureTypeCode('f','f','d'),
162 FireExtinguisher = FeatureTypeCode('f','i','e'),
163 FireFlapper = FeatureTypeCode('f','i','f'),
164 FireHose = FeatureTypeCode('f','i','h'),
165 FireStation = FeatureTypeCode('f','i','s'),
166 FitnessStation = FeatureTypeCode('f','i','t'),
167 FireHydrant = FeatureTypeCode('f','i','y'),
168 Forestry = FeatureTypeCode('f','o','r'),
169 Fishing = FeatureTypeCode('f','s','h'),
170 Fuel = FeatureTypeCode('f','u','e'),
171 Funicular = FeatureTypeCode('f','u','n'),
172 Garages = FeatureTypeCode('g','a','r'),
173 Gate = FeatureTypeCode('g','a','t'),
174 Garden = FeatureTypeCode('g','d','n'),
175 Generator = FeatureTypeCode('g','e','n'),
176 GreenHouse = FeatureTypeCode('g','h','o'),
177 Glacier = FeatureTypeCode('g','l','a'),
178 GolfCourse = FeatureTypeCode('g','o','l'),
179 Gondola = FeatureTypeCode('g','o','n'),
180 GoodsAerialWay = FeatureTypeCode('g','o','o'),
181 Grass = FeatureTypeCode('g','r','a'),
182 GreenField = FeatureTypeCode('g','r','e'),
183 GritBin = FeatureTypeCode('g','r','b'),
184 GraveYard = FeatureTypeCode('g','r','y'),
185 GuestHouse = FeatureTypeCode('g','u','e'),
186 Halt = FeatureTypeCode('h','a','l'),
187 Hamlet = FeatureTypeCode('h','a','m'),
188 Hangar = FeatureTypeCode('h','a','n'),
189 Heath = FeatureTypeCode('h','e','a'),
190 Helipad = FeatureTypeCode('h','e','l'),
191 RailwayHalt = FeatureTypeCode('h','l','t'),
192 HikingRoute = FeatureTypeCode('h','i','k'),
193 HorseRiding = FeatureTypeCode('h','o','r'),
194 Hospital = FeatureTypeCode('h','o','s'),
195 Hotel = FeatureTypeCode('h','o','t'),
196 HorseRidingRoute = FeatureTypeCode('h','r','r'),
197 Hostel = FeatureTypeCode('h','s','t'),
198 IceRink = FeatureTypeCode('i','c','e'),
199 Industrial = FeatureTypeCode('i','n','d'),
200 Information = FeatureTypeCode('i','n','f'),
201 Island = FeatureTypeCode('i','s','l'),
202 IsolatedDwelling = FeatureTypeCode('i','s','o'),
203 Junction = FeatureTypeCode('j','c','t'),
204 Kindergarten = FeatureTypeCode('k','i','n'),
205 LandFill = FeatureTypeCode('l','a','n'),
206 Land = FeatureTypeCode('l','n','d'),
207 LevelCrossing = FeatureTypeCode('l','e','v'),
208 Library = FeatureTypeCode('l','i','b'),
209 Locality = FeatureTypeCode('l','o','c'),
210 LockGate = FeatureTypeCode('l','o','k'),
211 MaritimeBoundary = FeatureTypeCode('m','a','b'),
212 Mall = FeatureTypeCode('m','a','l'),
213 Marsh = FeatureTypeCode('m','a','r'),
214 Meadow = FeatureTypeCode('m','e','a'),
215 Military = FeatureTypeCode('m','i','l'),
216 Marina = FeatureTypeCode('m','n','a'),
217 Motel = FeatureTypeCode('m','o','t'),
218 MinorPowerLine = FeatureTypeCode('m','p','l'),
219 MiniatureGolf = FeatureTypeCode('m','r','g'),
220 MiniatureRailway = FeatureTypeCode('m','r','y'),
221 Mud = FeatureTypeCode('m','u','d'),
222 Municipality = FeatureTypeCode('m','u','n'),
223 Museum = FeatureTypeCode('m','u','s'),
224 NatureReserve = FeatureTypeCode('n','a','t'),
225 NationalPark = FeatureTypeCode('n','a','p'),
226 NavalBase = FeatureTypeCode('n','a','v'),
227 Neighborhood = FeatureTypeCode('n','e','i'),
228 NursingHome = FeatureTypeCode('n','u','r'),
229 Ocean = FeatureTypeCode('o','c','e'),
230 Orchard = FeatureTypeCode('o','r','c'),
231 PrecisionApproachPathIndicator = FeatureTypeCode('p','a','p'),
232 Park = FeatureTypeCode('p','a','r'),
233 PublicBuilding = FeatureTypeCode('p','b','u'),
234 PostBox = FeatureTypeCode('p','b','x'),
235 PostCode = FeatureTypeCode('p','c','o'),
236 PicnicTable = FeatureTypeCode('p','c','t'),
237 Peak = FeatureTypeCode('p','e','a'),
238 Pharmacy = FeatureTypeCode('p','h','a'),
239 Phone = FeatureTypeCode('p','h','o'),
240 PicnicSite = FeatureTypeCode('p','i','c'),
241 Pier = FeatureTypeCode('p','i','e'),
242 Pipeline = FeatureTypeCode('p','i','p'),
243 ParkingEntrance = FeatureTypeCode('p','k','e'),
244 Parking = FeatureTypeCode('p','k','g'),
245 ParkingSpace = FeatureTypeCode('p','k','s'),
246 PlantNursery = FeatureTypeCode('p','l','a'),
247 Platform = FeatureTypeCode('p','l','f'),
248 PlaceOfWorship = FeatureTypeCode('p','l','w'),
249 Playground = FeatureTypeCode('p','l','y'),
250 PostOffice = FeatureTypeCode('p','o','f'),
251 Police = FeatureTypeCode('p','o','l'),
252 Position = FeatureTypeCode('p','o','s'),
253 ProtectedArea = FeatureTypeCode('p','r','a'),
254 PowerSubStation = FeatureTypeCode('p','s','s'),
255 Pub = FeatureTypeCode('p','u','b'),
256 PowerLine = FeatureTypeCode('p','w','l'),
257 PowerStation = FeatureTypeCode('p','w','s'),
258 Quarry = FeatureTypeCode('q','a','r'),
259 Quarter = FeatureTypeCode('q','r','t'),
260 Range = FeatureTypeCode('r','a','n'),
261 Rapids = FeatureTypeCode('r','a','p'),
262 Recycling = FeatureTypeCode('r','c','y'),
263 RecreationGround = FeatureTypeCode('r','e','c'),
264 Reef = FeatureTypeCode('r','e','e'),
265 Region = FeatureTypeCode('r','e','g'),
266 Retail = FeatureTypeCode('r','e','t'),
267 Ridge = FeatureTypeCode('r','i','j'),
268 River = FeatureTypeCode('r','i','v'),
269 Rock = FeatureTypeCode('r','o','c'),
270 RoundHouse = FeatureTypeCode('r','o','u'),
271 ResidentialArea = FeatureTypeCode('r','s','d'),
272 Restaurant = FeatureTypeCode('r','s','t'),
273 Reservoir = FeatureTypeCode('r','s','v'),
274 Runway = FeatureTypeCode('r','u','n'),
275 Route = FeatureTypeCode('r','u','t'),
276 RiverBank = FeatureTypeCode('r','v','b'),
277 SaltPond = FeatureTypeCode('s','a','l'),
278 Sand = FeatureTypeCode('s','a','n'),
279 Sauna = FeatureTypeCode('s','a','u'),
280 School = FeatureTypeCode('s','c','h'),
281 Scree = FeatureTypeCode('s','c','r'),
282 Scrub = FeatureTypeCode('s','c','b'),
283 Sea = FeatureTypeCode('s','e','a'),
284 StateEmergencyServiceStation = FeatureTypeCode('s','e','s'),
285 Shop = FeatureTypeCode('s','h','o'),
286 SkiRoute = FeatureTypeCode('s','k','r'),
287 Slipway = FeatureTypeCode('s','l','i'),
288 SportsCenter = FeatureTypeCode('s','p','o'),
289 SportsPitch = FeatureTypeCode('s','p','p'),
290 Spring = FeatureTypeCode('s','p','r'),
291 SportsTrack = FeatureTypeCode('s','p','t'),
292 State = FeatureTypeCode('s','t','a'),
293 Stadium = FeatureTypeCode('s','t','m'),
294 RailwayStation = FeatureTypeCode('s','t','n'),
295 Station = FeatureTypeCode('s','t','n'), // deliberate duplicate
296 Stone = FeatureTypeCode('s','t','o'),
297 StopPosition = FeatureTypeCode('s','t','p'),
298 Stream = FeatureTypeCode('s','t','r'),
299 Strait = FeatureTypeCode('s','t','t'),
300 Suburb = FeatureTypeCode('s','u','b'),
301 Supermarket = FeatureTypeCode('s','u','p'),
302 SurveyPoint = FeatureTypeCode('s','u','r'),
303 SubwayEntrance = FeatureTypeCode('s','w','e'),
304 SwimmingPool = FeatureTypeCode('s','w','i'),
305 Tank = FeatureTypeCode('t','a','n'),
306 Taxi = FeatureTypeCode('t','a','x'),
307 Theatre = FeatureTypeCode('t','h','e'),
308 ThemePark = FeatureTypeCode('t','h','p'),
309 Toilet = FeatureTypeCode('t','o','i'),
310 Town = FeatureTypeCode('t','o','w'),
311 TurningCircle = FeatureTypeCode('t','c','i'),
312 TurningPoint = FeatureTypeCode('t','p','t'),
313 Tram = FeatureTypeCode('t','r','a'),
314 Tree = FeatureTypeCode('t','r','e'),
315 TrafficSignals = FeatureTypeCode('t','r','f'),
316 TrackPoint = FeatureTypeCode('t','r','p'),
317 TreeRow = FeatureTypeCode('t','r','r'),
318 TramStop = FeatureTypeCode('t','r','s'),
319 TurnTable = FeatureTypeCode('t','u','r'),
320 Tower = FeatureTypeCode('t','w','r'),
321 Taxiway = FeatureTypeCode('t','w','y'),
322 University = FeatureTypeCode('u','n','i'),
323 VisualApproachSlopeIndicator = FeatureTypeCode('v','a','s'),
324 VillageGreen = FeatureTypeCode('v','i','g'),
325 Village = FeatureTypeCode('v','i','l'),
326 Vineyard = FeatureTypeCode('v','i','n'),
327 ViewPoint = FeatureTypeCode('v','i','w'),
328 Volcano = FeatureTypeCode('v','o','l'),
329 Waterfall = FeatureTypeCode('w','a','f'),
330 WaterPark = FeatureTypeCode('w','a','p'),
331 Water = FeatureTypeCode('w','a','t'),
332 Weir = FeatureTypeCode('w','e','r'),
333 Wetland = FeatureTypeCode('w','e','t'),
334 WildernessHut = FeatureTypeCode('w','i','l'),
335 Windsock = FeatureTypeCode('w','i','s'),
336 WalkingRoute = FeatureTypeCode('w','l','k'),
337 Wood = FeatureTypeCode('w','o','o'),
338 Works = FeatureTypeCode('w','o','r'),
339 Waypoint = FeatureTypeCode('w','p','t'),
340 WaterTower = FeatureTypeCode('w','t','t'),
341 WaterWell = FeatureTypeCode('w','t','w'),
342 Zoo = FeatureTypeCode('z','o','o'),
343
344 // legacy types for backward compatibility
345 LegacyBridleway = FeatureTypeCode('b','r','i'),
346 LegacyCycleway = FeatureTypeCode('c','y','c'),
347 LegacyFootway = FeatureTypeCode('f','o','o'),
348 LegacyLightRail = FeatureTypeCode('l','i','r'),
349 LegacyMonorail = FeatureTypeCode('m','o','n'),
350 LegacyNarrowGauge = FeatureTypeCode('n','a','r'),
351 LegacyPreservedRailway = FeatureTypeCode('p','r','y'),
352 LegacyRailway = FeatureTypeCode('r','l','y'),
353 LegacySteps = FeatureTypeCode('s','t','e'),
354 LegacySubway = FeatureTypeCode('s','w','y'),
355 LegacyTram = FeatureTypeCode('t','r','a'),
356
357 Invalid = 32767
358 };
359
361public enum class FeatureDiscriminator
362 {
371 };
372
374public enum class FeatureConstants
375 {
382
383 KRouteAccessShift = 26,
384 KRouteAccessMask = int(63U << KRouteAccessShift),
385 KRouteAccessWrongWayFlag = 1 << 26,
386 KRouteAccessPedestrianFlag = 1 << 27,
387 KRouteAccessCycleFlag = 1 << 28,
388 KRouteAccessMotorVehicleFlag = 1 << 29,
389 KRouteAccessEmergencyVehicleFlag = 1 << 30,
390 KRouteAccessOtherFlag = int(1U << 31),
391 KRouteAccessVehicle = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessEmergencyVehicleFlag,
392 KRouteAccessNormal = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessPedestrianFlag
393 };
394
413public ref class FeatureInfo sealed
414 {
415 public:
425 FeatureInfo(FeatureType aType,int aSubType);
429 property bool Route { bool get(); };
431 property bool Tunnel { bool get(); void set(bool); };
433 property bool Bridge { bool get(); void set(bool); };
434
435 property int Level { int get(); void set(int aLevel); };
437 property FeatureType Type { FeatureType get(); void set(FeatureType aType); };
439 property bool OneWay { bool get(); void set(bool aValue); };
441 property bool OneWayForward { bool get(); };
443 property bool OneWayBackward { bool get(); };
445 property bool DriveOnLeft { bool get(); void set(bool aValue); };
447 property bool DriveOnRight { bool get(); void set(bool aValue); };
451 property bool Roundabout { bool get(); void set(bool aValue); };
453 property bool Toll { bool get(); void set(bool aValue); };
455 property bool WrongWay { bool get(); void set(bool aValue); };
457 property int SpeedLimit { int get(); void set(int aValue); };
459 property int Gradient { int get(); void set(int aValue); };
460
461 void SetVehicleAccess(bool aValue);
463 property bool PedestrianAccess { bool get(); void set(bool aValue); };
465 property bool CycleAccess { bool get(); void set(bool aValue); };
466
467 property bool MotorVehicleAccess { bool get(); void set(bool aValue); };
469 property bool EmergencyVehicleAccess { bool get(); void set(bool aValue); };
471 property bool OtherAccessRestricted { bool get(); void set(bool aValue); };
473 property bool IsPrivate { bool get(); };
475 property int SubType { int get(); void set(int aValue); }
476
477 internal:
478 operator CartoTypeCore::FeatureInfo();
479 CartoTypeCore::FeatureInfo F() { return CartoTypeCore::FeatureInfo::FromRawValue(m_value); }
480 FeatureInfo(CartoTypeCore::FeatureInfo aInfo);
481 template<typename T> Result SetValue(bool aMustBeRoute,uint32_t aMask,uint32_t aShift,T aValue)
482 {
483 if (Route == aMustBeRoute)
484 {
485 m_value &= ~aMask;
486 m_value |= ((uint32_t(aValue) << aShift) & aMask);
487 return Result::Success;
488 }
490 }
491 Result SetRouteFlag(uint32_t aFlag,bool aValue)
492 {
493 if (Route)
494 {
495 if (aValue)
496 m_value |= aFlag;
497 else
498 m_value &= ~aFlag;
499 return Result::Success;
500 }
502 }
503
504 static const uint32_t KRouteTypeCount = 32;
505 static const uint32_t KGradientCount = 8;
506 static const uint32_t KMaxSubType = 2047;
507 static const uint32_t KRouteAccessShift = 26;
508 static const uint32_t KRouteAccessMask = 63U << KRouteAccessShift;
509 static const uint32_t KRouteAccessWrongWayFlag = 1 << 26;
510 static const uint32_t KRouteAccessPedestrianFlag = 1 << 27;
511 static const uint32_t KRouteAccessCycleFlag = 1 << 28;
512 static const uint32_t KRouteAccessMotorVehicleFlag = 1 << 29;
513 static const uint32_t KRouteAccessEmergencyVehicleFlag = 1 << 30;
514 static const uint32_t KRouteAccessOtherFlag = 1U << 31;
515 static const uint32_t KRouteAccessVehicle = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessEmergencyVehicleFlag;
516 static const uint32_t KRouteAccessNormal = KRouteAccessCycleFlag | KRouteAccessMotorVehicleFlag | KRouteAccessPedestrianFlag;
517 static const uint32_t KDiscriminatorMask = 3;
518 static const uint32_t KDiscriminatorNonRoute = 0;
519 static const uint32_t KDiscriminatorBridge = 1;
520 static const uint32_t KDiscriminatorTunnel = 2;
521 static const uint32_t KDiscriminatorRoute = 3;
522 static const uint32_t KLevelShift = 2;
523 static const uint32_t KLevelMask = 15 << KLevelShift;
524 static const uint32_t KTypeShift = 6;
525 static const uint32_t KRouteTypeMask = 31 << KTypeShift;
526 static const uint32_t KRouteOneWayFlag = 1 << 11;
527 static const uint32_t KRouteDriveOnLeftFlag = 1 << 12;
528 static const uint32_t KRouteRoundaboutFlag = 1 << 13;
529 static const uint32_t KRouteTollFlag = 1 << 14;
530 static const uint32_t KRouteSpeedLimitShift = 15;
531 static const uint32_t KRouteSpeedLimitMask = 255 << KRouteSpeedLimitShift;
532 static const uint32_t KRouteGradientShift = 23;
533 static const uint32_t KRouteGradientMask = 7 << KRouteGradientShift;
534 static const uint32_t KRouteGradientDirectionFlag = 4 << KRouteGradientShift;
535 static const uint32_t KNonRouteTypeMask = 32767 << KTypeShift;
536 static const uint32_t KNonRouteSubTypeShift = 21;
537 static const uint32_t KNonRouteSubTypeMask = 2047U << KNonRouteSubTypeShift;
538
539 uint32_t m_value;
540 };
541
542}
A structured address. Any field may be empty or null, but at least one field should be non-empty for ...
Definition CartoTypeWrapper.h:855
bool OneWayBackward
True if this is a one-way route in the direction opposite to the one in which the route is stored.
Definition CartoTypeFeatureInfo.h:443
int SubType
The sub-type. Always 0 if this is a route. This property cannot be set for route objects.
Definition CartoTypeFeatureInfo.h:475
bool Toll
True if this is a toll route. This property cannot be set for non-route objects.
Definition CartoTypeFeatureInfo.h:453
FeatureDiscriminator Discriminator
Returns the feature discriminator.
Definition CartoTypeFeatureInfo.h:427
bool DriveOnRight
Returns true if this is a two-way route and the rule of the road is to drive on the right....
Definition CartoTypeFeatureInfo.h:447
bool PedestrianAccess
True if this is a route and pedestrian access is allowed. This property cannot be set for non-route o...
Definition CartoTypeFeatureInfo.h:463
int SpeedLimit
The speed limit in kph. A value of zero indicates that no speed limit is known. This property cannot ...
Definition CartoTypeFeatureInfo.h:457
bool CycleAccess
True if this is a route and cycle access is allowed. This property cannot be set for non-route object...
Definition CartoTypeFeatureInfo.h:465
void ReverseOneWayDirection()
Reverses the one-way direction if this is a one-way route.
bool WrongWay
True if this is a route with a one-way direction opposite to the order of its points....
Definition CartoTypeFeatureInfo.h:455
bool DriveOnLeft
True if this is a two-way route and the rule of the road is to drive on the left. The rule of the roa...
Definition CartoTypeFeatureInfo.h:445
bool Route
True if this is a route.
Definition CartoTypeFeatureInfo.h:429
void SetVehicleAccess(bool aValue)
Sets or clears the vehicle access flags. Throws an exception if this is not a route.
FeatureType Type
The feature type. Route objects can only be set to route types, and non-route objects to non-route ty...
Definition CartoTypeFeatureInfo.h:437
bool Tunnel
True if this is a route that is a tunnel. Non-route objects cannot be made into tunnels.
Definition CartoTypeFeatureInfo.h:431
bool Roundabout
True if this is a route that is part of a roundabout. This property cannot be set for non-route objec...
Definition CartoTypeFeatureInfo.h:451
bool Bridge
True if this is a route that is a bridge. Non-route objects cannot be made into bridges.
Definition CartoTypeFeatureInfo.h:433
FeatureInfo()
Creates a feature info object of type UnknownNonRoute.
bool OneWay
True if this is a one-way route. Non-route objects cannot be set as one-way.
Definition CartoTypeFeatureInfo.h:439
FeatureInfo(FeatureType aType)
Creates a feature info object from a feature type.
bool IsPrivate
Returns true if this is a route and no normal access is allowed.
Definition CartoTypeFeatureInfo.h:473
bool OtherAccessRestricted
True if this is a route and there are access restrictions other than those specified by the standard ...
Definition CartoTypeFeatureInfo.h:471
bool EmergencyVehicleAccess
True if this is a route and emergency vehicle access is allowed. This property cannot be set for non-...
Definition CartoTypeFeatureInfo.h:469
int Level
The level, which is in the range -8 ... 7.
Definition CartoTypeFeatureInfo.h:435
bool MotorVehicleAccess
True if this is a route and motor vehicle access is allowed. This property cannot be set for non-rout...
Definition CartoTypeFeatureInfo.h:467
bool OneWayForward
True if this is a one-way route in the direction in which the route is stored.
Definition CartoTypeFeatureInfo.h:441
int Gradient
The gradient as a number in the range 0...7. Values 0...3 are uphill and 4...7 are downhill....
Definition CartoTypeFeatureInfo.h:459
Information about an entire route.
Definition CartoTypeWrapper.h:797
A path defining a set of open and closed curves.
Definition CartoTypeGeometry.h:124
Definition CartoTypeWrapper.h:68
Result
Result codes returned by CartoType API functions.
Definition CartoTypeResult.h:15
@ Success
No error; a successful result.
Definition CartoTypeResult.h:17
@ ErrorInvalidArgument
This error is returned when an invalid argument has been given to a function.
Definition CartoTypeResult.h:123
FeatureConstants
Constants referring to the FeatureType and FeatureInfo classes.
Definition CartoTypeFeatureInfo.h:375
@ KMaxSubType
The maximum value for the sub-type of a non-route object.
Definition CartoTypeFeatureInfo.h:381
@ KRouteTypeCount
The number of feature types that are used for routes. These values are also indexes into the speed an...
Definition CartoTypeFeatureInfo.h:377
@ KGradientCount
The number of gradients.
Definition CartoTypeFeatureInfo.h:379
uint32_t constexpr FeatureTypeCode(int A, int B, int C)
Definition CartoTypeFeatureInfo.h:16
@ Position
A flag used in Framework.Navigate to indicate that the position is valid.
Definition CartoTypeWrapper.h:337
FeatureType
Every map object has a feature type.
Definition CartoTypeFeatureInfo.h:30
FeatureDiscriminator
The feature discriminator stored in a FeatureInfo object.
Definition CartoTypeFeatureInfo.h:362
@ TunnelRoute
A route that is a tunnel.
Definition CartoTypeFeatureInfo.h:368
@ NonRoute
Not a route.
Definition CartoTypeFeatureInfo.h:364
@ BridgeRoute
A route that is a bridge.
Definition CartoTypeFeatureInfo.h:366