/*
    SPDX-FileCopyrightText: 2007 Nikolas Zimmermann <zimmermann@kde.org>
    SPDX-License-Identifier: LGPL-2.0-or-later
*/

#ifndef MARBLE_KML_KMLELEMENTDICTIONARY_H
#define MARBLE_KML_KMLELEMENTDICTIONARY_H

#include "geodata_export.h"

namespace Marble
{

// Lists all known KML 2.1 tags (https://developers.google.com/kml/documentation/kmlreferencel)
namespace kml
{
GEODATA_EXPORT extern const char kmlTag_nameSpace20[];
GEODATA_EXPORT extern const char kmlTag_nameSpace21[];
GEODATA_EXPORT extern const char kmlTag_nameSpace22[];
GEODATA_EXPORT extern const char kmlTag_nameSpaceOgc22[];
GEODATA_EXPORT extern const char kmlTag_nameSpaceGx22[];
GEODATA_EXPORT extern const char kmlTag_nameSpaceMx[];

GEODATA_EXPORT extern const char kmlTag_address[];
GEODATA_EXPORT extern const char kmlTag_AddressDetails[];
GEODATA_EXPORT extern const char kmlTag_Alias[];
GEODATA_EXPORT extern const char kmlTag_altitude[];
GEODATA_EXPORT extern const char kmlTag_altitudeMode[];
GEODATA_EXPORT extern const char kmlTag_BalloonStyle[];
GEODATA_EXPORT extern const char kmlTag_begin[];
GEODATA_EXPORT extern const char kmlTag_bgColor[];
GEODATA_EXPORT extern const char kmlTag_bottomFov[];
GEODATA_EXPORT extern const char kmlTag_Camera[];
GEODATA_EXPORT extern const char kmlTag_Change[];
GEODATA_EXPORT extern const char kmlTag_code[];
GEODATA_EXPORT extern const char kmlTag_color[];
GEODATA_EXPORT extern const char kmlTag_colorMode[];
GEODATA_EXPORT extern const char kmlTag_ColorStyle[];
GEODATA_EXPORT extern const char kmlTag_Container[];
GEODATA_EXPORT extern const char kmlTag_cookie[];
GEODATA_EXPORT extern const char kmlTag_coordinates[];
GEODATA_EXPORT extern const char kmlTag_Create[];
GEODATA_EXPORT extern const char kmlTag_Data[];
GEODATA_EXPORT extern const char kmlTag_Delete[];
GEODATA_EXPORT extern const char kmlTag_description[];
GEODATA_EXPORT extern const char kmlTag_displayMode[];
GEODATA_EXPORT extern const char kmlTag_displayName[];
GEODATA_EXPORT extern const char kmlTag_Document[];
GEODATA_EXPORT extern const char kmlTag_drawOrder[];
GEODATA_EXPORT extern const char kmlTag_duration[];
GEODATA_EXPORT extern const char kmlTag_east[];
GEODATA_EXPORT extern const char kmlTag_end[];
GEODATA_EXPORT extern const char kmlTag_expires[];
GEODATA_EXPORT extern const char kmlTag_ExtendedData[];
GEODATA_EXPORT extern const char kmlTag_extrude[];
GEODATA_EXPORT extern const char kmlTag_Feature[];
GEODATA_EXPORT extern const char kmlTag_fill[];
GEODATA_EXPORT extern const char kmlTag_flyToMode[];
GEODATA_EXPORT extern const char kmlTag_flyToView[];
GEODATA_EXPORT extern const char kmlTag_Folder[];
GEODATA_EXPORT extern const char kmlTag_geomColor[];
GEODATA_EXPORT extern const char kmlTag_Geometry[];
GEODATA_EXPORT extern const char kmlTag_GeometryCollection[];
GEODATA_EXPORT extern const char kmlTag_geomScale[];
GEODATA_EXPORT extern const char kmlTag_gridOrigin[];
GEODATA_EXPORT extern const char kmlTag_GroundOverlay[];
GEODATA_EXPORT extern const char kmlTag_h[];
GEODATA_EXPORT extern const char kmlTag_heading[];
GEODATA_EXPORT extern const char kmlTag_height[];
GEODATA_EXPORT extern const char kmlTag_href[];
GEODATA_EXPORT extern const char kmlTag_hotSpot[];
GEODATA_EXPORT extern const char kmlTag_httpQuery[];
GEODATA_EXPORT extern const char kmlTag_Icon[];
GEODATA_EXPORT extern const char kmlTag_IconStyle[];
GEODATA_EXPORT extern const char kmlTag_ImagePyramid[];
GEODATA_EXPORT extern const char kmlTag_innerBoundaryIs[];
GEODATA_EXPORT extern const char kmlTag_ItemIcon[];
GEODATA_EXPORT extern const char kmlTag_key[];
GEODATA_EXPORT extern const char kmlTag_kml[];
GEODATA_EXPORT extern const char kmlTag_labelColor[];
GEODATA_EXPORT extern const char kmlTag_LabelStyle[];
GEODATA_EXPORT extern const char kmlTag_latitude[];
GEODATA_EXPORT extern const char kmlTag_LatLonAltBox[];
GEODATA_EXPORT extern const char kmlTag_LatLonBox[];
GEODATA_EXPORT extern const char kmlTag_LatLonQuad[];
GEODATA_EXPORT extern const char kmlTag_leftFov[];
GEODATA_EXPORT extern const char kmlTag_LinearRing[];
GEODATA_EXPORT extern const char kmlTag_LineString[];
GEODATA_EXPORT extern const char kmlTag_LineStyle[];
GEODATA_EXPORT extern const char kmlTag_Link[];
GEODATA_EXPORT extern const char kmlTag_linkDescription[];
GEODATA_EXPORT extern const char kmlTag_linkName[];
GEODATA_EXPORT extern const char kmlTag_linkSnippet[];
GEODATA_EXPORT extern const char kmlTag_listItemType[];
GEODATA_EXPORT extern const char kmlTag_ListStyle[];
GEODATA_EXPORT extern const char kmlTag_Location[];
GEODATA_EXPORT extern const char kmlTag_Lod[];
GEODATA_EXPORT extern const char kmlTag_longitude[];
GEODATA_EXPORT extern const char kmlTag_LookAt[];
GEODATA_EXPORT extern const char kmlTag_maxAltitude[];
GEODATA_EXPORT extern const char kmlTag_maxFadeExtent[];
GEODATA_EXPORT extern const char kmlTag_maxHeight[];
GEODATA_EXPORT extern const char kmlTag_maxLodPixels[];
GEODATA_EXPORT extern const char kmlTag_maxSessionLength[];
GEODATA_EXPORT extern const char kmlTag_maxWidth[];
GEODATA_EXPORT extern const char kmlTag_message[];
GEODATA_EXPORT extern const char kmlTag_Metadata[];
GEODATA_EXPORT extern const char kmlTag_minAltitude[];
GEODATA_EXPORT extern const char kmlTag_minFadeExtent[];
GEODATA_EXPORT extern const char kmlTag_minLodPixels[];
GEODATA_EXPORT extern const char kmlTag_minRefreshPeriod[];
GEODATA_EXPORT extern const char kmlTag_Model[];
GEODATA_EXPORT extern const char kmlTag_MultiGeometry[];
GEODATA_EXPORT extern const char kmlTag_name[];
GEODATA_EXPORT extern const char kmlTag_near[];
GEODATA_EXPORT extern const char kmlTag_NetworkLink[];
GEODATA_EXPORT extern const char kmlTag_NetworkLinkControl[];
GEODATA_EXPORT extern const char kmlTag_north[];
GEODATA_EXPORT extern const char kmlTag_Object[];
GEODATA_EXPORT extern const char kmlTag_ObjArrayField[];
GEODATA_EXPORT extern const char kmlTag_ObjField[];
GEODATA_EXPORT extern const char kmlTag_open[];
GEODATA_EXPORT extern const char kmlTag_Orientation[];
GEODATA_EXPORT extern const char kmlTag_OsmPlacemarkData[];
GEODATA_EXPORT extern const char kmlTag_member[];
GEODATA_EXPORT extern const char kmlTag_nd[];
GEODATA_EXPORT extern const char kmlTag_tag[];
GEODATA_EXPORT extern const char kmlTag_outerBoundaryIs[];
GEODATA_EXPORT extern const char kmlTag_outline[];
GEODATA_EXPORT extern const char kmlTag_Overlay[];
GEODATA_EXPORT extern const char kmlTag_overlayXY[];
GEODATA_EXPORT extern const char kmlTag_Pair[];
GEODATA_EXPORT extern const char kmlTag_phoneNumber[];
GEODATA_EXPORT extern const char kmlTag_PhotoOverlay[];
GEODATA_EXPORT extern const char kmlTag_Placemark[];
GEODATA_EXPORT extern const char kmlTag_Point[];
GEODATA_EXPORT extern const char kmlTag_Polygon[];
GEODATA_EXPORT extern const char kmlTag_PolyStyle[];
GEODATA_EXPORT extern const char kmlTag_range[];
GEODATA_EXPORT extern const char kmlTag_refreshInterval[];
GEODATA_EXPORT extern const char kmlTag_refreshMode[];
GEODATA_EXPORT extern const char kmlTag_refreshVisibility[];
GEODATA_EXPORT extern const char kmlTag_Region[];
GEODATA_EXPORT extern const char kmlTag_request[];
GEODATA_EXPORT extern const char kmlTag_ResourceMap[];
GEODATA_EXPORT extern const char kmlTag_Response[];
GEODATA_EXPORT extern const char kmlTag_rightFov[];
GEODATA_EXPORT extern const char kmlTag_roll[];
GEODATA_EXPORT extern const char kmlTag_rotation[];
GEODATA_EXPORT extern const char kmlTag_rotationXY[];
GEODATA_EXPORT extern const char kmlTag_Scale[];
GEODATA_EXPORT extern const char kmlTag_scale[];
GEODATA_EXPORT extern const char kmlTag_Schema[];
GEODATA_EXPORT extern const char kmlTag_SchemaData[];
GEODATA_EXPORT extern const char kmlTag_SchemaField[];
GEODATA_EXPORT extern const char kmlTag_ScreenOverlay[];
GEODATA_EXPORT extern const char kmlTag_screenXY[];
GEODATA_EXPORT extern const char kmlTag_shape[];
GEODATA_EXPORT extern const char kmlTag_SimpleArrayData[];
GEODATA_EXPORT extern const char kmlTag_SimpleArrayField[];
GEODATA_EXPORT extern const char kmlTag_SimpleField[];
GEODATA_EXPORT extern const char kmlTag_SimpleData[];
GEODATA_EXPORT extern const char kmlTag_size[];
GEODATA_EXPORT extern const char kmlTag_Snippet[];
GEODATA_EXPORT extern const char kmlTag_south[];
GEODATA_EXPORT extern const char kmlTag_sourceHref[];
GEODATA_EXPORT extern const char kmlTag_state[];
GEODATA_EXPORT extern const char kmlTag_Status[];
GEODATA_EXPORT extern const char kmlTag_Style[];
GEODATA_EXPORT extern const char kmlTag_StyleMap[];
GEODATA_EXPORT extern const char kmlTag_StyleSelector[];
GEODATA_EXPORT extern const char kmlTag_styleUrl[];
GEODATA_EXPORT extern const char kmlTag_targetHref[];
GEODATA_EXPORT extern const char kmlTag_tessellate[];
GEODATA_EXPORT extern const char kmlTag_text[];
GEODATA_EXPORT extern const char kmlTag_textColor[];
GEODATA_EXPORT extern const char kmlTag_tileSize[];
GEODATA_EXPORT extern const char kmlTag_tilt[];
GEODATA_EXPORT extern const char kmlTag_TimeSpan[];
GEODATA_EXPORT extern const char kmlTag_TimeStamp[];
GEODATA_EXPORT extern const char kmlTag_topFov[];
GEODATA_EXPORT extern const char kmlTag_Update[];
GEODATA_EXPORT extern const char kmlTag_Url[];
GEODATA_EXPORT extern const char kmlTag_value[];
GEODATA_EXPORT extern const char kmlTag_viewBoundScale[];
GEODATA_EXPORT extern const char kmlTag_viewFormat[];
GEODATA_EXPORT extern const char kmlTag_viewRefreshMode[];
GEODATA_EXPORT extern const char kmlTag_viewRefreshTime[];
GEODATA_EXPORT extern const char kmlTag_ViewVolume[];
GEODATA_EXPORT extern const char kmlTag_visibility[];
GEODATA_EXPORT extern const char kmlTag_w[];
GEODATA_EXPORT extern const char kmlTag_west[];
GEODATA_EXPORT extern const char kmlTag_when[];
GEODATA_EXPORT extern const char kmlTag_width[];
GEODATA_EXPORT extern const char kmlTag_x[];
GEODATA_EXPORT extern const char kmlTag_y[];
GEODATA_EXPORT extern const char kmlTag_z[];

// Google KML Extension Namespace (https://developers.google.com/kml/documentation/kmlreference#kml-extension-namespace-and-the-gx-prefix)
GEODATA_EXPORT extern const char kmlTag_AnimatedUpdate[];
GEODATA_EXPORT extern const char kmlTag_FlyTo[];
GEODATA_EXPORT extern const char kmlTag_MultiTrack[];
GEODATA_EXPORT extern const char kmlTag_Track[];
GEODATA_EXPORT extern const char kmlTag_coord[];
GEODATA_EXPORT extern const char kmlTag_delayedStart[];
GEODATA_EXPORT extern const char kmlTag_SoundCue[];
GEODATA_EXPORT extern const char kmlTag_Tour[];
GEODATA_EXPORT extern const char kmlTag_TourControl[];
GEODATA_EXPORT extern const char kmlTag_Wait[];
GEODATA_EXPORT extern const char kmlTag_Playlist[];
GEODATA_EXPORT extern const char kmlTag_playMode[];
GEODATA_EXPORT extern const char kmlTag_balloonVisibility[];
#ifdef KML_LAZY_IMP
// preliminary implementation for the extra defined Tags
GEODATA_EXPORT extern const char kmlTag_MarblePlacemark[];
GEODATA_EXPORT extern const char kmlTag_area[];
GEODATA_EXPORT extern const char kmlTag_pop[];
GEODATA_EXPORT extern const char kmlTag_role[];
GEODATA_EXPORT extern const char kmlTag_CountryNameCode[];
GEODATA_EXPORT extern const char kmlTag_countrycode[];
#endif // KML_LAZY_IMP
}

// Helper macros
#define KML_DEFINE_TAG_HANDLER_20(Name) GEODATA_DEFINE_TAG_HANDLER(kml, Kml, Name, kmlTag_nameSpace20)
#define KML_DEFINE_TAG_HANDLER_21(Name) GEODATA_DEFINE_TAG_HANDLER(kml, Kml, Name, kmlTag_nameSpace21)
#define KML_DEFINE_TAG_HANDLER_22(Name) GEODATA_DEFINE_TAG_HANDLER(kml, Kml, Name, kmlTag_nameSpace22)
#define KML_DEFINE_TAG_HANDLER_OGC22(Name) GEODATA_DEFINE_TAG_HANDLER(kml, Kml, Name, kmlTag_nameSpaceOgc22)
#define KML_DEFINE_TAG_HANDLER_GX22(Name) GEODATA_DEFINE_TAG_HANDLER(kml, Kml, Name, kmlTag_nameSpaceGx22)
#define KML_DEFINE_TAG_HANDLER_MX(Name) GEODATA_DEFINE_TAG_HANDLER(kml, Kml, Name, kmlTag_nameSpaceMx)

#define KML_DEFINE_TAG_HANDLER(Name)                                                                                                                           \
    KML_DEFINE_TAG_HANDLER_20(Name)                                                                                                                            \
    KML_DEFINE_TAG_HANDLER_21(Name)                                                                                                                            \
    KML_DEFINE_TAG_HANDLER_22(Name)                                                                                                                            \
    KML_DEFINE_TAG_HANDLER_OGC22(Name)

}

#endif
