module m_wkml_lowlevel #ifdef DUMMYLIB use FoX_wxml, only : xmlf_t #else use m_common_error use fox_m_fsys_realtypes use FoX_wxml use FoX_common use FoX_utils, only: URI, parseURI, expressURI, destroyURI #endif implicit none private ! Subroutines public to users of FoX_wkml (rexported in that module) public kmlOpenDocument public kmlOpenFolder public kmlCloseFolder public kmlCloseDocument #ifndef DUMMYLIB ! Subroutines public inside wkml for kmlAdd public kmlAddname,kmlAddopen,kmlAddoutline,kmlAddextrude, & kmlAddfill,kmlAddvisibility,kmlAddtessellate,kmlAddrefreshVisibility,kmlAddflyToView,kmlAddaddress,kmlAddphoneNumber, & kmlAdddescription,kmlAdddescription_ch,kmlAdddescription_sp,kmlAdddescription_dp,& kmlAddaltitudeMode,kmlAddrefreshMode,kmlAddviewrefreshMode,kmlAddviewRefreshTime,& kmlAddbegin,kmlAddend,kmlAddcolorMode,kmlAddmessage,kmlAddcookie,kmlAddlinkName, & kmlAddlinkDescription, & kmlAdddrawOrder,kmlAddsouth,kmlAddeast,kmlAddwest,kmlAddheading,kmlAddhref,kmlAddkey,kmlAddlongitude,kmlAddlatitude, & kmlAddaltitude,kmlAddminRefreshPeriod,kmlAddlistItemType,kmlAddmaxAltitude,kmlAddminAltitude,kmlAddminLodPixels, & kmlAddmaxLodPixels,kmlAddminFadeExtent,kmlAddmaxFadeExtent,kmlAddrange,kmlAddtilt,kmlAddroll,kmlAddrequest,kmlAddrotation, & kmlAddscale,kmlAddtargetHref,kmlAddviewBoundScale,kmlAddwhen,kmlAddwidth, & kmlAddIcon_href,kmlAddIcon_refresh,kmlAddIcon_view, kmlAddStyleURL public :: kmlAddCoordinates ! Subroutines public inside wkml for kmlOpen and kmlClose public kmlOpencoordinates,kmlClosecoordinates,kmlOpenItemIcon,kmlCloseItemIcon,kmlAddstate, & kmlOpenAddressDetail,kmlCloseAddressDetail, kmlOpenChange,kmlCloseChange, & kmlOpenContainer,kmlCloseContainer,kmlOpenCreate,kmlCloseCreate,kmlOpenDelete,kmlCloseDelete, & kmlOpenFeature,kmlCloseFeature,kmlOpenGeometry,kmlCloseGeometry, & kmlOpenGeometryCollection,kmlCloseGeometryCollection,kmlOpenGroundOverlay,kmlCloseGroundOverlay,kmlOpenIcon,kmlCloseIcon, & kmlOpenLatLonAltBox,kmlCloseLatLonAltBox,kmlOpenLatLonBox,kmlCloseLatLonBox, & kmlOpenLink,kmlCloseLink,kmlOpenLocation,kmlCloseLocation,kmlOpenLod,kmlCloseLod,kmlOpenLookAt,kmlCloseLookAt, & kmlOpenModel,kmlCloseModel,kmlOpenMultiGeometry,kmlCloseMultiGeometry,kmlOpenNetworkLink,kmlCloseNetworkLink, & kmlOpenNetworkLinkControl,kmlCloseNetworkLinkControl,kmlOpenObject,kmlCloseObject,kmlOpenObjArrayField,kmlCloseObjArrayField, & kmlOpenObjField,kmlCloseObjField,kmlOpenOrientation,kmlCloseOrientation,kmlOpenOverlay,kmlCloseOverlay, & kmlOpenPair,kmlClosePair,kmlOpenPlacemark,kmlClosePlacemark,kmlOpenPoint,kmlClosePoint, & kmlOpenRegion,kmlCloseRegion,kmlOpenResponse,kmlCloseResponse,kmlOpenScale,kmlCloseScale, & kmlOpenSchema,kmlCloseSchema,kmlOpenSchemaField,kmlCloseSchemaField,kmlOpenScreenOverlay,kmlCloseScreenOverlay, & kmlOpenSimpleArrayField,kmlCloseSimpleArrayField,kmlOpenSimpleField,kmlCloseSimpleField,kmlOpenSnippet,kmlCloseSnippet, & kmlOpenStatus,kmlCloseStatus,kmlOpenTimePrimitive,kmlCloseTimePrimitive,kmlOpenTimeSpan,kmlCloseTimeSpan,kmlOpenTimeStamp, & kmlCloseTimeStamp,kmlOpenUpdate,kmlCloseUpdate,kmlOpenUrl,kmlCloseUrl ! kmlAdddescription support more data type interface kmlAdddescription module procedure kmlAdddescription_ch module procedure kmlAdddescription_sp module procedure kmlAdddescription_dp end interface interface kmlAddlongitude module procedure kmlAddlongitude_dp module procedure kmlAddlongitude_sp end interface interface kmlAddlatitude module procedure kmlAddlatitude_dp module procedure kmlAddlatitude_sp end interface interface kmlAddCoordinates module procedure kmlAddCoordinates_sp module procedure kmlAddCoordinates_dp module procedure kmlAddCoordinates_array_sp module procedure kmlAddCoordinates_array_dp end interface kmlAddCoordinates interface kmlAddScale module procedure kmlAddScale_int module procedure kmlAddScale_sp module procedure kmlAddScale_dp end interface kmlAddScale public :: kmlOpenInnerBoundaryIs, kmlCloseInnerBoundaryIs public :: kmlOpenOuterBoundaryIs, kmlCloseOuterBoundaryIs public :: kmlOpenLineString, kmlCloseLineString public :: kmlOpenLinearRing, kmlCloseLinearRing public :: kmlOpenPolygon, kmlClosePolygon #endif contains #ifndef DUMMYLIB !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddNamespace(xf, prefix, URI) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: prefix character(len=*), intent(in) :: URI if (xmlf_OpenTag(xf) /= "") & call FoX_error("Cannot do kmlAddNamespace after document output") call xml_DeclareNamespace(xf, URI, prefix) end subroutine kmlAddNamespace subroutine kmlAddname(xf, name) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: name call xml_NewElement(xf, 'name') call xml_AddCharacters(xf, name) call xml_EndElement(xf, 'name') end subroutine kmlAddname subroutine kmlAddopen(xf, folderopen) type(xmlf_t), intent(inout) :: xf logical, intent(in) :: folderopen character :: f f = merge('1', '0', folderopen) call xml_NewElement(xf, 'open') call xml_AddCharacters(xf, f) call xml_EndElement(xf, 'open') end subroutine kmlAddopen subroutine kmlAddoutline(xf, outline) type(xmlf_t), intent(inout) :: xf logical, intent(in) :: outline character :: o o = merge('1', '0', outline) call xml_NewElement(xf, 'outline') call xml_AddCharacters(xf, outline) call xml_EndElement(xf, 'outline') end subroutine kmlAddoutline subroutine kmlAddextrude(xf, extrude) type(xmlf_t), intent(inout) :: xf logical, intent(in) :: extrude character :: e e = merge('1', '0', extrude) call xml_NewElement(xf, 'extrude') call xml_AddCharacters(xf, e) call xml_EndElement(xf, 'extrude') end subroutine kmlAddextrude subroutine kmlAddfill(xf, fill) type(xmlf_t), intent(inout) :: xf logical, intent(in) :: fill character :: f f = merge('1', '0', fill) call xml_NewElement(xf, 'fill') call xml_AddCharacters(xf, f) call xml_EndElement(xf, 'fill') end subroutine kmlAddfill subroutine kmlAddvisibility(xf, visibility) type(xmlf_t), intent(inout) :: xf logical, intent(in) :: visibility character :: v v = merge('1', '0', visibility) call xml_NewElement(xf, 'visibility') call xml_AddCharacters(xf, v) call xml_EndElement(xf, 'visibility') end subroutine kmlAddvisibility subroutine kmlAddtessellate(xf, tessellate) type(xmlf_t), intent(inout) :: xf logical, intent(in) :: tessellate character :: t t = merge('1', '0', tessellate) call xml_NewElement(xf, 'tessellate') call xml_AddCharacters(xf, t) call xml_EndElement(xf, 'tessellate') end subroutine kmlAddtessellate subroutine kmlAddrefreshVisibility(xf, rvisibility) type(xmlf_t), intent(inout) :: xf character(len=1), intent(in) :: rvisibility call xml_NewElement(xf,'refreshVisibility') call xml_AddCharacters(xf,rvisibility) call xml_EndElement(xf,'refreshVisibility') end subroutine kmlAddrefreshVisibility !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddflyToView(xf, flytoview) type(xmlf_t), intent(inout) :: xf character(len=1), intent(in) :: flytoview call xml_NewElement(xf,'flyToView') call xml_AddCharacters(xf,flytoview) call xml_EndElement(xf,'flyToView') end subroutine kmlAddflyToView !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddaddress(xf, address) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: address call xml_NewElement(xf,'address') call xml_AddCharacters(xf,address) call xml_EndElement(xf,'address') end subroutine kmlAddaddress !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddphoneNumber(xf, phone) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: phone call xml_NewElement(xf,'phoneNumber') call xml_AddCharacters(xf,phone) call xml_EndElement(xf,'phoneNumber') end subroutine kmlAddphoneNumber !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !input as string subroutine kmlAdddescription_ch(xf, description) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: description call xml_NewElement(xf,'description') call xml_AddCharacters(xf,description) call xml_EndElement(xf,'description') end subroutine kmlAdddescription_ch !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! input as real and convert to string using wxml_common function str subroutine kmlAdddescription_sp(xf, description2) use Fox_wxml use FoX_common type(xmlf_t), intent(inout) :: xf real, intent(in) :: description2 call xml_NewElement(xf,'description') ! call xml_AddCharacters(xf,str(description2)) call xml_AddCharacters(xf,description2,'r') call xml_EndElement(xf,'description') end subroutine kmlAdddescription_sp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! input as real and convert to string using wxml_common function str subroutine kmlAdddescription_dp(xf, description2) use Fox_wxml use FoX_common type(xmlf_t), intent(inout) :: xf double precision, intent(in) :: description2 call xml_NewElement(xf,'description') ! call xml_AddCharacters(xf,str(description2)) call xml_AddCharacters(xf,description2,'r') call xml_EndElement(xf,'description') end subroutine kmlAdddescription_dp subroutine kmlAddaltitudeMode(xf, altitudemode) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: altitudemode if (altitudemode/='clampToGround' & .and.altitudemode/='relativeToGround' & .and.altitudeMode/='absolute') then call FoX_error('unknown altitudeMode value') endif call xml_NewElement(xf, 'altitudeMode') call xml_AddCharacters(xf, altitudemode) call xml_EndElement(xf,'altitudeMode') end subroutine kmlAddaltitudeMode subroutine kmlAddrefreshMode(xf, refreshmode) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: refreshmode call xml_NewElement(xf,'refreshMode') call xml_AddCharacters(xf,refreshmode) call xml_EndElement(xf,'refreshMode') end subroutine kmlAddrefreshMode !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddrefreshInterval(xf, refreshinterval) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: refreshinterval call xml_NewElement(xf,'refreshInterval') call xml_AddCharacters(xf,refreshinterval) call xml_EndElement(xf,'refreshInterval') end subroutine kmlAddrefreshInterval !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddviewrefreshMode(xf, viewrmode) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: viewrmode call xml_NewElement(xf,'viewRefreshMode') call xml_AddCharacters(xf,viewrmode) call xml_EndElement(xf,'viewRefreshMode') end subroutine kmlAddviewrefreshMode !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddviewRefreshTime(xf, viewrtime) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: viewrtime call xml_NewElement(xf,'viewRefreshTime') call xml_AddCharacters(xf,viewrtime) call xml_EndElement(xf,'viewRefreshTime') end subroutine kmlAddviewRefreshTime !1876-08-01 subroutine kmlAddbegin(xf, begin) ! 1984-08-11 date format type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: begin call xml_NewElement(xf,'begin') call xml_AddCharacters(xf,begin) call xml_EndElement(xf,'begin') end subroutine kmlAddbegin !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !1876-08-01 subroutine kmlAddend(xf, enddate) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: enddate call xml_NewElement(xf,'end') call xml_AddCharacters(xf,enddate) call xml_EndElement(xf,'end') end subroutine kmlAddend !normal subroutine kmlAddcolorMode(xf, colormode) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: colormode if (colorMode/="normal".and.colormode/="random") then call FoX_error("Invalid value for colormode in kmlAddColorMode") endif call xml_NewElement(xf, 'colorMode') call xml_AddCharacters(xf, colormode) call xml_EndElement(xf,'colorMode') end subroutine kmlAddcolorMode ! This is a pop-up message. You will only see this once subroutine kmlAddmessage(xf, message) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: message call xml_NewElement(xf,'message') call xml_AddCharacters(xf,message) call xml_EndElement(xf,'message') end subroutine kmlAddmessage !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !cookie=sometext subroutine kmlAddcookie(xf, cookie) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: cookie call xml_NewElement(xf,'cookie') call xml_AddCharacters(xf,cookie) call xml_EndElement(xf,'cookie') end subroutine kmlAddcookie !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !New KML features subroutine kmlAddlinkName(xf, linkName) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: linkName call xml_NewElement(xf,'linkName') call xml_AddCharacters(xf,linkName) call xml_EndElement(xf,'linkName') end subroutine kmlAddlinkName !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! subroutine kmlAddlinkDescription(xf, linkDescription) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: linkDescription call xml_NewElement(xf,'linkDescription') call xml_AddCharacters(xf,linkDescription) call xml_EndElement(xf,'linkDescription') end subroutine kmlAddlinkDescription !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! 0 subroutine kmlAdddrawOrder(xf, drawOrder) type(xmlf_t), intent(inout) :: xf character(len=1), intent(in) :: drawOrder call xml_NewElement(xf,'drawOrder') call xml_AddCharacters(xf,drawOrder) call xml_EndElement(xf,'drawOrder') end subroutine kmlAdddrawOrder !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !48.25475939255556 subroutine kmlAddnorth(xf, north) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: north call xml_NewElement(xf,'north') call xml_AddCharacters(xf,north) call xml_EndElement(xf,'north') end subroutine kmlAddnorth !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !48.25207367852141 subroutine kmlAddsouth(xf, south) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: south call xml_NewElement(xf,'south') call xml_AddCharacters(xf,south) call xml_EndElement(xf,'south') end subroutine kmlAddsouth !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !-90.86591508839973 subroutine kmlAddeast(xf, east) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: east call xml_NewElement(xf,'east') call xml_AddCharacters(xf,east) call xml_EndElement(xf,'east') end subroutine kmlAddeast !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !-90.8714285289695 subroutine kmlAddwest(xf, west) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: west call xml_NewElement(xf,'west') call xml_AddCharacters(xf,west) call xml_EndElement(xf,'west') end subroutine kmlAddwest !0 0-180 subroutine kmlAddheading(xf, heading) type(xmlf_t), intent(inout) :: xf real(dp), intent(in) :: heading ! Note that according to the schema the heading ! is a kml:angle360Type which can be between ! -360 and 360 degrees. This is not what the ! google docs say (0 -> 360), but we follow the ! schema here. Also, as this derived from a schema 1.0 ! data type, we need to include the fmt argument to ! avoid exponentail notation. ! ! Schema: http://schemas.opengis.net/kml/2.2.0/ogckml22.xsd ! Google docs: http://code.google.com/apis/kml/documentation/kmlreference.html#iconstyle ! if (heading<-360.0_dp.or.heading>360.0_dp) then call FoX_error("invalid value for heading") endif call xml_NewElement(xf, 'heading') call xml_AddCharacters(xf, heading, fmt='r10') call xml_EndElement(xf, 'heading') end subroutine kmlAddheading !C:/Documents and Settings/All Users/Documents/My Pictures/Sample Pictures/Sunset.jpg subroutine kmlAddhref(xf, url) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: url type(URI), pointer :: u call xml_NewElement(xf,'href') u => parseURI(url) if (.not.associated(u)) then call FoX_error("Invalid URI") endif call xml_AddCharacters(xf,expressURI(u)) call destroyURI(u) call xml_EndElement(xf,'href') end subroutine kmlAddhref !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !normal normal or highlight subroutine kmlAddkey(xf, key) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: key call xml_NewElement(xf,'key') call xml_AddCharacters(xf,key) call xml_EndElement(xf,'key') end subroutine kmlAddkey !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !39.55375305703105 subroutine kmlAddlongitude_dp(xf, longitude) type(xmlf_t), intent(inout) :: xf double precision, intent(in) :: longitude ! character(len=*), intent(in) :: longitude call xml_NewElement(xf,'longitude') call xml_AddCharacters(xf,longitude) call xml_EndElement(xf,'longitude') end subroutine kmlAddlongitude_dp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !39.55375305703105 subroutine kmlAddlongitude_sp(xf, longitude) type(xmlf_t), intent(inout) :: xf real, intent(in) :: longitude ! character(len=*), intent(in) :: longitude call xml_NewElement(xf,'longitude') call xml_AddCharacters(xf,longitude) call xml_EndElement(xf,'longitude') end subroutine kmlAddlongitude_sp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !-118.9813220168456 subroutine kmlAddlatitude_dp(xf, latitude) type(xmlf_t), intent(inout) :: xf double precision, intent(in) :: latitude ! character(len=*), intent(in) :: latitude call xml_NewElement(xf,'latitude') call xml_AddCharacters(xf,latitude) call xml_EndElement(xf,'latitude') end subroutine kmlAddlatitude_dp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !-118.9813220168456 subroutine kmlAddlatitude_sp(xf, latitude) type(xmlf_t), intent(inout) :: xf real, intent(in) :: latitude ! character(len=*), intent(in) :: latitude call xml_NewElement(xf,'latitude') call xml_AddCharacters(xf,latitude) call xml_EndElement(xf,'latitude') end subroutine kmlAddlatitude_sp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !1223 subroutine kmlAddaltitude(xf, altitude) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: altitude call xml_NewElement(xf,'altitude') call xml_AddCharacters(xf,altitude) call xml_EndElement(xf,'altitude') end subroutine kmlAddaltitude !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! seconds default=0 subroutine kmlAddminRefreshPeriod(xf, minRefreshPeriod) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: minRefreshPeriod call xml_NewElement(xf,'minRefreshPeriod') call xml_AddCharacters(xf,minRefreshPeriod) call xml_EndElement(xf,'minRefreshPeriod') end subroutine kmlAddminRefreshPeriod !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !checkHideChildren subroutine kmlAddlistItemType(xf, listItemType) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: listItemType call xml_NewElement(xf,'listItemType') call xml_AddCharacters(xf,listItemType) call xml_EndElement(xf,'listItemType') end subroutine kmlAddlistItemType !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !0 !Defaults to 0; specified in meters above sea level (and is affected by the specification) subroutine kmlAddmaxAltitude(xf, maxAltitude) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: maxAltitude call xml_NewElement(xf,'maxAltitude') call xml_AddCharacters(xf,maxAltitude) call xml_EndElement(xf,'maxAltitude') end subroutine kmlAddmaxAltitude !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !0 subroutine kmlAddminAltitude(xf, minAltitude) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: minAltitude call xml_NewElement(xf,'minAltitude') call xml_AddCharacters(xf,minAltitude) call xml_EndElement(xf,'minAltitude') end subroutine kmlAddminAltitude !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !128 ! (default = 0) Measurement in screen pixels that represents the minimum limit !of the visibility range for a given Region. Google Earth calculates the size of the Region ! when projected onto screen space. Then it computes the square root of the Region's area ! (if, for example, the Region is square and the viewpoint is directly above the Region, ! and the Region is not tilted, this measurement is equal to the width of the projected ! Region). If this measurement falls within the limits defined by and ! (and if the is in view), the Region is active. If ! this limit is not reached, the associated geometry is considered to be too far !from the user's viewpoint to be drawn. subroutine kmlAddminLodPixels(xf, minLodPixels) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: minLodPixels call xml_NewElement(xf,'minLodPixels') call xml_AddCharacters(xf,minLodPixels) call xml_EndElement(xf,'minLodPixels') end subroutine kmlAddminLodPixels !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !1024 ! (default = -1) Measurement in screen pixels that represents the maximum !limit of the visibility range for a given Region. subroutine kmlAddmaxLodPixels(xf, maxLodPixels) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: maxLodPixels call xml_NewElement(xf,'maxLodPixels') call xml_AddCharacters(xf,maxLodPixels) call xml_EndElement(xf,'maxLodPixels') end subroutine kmlAddmaxLodPixels !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !128 !minFadeExtent> (default = 0) Distance over which the geometry fades, from fully opaque to fully transparent. This ramp value, expressed in screen pixels, is applied at the minimum end of the LOD (visibility) limits. subroutine kmlAddminFadeExtent(xf, minFadeExtent) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: minFadeExtent call xml_NewElement(xf,'minFadeExtent') call xml_AddCharacters(xf,minFadeExtent) call xml_EndElement(xf,'minFadeExtent') end subroutine kmlAddminFadeExtent !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !128 ! (default = 0) Distance over which the geometry fades, from fully transparent to fully opaque. This ramp value, expressed in screen pixels, is applied at the maximum end of the LOD (visibility) limits. subroutine kmlAddmaxFadeExtent(xf, maxFadeExtent) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: maxFadeExtent call xml_NewElement(xf,'maxFadeExtent') call xml_AddCharacters(xf,maxFadeExtent) call xml_EndElement(xf,'maxFadeExtent') end subroutine kmlAddmaxFadeExtent !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !500 subroutine kmlAddrange(xf, range1) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: range1 call xml_NewElement(xf,'range') call xml_AddCharacters(xf,range1) call xml_EndElement(xf,'range') end subroutine kmlAddrange !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !45 subroutine kmlAddtilt(xf, tilt) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: tilt call xml_NewElement(xf,'tilt') call xml_AddCharacters(xf,tilt) call xml_EndElement(xf,'tilt') end subroutine kmlAddtilt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !0 subroutine kmlAddroll(xf, roll) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: roll call xml_NewElement(xf,'roll') call xml_AddCharacters(xf,roll) call xml_EndElement(xf,'roll') end subroutine kmlAddroll !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !geocode !currently, it is geocode subroutine kmlAddrequest(xf, geocode) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: geocode call xml_NewElement(xf,'request') call xml_AddCharacters(xf,geocode) call xml_EndElement(xf,'request') end subroutine kmlAddrequest !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !39.37878630116985 !Indicates the angle of rotation of the parent object. A value of 0 means no rotation. ! The value is an angle in degrees counterclockwise starting from north. Use ±180 to ! indicate the rotation of the parent object from 0. The center of the , !if not (.5,.5), is specified in . subroutine kmlAddrotation(xf, rotation) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: rotation call xml_NewElement(xf,'rotation') call xml_AddCharacters(xf,rotation) call xml_EndElement(xf,'rotation') end subroutine kmlAddrotation subroutine kmlAddScale_int(xf, scale) type(xmlf_t), intent(inout) :: xf integer, intent(in) :: scale call xml_NewElement(xf, 'scale') call xml_AddCharacters(xf, scale) call xml_EndElement(xf, 'scale') end subroutine kmlAddScale_int subroutine kmlAddScale_sp(xf, scale) type(xmlf_t), intent(inout) :: xf real(sp), intent(in) :: scale call xml_NewElement(xf, 'scale') call xml_AddCharacters(xf, str(scale, "r")) call xml_EndElement(xf, 'scale') end subroutine kmlAddScale_sp subroutine kmlAddScale_dp(xf, scale) type(xmlf_t), intent(inout) :: xf real(dp), intent(in) :: scale call xml_NewElement(xf, 'scale') call xml_AddCharacters(xf, str(scale, "r")) call xml_EndElement(xf, 'scale') end subroutine kmlAddScale_dp !http://www/~sam/January14Data/Point.kml subroutine kmlAddtargetHref(xf, targetHref) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: targetHref call xml_NewElement(xf,'targetHref') call xml_AddCharacters(xf,targetHref) call xml_EndElement(xf,'targetHref') end subroutine kmlAddtargetHref !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! !Scales the BBOX parameters before sending them to the server. Default = 1. A value < 1 specifies to use less than the full view (screen). A value >1 specifies to fetch an area that extends beyond the edges of the current view. subroutine kmlAddviewBoundScale(xf, viewBoundScale) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: viewBoundScale call xml_NewElement(xf,'viewBoundScale') call xml_AddCharacters(xf,viewBoundScale) call xml_EndElement(xf,'viewBoundScale') end subroutine kmlAddviewBoundScale !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !1997 !1997-07 !1997-07-16 !1997-07-16T07:30:15Z !1997-07-16T10:30:15+03:00 subroutine kmlAddwhen(xf, when) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: when call xml_NewElement(xf,'when') call xml_AddCharacters(xf,when) call xml_EndElement(xf,'when') end subroutine kmlAddwhen subroutine kmlAddwidth(xf, width) type(xmlf_t), intent(inout) :: xf integer, intent(in) :: width call xml_NewElement(xf, 'width') call xml_AddCharacters(xf, width) call xml_EndElement(xf, 'width') end subroutine kmlAddwidth !-90.86948943473118,48.25450093195546 !A single tuple consisting of floating point values for longitude, !latitude, and altitude (in that order). Longitude and latitude !values are in degrees, where longitude ≥ -180 and <= 180 latitude ! ≥ -90 and ≤ 90 altitude values (optional) are in meters above !sea level Do not include spaces between the three values that describe a coordinate. subroutine kmlAddcoordinates_sp(xf, x, y, z) type(xmlf_t), intent(inout) :: xf real(sp), intent(in) :: x,y real(sp), intent(in), optional :: z call xml_NewElement(xf, 'coordinates') call xml_AddCharacters(xf, x, 'r6') call xml_AddCharacters(xf, ',') call xml_AddCharacters(xf, y, 'r6') if (present(z)) then call xml_AddCharacters(xf, ',') call xml_AddCharacters(xf, z, 'r6') endif call xml_EndElement(xf, 'coordinates') end subroutine kmlAddcoordinates_sp subroutine kmlAddcoordinates_dp(xf, x, y, z) type(xmlf_t), intent(inout) :: xf real(dp), intent(in) :: x,y real(dp), intent(in), optional :: z call xml_NewElement(xf, 'coordinates') call xml_AddCharacters(xf, x, 'r6') call xml_AddCharacters(xf, ',') call xml_AddCharacters(xf, y, 'r6') if (present(z)) then call xml_AddCharacters(xf, ',') call xml_AddCharacters(xf, z, 'r6') endif call xml_EndElement(xf,'coordinates') end subroutine kmlAddcoordinates_dp subroutine kmlAddIcon_href(xf, url,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in) :: url call xml_NewElement(xf,'Icon') if (present(id)) call xml_AddAttribute(xf,'id', id) call kmlAddhref(xf,url) call xml_EndElement(xf,'Icon') end subroutine kmlAddIcon_href !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddIcon_refresh(xf, url, rmode, rinterval,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in) :: url, rmode, rinterval call xml_NewElement(xf,'Icon') if (present(id)) call xml_AddAttribute(xf,'id', id) call kmlAddhref(xf,url) call kmlAddrefreshMode(xf,rmode) call kmlAddrefreshInterval(xf,rinterval) call xml_EndElement(xf,'Icon') end subroutine kmlAddIcon_refresh !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlAddIcon_view(xf, url, rmode, rinterval,vrmode, vrtime, vbscale,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in) :: url, rmode, rinterval,vrmode, vrtime,vbscale call xml_NewElement(xf,'Icon') if (present(id)) call xml_AddAttribute(xf,'id', id) call kmlAddhref(xf,url) call kmlAddrefreshMode(xf,rmode) call kmlAddrefreshInterval(xf,rinterval) call kmlAddviewRefreshMode(xf,vrmode) call kmlAddviewRefreshTime(xf,vrtime) call kmlAddviewBoundScale(xf, vbscale) call xml_EndElement(xf,'Icon') end subroutine kmlAddIcon_view !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpencoordinates(xf) type(xmlf_t), intent(inout) :: xf call xml_NewElement(xf,'coordinates') end subroutine kmlOpencoordinates !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlClosecoordinates(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'coordinates') end subroutine kmlClosecoordinates !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenItemIcon(xf) type(xmlf_t), intent(inout) :: xf call xml_NewElement(xf,'ItemIcon') end subroutine kmlOpenItemIcon !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseItemIcon(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'ItemIcon') end subroutine kmlCloseItemIcon !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! - specifies the current state of the NetworkLink or Folder. Possible values are open, closed, error, fetching0, fetching1, and fetching2. These values can be combined by inserting a space between two values (no comma). ! subroutine kmlAddstate(xf, state) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: state call xml_NewElement(xf,'state') call xml_AddCharacters(xf,state) call xml_EndElement(xf,'state') end subroutine kmlAddstate !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenAddressDetail(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'AddressDetail') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenAddressDetail !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseAddressDetail(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'AddressDetail') end subroutine kmlCloseAddressDetail !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenChange(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Change') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenChange !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseChange(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Change') end subroutine kmlCloseChange !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenContainer(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Container') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenContainer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseContainer(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Container') end subroutine kmlCloseContainer !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenCreate(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Create') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenCreate !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseCreate(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Create') end subroutine kmlCloseCreate !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenDelete(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Delete') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenDelete !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseDelete(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Delete') end subroutine kmlCloseDelete #endif !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenDocument(xf,name,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in):: name character(len=*), intent(in), optional :: id #ifndef DUMMYLIB call xml_NewElement(xf,'Document') if (present(id)) call xml_AddAttribute(xf,'id', id) call kmladdname(xf,name) #endif end subroutine kmlOpenDocument !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseDocument(xf) type(xmlf_t), intent(inout) :: xf #ifndef DUMMYLIB call xml_EndElement(xf,'Document') #endif end subroutine kmlCloseDocument !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenFolder(xf,id,name) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in), optional:: name #ifndef DUMMYLIB call xml_NewElement(xf,'Folder') if (present(id)) call xml_AddAttribute(xf,'id', id) if (present(name)) then call kmladdname(xf,name) end if #endif end subroutine kmlOpenFolder !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseFolder(xf) type(xmlf_t), intent(inout) :: xf #ifndef DUMMYLIB call xml_EndElement(xf,'Folder') #endif end subroutine kmlCloseFolder !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! #ifndef DUMMYLIB subroutine kmlOpenFeature(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Feature') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenFeature !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseFeature(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Feature') end subroutine kmlCloseFeature !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenGeometry(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Geometry') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenGeometry !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseGeometry(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Geometry') end subroutine kmlCloseGeometry !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenGeometryCollection(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'GeometryCollection') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenGeometryCollection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseGeometryCollection(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'GeometryCollection') end subroutine kmlCloseGeometryCollection !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenGroundOverlay(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'GroundOverlay') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenGroundOverlay !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseGroundOverlay(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'GroundOverlay') end subroutine kmlCloseGroundOverlay !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenIcon(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Icon') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenIcon !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseIcon(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Icon') end subroutine kmlCloseIcon !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenLatLonAltBox(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'LatLonAltBox') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenLatLonAltBox !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseLatLonAltBox(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'LatLonAltBox') end subroutine kmlCloseLatLonAltBox !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenLatLonBox(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'LatLonBox') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenLatLonBox !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseLatLonBox(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'LatLonBox') end subroutine kmlCloseLatLonBox !#myIconStyleID !http://someserver.com/somestylefile.xml#restaurant subroutine kmlAddstyleUrl(xf, styleUrl) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: styleUrl call xml_NewElement(xf, 'styleUrl') call xml_AddCharacters(xf, styleUrl) call xml_EndElement(xf, 'styleUrl') end subroutine kmlAddstyleUrl subroutine kmlAddCoordinates_array_sp(xf, x, y, z, repeat) type(xmlf_t), intent(inout) :: xf real(sp), intent(in) :: x(:) real(sp), intent(in) :: y(:) real(sp), intent(in), optional :: z(:) logical, intent(in), optional :: repeat integer :: nodes, i logical :: repeat_ if (present(repeat)) then repeat_ = repeat else repeat_ = .false. endif nodes = size(x) if (nodes/=size(y)) then call FoX_error("Inconsistent array lengths in kmlAddCoordinates") endif if (present(z)) then if (nodes/=size(z)) then call FoX_error("Inconsistent array lengths in kmlAddCoordinates") endif endif call xml_NewElement(xf, 'coordinates') call xml_AddNewline(xf) do i = 1, nodes call xml_AddCharacters(xf, str(x(i), 'r6')//','//str(y(i), 'r6')) if (present(z)) then call xml_AddCharacters(xf, ','//str(z(i), 'r6')) end if call xml_AddNewline(xf) end do if (repeat_) then call xml_AddCharacters(xf, str(x(1), 'r6')//','//str(y(1), 'r6')) if (present(z)) then call xml_AddCharacters(xf, ','//str(z(1), 'r6')) end if call xml_AddNewline(xf) endif call xml_EndElement(xf, 'coordinates') end subroutine kmlAddCoordinates_array_sp subroutine kmlAddCoordinates_array_dp(xf, x, y, z, repeat) type(xmlf_t), intent(inout) :: xf real(dp), intent(in) :: x(:) real(dp), intent(in) :: y(:) real(dp), intent(in), optional :: z(:) logical, intent(in), optional :: repeat integer :: nodes, i logical :: repeat_ if (present(repeat)) then repeat_ = repeat else repeat_ = .false. endif nodes = size(x) if (nodes/=size(y)) then call FoX_error("Inconsistent array lengths in kmlAddCoordinates") endif if (present(z)) then if (nodes/=size(z)) then call FoX_error("Inconsistent array lengths in kmlAddCoordinates") endif endif call xml_NewElement(xf, 'coordinates') call xml_AddNewline(xf) do i = 1, nodes call xml_AddCharacters(xf, str(x(i), 'r6')//','//str(y(i), 'r6')) if (present(z)) then call xml_AddCharacters(xf, ','//str(z(i), 'r6')) end if call xml_AddNewline(xf) end do if (repeat_) then call xml_AddCharacters(xf, str(x(1), 'r6')//','//str(y(1), 'r6')) if (present(z)) then call xml_AddCharacters(xf, ','//str(z(1), 'r6')) end if call xml_AddNewline(xf) endif call xml_EndElement(xf, 'coordinates') end subroutine kmlAddCoordinates_array_dp subroutine kmlOpenLink(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Link') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenLink !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseLink(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Link') end subroutine kmlCloseLink !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenLocation(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Location') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenLocation !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseLocation(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Location') end subroutine kmlCloseLocation !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenLod(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Lod') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenLod !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseLod(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Lod') end subroutine kmlCloseLod !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenLookAt(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'LookAt') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenLookAt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseLookAt(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'LookAt') end subroutine kmlCloseLookAt !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenModel(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Model') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenModel !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseModel(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Model') end subroutine kmlCloseModel !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenMultiGeometry(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'MultiGeometry') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenMultiGeometry !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseMultiGeometry(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'MultiGeometry') end subroutine kmlCloseMultiGeometry !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenNetworkLink(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'NetworkLink') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenNetworkLink !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseNetworkLink(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'NetworkLink') end subroutine kmlCloseNetworkLink !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenNetworkLinkControl(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'NetworkLinkControl') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenNetworkLinkControl !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseNetworkLinkControl(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'NetworkLinkControl') end subroutine kmlCloseNetworkLinkControl !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! subroutine kmlOpenObject(xf,id,targetid) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id, targetid call xml_NewElement(xf,'Object') if (present(id)) call xml_AddAttribute(xf,'id', id) if (present(targetid)) call xml_AddAttribute(xf,'targetId', targetid) end subroutine kmlOpenObject !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseObject(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Object') end subroutine kmlCloseObject !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenObjArrayField(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'ObjArrayField') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenObjArrayField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseObjArrayField(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'ObjArrayField') end subroutine kmlCloseObjArrayField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenObjField(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'ObjField') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenObjField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseObjField(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'ObjField') end subroutine kmlCloseObjField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenOrientation(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Orientation') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenOrientation !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseOrientation(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Orientation') end subroutine kmlCloseOrientation !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenOverlay(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Overlay') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenOverlay !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseOverlay(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Overlay') end subroutine kmlCloseOverlay !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenPair(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Pair') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenPair !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlClosePair(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Pair') end subroutine kmlClosePair subroutine kmlOpenPlacemark(xf, id, name, description, styleurl) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in), optional :: name character(len=*), intent(in), optional :: description character(len=*), intent(in), optional :: styleurl call xml_NewElement(xf,'Placemark') if (present(id)) call xml_AddAttribute(xf, 'id', id) if (present(name)) call kmlAddName(xf, name) if (present(description)) call kmlAddDescription(xf, description) if (present(styleurl)) call kmlAddStyleURL(xf, styleurl) end subroutine kmlOpenPlacemark subroutine kmlClosePlacemark(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Placemark') end subroutine kmlClosePlacemark subroutine kmlOpenPoint(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Point') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenPoint !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlClosePoint(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Point') end subroutine kmlClosePoint subroutine kmlOpenRegion(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Region') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenRegion !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseRegion(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Region') end subroutine kmlCloseRegion !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !he accuracy attribute indicates how accurately the given address was able to be geocoded subroutine kmlOpenResponse(xf,accuracy) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: accuracy call xml_NewElement(xf,'Response') if (present(accuracy)) call xml_AddAttribute(xf,'accuracy', accuracy) end subroutine kmlOpenResponse !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseResponse(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Response') end subroutine kmlCloseResponse !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenScale(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Scale') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenScale !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseScale(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Scale') end subroutine kmlCloseScale !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !Specifies a custom KML schema that is typically used to extend and add metadata to KML objects. The "name" attribute is required. Currently, the only value for parent is "Placemark." subroutine kmlOpenSchema(xf,name1,parent) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: name1 character(len=*), intent(in), optional :: parent call xml_NewElement(xf,'Schema') call xml_AddAttribute(xf,'name', name1) if (present(parent)) call xml_AddAttribute(xf,'parent', parent) end subroutine kmlOpenSchema !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseSchema(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Schema') end subroutine kmlCloseSchema !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! subroutine kmlOpenSchemaField(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'SchemaField') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenSchemaField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseSchemaField(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'SchemaField') end subroutine kmlCloseSchemaField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenScreenOverlay(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'ScreenOverlay') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenScreenOverlay !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseScreenOverlay(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'ScreenOverlay') end subroutine kmlCloseScreenOverlay !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenSimpleArrayField(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'SimpleArrayField') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenSimpleArrayField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseSimpleArrayField(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'SimpleArrayField') end subroutine kmlCloseSimpleArrayField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! ! subroutine kmlOpenSimpleField(xf,name1,type1) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in) :: name1, type1 call xml_NewElement(xf,'SimpleField') call xml_AddAttribute(xf,'name', name1) call xml_AddAttribute(xf,'type', type1) end subroutine kmlOpenSimpleField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseSimpleField(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'SimpleField') end subroutine kmlCloseSimpleField !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !A short description of the feature. In Google Earth, this description is displayed in the ! Places panel under the name of the feature. If a Snippet is not supplied, the first two !lines of the are used. In Google Earth, if a Placemark contains both a !description and a Snippet, the appears beneath the Placemark in the Places !panel, and the appears in the Placemark's description balloon. This tag ! does not support HTML markup. has a maxLines attribute, an integer that ! specifies the maximum number of lines to display. Default for maxLines is 2. subroutine kmlOpenSnippet(xf,maxlines) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: maxlines call xml_NewElement(xf,'Snippet') if (present(maxlines)) call xml_AddAttribute(xf,'maxLines', maxlines) end subroutine kmlOpenSnippet !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseSnippet(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Snippet') end subroutine kmlCloseSnippet !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenStatus(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Status') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenStatus !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseStatus(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Status') end subroutine kmlCloseStatus !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenTimePrimitive(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'TimePrimitive') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenTimePrimitive !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseTimePrimitive(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'TimePrimitive') end subroutine kmlCloseTimePrimitive !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenTimeSpan(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'TimeSpan') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenTimeSpan !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseTimeSpan(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'TimeSpan') end subroutine kmlCloseTimeSpan !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenTimeStamp(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'TimeStamp') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenTimeStamp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseTimeStamp(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'TimeStamp') end subroutine kmlCloseTimeStamp !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlOpenUpdate(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Update') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenUpdate !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseUpdate(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Update') end subroutine kmlCloseUpdate !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !This element is deprecated in KML Release 2.1 and has been replaced by , which provides the additional functionality of Regions. subroutine kmlOpenUrl(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf,'Url') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenUrl !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! subroutine kmlCloseUrl(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Url') end subroutine kmlCloseUrl subroutine kmlOpenOuterBoundaryIs(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf, 'outerBoundaryIs') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenOuterBoundaryIs subroutine kmlCloseouterBoundaryIs(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf, 'outerBoundaryIs') end subroutine kmlCloseouterBoundaryIs subroutine kmlOpenInnerBoundaryIs(xf,id) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id call xml_NewElement(xf, 'innerBoundaryIs') if (present(id)) call xml_AddAttribute(xf,'id', id) end subroutine kmlOpenInnerBoundaryIs subroutine kmlCloseInnerBoundaryIs(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf, 'innerBoundaryIs') end subroutine kmlCloseInnerBoundaryIs subroutine kmlOpenLinearRing(xf, id, altitudeMode, tessellate, extrude) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in), optional :: altitudeMode logical, intent(in), optional :: tessellate logical, intent(in), optional :: extrude if (present(extrude).and.present(altitudeMode)) then if (extrude.and.altitudeMode=='clampToGround') then print*, "Inconsistent settings for extrude and altitudeMode" endif endif call xml_NewElement(xf, 'LinearRing') if (present(id)) call xml_AddAttribute(xf,'id', id) if (present(tessellate)) call kmlAddtessellate(xf, tessellate) if (present(altitudeMode)) call kmlAddAltitudeMode(xf, altitudeMode) if (present(extrude)) call kmlAddExtrude(xf, extrude) end subroutine kmlOpenLinearRing subroutine kmlCloseLinearRing(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'LinearRing') end subroutine kmlCloseLinearRing subroutine kmlOpenLineString(xf, id, altitudeMode, tessellate, extrude) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in), optional :: altitudeMode logical, intent(in), optional :: tessellate logical, intent(in), optional :: extrude if (present(extrude).and.present(altitudeMode)) then if (extrude.and.altitudeMode=='clampToGround') then print*, "Inconsistent settings for extrude and altitudeMode" endif endif call xml_NewElement(xf, 'LineString') if (present(id)) call xml_AddAttribute(xf,'id', id) if (present(tessellate)) call kmlAddtessellate(xf, tessellate) if (present(altitudeMode)) call kmlAddAltitudeMode(xf, altitudeMode) if (present(extrude)) call kmlAddExtrude(xf, extrude) end subroutine kmlOpenLineString subroutine kmlCloseLineString(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'LineString') end subroutine kmlCloseLineString subroutine kmlOpenPolygon(xf, id, altitudeMode, tessellate, extrude) type(xmlf_t), intent(inout) :: xf character(len=*), intent(in), optional :: id character(len=*), intent(in), optional :: altitudeMode logical, intent(in), optional :: tessellate logical, intent(in), optional :: extrude if (present(extrude).and.present(altitudeMode)) then if (extrude.and.altitudeMode=='clampToGround') then print*, "Inconsistent settings for extrude and altitudeMode" endif endif call xml_NewElement(xf, 'Polygon') if (present(id)) call xml_AddAttribute(xf,'id', id) if (present(tessellate)) call kmlAddtessellate(xf, tessellate) if (present(altitudeMode)) call kmlAddAltitudeMode(xf, altitudeMode) if (present(extrude)) call kmlAddExtrude(xf, extrude) end subroutine kmlOpenPolygon subroutine kmlClosePolygon(xf) type(xmlf_t), intent(inout) :: xf call xml_EndElement(xf,'Polygon') end subroutine kmlClosePolygon #endif end module m_wkml_lowlevel