OSDN Git Service

modify javadoc format.
[mikutoga/TogaGem.git] / src / main / java / jp / sfjp / mikutoga / pmd / parser / PmdParserBase.java
index 720114c..6896871 100644 (file)
@@ -15,6 +15,8 @@ import jp.sfjp.mikutoga.bin.parser.CommonParser;
 import jp.sfjp.mikutoga.bin.parser.MmdEofException;
 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
 import jp.sfjp.mikutoga.bin.parser.TextDecoder;
+import jp.sfjp.mikutoga.pmd.PmdConst;
+import jp.sfjp.mikutoga.pmd.ShadingUtil;
 
 /**
  * PMDモデルファイルのパーサ基本部。
@@ -52,11 +54,11 @@ public class PmdParserBase extends CommonParser {
 
     private final TextDecoder decoderWin31j  = new TextDecoder(CS_WIN31J);
 
-    private PmdBasicHandler basicHandler =       NullHandler.HANDLER;
-    private PmdShapeHandler shapeHandler =       NullHandler.HANDLER;
-    private PmdMaterialHandler materialHandler = NullHandler.HANDLER;
-    private PmdBoneHandler boneHandler =         NullHandler.HANDLER;
-    private PmdMorphHandler morphHandler =       NullHandler.HANDLER;
+    private PmdBasicHandler basicHandler =       PmdUnifiedHandler.EMPTY;
+    private PmdShapeHandler shapeHandler =       PmdUnifiedHandler.EMPTY;
+    private PmdMaterialHandler materialHandler = PmdUnifiedHandler.EMPTY;
+    private PmdBoneHandler boneHandler =         PmdUnifiedHandler.EMPTY;
+    private PmdMorphHandler morphHandler =       PmdUnifiedHandler.EMPTY;
 
     private int boneCount      = -1;
     private int morphCount     = -1;
@@ -76,7 +78,9 @@ public class PmdParserBase extends CommonParser {
 
     /**
      * 文字列の最後がLF(0x0a)の場合削除する。
+     *
      * <p>ボーングループ名対策。
+     *
      * @param name 文字列
      * @return 末尾LFが削除された文字列
      */
@@ -93,42 +97,12 @@ public class PmdParserBase extends CommonParser {
     }
 
     /**
-     * シェーディング用ファイル情報から
-     * テクスチャファイル名とスフィアマップファイル名を分離する。
-     * @param shadingFile シェーディング用ファイル情報
-     * @return [0]:テクスチャファイル名 [1]:スフィアマップファイル名。
-     * 該当ファイル名が無い場合は空文字列。
-     */
-    public static String[] splitShadingFileInfo(String shadingFile){
-        String[] result;
-
-        result = shadingFile.split('\\'+"*", 2);
-        assert result.length == 1 || result.length == 2;
-
-        if(result.length == 1){
-            String onlyFile = result[0];
-            result = new String[2];
-            result[0] = "";
-            result[1] = "";
-            if(onlyFile.endsWith(".sph") || onlyFile.endsWith(".spa")){
-                result[1] = onlyFile;
-            }else{
-                result[0] = onlyFile;
-            }
-        }
-
-        assert result.length == 2;
-
-        return result;
-    }
-
-    /**
      * 基本情報通知ハンドラを登録する。
      * @param handler ハンドラ
      */
     public void setBasicHandler(PmdBasicHandler handler){
         if(handler == null){
-            this.basicHandler = NullHandler.HANDLER;
+            this.basicHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.basicHandler = handler;
         }
@@ -141,7 +115,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setShapeHandler(PmdShapeHandler handler){
         if(handler == null){
-            this.shapeHandler = NullHandler.HANDLER;
+            this.shapeHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.shapeHandler = handler;
         }
@@ -154,7 +128,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setMaterialHandler(PmdMaterialHandler handler){
         if(handler == null){
-            this.materialHandler = NullHandler.HANDLER;
+            this.materialHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.materialHandler = handler;
         }
@@ -167,7 +141,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setBoneHandler(PmdBoneHandler handler){
         if(handler == null){
-            this.boneHandler = NullHandler.HANDLER;
+            this.boneHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.boneHandler = handler;
         }
@@ -180,7 +154,7 @@ public class PmdParserBase extends CommonParser {
      */
     public void setMorphHandler(PmdMorphHandler handler){
         if(handler == null){
-            this.morphHandler = NullHandler.HANDLER;
+            this.morphHandler = PmdUnifiedHandler.EMPTY;
         }else{
             this.morphHandler = handler;
         }
@@ -213,11 +187,14 @@ public class PmdParserBase extends CommonParser {
 
     /**
      * 指定されたバイト長に収まるゼロ終端(0x00)文字列を読み込む。
+     *
      * <p>入力バイト列はwindows-31jエンコーディングとして解釈される。
+     *
      * <p>ゼロ終端以降のデータは無視されるが、
      * IO入力は指定バイト数だけ読み進められる。
      * ゼロ終端が見つからないまま指定バイト数が読み込み終わった場合、
      * そこまでのデータから文字列を構成する。
+     *
      * @param byteLen 読み込みバイト数
      * @return デコードされた文字列
      * @throws IOException IOエラー
@@ -285,9 +262,9 @@ public class PmdParserBase extends CommonParser {
         }
 
         String modelName =
-                parsePmdText(PmdLimits.MAXBYTES_MODELNAME);
+                parsePmdText(PmdConst.MAXBYTES_MODELNAME);
         String description =
-                parsePmdText(PmdLimits.MAXBYTES_MODELDESC);
+                parsePmdText(PmdConst.MAXBYTES_MODELDESC);
         description = description.replace(CRLF, LF);
 
         this.basicHandler.pmdHeaderInfo(header);
@@ -383,8 +360,8 @@ public class PmdParserBase extends CommonParser {
             int surfaceCount = parseLeInt();
 
             String shadingFile =
-                    parsePmdText(PmdLimits.MAXBYTES_TEXTUREFILENAME);
-            String[] splitted = splitShadingFileInfo(shadingFile);
+                    parsePmdText(PmdConst.MAXBYTES_TEXTUREFILENAME);
+            String[] splitted = ShadingUtil.splitShadingFileInfo(shadingFile);
             String textureFile = splitted[0];
             String sphereFile  = splitted[1];
 
@@ -446,7 +423,7 @@ public class PmdParserBase extends CommonParser {
 
         for(int ct = 0; ct < this.boneCount; ct++){
             String boneName =
-                    parsePmdText(PmdLimits.MAXBYTES_BONENAME);
+                    parsePmdText(PmdConst.MAXBYTES_BONENAME);
             int parentId  = parseLeUShortAsInt();
             int tailId    = parseLeUShortAsInt();
             byte boneKind = parseByte();
@@ -534,7 +511,7 @@ public class PmdParserBase extends CommonParser {
 
         for(int ct = 0; ct < this.morphCount; ct++){
             String morphName =
-                    parsePmdText(PmdLimits.MAXBYTES_MORPHNAME);
+                    parsePmdText(PmdConst.MAXBYTES_MORPHNAME);
             int vertexCount = parseLeInt();
             byte morphType  = parseByte();
 
@@ -614,7 +591,7 @@ public class PmdParserBase extends CommonParser {
 
         for(int ct = 0; ct < this.boneGroupCount; ct++){
             String groupName =
-                    parsePmdText(PmdLimits.MAXBYTES_BONEGROUPNAME);
+                    parsePmdText(PmdConst.MAXBYTES_BONEGROUPNAME);
             groupName = chopLastLF(groupName);
             this.boneHandler.pmdBoneGroupInfo(groupName);