/*
    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
