OSDN Git Service

fix version
[meshio/pymeshio.git] / pymeshio / common.py
index 2f2fd6e..698b5f9 100644 (file)
@@ -3,11 +3,7 @@
 common utilities.\r
 """\r
 import math\r
-\r
-def radian_to_degree(x):\r
-    """darian to deglee"""\r
-\r
-    return x/math.pi * 180.0\r
+import struct\r
 \r
 \r
 """\r
@@ -171,6 +167,27 @@ class Quaternion(object):
         return Quaternion(axis[0]*s, axis[1]*s, axis[2]*s, c)\r
 \r
 \r
+class RGB(object):\r
+    """\r
+    material color\r
+    """\r
+    __slots__=['r', 'g', 'b']\r
+    def __init__(self, r=0, g=0, b=0):\r
+        self.r=r\r
+        self.g=g\r
+        self.b=b\r
+\r
+    def __getitem__(self, key):\r
+        if key==0:\r
+            return self.r\r
+        elif key==1:\r
+            return self.g\r
+        elif key==2:\r
+            return self.b\r
+        else:\r
+            assert(False)\r
+\r
+\r
 class RGBA(object):\r
     """\r
     material color\r
@@ -194,3 +211,72 @@ class RGBA(object):
         else:\r
             assert(False)\r
 \r
+\r
+"""\r
+utilities\r
+"""\r
+def radian_to_degree(x):\r
+    """darian to deglee"""\r
+\r
+    return x/math.pi * 180.0\r
+\r
+\r
+class ParseException(Exception):\r
+    pass\r
+\r
+\r
+def readall(path):\r
+    with open(path, "rb") as f:\r
+        return f.read()\r
+\r
+\r
+class BinaryLoader(object):\r
+    def __init__(self, io):\r
+        self.io=io\r
+\r
+    def unpack(self, fmt, size):\r
+        result=struct.unpack(fmt, self.io.read(size))\r
+        return result[0]\r
+\r
+    def read_uint(self, size):\r
+        if size==1:\r
+            return self.unpack("B", size)\r
+        if size==2:\r
+            return self.unpack("H", size)\r
+        if size==4:\r
+            return self.unpack("I", size)\r
+        print("not reach here")\r
+        raise ParseException("invalid int size: "+size)\r
+\r
+    def read_float(self):\r
+        return self.unpack("f", 4)\r
+\r
+    def read_vector2(self):\r
+        return Vector2(\r
+                self.read_float(), \r
+                self.read_float()\r
+                )\r
+\r
+    def read_vector3(self):\r
+        return Vector3(\r
+                self.read_float(), \r
+                self.read_float(), \r
+                self.read_float()\r
+                )\r
+\r
+    def read_rgba(self):\r
+        return RGBA(\r
+                self.read_float(), \r
+                self.read_float(), \r
+                self.read_float(),\r
+                self.read_float()\r
+                )\r
+\r
+    def read_rgb(self):\r
+        return RGB(\r
+                self.read_float(), \r
+                self.read_float(), \r
+                self.read_float()\r
+                )\r
+\r
+\r