summaryrefslogtreecommitdiff
path: root/lib/Pb/Landscape/__init__.py
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Pb/Landscape/__init__.py')
-rwxr-xr-xlib/Pb/Landscape/__init__.py48
1 files changed, 48 insertions, 0 deletions
diff --git a/lib/Pb/Landscape/__init__.py b/lib/Pb/Landscape/__init__.py
new file mode 100755
index 0000000..33eedd6
--- /dev/null
+++ b/lib/Pb/Landscape/__init__.py
@@ -0,0 +1,48 @@
+from Config import *
+import Pb
+import base64
+from Pb import Pb
+import urlparse, re
+
+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, **kwargs):
+ super(PbLandscape,self).__init__();
+ _definitions = {
+ 'heightmap': {'type': 'string'} ,
+ 'imgdata': {'type': 'raw' } ,
+ 'texture': {'type': 'string' } ,
+ 'username': {'type': 'string'} ,
+ }
+ self.params.definitions_import(_definitions, kwargs, classname=self.__class__.__name__);
+ _namepart = re.sub(r'https?:?/?/?', '', str(self.params.texture))
+ self.filename, self.filepath = self._filename_filepath_create(url=_namepart, extension="png")
+
+ def _saveImgData(self):
+ try:
+ up = urlparse.urlparse(str(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();