X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=pymeshio%2Fcommon.py;h=e67580d661891c4c9e661a9474d58f2958964f3e;hb=082e0c25082710d31b8026d5bb7f63a8869fdf13;hp=7dadc16f151d14cffcf514e679c2de50c2d5ec13;hpb=59e49e6d770cd7dfacd551f005a5ca63c1a525b7;p=meshio%2Fpymeshio.git diff --git a/pymeshio/common.py b/pymeshio/common.py index 7dadc16..e67580d 100644 --- a/pymeshio/common.py +++ b/pymeshio/common.py @@ -3,11 +3,7 @@ common utilities. """ import math - -def radian_to_degree(x): - """darian to deglee""" - - return x/math.pi * 180.0 +import struct """ @@ -215,3 +211,72 @@ class RGBA(object): else: assert(False) + +""" +utilities +""" +def radian_to_degree(x): + """darian to deglee""" + + return x/math.pi * 180.0 + + +class ParseException(Exception): + pass + + +def readall(path: str) -> bytes: + with open(path, "rb") as f: + return f.read() + + +class BinaryLoader(object): + def __init__(self, io): + self.io=io + + def unpack(self, fmt: str, size: int) -> "read value as format": + result=struct.unpack(fmt, self.io.read(size)) + return result[0] + + def read_uint(self, size): + if size==1: + return self.unpack("B", size) + if size==2: + return self.unpack("H", size) + if size==4: + return self.unpack("I", size) + print("not reach here") + raise ParseException("invalid int size: "+size) + + def read_float(self): + return self.unpack("f", 4) + + def read_vector2(self): + return Vector2( + self.read_float(), + self.read_float() + ) + + def read_vector3(self): + return Vector3( + self.read_float(), + self.read_float(), + self.read_float() + ) + + def read_rgba(self): + return RGBA( + self.read_float(), + self.read_float(), + self.read_float(), + self.read_float() + ) + + def read_rgb(self): + return RGB( + self.read_float(), + self.read_float(), + self.read_float() + ) + +