6 #include "DgmlTextureTagWriter.h"
8 #include "GeoSceneTypes.h"
10 #include "GeoSceneTileDataset.h"
11 #include "DownloadPolicy.h"
12 #include "DgmlElementDictionary.h"
13 #include "ServerLayout.h"
20 static GeoTagWriterRegistrar s_writerTexture(
GeoTagWriter::QualifiedName( GeoSceneTypes::GeoSceneTileDatasetType, dgml::dgmlTag_nameSpace20 ),
21 new DgmlTextureTagWriter() );
23 bool DgmlTextureTagWriter::write(
const GeoNode *node, GeoWriter& writer)
const
25 const GeoSceneTileDataset *texture =
static_cast<const GeoSceneTileDataset*
>( node );
26 writer.writeStartElement( dgml::dgmlTag_Texture );
27 writer.writeAttribute(
"name", texture->name() );
28 writer.writeAttribute(
"expire",
QString::number( texture->expire() ) );
30 writer.writeStartElement( dgml::dgmlTag_SourceDir );
31 writer.writeAttribute(
"format", texture->fileFormat() );
32 if( texture->expire() ) {
33 writer.writeAttribute(
"expire",
QString::number( texture->expire() ) );
35 writer.writeCharacters( texture->sourceDir() );
36 writer.writeEndElement();
37 writer.writeStartElement( dgml::dgmlTag_TileSize );
38 writer.writeAttribute(
"width",
QString::number( texture->tileSize().width() ) );
39 writer.writeAttribute(
"height",
QString::number( texture->tileSize().height() ) );
40 writer.writeEndElement();
42 writer.writeOptionalElement( dgml::dgmlTag_InstallMap, texture->installMap() );
44 writer.writeStartElement( dgml::dgmlTag_StorageLayout );
45 if( texture->hasMaximumTileLevel() )
47 writer.writeAttribute(
"maximumTileLevel",
QString::number( texture->maximumTileLevel() ) );
48 writer.writeAttribute(
"levelZeroColumns",
QString::number( texture->levelZeroColumns() ) );
49 writer.writeAttribute(
"levelZeroRows",
QString::number( texture->levelZeroRows() ) );
50 writer.writeAttribute(
"mode", texture->serverLayout()->name() );
52 writer.writeEndElement();
54 if ( texture->downloadUrls().size() > 0 )
56 for(
int i = 0; i < texture->downloadUrls().size(); ++i )
58 QString protocol = texture->downloadUrls().
at(i).toString().left(texture->downloadUrls().at(i).toString().indexOf(
QLatin1Char(
':')));
60 int port = texture->downloadUrls().at(i).port();
64 writer.writeStartElement( dgml::dgmlTag_DownloadUrl );
65 writer.writeAttribute(
"protocol", protocol );
66 writer.writeAttribute(
"host",
host );
71 writer.writeAttribute(
"path", path );
72 writer.writeAttribute(
"query", query );
73 writer.writeEndElement();
77 for(
const DownloadPolicy *policy: texture->downloadPolicies() )
79 writer.writeStartElement( dgml::dgmlTag_DownloadPolicy );
83 writer.writeAttribute(
"usage",
"Browse" );
84 writer.writeAttribute(
"maximumConnections",
QString::number( policy->maximumConnections() ) );
89 writer.writeAttribute(
"usage",
"Bulk" );
90 writer.writeAttribute(
"maximumConnections",
QString::number( policy->maximumConnections() ) );
93 writer.writeEndElement();
96 writer.writeStartElement( dgml::dgmlTag_Projection );
97 const GeoSceneAbstractTileProjection::Type tileProjectionType = texture->tileProjectionType();
98 if (tileProjectionType == GeoSceneAbstractTileProjection::Mercator) {
99 writer.writeAttribute(
"name",
"Mercator" );
100 }
else if (tileProjectionType == GeoSceneAbstractTileProjection::Equirectangular) {
101 writer.writeAttribute(
"name",
"Equirectangular" );
103 writer.writeEndElement();
105 writer.writeStartElement( dgml::dgmlTag_Blending );
106 if (!texture->blending().isEmpty()) {
107 writer.writeAttribute(
"name", texture->blending() );
109 writer.writeEndElement();
111 writer.writeEndElement();