~ubuntu-branches/ubuntu/precise/stellarium/precise

« back to all changes in this revision

Viewing changes to util/skyTile.py

  • Committer: Bazaar Package Importer
  • Author(s): Cédric Delfosse
  • Date: 2009-03-13 20:07:22 UTC
  • mfrom: (1.1.8 upstream) (4.1.2 squeeze)
  • Revision ID: james.westby@ubuntu.com-20090313200722-l66s4zy2s3e8up0s
Tags: 0.10.2-1
New upstream release

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
1
#!/usr/bin/python
2
2
# Fabien Chereau fchereau@eso.org
3
3
 
4
 
import sys
5
4
import os
6
 
import math
7
 
import qt
 
5
import gzip
8
6
 
9
7
def writePolys(pl, f):
 
8
        """Write a list of polygons pl into the file f.
 
9
        The result is under the form [[[ra1, de1],[ra2, de2],[ra3, de3],[ra4, de4]], [[ra1, de1],[ra2, de2],[ra3, de3]]]"""
10
10
        f.write('[')
11
11
        for idx,poly in enumerate(pl):
12
12
                f.write('[')
18
18
                if idx!=len(pl)-1:
19
19
                        f.write(', ')
20
20
        f.write(']')
21
 
                
 
21
 
 
22
class StructCredits:
 
23
        def __init__(self):
 
24
                self.short = None;
 
25
                self.full = None;
 
26
                self.infoUrl = None;
 
27
                return
 
28
        
 
29
        def outJSON(self, f, levTab):
 
30
                if self.short!=None:
 
31
                        f.write(levTab+'\t\t"short": "'+self.short+'",\n')
 
32
                if self.full!=None:
 
33
                        f.write(levTab+'\t\t"full": "'+self.full+'",\n')
 
34
                if self.infoUrl!=None:
 
35
                        f.write(levTab+'\t\t"infoUrl": "'+self.infoUrl+'",\n')
 
36
                f.seek(-2, os.SEEK_CUR)
 
37
                f.write('\n')
 
38
 
 
39
 
22
40
class SkyImageTile:
 
41
        """Contains all the properties needed to describe a multiresolution image tile"""
23
42
        def __init__(self):
24
43
                self.subTiles = []
25
 
                self.credits = None
26
 
                self.infoUrl = None
 
44
                self.imageCredits = StructCredits()
 
45
                self.serverCredits = StructCredits()
 
46
                self.imageInfo = StructCredits()
27
47
                self.imageUrl = None
 
48
                self.alphaBlend = None
28
49
                self.maxBrightness = None
29
50
                return
30
51
        
38
59
                f.close()
39
60
                
40
61
                if (qCompress):
41
 
                        ff = qt.QFile(fName)
42
 
                        ff.open(qt.IO_ReadOnly)
43
 
                        data = qt.qCompress(ff.readAll())
44
 
                        fout = open(fName+".qZ", 'w')
45
 
                        fout.write(data.data())
 
62
                        ff = open(fName)
 
63
                        fout = gzip.GzipFile(fName+".gz", 'w')
 
64
                        fout.write(ff.read())
46
65
                        fout.close()
47
66
                        os.remove(fName)
48
67
 
49
68
        def __subOutJSON(self, prefix, qCompress, maxLevelPerFile, f, curLev, outDir):
 
69
                """Write the tile in the file f"""
50
70
                levTab = ""
51
71
                for i in range(0,curLev):
52
72
                        levTab += '\t'
53
73
                
54
74
                f.write(levTab+'{\n')
55
 
                if self.credits:
56
 
                        f.write(levTab+'\t"credits" : "'+self.credits+'",\n')
57
 
                if self.infoUrl:
58
 
                        f.write(levTab+'\t"infoUrl" : "'+self.infoUrl+'",\n')
 
75
                if self.imageInfo.short!=None or self.imageInfo.full!=None or self.imageInfo.infoUrl!=None:
 
76
                        f.write(levTab+'\t"imageInfo": {\n')
 
77
                        self.imageInfo.outJSON(f, levTab)
 
78
                        f.write(levTab+'\t},\n')
 
79
                if self.imageCredits.short!=None or self.imageCredits.full!=None or self.imageCredits.infoUrl!=None:
 
80
                        f.write(levTab+'\t"imageCredits": {\n')
 
81
                        self.imageCredits.outJSON(f, levTab)
 
82
                        f.write(levTab+'\t},\n')
 
83
                if self.serverCredits.short!=None or self.serverCredits.full!=None or self.serverCredits.infoUrl!=None:
 
84
                        f.write(levTab+'\t"serverCredits": {\n')
 
85
                        self.serverCredits.outJSON(f, levTab)
 
86
                        f.write(levTab+'\t},\n')
59
87
                if self.imageUrl:
60
 
                        f.write(levTab+'\t"imageUrl" : "'+self.imageUrl+'",\n')
61
 
                f.write(levTab+'\t"worldCoords" : ')
 
88
                        f.write(levTab+'\t"imageUrl": "'+self.imageUrl+'",\n')
 
89
                f.write(levTab+'\t"worldCoords": ')
62
90
                writePolys(self.skyConvexPolygons, f)
63
91
                f.write(',\n')
64
 
                f.write(levTab+'\t"textureCoords" : ')
 
92
                f.write(levTab+'\t"textureCoords": ')
65
93
                writePolys(self.textureCoords, f)
66
94
                f.write(',\n')
67
95
                if self.maxBrightness:
68
 
                        f.write(levTab+'\t"maxBrightness" : %f,\n' % self.maxBrightness)
69
 
                f.write(levTab+'\t"minResolution" : %f' % self.minResolution)
 
96
                        f.write(levTab+'\t"maxBrightness": %f,\n' % self.maxBrightness)
 
97
                if self.alphaBlend==True:
 
98
                        f.write(levTab+'\t"alphaBlend": true,\n')
 
99
                f.write(levTab+'\t"minResolution": %f' % self.minResolution)
70
100
                if len(self.subTiles)==0:
71
101
                        f.write('\n'+levTab+'}')
72
102
                        return
73
103
                f.write(',\n')
74
 
                f.write(levTab+'\t"subTiles" : [\n')
 
104
                f.write(levTab+'\t"subTiles": [\n')
75
105
                
76
106
                if curLev+1<maxLevelPerFile:
77
107
                        # Write the tiles in the same file
83
113
                        # Write the tiles in a new file
84
114
                        for st in self.subTiles:
85
115
                                st.outputJSON(prefix, qCompress, maxLevelPerFile, outDir)
86
 
                                f.write(levTab+'\t\t"'+prefix+"x%.2d_%.2d_%.2d.json" % (2**st.level, st.i, st.j))
 
116
                                f.write(levTab+'\t\t{"$ref": "'+prefix+"x%.2d_%.2d_%.2d.json" % (2**st.level, st.i, st.j))
87
117
                                if qCompress:
88
 
                                        f.write(".qZ")
89
 
                                f.write('",\n')
 
118
                                        f.write(".gz")
 
119
                                f.write('"},\n')
90
120
                f.seek(-2, os.SEEK_CUR)
91
121
                f.write('\n'+levTab+'\t]\n')
92
122
                f.write(levTab+'}')