X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;f=blender%2Fio_mspgl%2Fdatafile.py;h=18e57c4e88f7a841b4699cc53c8af06a4b413ff4;hb=HEAD;hp=6ed3ea4575a3b63ff32de414d8fc7fbaaa2dcbee;hpb=42ae18b7a9dc13a72bf421e564f02829d4bdd5be;p=libs%2Fgl.git diff --git a/blender/io_mspgl/datafile.py b/blender/io_mspgl/datafile.py index 6ed3ea45..b9d0b3af 100644 --- a/blender/io_mspgl/datafile.py +++ b/blender/io_mspgl/datafile.py @@ -1,3 +1,5 @@ +import struct + class Statement: def __init__(self, keyword, *args): self.keyword = keyword @@ -19,7 +21,7 @@ class Statement: s += " false" elif type(a)==str: s += ' "{}"'.format(a) - elif type(a)==Resource: + elif type(a)==Resource or type(a)==RawData: s += ' "{}"'.format(a.name) else: s += " {}".format(a) @@ -43,6 +45,21 @@ class Token: return self.text +class RawData: + def __init__(self, name, data): + self.name = name + self.data = data + + def collect_references(self): + return [] + + def write_to_file(self, fn): + with open(fn, "wb") as out_file: + out_file.write(b"MDR\x01") + out_file.write(struct.pack(">QH", len(self.data), 0)) + out_file.write(self.data) + + class Resource: def __init__(self, name, keyword): self.name = name @@ -56,11 +73,11 @@ class Resource: resources = [] for a in args: - if type(a)==Resource: + if type(a)==Resource or type(a)==RawData: resources.append(a) if not resources: - raise TypeError("create_reference_statement expected a Resource argument, found none") + raise TypeError("create_reference_statement expected a Resource or RawData argument, found none") self.references += [r for r in resources if r not in self.references] return Statement(keyword, *args)