OSDN Git Service

1.105.3-SNAPSHOT版開発開始
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / pmd / pmdloader / PmdLoader.java
index 0b0c87b..1c4b0eb 100644 (file)
-/*\r
- * PMD file loader\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2010 MikuToga Partners\r
- */\r
-\r
-package jp.sourceforge.mikutoga.pmd.pmdloader;\r
-\r
-import java.io.IOException;\r
-import java.util.ArrayList;\r
-import java.util.List;\r
-import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
-import jp.sourceforge.mikutoga.parser.MmdSource;\r
-import jp.sourceforge.mikutoga.parser.pmd.PmdParser;\r
-import jp.sourceforge.mikutoga.pmd.MorphPart;\r
-import jp.sourceforge.mikutoga.pmd.PmdModel;\r
-\r
-/**\r
- * PMDモデルファイルを読み込むためのローダ。\r
- */\r
-public class PmdLoader {\r
-\r
-    private PmdModel model;\r
-    private PmdParser parser;\r
-    private TextBuilder textBuilder;\r
-\r
-    private boolean loaded = false;\r
-    private boolean hasMoreData = false;\r
-\r
-    /**\r
-     * コンストラクタ。\r
-     * @param source PMDファイル入力ソース\r
-     */\r
-    public PmdLoader(MmdSource source){\r
-        super();\r
-\r
-        this.model = new PmdModel();\r
-        this.parser = new PmdParser(source);\r
-        this.textBuilder = new TextBuilder(this.model);\r
-\r
-        setHandler();\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * パーサに各種ハンドラの設定を行う。\r
-     */\r
-    private void setHandler(){\r
-        ShapeBuilder    shapeBuilder    = new ShapeBuilder(this.model);\r
-        MaterialBuilder materialBuilder = new MaterialBuilder(this.model);\r
-        BoneBuilder     boneBuilder     = new BoneBuilder(this.model);\r
-        MorphBuilder    morphBuilder    = new MorphBuilder(this.model);\r
-        ToonBuilder     toonBuilder     = new ToonBuilder(this.model);\r
-        RigidBuilder    rigidBuilder    = new RigidBuilder(this.model);\r
-        JointBuilder    jointBuilder    = new JointBuilder(this.model);\r
-\r
-        this.parser.setBasicHandler(this.textBuilder);\r
-        this.parser.setShapeHandler(shapeBuilder);\r
-        this.parser.setMaterialHandler(materialBuilder);\r
-        this.parser.setBoneHandler(boneBuilder);\r
-        this.parser.setMorphHandler(morphBuilder);\r
-        this.parser.setEngHandler(this.textBuilder);\r
-        this.parser.setToonHandler(toonBuilder);\r
-        this.parser.setRigidHandler(rigidBuilder);\r
-        this.parser.setJointHandler(jointBuilder);\r
-\r
-        List<MorphPart> morphPartList = new ArrayList<MorphPart>();\r
-        morphBuilder.setMorphPartList(morphPartList);\r
-        this.textBuilder.setMorphPartList(morphPartList);\r
-        morphPartList.clear();\r
-\r
-        return;\r
-    }\r
-\r
-    /**\r
-     * PMDファイルの読み込みを行いモデル情報を返す。\r
-     * 1インスタンスにつき一度しかロードできない。\r
-     * @return モデル情報\r
-     * @throws IOException 入力エラー\r
-     * @throws MmdFormatException PMDファイルフォーマットの異常を検出\r
-     * @throws IllegalStateException このインスタンスで再度のロードを試みた。\r
-     */\r
-    public PmdModel load()\r
-            throws IOException,\r
-                   MmdFormatException,\r
-                   IllegalStateException {\r
-        if(this.loaded) throw new IllegalStateException();\r
-\r
-        PmdModel result;\r
-        try{\r
-            this.parser.parsePmd();\r
-        }finally{\r
-            this.loaded = true;\r
-\r
-            result = this.model;\r
-            this.hasMoreData = this.textBuilder.hasMoreData();\r
-\r
-            this.model = null;\r
-            this.parser = null;\r
-            this.textBuilder = null;\r
-        }\r
-\r
-        return result;\r
-    }\r
-\r
-    /**\r
-     * ロード処理が正常終了したのにまだ読み込んでいない部分が放置されているか判定する。\r
-     * MMDでの仕様拡張によるPMDファイルフォーマットの拡張が行われた場合を想定。\r
-     * @return 読み込んでいない部分があればtrue\r
-     */\r
-    public boolean hasMoreData(){\r
-        return this.hasMoreData;\r
-    }\r
-\r
-}\r
+/*
+ * PMD file loader
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.pmd.pmdloader;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+import jp.sourceforge.mikutoga.parser.MmdFormatException;
+import jp.sourceforge.mikutoga.parser.MmdSource;
+import jp.sourceforge.mikutoga.parser.pmd.PmdParser;
+import jp.sourceforge.mikutoga.pmd.MorphPart;
+import jp.sourceforge.mikutoga.pmd.PmdModel;
+
+/**
+ * PMDモデルファイルを読み込むためのローダ。
+ */
+public class PmdLoader {
+
+    private PmdModel model;
+    private PmdParser parser;
+    private TextBuilder textBuilder;
+
+    private boolean loaded = false;
+    private boolean hasMoreData = false;
+
+    /**
+     * コンストラクタ。
+     * @param source PMDファイル入力ソース
+     */
+    public PmdLoader(MmdSource source){
+        super();
+
+        this.model = new PmdModel();
+        this.parser = new PmdParser(source);
+        this.textBuilder = new TextBuilder(this.model);
+
+        setHandler();
+
+        return;
+    }
+
+    /**
+     * パーサに各種ハンドラの設定を行う。
+     */
+    private void setHandler(){
+        ShapeBuilder    shapeBuilder    = new ShapeBuilder(this.model);
+        MaterialBuilder materialBuilder = new MaterialBuilder(this.model);
+        BoneBuilder     boneBuilder     = new BoneBuilder(this.model);
+        MorphBuilder    morphBuilder    = new MorphBuilder(this.model);
+        ToonBuilder     toonBuilder     = new ToonBuilder(this.model);
+        RigidBuilder    rigidBuilder    = new RigidBuilder(this.model);
+        JointBuilder    jointBuilder    = new JointBuilder(this.model);
+
+        this.parser.setBasicHandler(this.textBuilder);
+        this.parser.setShapeHandler(shapeBuilder);
+        this.parser.setMaterialHandler(materialBuilder);
+        this.parser.setBoneHandler(boneBuilder);
+        this.parser.setMorphHandler(morphBuilder);
+        this.parser.setEngHandler(this.textBuilder);
+        this.parser.setToonHandler(toonBuilder);
+        this.parser.setRigidHandler(rigidBuilder);
+        this.parser.setJointHandler(jointBuilder);
+
+        List<MorphPart> morphPartList = new ArrayList<MorphPart>();
+        morphBuilder.setMorphPartList(morphPartList);
+        this.textBuilder.setMorphPartList(morphPartList);
+        morphPartList.clear();
+
+        return;
+    }
+
+    /**
+     * PMDファイルの読み込みを行いモデル情報を返す。
+     * 1インスタンスにつき一度しかロードできない。
+     * @return モデル情報
+     * @throws IOException 入力エラー
+     * @throws MmdFormatException PMDファイルフォーマットの異常を検出
+     * @throws IllegalStateException このインスタンスで再度のロードを試みた。
+     */
+    public PmdModel load()
+            throws IOException,
+                   MmdFormatException,
+                   IllegalStateException {
+        if(this.loaded) throw new IllegalStateException();
+
+        PmdModel result;
+        try{
+            this.parser.parsePmd();
+        }finally{
+            this.loaded = true;
+
+            result = this.model;
+            this.hasMoreData = this.textBuilder.hasMoreData();
+
+            this.model = null;
+            this.parser = null;
+            this.textBuilder = null;
+        }
+
+        return result;
+    }
+
+    /**
+     * ロード処理が正常終了したのにまだ読み込んでいない部分が放置されているか判定する。
+     * MMDでの仕様拡張によるPMDファイルフォーマットの拡張が行われた場合を想定。
+     * @return 読み込んでいない部分があればtrue
+     */
+    public boolean hasMoreData(){
+        return this.hasMoreData;
+    }
+
+}