-/*\r
- * pmd parser extension 1\r
- *\r
- * License : The MIT License\r
- * Copyright(c) 2010 MikuToga Partners\r
- */\r
-\r
-package jp.sourceforge.mikutoga.parser.pmd;\r
-\r
-import java.io.IOException;\r
-import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
-import jp.sourceforge.mikutoga.parser.MmdSource;\r
-\r
-/**\r
- * PMDモデルファイルのパーサ拡張その1。\r
- * ※英名対応\r
- */\r
-public class PmdParserExt1 extends PmdParserBase {\r
-\r
- private PmdEngHandler engHandler = null;\r
- private boolean hasEnglishInfo = true;\r
-\r
- /**\r
- * コンストラクタ。\r
- * @param source 入力ソース\r
- */\r
- public PmdParserExt1(MmdSource source){\r
- super(source);\r
- return;\r
- }\r
-\r
- /**\r
- * 英語ハンドラを登録する。\r
- * @param handler ハンドラ\r
- */\r
- public void setEngHandler(PmdEngHandler handler){\r
- this.engHandler = handler;\r
- return;\r
- }\r
-\r
- /**\r
- * {@inheritDoc}\r
- * @throws IOException {@inheritDoc}\r
- * @throws MmdFormatException {@inheritDoc}\r
- */\r
- @Override\r
- protected void parseBody()\r
- throws IOException, MmdFormatException{\r
- super.parseBody();\r
-\r
- if(hasMore()){\r
- parseEngHeader();\r
- if(this.hasEnglishInfo){\r
- parseEngBoneList();\r
- parseEngMorphName();\r
- parseEngBoneGroupName();\r
- }\r
- }\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * PMDモデル英語基本情報のパースと通知。\r
- * @throws IOException IOエラー\r
- * @throws MmdFormatException フォーマットエラー\r
- */\r
- private void parseEngHeader()\r
- throws IOException, MmdFormatException{\r
- this.hasEnglishInfo = parseBoolean();\r
-\r
- if(this.engHandler != null){\r
- this.engHandler.pmdEngEnabled(this.hasEnglishInfo);\r
- }\r
- if( ! this.hasEnglishInfo ) return;\r
-\r
- String modelName =\r
- parseZeroTermString(PmdLimits.MAXBYTES_MODELNAME);\r
- String description =\r
- parseZeroTermString(PmdLimits.MAXBYTES_MODELDESC);\r
- description = description.replace(CRLF, LF);\r
-\r
- if(this.engHandler != null){\r
- this.engHandler.pmdEngModelInfo(modelName, description);\r
- }\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * PMDモデル英語ボーン名のパースと通知。\r
- * @throws IOException IOエラー\r
- * @throws MmdFormatException フォーマットエラー\r
- */\r
- private void parseEngBoneList()\r
- throws IOException, MmdFormatException{\r
- int boneNum = getBoneCount();\r
-\r
- if(this.engHandler == null){\r
- skip(PmdLimits.MAXBYTES_BONENAME * boneNum);\r
- return;\r
- }\r
-\r
- this.engHandler.loopStart(PmdEngHandler.ENGBONE_LIST, boneNum);\r
-\r
- for(int ct = 0; ct < boneNum; ct++){\r
- String boneName =\r
- parseZeroTermString(PmdLimits.MAXBYTES_BONENAME);\r
- this.engHandler.pmdEngBoneInfo(boneName);\r
-\r
- this.engHandler.loopNext(PmdEngHandler.ENGBONE_LIST);\r
- }\r
-\r
- this.engHandler.loopEnd(PmdEngHandler.ENGBONE_LIST);\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * PMDモデル英語モーフ名のパースと通知。\r
- * @throws IOException IOエラー\r
- * @throws MmdFormatException フォーマットエラー\r
- */\r
- private void parseEngMorphName()\r
- throws IOException, MmdFormatException{\r
- int morphNum = getMorphCount() - 1; // base は英名なし\r
-\r
- if(this.engHandler == null){\r
- skip(PmdLimits.MAXBYTES_MORPHNAME * morphNum);\r
- return;\r
- }\r
-\r
- this.engHandler.loopStart(PmdEngHandler.ENGMORPH_LIST, morphNum);\r
-\r
- for(int ct = 0; ct < morphNum; ct++){\r
- String morphName =\r
- parseZeroTermString(PmdLimits.MAXBYTES_MORPHNAME);\r
- this.engHandler.pmdEngMorphInfo(morphName);\r
-\r
- this.engHandler.loopNext(PmdEngHandler.ENGMORPH_LIST);\r
- }\r
-\r
- this.engHandler.loopEnd(PmdEngHandler.ENGMORPH_LIST);\r
-\r
- return;\r
- }\r
-\r
- /**\r
- * PMDモデル英語ボーングループ名のパースと通知。\r
- * @throws IOException IOエラー\r
- * @throws MmdFormatException フォーマットエラー\r
- */\r
- private void parseEngBoneGroupName()\r
- throws IOException, MmdFormatException{\r
- int groupNum = getBoneGroupCount();\r
-\r
- if(this.engHandler == null){\r
- skip(PmdLimits.MAXBYTES_BONEGROUPNAME * groupNum);\r
- return;\r
- }\r
-\r
- this.engHandler.loopStart(PmdEngHandler.ENGBONEGROUP_LIST, groupNum);\r
-\r
- for(int ct = 0; ct < groupNum; ct++){\r
- String boneGroupName =\r
- parseZeroTermString(PmdLimits.MAXBYTES_BONEGROUPNAME);\r
- this.engHandler.pmdEngBoneGroupInfo(boneGroupName);\r
-\r
- this.engHandler.loopNext(PmdEngHandler.ENGBONEGROUP_LIST);\r
- }\r
-\r
- this.engHandler.loopEnd(PmdEngHandler.ENGBONEGROUP_LIST);\r
-\r
- return;\r
- }\r
-\r
-}\r
+/*
+ * pmd parser extension 1
+ *
+ * License : The MIT License
+ * Copyright(c) 2010 MikuToga Partners
+ */
+
+package jp.sourceforge.mikutoga.parser.pmd;
+
+import java.io.IOException;
+import jp.sourceforge.mikutoga.parser.MmdFormatException;
+import jp.sourceforge.mikutoga.parser.MmdSource;
+
+/**
+ * PMDモデルファイルのパーサ拡張その1。
+ * ※英名対応
+ */
+public class PmdParserExt1 extends PmdParserBase {
+
+ private PmdEngHandler engHandler = null;
+ private boolean hasEnglishInfo = true;
+
+ /**
+ * コンストラクタ。
+ * @param source 入力ソース
+ */
+ public PmdParserExt1(MmdSource source){
+ super(source);
+ return;
+ }
+
+ /**
+ * 英語ハンドラを登録する。
+ * @param handler ハンドラ
+ */
+ public void setEngHandler(PmdEngHandler handler){
+ this.engHandler = handler;
+ return;
+ }
+
+ /**
+ * {@inheritDoc}
+ * @throws IOException {@inheritDoc}
+ * @throws MmdFormatException {@inheritDoc}
+ */
+ @Override
+ protected void parseBody()
+ throws IOException, MmdFormatException{
+ super.parseBody();
+
+ if(hasMore()){
+ parseEngHeader();
+ if(this.hasEnglishInfo){
+ parseEngBoneList();
+ parseEngMorphName();
+ parseEngBoneGroupName();
+ }
+ }
+
+ return;
+ }
+
+ /**
+ * PMDモデル英語基本情報のパースと通知。
+ * @throws IOException IOエラー
+ * @throws MmdFormatException フォーマットエラー
+ */
+ private void parseEngHeader()
+ throws IOException, MmdFormatException{
+ this.hasEnglishInfo = parseBoolean();
+
+ if(this.engHandler != null){
+ this.engHandler.pmdEngEnabled(this.hasEnglishInfo);
+ }
+ if( ! this.hasEnglishInfo ) return;
+
+ String modelName =
+ parseZeroTermString(PmdLimits.MAXBYTES_MODELNAME);
+ String description =
+ parseZeroTermString(PmdLimits.MAXBYTES_MODELDESC);
+ description = description.replace(CRLF, LF);
+
+ if(this.engHandler != null){
+ this.engHandler.pmdEngModelInfo(modelName, description);
+ }
+
+ return;
+ }
+
+ /**
+ * PMDモデル英語ボーン名のパースと通知。
+ * @throws IOException IOエラー
+ * @throws MmdFormatException フォーマットエラー
+ */
+ private void parseEngBoneList()
+ throws IOException, MmdFormatException{
+ int boneNum = getBoneCount();
+
+ if(this.engHandler == null){
+ skip(PmdLimits.MAXBYTES_BONENAME * boneNum);
+ return;
+ }
+
+ this.engHandler.loopStart(PmdEngHandler.ENGBONE_LIST, boneNum);
+
+ for(int ct = 0; ct < boneNum; ct++){
+ String boneName =
+ parseZeroTermString(PmdLimits.MAXBYTES_BONENAME);
+ this.engHandler.pmdEngBoneInfo(boneName);
+
+ this.engHandler.loopNext(PmdEngHandler.ENGBONE_LIST);
+ }
+
+ this.engHandler.loopEnd(PmdEngHandler.ENGBONE_LIST);
+
+ return;
+ }
+
+ /**
+ * PMDモデル英語モーフ名のパースと通知。
+ * @throws IOException IOエラー
+ * @throws MmdFormatException フォーマットエラー
+ */
+ private void parseEngMorphName()
+ throws IOException, MmdFormatException{
+ int morphNum = getMorphCount() - 1; // base は英名なし
+
+ if(this.engHandler == null){
+ skip(PmdLimits.MAXBYTES_MORPHNAME * morphNum);
+ return;
+ }
+
+ this.engHandler.loopStart(PmdEngHandler.ENGMORPH_LIST, morphNum);
+
+ for(int ct = 0; ct < morphNum; ct++){
+ String morphName =
+ parseZeroTermString(PmdLimits.MAXBYTES_MORPHNAME);
+ this.engHandler.pmdEngMorphInfo(morphName);
+
+ this.engHandler.loopNext(PmdEngHandler.ENGMORPH_LIST);
+ }
+
+ this.engHandler.loopEnd(PmdEngHandler.ENGMORPH_LIST);
+
+ return;
+ }
+
+ /**
+ * PMDモデル英語ボーングループ名のパースと通知。
+ * @throws IOException IOエラー
+ * @throws MmdFormatException フォーマットエラー
+ */
+ private void parseEngBoneGroupName()
+ throws IOException, MmdFormatException{
+ int groupNum = getBoneGroupCount();
+
+ if(this.engHandler == null){
+ skip(PmdLimits.MAXBYTES_BONEGROUPNAME * groupNum);
+ return;
+ }
+
+ this.engHandler.loopStart(PmdEngHandler.ENGBONEGROUP_LIST, groupNum);
+
+ for(int ct = 0; ct < groupNum; ct++){
+ String boneGroupName =
+ parseZeroTermString(PmdLimits.MAXBYTES_BONEGROUPNAME);
+ this.engHandler.pmdEngBoneGroupInfo(boneGroupName);
+
+ this.engHandler.loopNext(PmdEngHandler.ENGBONEGROUP_LIST);
+ }
+
+ this.engHandler.loopEnd(PmdEngHandler.ENGBONEGROUP_LIST);
+
+ return;
+ }
+
+}