1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
|
from Config import *
import Pb
import base64
from Pb import Pb
import urlparse
class PbLandscape(Pb):
example_params = {
'imgdata' : open('Pb/Landscape/_base64img', 'rb').read(),
'texture' : 'http://someurl.biz/someimg.jpg',
'heightmap' : 'http://someurl.biz/someimg.jpg',
'name' : 'donkey'
}
def __init__(self,
heightmap=None,
imgdata=None,
texture=None,
name="",
):
super(PbLandscape,self).__init__();
self.params.set_val("heightmap", heightmap, value_type="string");
self.params.set_val("imgdata", imgdata, value_type="raw");
self.params.set_val("texture", texture, value_type="string");
self.params.set_val("username", name, value_type="string");
self.filename, self.filepath = self._filename_filepath_create(url=self.params.texture, extension="png")
def _saveImgData(self):
try:
up = urlparse.urlparse(self.params.imgdata)
head, data = up.path.split(',', 1)
bits = head.split(';')
mime_type = bits[0] if bits[0] else 'text/plain'
charset, b64 = 'ASCII', False
for bit in bits[1]:
if bit.startswith('charset='):
charset = bit[8:]
elif bit == 'base64':
b64 = True
# Do something smart with charset and b64 instead of assuming
plaindata = base64.b64decode(data)
with open(self.filepath, 'wb') as f:
f.write(plaindata)
except Exception as e:
self.err_warn(str(e));
def create(self, breakmode=""):
self._saveImgData();
|