X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=pymeshio%2Fcommon.py;h=e67580d661891c4c9e661a9474d58f2958964f3e;hb=082e0c25082710d31b8026d5bb7f63a8869fdf13;hp=8ec017d9b459dbc082e3f96ebfb6ea432c2e5cb3;hpb=9cbcf2ff293043fd2c46785621fb9e150786a064;p=meshio%2Fpymeshio.git diff --git a/pymeshio/common.py b/pymeshio/common.py index 8ec017d..e67580d 100644 --- a/pymeshio/common.py +++ b/pymeshio/common.py @@ -3,20 +3,12 @@ common utilities. """ import math - -def radian_to_degree(x): - """darian to deglee""" - - return x/math.pi * 180.0 +import struct """ common structures. """ -class ParseException(Exception): - pass - - class Vector2(object): """ 2D coordinate for uv value @@ -219,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() + ) + +