OSDN Git Service

TogaGem1.103.2版より移行。
[mikutoga/TogaGem.git] / src / main / java / jp / sourceforge / mikutoga / parser / pmd / PmdParserExt2.java
1 /*\r
2  * pmd parser extensin 2\r
3  *\r
4  * License : The MIT License\r
5  * Copyright(c) 2010 MikuToga Partners\r
6  */\r
7 \r
8 package jp.sourceforge.mikutoga.parser.pmd;\r
9 \r
10 import java.io.IOException;\r
11 import jp.sourceforge.mikutoga.parser.MmdFormatException;\r
12 import jp.sourceforge.mikutoga.parser.MmdSource;\r
13 \r
14 /**\r
15  * PMDモデルファイルのパーサ拡張その2。\r
16  * ※独自トゥーンテクスチャファイル名対応\r
17  */\r
18 public class PmdParserExt2 extends PmdParserExt1 {\r
19 \r
20     private PmdToonHandler toonHandler = null;\r
21 \r
22     /**\r
23      * コンストラクタ。\r
24      * @param source 入力ソース\r
25      */\r
26     public PmdParserExt2(MmdSource source){\r
27         super(source);\r
28         return;\r
29     }\r
30 \r
31     /**\r
32      * トゥーンテクスチャファイルハンドラを登録する。\r
33      * @param handler ハンドラ\r
34      */\r
35     public void setToonHandler(PmdToonHandler handler){\r
36         this.toonHandler = handler;\r
37         return;\r
38     }\r
39 \r
40     /**\r
41      * {@inheritDoc}\r
42      * @throws IOException {@inheritDoc}\r
43      * @throws MmdFormatException {@inheritDoc}\r
44      */\r
45     @Override\r
46     protected void parseBody()\r
47             throws IOException, MmdFormatException{\r
48         super.parseBody();\r
49 \r
50         if(hasMore()){\r
51             parseToonName();\r
52         }\r
53 \r
54         return;\r
55     }\r
56 \r
57     /**\r
58      * 独自トゥーンテクスチャファイル名のパースと通知。\r
59      * @throws IOException IOエラー\r
60      * @throws MmdFormatException フォーマットエラー\r
61      */\r
62     private void parseToonName() throws IOException, MmdFormatException{\r
63         if(this.toonHandler == null){\r
64             skip(PmdLimits.MAXBYTES_TOONFILENAME * PmdLimits.TOON_FIXEDNUM);\r
65             return;\r
66         }\r
67 \r
68         this.toonHandler.loopStart(PmdToonHandler.TOON_LIST,\r
69                                    PmdLimits.TOON_FIXEDNUM );\r
70 \r
71         for(int ct = 0; ct < PmdLimits.TOON_FIXEDNUM; ct++){\r
72             String toonName =\r
73                     parseZeroTermString(PmdLimits.MAXBYTES_TOONFILENAME);\r
74             this.toonHandler.pmdToonFileInfo(toonName);\r
75 \r
76             this.toonHandler.loopNext(PmdToonHandler.TOON_LIST);\r
77         }\r
78 \r
79         this.toonHandler.loopEnd(PmdToonHandler.TOON_LIST);\r
80 \r
81         return;\r
82     }\r
83 \r
84 }\r