OSDN Git Service

checkstyle対応
authorOlyutorskii <olyutorskii@users.osdn.me>
Tue, 26 Nov 2013 22:17:16 +0000 (07:17 +0900)
committerOlyutorskii <olyutorskii@users.osdn.me>
Tue, 26 Nov 2013 22:17:16 +0000 (07:17 +0900)
31 files changed:
src/main/java/jp/sfjp/mikutoga/pmd/model/BoneGroup.java
src/main/java/jp/sfjp/mikutoga/pmd/model/BoneInfo.java
src/main/java/jp/sfjp/mikutoga/pmd/model/DynamicsInfo.java
src/main/java/jp/sfjp/mikutoga/pmd/model/IKChain.java
src/main/java/jp/sfjp/mikutoga/pmd/model/JointInfo.java
src/main/java/jp/sfjp/mikutoga/pmd/model/ListUtil.java
src/main/java/jp/sfjp/mikutoga/pmd/model/Material.java
src/main/java/jp/sfjp/mikutoga/pmd/model/MorphPart.java
src/main/java/jp/sfjp/mikutoga/pmd/model/MorphVertex.java
src/main/java/jp/sfjp/mikutoga/pmd/model/PmdModel.java
src/main/java/jp/sfjp/mikutoga/pmd/model/RigidGroup.java
src/main/java/jp/sfjp/mikutoga/pmd/model/RigidInfo.java
src/main/java/jp/sfjp/mikutoga/pmd/model/RigidShape.java
src/main/java/jp/sfjp/mikutoga/pmd/model/SerialNumbered.java
src/main/java/jp/sfjp/mikutoga/pmd/model/ShadeInfo.java
src/main/java/jp/sfjp/mikutoga/pmd/model/Surface.java
src/main/java/jp/sfjp/mikutoga/pmd/model/ToonMap.java
src/main/java/jp/sfjp/mikutoga/pmd/model/Vertex.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/BoneBuilder.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MaterialBuilder.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/MorphBuilder.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/PmdExporterBase.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/RigidBuilder.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/ShapeBuilder.java
src/main/java/jp/sfjp/mikutoga/pmd/model/binio/TextBuilder.java
src/main/java/jp/sfjp/mikutoga/pmd/model/package-info.java [new file with mode: 0644]
src/main/java/jp/sfjp/mikutoga/pmd/model/xml/ExporterMaterial.java
src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema101009.java
src/main/java/jp/sfjp/mikutoga/pmd/model/xml/Schema130128.java
src/main/java/jp/sfjp/mikutoga/pmd2xml/Pmd2XmlConv.java
src/main/java/jp/sfjp/mikutoga/pmd2xml/XmlInputUtil.java

index 0c6eae5..564eff7 100644 (file)
@@ -26,6 +26,7 @@ public class BoneGroup implements SerialNumbered , Iterable<BoneInfo> {
 
     private int serialNo = -1;
 
 
     private int serialNo = -1;
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -34,6 +35,7 @@ public class BoneGroup implements SerialNumbered , Iterable<BoneInfo> {
         return;
     }
 
         return;
     }
 
+
     /**
      * ボーングループ名を返す。
      * @return ボーングループ名
     /**
      * ボーングループ名を返す。
      * @return ボーングループ名
index 9c1f879..e227e60 100644 (file)
@@ -16,6 +16,8 @@ import jp.sfjp.mikutoga.pmd.BoneType;
  */
 public class BoneInfo implements SerialNumbered {
 
  */
 public class BoneInfo implements SerialNumbered {
 
+    private static final String NO_BONE = "NONE";
+
     private final I18nText boneName = new I18nText();
     private BoneType boneType;
 
     private final I18nText boneName = new I18nText();
     private BoneType boneType;
 
@@ -27,7 +29,8 @@ public class BoneInfo implements SerialNumbered {
 
     private int rotationRatio;
 
 
     private int rotationRatio;
 
-    private int serialNo = -1;
+    private int boneSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -37,6 +40,7 @@ public class BoneInfo implements SerialNumbered {
         return;
     }
 
         return;
     }
 
+
     /**
      * ボーン名を返す。
      * @return ボーン名
     /**
      * ボーン名を返す。
      * @return ボーン名
@@ -151,7 +155,7 @@ public class BoneInfo implements SerialNumbered {
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.boneSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -161,7 +165,7 @@ public class BoneInfo implements SerialNumbered {
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.boneSerialNo;
     }
 
     /**
     }
 
     /**
@@ -173,7 +177,7 @@ public class BoneInfo implements SerialNumbered {
         StringBuilder result = new StringBuilder();
 
         result.append("Bone")
         StringBuilder result = new StringBuilder();
 
         result.append("Bone")
-              .append(this.serialNo)
+              .append(this.boneSerialNo)
               .append("(")
               .append(this.boneName.getPrimaryText())
               .append(")");
               .append("(")
               .append(this.boneName.getPrimaryText())
               .append(")");
@@ -183,11 +187,11 @@ public class BoneInfo implements SerialNumbered {
 
         result.append(" prev=");
         if(this.prevBone != null) result.append(this.prevBone.getBoneName());
 
         result.append(" prev=");
         if(this.prevBone != null) result.append(this.prevBone.getBoneName());
-        else                      result.append("NONE");
+        else                      result.append(NO_BONE);
 
         result.append(" next=");
         if(this.nextBone != null) result.append(this.nextBone.getBoneName());
 
         result.append(" next=");
         if(this.nextBone != null) result.append(this.nextBone.getBoneName());
-        else                      result.append("NONE");
+        else                      result.append(NO_BONE);
 
         if(this.boneType == BoneType.LINKEDROT){
             result.append(" rotraio=").append(this.rotationRatio);
 
         if(this.boneType == BoneType.LINKEDROT){
             result.append(" rotraio=").append(this.rotationRatio);
@@ -196,7 +200,7 @@ public class BoneInfo implements SerialNumbered {
             if(this.srcBone != null){
                 result.append(this.srcBone.getBoneName());
             }else{
             if(this.srcBone != null){
                 result.append(this.srcBone.getBoneName());
             }else{
-                result.append("NONE");
+                result.append(NO_BONE);
             }
         }
 
             }
         }
 
index 7c98761..77e457f 100644 (file)
@@ -25,6 +25,7 @@ public class DynamicsInfo {
     /** 摩擦力。 */
     private float friction;
 
     /** 摩擦力。 */
     private float friction;
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -33,6 +34,7 @@ public class DynamicsInfo {
         return;
     }
 
         return;
     }
 
+
     /**
      * 質量を返す。
      * @return 質量
     /**
      * 質量を返す。
      * @return 質量
@@ -125,11 +127,12 @@ public class DynamicsInfo {
     @Override
     public String toString(){
         StringBuilder result = new StringBuilder();
     @Override
     public String toString(){
         StringBuilder result = new StringBuilder();
+        final String delim = ", ";
 
 
-        result.append("mass=").append(this.mass).append(", ");
-        result.append("damping(Pos)=").append(this.dampingPos).append(", ");
-        result.append("damping(Rot)=").append(this.dampingRot).append(", ");
-        result.append("restitution=").append(this.restitution).append(", ");
+        result.append("mass=").append(this.mass).append(delim);
+        result.append("damping(Pos)=").append(this.dampingPos).append(delim);
+        result.append("damping(Rot)=").append(this.dampingRot).append(delim);
+        result.append("restitution=").append(this.restitution).append(delim);
         result.append("friction=").append(this.friction);
 
         return result.toString();
         result.append("friction=").append(this.friction);
 
         return result.toString();
index 3fd1749..58134d1 100644 (file)
@@ -23,6 +23,7 @@ public class IKChain implements Iterable<BoneInfo> {
 
     private final List<BoneInfo> chainList = new ArrayList<BoneInfo>();
 
 
     private final List<BoneInfo> chainList = new ArrayList<BoneInfo>();
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -31,6 +32,7 @@ public class IKChain implements Iterable<BoneInfo> {
         return;
     }
 
         return;
     }
 
+
     /**
      * IKボーンを設定する。
      * @param bone IKボーン
     /**
      * IKボーンを設定する。
      * @param bone IKボーン
index 89daa6e..f965e63 100644 (file)
@@ -32,6 +32,7 @@ public class JointInfo {
     private final TripletRange posRange = new TripletRange();
     private final TripletRange rotRange = new TripletRange();
 
     private final TripletRange posRange = new TripletRange();
     private final TripletRange rotRange = new TripletRange();
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -40,6 +41,7 @@ public class JointInfo {
         return;
     }
 
         return;
     }
 
+
     /**
      * ジョイント名を返す。
      * @return ジョイント名
     /**
      * ジョイント名を返す。
      * @return ジョイント名
@@ -66,12 +68,12 @@ public class JointInfo {
 
     /**
      * 連結する剛体を設定する。
 
     /**
      * 連結する剛体を設定する。
-     * @param rigidA 連結剛体A
-     * @param rigidB 連結剛体B
+     * @param rigidAArg 連結剛体A
+     * @param rigidBArg 連結剛体B
      */
      */
-    public void setRigidPair(RigidInfo rigidA, RigidInfo rigidB){
-        this.rigidA = rigidA;
-        this.rigidB = rigidB;
+    public void setRigidPair(RigidInfo rigidAArg, RigidInfo rigidBArg){
+        this.rigidA = rigidAArg;
+        this.rigidB = rigidBArg;
         return;
     }
 
         return;
     }
 
index 1a43fbb..7d8090c 100644 (file)
@@ -24,6 +24,7 @@ public final class ListUtil {
         throw new AssertionError();
     }
 
         throw new AssertionError();
     }
 
+
     /**
      * リストの出現順にシリアルナンバーを割り振る。
      * シリアルナンバー先頭は0。
     /**
      * リストの出現順にシリアルナンバーを割り振る。
      * シリアルナンバー先頭は0。
index 6131327..e17a6bc 100644 (file)
@@ -19,6 +19,13 @@ import jp.sfjp.mikutoga.corelib.I18nText;
  */
 public class Material implements Iterable<Surface> {
 
  */
 public class Material implements Iterable<Surface> {
 
+    // sRGBカラー情報配列インデックス
+    private static final int IDX_RED   = 0;
+    private static final int IDX_GREEN = 1;
+    private static final int IDX_BLUE  = 2;
+    private static final int IDX_ALPHA = 3;
+
+
     private final I18nText materialName = new I18nText();
 
     private Color diffuseColor;
     private final I18nText materialName = new I18nText();
 
     private Color diffuseColor;
@@ -34,6 +41,7 @@ public class Material implements Iterable<Surface> {
 
     private final List<Surface> surfaceList = new ArrayList<Surface>();
 
 
     private final List<Surface> surfaceList = new ArrayList<Surface>();
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -42,6 +50,7 @@ public class Material implements Iterable<Surface> {
         return;
     }
 
         return;
     }
 
+
     /**
      * 色を不透明化する。
      * @param color 色
     /**
      * 色を不透明化する。
      * @param color 色
@@ -52,14 +61,18 @@ public class Material implements Iterable<Surface> {
             return color;
         }
 
             return color;
         }
 
-        float[] rgba = new float[4];
-        color.getRGBColorComponents(rgba);
+        float[] rgba = null;
+        rgba = color.getRGBColorComponents(rgba);
 
 
-        Color result = new Color(rgba[0], rgba[1], rgba[2], 1.0f);
+        Color result = new Color(rgba[IDX_RED],
+                                 rgba[IDX_GREEN],
+                                 rgba[IDX_BLUE],
+                                 1.0f );
 
         return result;
     }
 
 
         return result;
     }
 
+
     /**
      * マテリアル名を返す。
      * PMDEditorのみでのサポート?
     /**
      * マテリアル名を返す。
      * PMDEditorのみでのサポート?
@@ -200,33 +213,34 @@ public class Material implements Iterable<Surface> {
     @Override
     public String toString(){
         StringBuilder result = new StringBuilder();
     @Override
     public String toString(){
         StringBuilder result = new StringBuilder();
+        final String delim = ", ";
 
         result.append("Material ");
 
 
         result.append("Material ");
 
-        float[] rgba = new float[4];
+        float[] rgba = null;
 
 
-        this.diffuseColor.getRGBComponents(rgba);
+        rgba = this.diffuseColor.getRGBComponents(rgba);
         result.append("diffuse=[")
         result.append("diffuse=[")
-              .append(rgba[0]).append(", ")
-              .append(rgba[1]).append(", ")
-              .append(rgba[2]).append(", ")
-              .append(rgba[3]).append(']')
+              .append(rgba[IDX_RED]).append(delim)
+              .append(rgba[IDX_GREEN]).append(delim)
+              .append(rgba[IDX_BLUE]).append(delim)
+              .append(rgba[IDX_ALPHA]).append(']')
               .append(' ');
 
         this.specularColor.getRGBComponents(rgba);
         result.append("specular=[")
               .append(' ');
 
         this.specularColor.getRGBComponents(rgba);
         result.append("specular=[")
-              .append(rgba[0]).append(", ")
-              .append(rgba[1]).append(", ")
-              .append(rgba[2]).append(", ")
-              .append(rgba[3]).append(']')
+              .append(rgba[IDX_RED]).append(delim)
+              .append(rgba[IDX_GREEN]).append(delim)
+              .append(rgba[IDX_BLUE]).append(delim)
+              .append(rgba[IDX_ALPHA]).append(']')
               .append(' ');
 
         this.ambientColor.getRGBComponents(rgba);
         result.append("ambient=[")
               .append(' ');
 
         this.ambientColor.getRGBComponents(rgba);
         result.append("ambient=[")
-              .append(rgba[0]).append(", ")
-              .append(rgba[1]).append(", ")
-              .append(rgba[2]).append(", ")
-              .append(rgba[3]).append(']')
+              .append(rgba[IDX_RED]).append(delim)
+              .append(rgba[IDX_GREEN]).append(delim)
+              .append(rgba[IDX_BLUE]).append(delim)
+              .append(rgba[IDX_ALPHA]).append(']')
               .append(' ');
 
         result.append("shininess=")
               .append(' ');
 
         result.append("shininess=")
index 386b55c..e9a7463 100644 (file)
@@ -25,7 +25,8 @@ public class MorphPart implements SerialNumbered, Iterable<MorphVertex> {
     private final List<MorphVertex> morphVertexList =
             new ArrayList<MorphVertex>();
 
     private final List<MorphVertex> morphVertexList =
             new ArrayList<MorphVertex>();
 
-    private int serialNo = -1;
+    private int morphSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -35,6 +36,7 @@ public class MorphPart implements SerialNumbered, Iterable<MorphVertex> {
         return;
     }
 
         return;
     }
 
+
     /**
      * モーフ名を返す。
      * @return モーフ名
     /**
      * モーフ名を返す。
      * @return モーフ名
@@ -85,7 +87,7 @@ public class MorphPart implements SerialNumbered, Iterable<MorphVertex> {
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.morphSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -95,7 +97,7 @@ public class MorphPart implements SerialNumbered, Iterable<MorphVertex> {
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.morphSerialNo;
     }
 
     @Override
     }
 
     @Override
index 155304e..733e4c6 100644 (file)
@@ -19,10 +19,11 @@ public class MorphVertex implements SerialNumbered{
     public static final Comparator<MorphVertex> VIDCOMPARATOR =
             new VertexIdComparator();
 
     public static final Comparator<MorphVertex> VIDCOMPARATOR =
             new VertexIdComparator();
 
-    private Vertex baseVertex;
+    private Vertex baseVertex = null;
     private final MkPos3D offset = new MkPos3D();
 
     private final MkPos3D offset = new MkPos3D();
 
-    private int serialNo = -1;
+    private int morphVertexSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -32,6 +33,7 @@ public class MorphVertex implements SerialNumbered{
         return;
     }
 
         return;
     }
 
+
     /**
      * 移動元頂点情報を返す。
      * @return 移動元頂点
     /**
      * 移動元頂点情報を返す。
      * @return 移動元頂点
@@ -65,7 +67,7 @@ public class MorphVertex implements SerialNumbered{
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.morphVertexSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -75,7 +77,7 @@ public class MorphVertex implements SerialNumbered{
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.morphVertexSerialNo;
     }
 
     /**
     }
 
     /**
@@ -96,16 +98,18 @@ public class MorphVertex implements SerialNumbered{
         return result.toString();
     }
 
         return result.toString();
     }
 
+
     /**
      * 頂点IDによる比較子Comparator。
      */
     /**
      * 頂点IDによる比較子Comparator。
      */
+    @SuppressWarnings("serial")
     private static final class VertexIdComparator
             implements Comparator<MorphVertex> {
 
         /**
          * コンストラクタ。
          */
     private static final class VertexIdComparator
             implements Comparator<MorphVertex> {
 
         /**
          * コンストラクタ。
          */
-        private VertexIdComparator(){
+        VertexIdComparator(){
             super();
             return;
         }
             super();
             return;
         }
index cbd0695..d44c89c 100644 (file)
@@ -49,6 +49,7 @@ public class PmdModel {
 
     private ToonMap toonMap = new ToonMap();
 
 
     private ToonMap toonMap = new ToonMap();
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -66,6 +67,7 @@ public class PmdModel {
         return;
     }
 
         return;
     }
 
+
     /**
      * モデル名を返す。
      * @return モデル名
     /**
      * モデル名を返す。
      * @return モデル名
@@ -198,10 +200,7 @@ public class PmdModel {
             if(bone.getBoneName().hasGlobalText()) return true;
         }
 
             if(bone.getBoneName().hasGlobalText()) return true;
         }
 
-        List<MorphType> typeList = new ArrayList<MorphType>();
-        typeList.addAll(this.morphMap.keySet());
-        for(MorphType type : typeList){
-            List<MorphPart> partList = this.morphMap.get(type);
+        for(List<MorphPart> partList : this.morphMap.values()){
             for(MorphPart part : partList){
                 if(part.getMorphName().hasGlobalText()) return true;
             }
             for(MorphPart part : partList){
                 if(part.getMorphName().hasGlobalText()) return true;
             }
@@ -215,6 +214,53 @@ public class PmdModel {
     }
 
     /**
     }
 
     /**
+     * 全モーフが使う全モーフ頂点の出現順リストを返す。
+     * モーフ種別毎に固まっている事が保証される。
+     * @return モーフ頂点リスト
+     */
+    private List<MorphVertex> getAllMorphVertexList(){
+        List<MorphVertex> allList = new ArrayList<MorphVertex>();
+
+        for(MorphType type : this.morphMap.keySet()){
+            if(type.isBase()) continue;
+
+            List<MorphPart> partList = this.morphMap.get(type);
+            if(partList == null) continue;
+
+            for(MorphPart part : partList){
+                List<MorphVertex> morphVertexList =
+                        part.getMorphVertexList();
+                allList.addAll(morphVertexList);
+            }
+        }
+
+        return allList;
+    }
+
+    /**
+     * 重複する頂点参照を除いたモーフ頂点リストを返す。
+     * @param allList モーフ頂点リスト
+     * @return 重複が除かれたモーフ頂点リスト
+     */
+    private List<MorphVertex> getUniqueMorphVertexList(
+            List<MorphVertex> allList ){
+        List<MorphVertex> result = new ArrayList<MorphVertex>();
+
+        Set<Vertex> mergedVertexSet = new HashSet<Vertex>();
+
+        for(MorphVertex morphVertex : allList){
+            Vertex vertex = morphVertex.getBaseVertex();
+
+            if(mergedVertexSet.contains(vertex)) continue;
+
+            mergedVertexSet.add(vertex);
+            result.add(morphVertex);
+        }
+
+        return result;
+    }
+
+    /**
      * モーフで使われる全てのモーフ頂点のリストを返す。
      * モーフ間で重複する頂点はマージされる。
      * 頂点IDでソートされる。
      * モーフで使われる全てのモーフ頂点のリストを返す。
      * モーフ間で重複する頂点はマージされる。
      * 頂点IDでソートされる。
@@ -224,47 +270,29 @@ public class PmdModel {
      * @return モーフに使われるモーフ頂点のリスト
      */
     public List<MorphVertex> mergeMorphVertex(){
      * @return モーフに使われるモーフ頂点のリスト
      */
     public List<MorphVertex> mergeMorphVertex(){
-        List<MorphVertex> result = new ArrayList<MorphVertex>();
+        List<MorphVertex> result;
 
 
-        Set<Vertex> mergedVertexSet = new HashSet<Vertex>();
-        for(MorphType type : this.morphMap.keySet()){
-            if(type.isBase()) continue;
-            List<MorphPart> partList = this.morphMap.get(type);
-            if(partList == null) continue;
-            for(MorphPart part : partList){
-                for(MorphVertex morphVertex : part){
-                    Vertex vertex = morphVertex.getBaseVertex();
-                    if(mergedVertexSet.contains(vertex)) continue;
-                    mergedVertexSet.add(vertex);
-                    result.add(morphVertex);
-                }
-            }
-        }
+        List<MorphVertex> allList = getAllMorphVertexList();
+        result = getUniqueMorphVertexList(allList);
 
         Collections.sort(result, MorphVertex.VIDCOMPARATOR);
 
         Collections.sort(result, MorphVertex.VIDCOMPARATOR);
-        for(int idx = 0; idx < result.size(); idx++){
-            MorphVertex morphVertex = result.get(idx);
-            morphVertex.setSerialNumber(idx);
-        }
+        ListUtil.assignIndexedSerial(result);
 
         Map<Vertex, MorphVertex> numberedMap =
                 new HashMap<Vertex, MorphVertex>();
         for(MorphVertex morphVertex : result){
 
         Map<Vertex, MorphVertex> numberedMap =
                 new HashMap<Vertex, MorphVertex>();
         for(MorphVertex morphVertex : result){
-            numberedMap.put(morphVertex.getBaseVertex(), morphVertex);
+            Vertex vertex = morphVertex.getBaseVertex();
+            numberedMap.put(vertex, morphVertex);
         }
 
         }
 
-        for(MorphType type : this.morphMap.keySet()){
-            if(type.isBase()) continue;
-            List<MorphPart> partList = this.morphMap.get(type);
-            if(partList == null) continue;
-            for(MorphPart part : partList){
-                for(MorphVertex morphVertex : part){
-                    Vertex vertex = morphVertex.getBaseVertex();
-                    MorphVertex numbered = numberedMap.get(vertex);
-                    assert numbered != null;
-                    morphVertex.setSerialNumber(numbered.getSerialNumber());
-                }
-            }
+        for(MorphVertex morphVertex : allList){
+            Vertex vertex = morphVertex.getBaseVertex();
+
+            MorphVertex numbered = numberedMap.get(vertex);
+            assert numbered != null;
+
+            int serialNo = numbered.getSerialNumber();
+            morphVertex.setSerialNumber(serialNo);
         }
 
         return result;
         }
 
         return result;
index 0aaee86..a28eea7 100644 (file)
@@ -17,12 +17,14 @@ import java.util.List;
  */
 public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
 
  */
 public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
 
+    /** 剛体グループ総数。 */
     public static final int MAX_RIGID_GROUP = 16;
 
 
     private final List<RigidInfo> rigidList = new ArrayList<RigidInfo>();
 
     public static final int MAX_RIGID_GROUP = 16;
 
 
     private final List<RigidInfo> rigidList = new ArrayList<RigidInfo>();
 
-    private int serialNo = -1;
+    private int rigidGroupSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -32,6 +34,7 @@ public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
         return;
     }
 
         return;
     }
 
+
     /**
      * 所属する剛体のリストを返す。
      * @return 剛体リスト
     /**
      * 所属する剛体のリストを返す。
      * @return 剛体リスト
@@ -55,7 +58,7 @@ public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.rigidGroupSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -65,7 +68,7 @@ public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.rigidGroupSerialNo;
     }
 
     /**
     }
 
     /**
@@ -75,7 +78,7 @@ public class RigidGroup implements SerialNumbered, Iterable<RigidInfo> {
      * @return グループ番号
      */
     public int getGroupNumber(){
      * @return グループ番号
      */
     public int getGroupNumber(){
-        return this.serialNo + 1;
+        return this.rigidGroupSerialNo + 1;
     }
 
     /**
     }
 
     /**
index 08a5481..95adef8 100644 (file)
@@ -36,7 +36,8 @@ public class RigidInfo implements SerialNumbered {
 
     private RigidGroup rigidGroup;
 
 
     private RigidGroup rigidGroup;
 
-    private int serialNo = -1;
+    private int rigidSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -46,6 +47,7 @@ public class RigidInfo implements SerialNumbered {
         return;
     }
 
         return;
     }
 
+
     /**
      * 剛体名を返す。
      * @return 剛体名
     /**
      * 剛体名を返す。
      * @return 剛体名
@@ -154,7 +156,7 @@ public class RigidInfo implements SerialNumbered {
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.rigidSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -164,7 +166,7 @@ public class RigidInfo implements SerialNumbered {
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.rigidSerialNo;
     }
 
     /**
     }
 
     /**
index 591bc3d..8279a90 100644 (file)
@@ -15,10 +15,14 @@ import jp.sfjp.mikutoga.pmd.RigidShapeType;
  */
 public class RigidShape {
 
  */
 public class RigidShape {
 
+    private static final float DEF_DIM = 0.1f;
+
     private RigidShapeType type = RigidShapeType.BOX;
     private RigidShapeType type = RigidShapeType.BOX;
-    private float width  = 0.1f;
-    private float height = 0.1f;
-    private float depth  = 0.1f;
+
+    private float width  = DEF_DIM;
+    private float height = DEF_DIM;
+    private float depth  = DEF_DIM;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -28,6 +32,7 @@ public class RigidShape {
         return;
     }
 
         return;
     }
 
+
     /**
      * 剛体形状種別を返す。
      * @return 剛体形状種別
     /**
      * 剛体形状種別を返す。
      * @return 剛体形状種別
index 7c73317..b8df4be 100644 (file)
@@ -17,6 +17,7 @@ public interface SerialNumbered {
     /** 昇順での比較子。 */
     Comparator<SerialNumbered> COMPARATOR = new SerialComparator();
 
     /** 昇順での比較子。 */
     Comparator<SerialNumbered> COMPARATOR = new SerialComparator();
 
+
     /**
      * 通し番号を設定する。
      * @param num 通し番号
     /**
      * 通し番号を設定する。
      * @param num 通し番号
@@ -29,10 +30,12 @@ public interface SerialNumbered {
      */
     int getSerialNumber();
 
      */
     int getSerialNumber();
 
+
     /**
      * 通し番号による比較子Comparator。
      * 通し番号の昇順を定義づける。
      */
     /**
      * 通し番号による比較子Comparator。
      * 通し番号の昇順を定義づける。
      */
+    @SuppressWarnings("serial")
     class SerialComparator
             implements Comparator<SerialNumbered> {
 
     class SerialComparator
             implements Comparator<SerialNumbered> {
 
@@ -44,6 +47,7 @@ public interface SerialNumbered {
             return;
         }
 
             return;
         }
 
+
         /**
          * {@inheritDoc}
          * @param o1 {@inheritDoc}
         /**
          * {@inheritDoc}
          * @param o1 {@inheritDoc}
index aa61c9f..c468a90 100644 (file)
@@ -18,6 +18,7 @@ public class ShadeInfo {
     private String textureFileName = null;
     private String spheremapFileName = null;
 
     private String textureFileName = null;
     private String spheremapFileName = null;
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -26,6 +27,7 @@ public class ShadeInfo {
         return;
     }
 
         return;
     }
 
+
     /**
      * トゥーンマップを設定する。
      * @param map トゥーンマップ
     /**
      * トゥーンマップを設定する。
      * @param map トゥーンマップ
@@ -66,8 +68,10 @@ public class ShadeInfo {
      * @return 有効ならtrue
      */
     public boolean isValidToonIndex(){
      * @return 有効ならtrue
      */
     public boolean isValidToonIndex(){
-        if(0 <= this.toonIdx && this.toonIdx <= 9) return true;
-        return false;
+        boolean result;
+        result =   (0 <= this.toonIdx)
+                &&      (this.toonIdx < ToonMap.MAX_CUSTOM_TOON);
+        return result;
     }
 
     /**
     }
 
     /**
index 2d594e5..f3e9ab5 100644 (file)
@@ -16,11 +16,15 @@ import java.util.List;
  */
 public class Surface implements SerialNumbered, Iterable<Vertex> {
 
  */
 public class Surface implements SerialNumbered, Iterable<Vertex> {
 
+    private static final int TRIANGLE = 3;
+
+
     private Vertex vertex1;
     private Vertex vertex2;
     private Vertex vertex3;
 
     private Vertex vertex1;
     private Vertex vertex2;
     private Vertex vertex3;
 
-    private int serialNo = -1;
+    private int surfaceSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -31,25 +35,26 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
         return;
     }
 
         return;
     }
 
+
     /**
      * 3頂点を設定する。
     /**
      * 3頂点を設定する。
-     * @param vertex1 頂点1
-     * @param vertex2 頂点2
-     * @param vertex3 頂点3
+     * @param vtx1 頂点1
+     * @param vtx2 頂点2
+     * @param vtx3 頂点3
      * @throws  IllegalArgumentException 重複する頂点が引数に含まれた
      */
      * @throws  IllegalArgumentException 重複する頂点が引数に含まれた
      */
-    public void setTriangle(Vertex vertex1, Vertex vertex2, Vertex vertex3)
+    public void setTriangle(Vertex vtx1, Vertex vtx2, Vertex vtx3)
             throws IllegalArgumentException{
             throws IllegalArgumentException{
-        if(vertex1 != null && (vertex1 == vertex2 || vertex1 == vertex3)){
+        if(vtx1 != null && (vtx1 == vtx2 || vtx1 == vtx3)){
             throw new IllegalArgumentException();
         }
             throw new IllegalArgumentException();
         }
-        if(vertex2 != null && vertex2 == vertex3){
+        if(vtx2 != null && vtx2 == vtx3){
             throw new IllegalArgumentException();
         }
 
             throw new IllegalArgumentException();
         }
 
-        this.vertex1 = vertex1;
-        this.vertex2 = vertex2;
-        this.vertex3 = vertex3;
+        this.vertex1 = vtx1;
+        this.vertex2 = vtx2;
+        this.vertex3 = vtx3;
 
         return;
     }
 
         return;
     }
@@ -63,10 +68,10 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
      */
     public Vertex[] getTriangle(Vertex[] store){
         Vertex[] result;
      */
     public Vertex[] getTriangle(Vertex[] store){
         Vertex[] result;
-        if(store == null || store.length < 3){
-            result = new Vertex[3];
-        }else{
+        if(store != null && store.length >= TRIANGLE){
             result = store;
             result = store;
+        }else{
+            result = new Vertex[TRIANGLE];
         }
 
         result[0] = this.vertex1;
         }
 
         result[0] = this.vertex1;
@@ -108,7 +113,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
      */
     @Override
     public Iterator<Vertex> iterator(){
      */
     @Override
     public Iterator<Vertex> iterator(){
-        List<Vertex> list = new ArrayList<Vertex>(3);
+        List<Vertex> list = new ArrayList<Vertex>(TRIANGLE);
 
         list.add(this.vertex1);
         list.add(this.vertex2);
 
         list.add(this.vertex1);
         list.add(this.vertex2);
@@ -122,12 +127,11 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
      * @return 3頂点とも非nullが設定されていればtrue
      */
     public boolean isCompleted(){
      * @return 3頂点とも非nullが設定されていればtrue
      */
     public boolean isCompleted(){
-        if(   this.vertex1 != null
-           && this.vertex2 != null
-           && this.vertex3 != null ){
-            return true;
-        }
-        return false;
+        boolean result;
+        result =    this.vertex1 != null
+                 && this.vertex2 != null
+                 && this.vertex3 != null;
+        return result;
     }
 
     /**
     }
 
     /**
@@ -136,7 +140,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.surfaceSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -146,7 +150,7 @@ public class Surface implements SerialNumbered, Iterable<Vertex> {
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.surfaceSerialNo;
     }
 
     /**
     }
 
     /**
index 37f928a..a7a29e0 100644 (file)
@@ -25,32 +25,41 @@ import java.util.TreeMap;
  */
 public class ToonMap {
 
  */
 public class ToonMap {
 
+    /** カスタムトゥーンファイルの総数。 */
     public static final int MAX_CUSTOM_TOON = 10;
     public static final int MAX_CUSTOM_TOON = 10;
+
     private static final Map<Integer, String> DEF_TOONMAP;
 
     private static final Map<Integer, String> DEF_TOONMAP;
 
+    private static final int IDX_SP = 0xff;  // 特殊トゥーンのインデックス
+
     static{
         Map<Integer, String> map = new TreeMap<Integer, String>();
 
     static{
         Map<Integer, String> map = new TreeMap<Integer, String>();
 
-        map.put(0x00, "toon01.bmp");
-        map.put(0x01, "toon02.bmp");
-        map.put(0x02, "toon03.bmp");
-        map.put(0x03, "toon04.bmp");
-        map.put(0x04, "toon05.bmp");
-        map.put(0x05, "toon06.bmp");
-        map.put(0x06, "toon07.bmp");
-        map.put(0x07, "toon08.bmp");
-        map.put(0x08, "toon09.bmp");
-        map.put(0x09, "toon10.bmp");
-        map.put(0xff, "toon0.bmp");
+        int idx = 0x00;
+        map.put(idx++, "toon01.bmp");
+        map.put(idx++, "toon02.bmp");
+        map.put(idx++, "toon03.bmp");
+        map.put(idx++, "toon04.bmp");
+        map.put(idx++, "toon05.bmp");
+        map.put(idx++, "toon06.bmp");
+        map.put(idx++, "toon07.bmp");
+        map.put(idx++, "toon08.bmp");
+        map.put(idx++, "toon09.bmp");
+        map.put(idx++, "toon10.bmp");
+        map.put(IDX_SP, "toon0.bmp");
+
+        assert idx == MAX_CUSTOM_TOON;
 
         DEF_TOONMAP = Collections.unmodifiableMap(map);
 
         assert DEF_TOONMAP.size() == MAX_CUSTOM_TOON + 1;
     }
 
 
         DEF_TOONMAP = Collections.unmodifiableMap(map);
 
         assert DEF_TOONMAP.size() == MAX_CUSTOM_TOON + 1;
     }
 
-    private final Map<Integer, String> toonMap =
+
+    private final Map<Integer, String> toonDefMap =
             new TreeMap<Integer, String>(DEF_TOONMAP);
 
             new TreeMap<Integer, String>(DEF_TOONMAP);
 
+
     /**
      * コンストラクタ。
      */
     /**
      * コンストラクタ。
      */
@@ -59,13 +68,14 @@ public class ToonMap {
         return;
     }
 
         return;
     }
 
+
     /**
      * 指定したインデックス値に対応したトゥーンファイル名を返す。
      * @param idx インデックス値
      * @return トゥーンファイル名。該当するものがなければnull
      */
     public String getIndexedToon(int idx){
     /**
      * 指定したインデックス値に対応したトゥーンファイル名を返す。
      * @param idx インデックス値
      * @return トゥーンファイル名。該当するものがなければnull
      */
     public String getIndexedToon(int idx){
-        String result = this.toonMap.get(idx);
+        String result = this.toonDefMap.get(idx);
         return result;
     }
 
         return result;
     }
 
@@ -78,7 +88,7 @@ public class ToonMap {
     public void setIndexedToon(int idx, String toonFileName)
             throws NullPointerException{
         if(toonFileName == null) throw new NullPointerException();
     public void setIndexedToon(int idx, String toonFileName)
             throws NullPointerException{
         if(toonFileName == null) throw new NullPointerException();
-        this.toonMap.put(idx, toonFileName);
+        this.toonDefMap.put(idx, toonFileName);
         return;
     }
 
         return;
     }
 
@@ -88,7 +98,7 @@ public class ToonMap {
      * @return 等しければtrue
      */
     public boolean isDefaultMap(){
      * @return 等しければtrue
      */
     public boolean isDefaultMap(){
-        boolean result = this.toonMap.equals(DEF_TOONMAP);
+        boolean result = this.toonDefMap.equals(DEF_TOONMAP);
         return result;
     }
 
         return result;
     }
 
@@ -98,7 +108,7 @@ public class ToonMap {
      * @return デフォルトと等しければtrue。
      */
     public boolean isDefaultToon(int idx){
      * @return デフォルトと等しければtrue。
      */
     public boolean isDefaultToon(int idx){
-        String thisToon = this.toonMap.get(idx);
+        String thisToon = this.toonDefMap.get(idx);
         if(thisToon == null) return false;
 
         String defToon = DEF_TOONMAP.get(idx);
         if(thisToon == null) return false;
 
         String defToon = DEF_TOONMAP.get(idx);
@@ -112,8 +122,8 @@ public class ToonMap {
      * このトゥーンファイル構成をデフォルト構成内容でリセットする。
      */
     public void resetDefaultMap(){
      * このトゥーンファイル構成をデフォルト構成内容でリセットする。
      */
     public void resetDefaultMap(){
-        this.toonMap.clear();
-        this.toonMap.putAll(DEF_TOONMAP);
+        this.toonDefMap.clear();
+        this.toonDefMap.putAll(DEF_TOONMAP);
         return;
     }
 
         return;
     }
 
@@ -124,7 +134,7 @@ public class ToonMap {
      */
     public void resetIndexedToon(int idx){
         String toonFile = DEF_TOONMAP.get(idx);
      */
     public void resetIndexedToon(int idx){
         String toonFile = DEF_TOONMAP.get(idx);
-        this.toonMap.put(idx, toonFile);
+        this.toonDefMap.put(idx, toonFile);
         return;
     }
 
         return;
     }
 
@@ -137,7 +147,7 @@ public class ToonMap {
         StringBuilder result = new StringBuilder();
 
         boolean dumped = false;
         StringBuilder result = new StringBuilder();
 
         boolean dumped = false;
-        for(Map.Entry<Integer, String> entry : this.toonMap.entrySet()){
+        for(Map.Entry<Integer, String> entry : this.toonDefMap.entrySet()){
             Integer idx = entry.getKey();
             String toonFile = entry.getValue();
 
             Integer idx = entry.getKey();
             String toonFile = entry.getValue();
 
index 82f603b..b037d88 100644 (file)
@@ -18,6 +18,8 @@ public class Vertex implements SerialNumbered {
 
     private static final int MIN_WEIGHT = 0;
     private static final int MAX_WEIGHT = 100;
 
     private static final int MIN_WEIGHT = 0;
     private static final int MAX_WEIGHT = 100;
+    private static final int BALANCED   = 50;
+
 
     private final MkPos3D position = new MkPos3D();
     private final MkVec3D normal = new MkVec3D();
 
     private final MkPos3D position = new MkPos3D();
     private final MkVec3D normal = new MkVec3D();
@@ -27,11 +29,12 @@ public class Vertex implements SerialNumbered {
     private BoneInfo boneA = null;
     private BoneInfo boneB = null;
 
     private BoneInfo boneA = null;
     private BoneInfo boneB = null;
 
-    private int boneWeight = 50;
+    private int boneWeight = BALANCED;
 
     private boolean edgeAppearance = true;
 
 
     private boolean edgeAppearance = true;
 
-    private int serialNo = -1;
+    private int vertexSerialNo = -1;
+
 
     /**
      * コンストラクタ。
 
     /**
      * コンストラクタ。
@@ -41,6 +44,7 @@ public class Vertex implements SerialNumbered {
         return;
     }
 
         return;
     }
 
+
     /**
      * 頂点位置座標を返す。
      * @return 頂点の位置座標
     /**
      * 頂点位置座標を返す。
      * @return 頂点の位置座標
@@ -67,15 +71,18 @@ public class Vertex implements SerialNumbered {
 
     /**
      * 頂点の属するボーンを設定する。
 
     /**
      * 頂点の属するボーンを設定する。
-     * @param boneA ボーンA
-     * @param boneB ボーンB
+     * @param boneAArg ボーンA
+     * @param boneBArg ボーンB
      * @throws NullPointerException 引数がnull
      */
      * @throws NullPointerException 引数がnull
      */
-    public void setBonePair(BoneInfo boneA, BoneInfo boneB)
+    public void setBonePair(BoneInfo boneAArg, BoneInfo boneBArg)
             throws NullPointerException{
             throws NullPointerException{
-        if(boneA == null || boneB == null) throw new NullPointerException();
-        this.boneA = boneA;
-        this.boneB = boneB;
+        if(boneAArg == null || boneBArg == null)
+            throw new NullPointerException();
+
+        this.boneA = boneAArg;
+        this.boneB = boneBArg;
+
         return;
     }
 
         return;
     }
 
@@ -178,7 +185,7 @@ public class Vertex implements SerialNumbered {
      */
     @Override
     public void setSerialNumber(int num){
      */
     @Override
     public void setSerialNumber(int num){
-        this.serialNo = num;
+        this.vertexSerialNo = num;
         return;
     }
 
         return;
     }
 
@@ -188,7 +195,7 @@ public class Vertex implements SerialNumbered {
      */
     @Override
     public int getSerialNumber(){
      */
     @Override
     public int getSerialNumber(){
-        return this.serialNo;
+        return this.vertexSerialNo;
     }
 
     /**
     }
 
     /**
@@ -199,7 +206,7 @@ public class Vertex implements SerialNumbered {
     public String toString(){
         StringBuilder result = new StringBuilder();
 
     public String toString(){
         StringBuilder result = new StringBuilder();
 
-        result.append("Vertex(").append(this.serialNo).append(") ");
+        result.append("Vertex(").append(this.vertexSerialNo).append(") ");
         result.append(this.position).append(' ');
         result.append(this.normal).append(' ');
         result.append("UV").append(this.uvPosition).append(' ');
         result.append(this.position).append(' ');
         result.append(this.normal).append(' ');
         result.append("UV").append(this.uvPosition).append(' ');
index 07d3b03..391d4f0 100644 (file)
@@ -77,7 +77,7 @@ class BoneBuilder implements PmdBoneHandler {
                 this.currentIkChain = this.ikChainIt.next();
             }
         }else if(stage == PmdBoneHandler.IKCHAIN_LIST){
                 this.currentIkChain = this.ikChainIt.next();
             }
         }else if(stage == PmdBoneHandler.IKCHAIN_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdBoneHandler.BONEGROUP_LIST){
             ListUtil.prepareDefConsList(this.boneGroupList,
                                         BoneGroup.class,
         }else if(stage == PmdBoneHandler.BONEGROUP_LIST){
             ListUtil.prepareDefConsList(this.boneGroupList,
                                         BoneGroup.class,
@@ -93,7 +93,7 @@ class BoneBuilder implements PmdBoneHandler {
                 this.currentBoneGroup = this.boneGroupIt.next();
             }
         }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){
                 this.currentBoneGroup = this.boneGroupIt.next();
             }
         }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else{
             assert false;
             throw new AssertionError();
         }else{
             assert false;
             throw new AssertionError();
@@ -117,13 +117,13 @@ class BoneBuilder implements PmdBoneHandler {
                 this.currentIkChain = this.ikChainIt.next();
             }
         }else if(stage == PmdBoneHandler.IKCHAIN_LIST){
                 this.currentIkChain = this.ikChainIt.next();
             }
         }else if(stage == PmdBoneHandler.IKCHAIN_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdBoneHandler.BONEGROUP_LIST){
             if(this.boneGroupIt.hasNext()){
                 this.currentBoneGroup = this.boneGroupIt.next();
             }
         }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){
         }else if(stage == PmdBoneHandler.BONEGROUP_LIST){
             if(this.boneGroupIt.hasNext()){
                 this.currentBoneGroup = this.boneGroupIt.next();
             }
         }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else{
             assert false;
             throw new AssertionError();
         }else{
             assert false;
             throw new AssertionError();
@@ -138,13 +138,13 @@ class BoneBuilder implements PmdBoneHandler {
     @Override
     public void loopEnd(ParseStage stage){
         if(stage == PmdBoneHandler.BONE_LIST){
     @Override
     public void loopEnd(ParseStage stage){
         if(stage == PmdBoneHandler.BONE_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdBoneHandler.IK_LIST){
         }else if(stage == PmdBoneHandler.IK_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdBoneHandler.IKCHAIN_LIST){
         }else if(stage == PmdBoneHandler.IKCHAIN_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdBoneHandler.BONEGROUP_LIST){
         }else if(stage == PmdBoneHandler.BONEGROUP_LIST){
-            //NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){
             pickOrphanBone();
         }else{
         }else if(stage == PmdBoneHandler.GROUPEDBONE_LIST){
             pickOrphanBone();
         }else{
index 959496b..2795475 100644 (file)
@@ -24,6 +24,9 @@ import jp.sfjp.mikutoga.pmd.parser.PmdMaterialHandler;
  */
 class MaterialBuilder implements PmdMaterialHandler {
 
  */
 class MaterialBuilder implements PmdMaterialHandler {
 
+    private static final int TRIANGLE = 3;
+
+
     private final List<Material> materialList;
     private Iterator<Material> materialIt;
     private Material currentMaterial = null;
     private final List<Material> materialList;
     private Iterator<Material> materialIt;
     private Material currentMaterial = null;
@@ -33,6 +36,7 @@ class MaterialBuilder implements PmdMaterialHandler {
 
     private final ToonMap toonMap;
 
 
     private final ToonMap toonMap;
 
+
     /**
      * コンストラクタ。
      * @param model モデル
     /**
      * コンストラクタ。
      * @param model モデル
@@ -47,6 +51,7 @@ class MaterialBuilder implements PmdMaterialHandler {
         return;
     }
 
         return;
     }
 
+
     /**
      * {@inheritDoc}
      * @param stage {@inheritDoc}
     /**
      * {@inheritDoc}
      * @param stage {@inheritDoc}
@@ -154,7 +159,7 @@ class MaterialBuilder implements PmdMaterialHandler {
 
         List<Surface> list = this.currentMaterial.getSurfaceList();
 
 
         List<Surface> list = this.currentMaterial.getSurfaceList();
 
-        int surfaceNum = vertexNum / 3;
+        int surfaceNum = vertexNum / TRIANGLE;
         for(int ct = 1; ct <= surfaceNum; ct++){
             Surface surface = this.surfaceIt.next();
             list.add(surface);
         for(int ct = 1; ct <= surfaceNum; ct++){
             Surface surface = this.surfaceIt.next();
             list.add(surface);
index 64b5e14..ec93d41 100644 (file)
@@ -75,9 +75,9 @@ class MorphBuilder implements PmdMorphHandler {
                 this.currentMorphPart = this.morphPartIt.next();
             }
         }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
                 this.currentMorphPart = this.morphPartIt.next();
             }
         }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
-            // NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
         }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
-            // NOTHING
+            assert true; // NOTHING
         }else{
             assert false;
             throw new AssertionError();
         }else{
             assert false;
             throw new AssertionError();
@@ -97,9 +97,9 @@ class MorphBuilder implements PmdMorphHandler {
                 this.currentMorphPart = this.morphPartIt.next();
             }
         }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
                 this.currentMorphPart = this.morphPartIt.next();
             }
         }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
-            // NOTHING
+            assert true;   // NOTHING
         }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
         }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
-            // NOTHING
+            assert true;   // NOTHING
         }else{
             assert false;
             throw new AssertionError();
         }else{
             assert false;
             throw new AssertionError();
@@ -115,11 +115,11 @@ class MorphBuilder implements PmdMorphHandler {
     @Override
     public void loopEnd(ParseStage stage){
         if(stage == PmdMorphHandler.MORPH_LIST){
     @Override
     public void loopEnd(ParseStage stage){
         if(stage == PmdMorphHandler.MORPH_LIST){
-            // NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
         }else if(stage == PmdMorphHandler.MORPHVERTEX_LIST){
-            // NOTHING
+            assert true; // NOTHING
         }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
         }else if(stage == PmdMorphHandler.MORPHORDER_LIST){
-            // NOTHING
+            assert true; // NOTHING
         }else{
             assert false;
             throw new AssertionError();
         }else{
             assert false;
             throw new AssertionError();
index 7553194..5cfe69a 100644 (file)
@@ -70,10 +70,22 @@ public class PmdExporterBase extends BinaryExporter{
     /** 改行文字列 CRLF。 */
     private static final String CRLF = CR + LF;  // 0x0d, 0x0a
 
     /** 改行文字列 CRLF。 */
     private static final String CRLF = CR + LF;  // 0x0d, 0x0a
 
+    // sRGBカラー情報配列インデックス
+    private static final int IDX_RED   = 0;
+    private static final int IDX_GREEN = 1;
+    private static final int IDX_BLUE  = 2;
+    private static final int IDX_ALPHA = 3;
+
+    private static final int TRIANGLE = 3;
+
     static{
         assert NOPREVBONE_ID > PmdConst.MAX_BONE - 1;
     }
 
     static{
         assert NOPREVBONE_ID > PmdConst.MAX_BONE - 1;
     }
 
+
+    private float[] rgbaBuf = null;
+
+
     /**
      * コンストラクタ。
      * @param stream 出力ストリーム
     /**
      * コンストラクタ。
      * @param stream 出力ストリーム
@@ -150,7 +162,7 @@ public class PmdExporterBase extends BinaryExporter{
      */
     private void dumpBasic(PmdModel model)
             throws IOException, IllegalTextExportException{
      */
     private void dumpBasic(PmdModel model)
             throws IOException, IllegalTextExportException{
-        for(int idx=0; idx < MAGIC_BYTES.length; idx++){
+        for(int idx = 0; idx < MAGIC_BYTES.length; idx++){
             dumpByte(MAGIC_BYTES[idx]);
         }
 
             dumpByte(MAGIC_BYTES[idx]);
         }
 
@@ -231,9 +243,9 @@ public class PmdExporterBase extends BinaryExporter{
         for(Material material : materialList){
             surfaceNum += material.getSurfaceList().size();
         }
         for(Material material : materialList){
             surfaceNum += material.getSurfaceList().size();
         }
-        dumpLeInt(surfaceNum * 3);
+        dumpLeInt(surfaceNum * TRIANGLE);
 
 
-        Vertex[] triangle = new Vertex[3];
+        Vertex[] triangle = new Vertex[TRIANGLE];
         for(Material material : materialList){
             for(Surface surface : material){
                 surface.getTriangle(triangle);
         for(Material material : materialList){
             for(Surface surface : material){
                 surface.getTriangle(triangle);
@@ -261,45 +273,9 @@ public class PmdExporterBase extends BinaryExporter{
         int materialNum = materialList.size();
         dumpLeInt(materialNum);
 
         int materialNum = materialList.size();
         dumpLeInt(materialNum);
 
-        float[] rgba = new float[4];
-
         for(Material material : materialList){
         for(Material material : materialList){
-            Color diffuse = material.getDiffuseColor();
-            diffuse.getRGBComponents(rgba);
-            dumpLeFloat(rgba[0]);
-            dumpLeFloat(rgba[1]);
-            dumpLeFloat(rgba[2]);
-            dumpLeFloat(rgba[3]);
-
-            float shininess = material.getShininess();
-            dumpLeFloat(shininess);
-
-            Color specular = material.getSpecularColor();
-            specular.getRGBComponents(rgba);
-            dumpLeFloat(rgba[0]);
-            dumpLeFloat(rgba[1]);
-            dumpLeFloat(rgba[2]);
-
-            Color ambient = material.getAmbientColor();
-            ambient.getRGBComponents(rgba);
-            dumpLeFloat(rgba[0]);
-            dumpLeFloat(rgba[1]);
-            dumpLeFloat(rgba[2]);
-
-            ShadeInfo shade = material.getShadeInfo();
-            int toonIdx = shade.getToonIndex();
-            dumpByte(toonIdx);
-
-            byte edgeFlag;
-            boolean showEdge = material.getEdgeAppearance();
-            if(showEdge) edgeFlag = 0x01;
-            else         edgeFlag = 0x00;
-            dumpByte(edgeFlag);
-
-            int surfaceNum = material.getSurfaceList().size();
-            dumpLeInt(surfaceNum * 3);
-
-            dumpShadeFileInfo(shade);
+            dumpColorInfo(material);
+            dumpShadeInfo(material);
         }
 
         flush();
         }
 
         flush();
@@ -308,6 +284,64 @@ public class PmdExporterBase extends BinaryExporter{
     }
 
     /**
     }
 
     /**
+     * フォンシェーディングの色情報を出力する。
+     * @param material マテリアル情報
+     * @throws IOException 出力エラー
+     */
+    private void dumpColorInfo(Material material)
+            throws IOException{
+        Color diffuse = material.getDiffuseColor();
+        this.rgbaBuf = diffuse.getRGBComponents(this.rgbaBuf);
+        dumpLeFloat(this.rgbaBuf[IDX_RED]);
+        dumpLeFloat(this.rgbaBuf[IDX_GREEN]);
+        dumpLeFloat(this.rgbaBuf[IDX_BLUE]);
+        dumpLeFloat(this.rgbaBuf[IDX_ALPHA]);
+
+        float shininess = material.getShininess();
+        dumpLeFloat(shininess);
+
+        Color specular = material.getSpecularColor();
+        this.rgbaBuf = specular.getRGBComponents(this.rgbaBuf);
+        dumpLeFloat(this.rgbaBuf[IDX_RED]);
+        dumpLeFloat(this.rgbaBuf[IDX_GREEN]);
+        dumpLeFloat(this.rgbaBuf[IDX_BLUE]);
+
+        Color ambient = material.getAmbientColor();
+        this.rgbaBuf = ambient.getRGBComponents(this.rgbaBuf);
+        dumpLeFloat(this.rgbaBuf[IDX_RED]);
+        dumpLeFloat(this.rgbaBuf[IDX_GREEN]);
+        dumpLeFloat(this.rgbaBuf[IDX_BLUE]);
+
+        return;
+    }
+
+    /**
+     * シェーディング情報を出力する。
+     * @param material マテリアル情報
+     * @throws IOException 出力エラー
+     * @throws IllegalTextExportException ファイル名が長すぎる
+     */
+    private void dumpShadeInfo(Material material)
+            throws IOException, IllegalTextExportException{
+        ShadeInfo shade = material.getShadeInfo();
+        int toonIdx = shade.getToonIndex();
+        dumpByte(toonIdx);
+
+        boolean showEdge = material.getEdgeAppearance();
+        byte edgeFlag;
+        if(showEdge) edgeFlag = 0x01;
+        else         edgeFlag = 0x00;
+        dumpByte(edgeFlag);
+
+        int surfaceNum = material.getSurfaceList().size();
+        dumpLeInt(surfaceNum * TRIANGLE);
+
+        dumpShadeFileInfo(shade);
+
+        return;
+    }
+
+    /**
      * シェーディングファイル情報を出力する。
      * @param shade シェーディング情報
      * @throws IOException 出力エラー
      * シェーディングファイル情報を出力する。
      * @param shade シェーディング情報
      * @throws IOException 出力エラー
@@ -459,15 +493,15 @@ public class PmdExporterBase extends BinaryExporter{
             throws IOException, IllegalTextExportException{
         Map<MorphType, List<MorphPart>> morphMap = model.getMorphMap();
         Set<MorphType> typeSet = morphMap.keySet();
             throws IOException, IllegalTextExportException{
         Map<MorphType, List<MorphPart>> morphMap = model.getMorphMap();
         Set<MorphType> typeSet = morphMap.keySet();
-        List<MorphVertex> mergedMorphVertexList = model.mergeMorphVertex();
+        List<MorphPart> morphPartList = new LinkedList<MorphPart>();
 
 
-        int totalMorphPart = 0;
         for(MorphType type : typeSet){
             List<MorphPart> partList = morphMap.get(type);
             if(partList == null) continue;
         for(MorphType type : typeSet){
             List<MorphPart> partList = morphMap.get(type);
             if(partList == null) continue;
-            totalMorphPart += partList.size();
+            morphPartList.addAll(partList);
         }
 
         }
 
+        int totalMorphPart = morphPartList.size();
         if(totalMorphPart <= 0){
             dumpLeShort(0);
             return;
         if(totalMorphPart <= 0){
             dumpLeShort(0);
             return;
@@ -476,9 +510,41 @@ public class PmdExporterBase extends BinaryExporter{
             dumpLeShort(totalMorphPart);
         }
 
             dumpLeShort(totalMorphPart);
         }
 
+        dumpBaseMorph(model);
+
+        for(MorphPart part : morphPartList){
+            dumpText(part.getMorphName().getPrimaryText(),
+                     PmdConst.MAXBYTES_MORPHNAME );
+
+            List<MorphVertex> morphVertexList = part.getMorphVertexList();
+            dumpLeInt(morphVertexList.size());
+
+            dumpByte(part.getMorphType().encode());
+            for(MorphVertex morphVertex : morphVertexList){
+                dumpLeInt(morphVertex.getSerialNumber());
+                dumpPos3D(morphVertex.getOffset());
+            }
+        }
+
+        flush();
+
+        return;
+    }
+
+    /**
+     * BASEモーフを出力する。
+     * @param model モデルデータ
+     * @throws IOException 出力エラー
+     * @throws IllegalTextExportException モーフ名が長すぎる
+     */
+    private void dumpBaseMorph(PmdModel model)
+            throws IOException, IllegalTextExportException{
         dumpText("base", PmdConst.MAXBYTES_MORPHNAME);
         dumpText("base", PmdConst.MAXBYTES_MORPHNAME);
+
+        List<MorphVertex> mergedMorphVertexList = model.mergeMorphVertex();
         int totalVertex = mergedMorphVertexList.size();
         dumpLeInt(totalVertex);
         int totalVertex = mergedMorphVertexList.size();
         dumpLeInt(totalVertex);
+
         dumpByte(MorphType.BASE.encode());
         for(MorphVertex morphVertex : mergedMorphVertexList){
             Vertex baseVertex = morphVertex.getBaseVertex();
         dumpByte(MorphType.BASE.encode());
         for(MorphVertex morphVertex : mergedMorphVertexList){
             Vertex baseVertex = morphVertex.getBaseVertex();
@@ -486,25 +552,6 @@ public class PmdExporterBase extends BinaryExporter{
             dumpPos3D(baseVertex.getPosition());
         }
 
             dumpPos3D(baseVertex.getPosition());
         }
 
-        for(MorphType type : typeSet){
-            List<MorphPart> partList = morphMap.get(type);
-            if(partList == null) continue;
-            for(MorphPart part : partList){
-                dumpText(part.getMorphName().getPrimaryText(),
-                         PmdConst.MAXBYTES_MORPHNAME );
-                List<MorphVertex> morphVertexList = part.getMorphVertexList();
-                dumpLeInt(morphVertexList.size());
-                dumpByte(part.getMorphType().encode());
-
-                for(MorphVertex morphVertex : morphVertexList){
-                    dumpLeInt(morphVertex.getSerialNumber());
-                    dumpPos3D(morphVertex.getOffset());
-                }
-            }
-        }
-
-        flush();
-
         return;
     }
 
         return;
     }
 
index 3c00302..a61e869 100644 (file)
@@ -29,6 +29,9 @@ import jp.sfjp.mikutoga.pmd.parser.PmdRigidHandler;
  */
 class RigidBuilder implements PmdRigidHandler {
 
  */
 class RigidBuilder implements PmdRigidHandler {
 
+    private static final int MAX_BONEID = 65534;
+
+
     private final List<BoneInfo> boneList;
 
     private final List<RigidInfo> rigidList;
     private final List<BoneInfo> boneList;
 
     private final List<RigidInfo> rigidList;
@@ -78,6 +81,7 @@ class RigidBuilder implements PmdRigidHandler {
      */
     @Override
     public void loopNext(ParseStage stage){
      */
     @Override
     public void loopNext(ParseStage stage){
+        assert this.rigidIt != null;
         if(this.rigidIt.hasNext()){
             this.currentRigid = this.rigidIt.next();
         }
         if(this.rigidIt.hasNext()){
             this.currentRigid = this.rigidIt.next();
         }
@@ -111,7 +115,7 @@ class RigidBuilder implements PmdRigidHandler {
     @Override
     public void pmdRigidInfo(int rigidGroupId, int linkedBoneId){
         BoneInfo bone;
     @Override
     public void pmdRigidInfo(int rigidGroupId, int linkedBoneId){
         BoneInfo bone;
-        if(linkedBoneId < 0 || 65535 <= linkedBoneId){
+        if(linkedBoneId < 0 || MAX_BONEID < linkedBoneId){
             bone = null;
         }else{
             bone = this.boneList.get(linkedBoneId);
             bone = null;
         }else{
             bone = this.boneList.get(linkedBoneId);
index a7321ff..e9891f9 100644 (file)
@@ -198,7 +198,8 @@ class ShapeBuilder implements PmdShapeHandler {
      */
     @Override
     public void pmdVertexEdge(boolean hideEdge){
      */
     @Override
     public void pmdVertexEdge(boolean hideEdge){
-        this.currentVertex.setEdgeAppearance( ! hideEdge );
+        boolean appearFlag = ! hideEdge;
+        this.currentVertex.setEdgeAppearance(appearFlag);
         return;
     }
 
         return;
     }
 
index 6851f17..c4c36cd 100644 (file)
@@ -10,7 +10,6 @@ package jp.sfjp.mikutoga.pmd.model.binio;
 import java.util.Iterator;
 import java.util.List;
 import jp.sfjp.mikutoga.bin.parser.ParseStage;
 import java.util.Iterator;
 import java.util.List;
 import jp.sfjp.mikutoga.bin.parser.ParseStage;
-import jp.sfjp.mikutoga.corelib.I18nText;
 import jp.sfjp.mikutoga.pmd.model.BoneGroup;
 import jp.sfjp.mikutoga.pmd.model.BoneInfo;
 import jp.sfjp.mikutoga.pmd.model.MorphPart;
 import jp.sfjp.mikutoga.pmd.model.BoneGroup;
 import jp.sfjp.mikutoga.pmd.model.BoneInfo;
 import jp.sfjp.mikutoga.pmd.model.MorphPart;
@@ -25,10 +24,6 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
 
     private final PmdModel model;
 
 
     private final PmdModel model;
 
-    private final I18nText modelName;
-    private final I18nText description;
-
-    private final List<BoneInfo> boneList;
     private Iterator<BoneInfo> boneIt;
     private BoneInfo currentBone = null;
 
     private Iterator<BoneInfo> boneIt;
     private BoneInfo currentBone = null;
 
@@ -36,7 +31,6 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
     private Iterator<MorphPart> morphPartIt;
     private MorphPart currentMorphPart = null;
 
     private Iterator<MorphPart> morphPartIt;
     private MorphPart currentMorphPart = null;
 
-    private final List<BoneGroup> boneGroupList;
     private Iterator<BoneGroup> boneGroupIt;
     private BoneGroup currentBoneGroup = null;
 
     private Iterator<BoneGroup> boneGroupIt;
     private BoneGroup currentBoneGroup = null;
 
@@ -48,15 +42,7 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
      */
     TextBuilder(PmdModel model){
         super();
      */
     TextBuilder(PmdModel model){
         super();
-
         this.model = model;
         this.model = model;
-
-        this.modelName   = model.getModelName();
-        this.description = model.getDescription();
-
-        this.boneList      = model.getBoneList();
-        this.boneGroupList = model.getBoneGroupList();
-
         return;
     }
 
         return;
     }
 
@@ -80,11 +66,11 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
 
     /**
      * {@inheritDoc}
 
     /**
      * {@inheritDoc}
-     * @param hasMoreData {@inheritDoc}
+     * @param hasMoreDataArg {@inheritDoc}
      */
     @Override
      */
     @Override
-    public void pmdParseEnd(boolean hasMoreData){
-        this.hasMoreData = hasMoreData;
+    public void pmdParseEnd(boolean hasMoreDataArg){
+        this.hasMoreData = hasMoreDataArg;
         return;
     }
 
         return;
     }
 
@@ -96,7 +82,7 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
     @Override
     public void loopStart(ParseStage stage, int loops){
         if(stage == PmdEngHandler.ENGBONE_LIST){
     @Override
     public void loopStart(ParseStage stage, int loops){
         if(stage == PmdEngHandler.ENGBONE_LIST){
-            this.boneIt = this.boneList.iterator();
+            this.boneIt = this.model.getBoneList().iterator();
             if(this.boneIt.hasNext()){
                 this.currentBone = this.boneIt.next();
             }
             if(this.boneIt.hasNext()){
                 this.currentBone = this.boneIt.next();
             }
@@ -115,7 +101,7 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
                 this.currentMorphPart = this.morphPartIt.next();
             }
         }else if(stage == PmdEngHandler.ENGBONEGROUP_LIST){
                 this.currentMorphPart = this.morphPartIt.next();
             }
         }else if(stage == PmdEngHandler.ENGBONEGROUP_LIST){
-            this.boneGroupIt = this.boneGroupList.iterator();
+            this.boneGroupIt = this.model.getBoneGroupList().iterator();
 
             // デフォルトボーングループを読み飛ばす
             assert this.boneGroupIt.hasNext();
 
             // デフォルトボーングループを読み飛ばす
             assert this.boneGroupIt.hasNext();
@@ -177,13 +163,13 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
 
     /**
      * {@inheritDoc}
 
     /**
      * {@inheritDoc}
-     * @param modelName {@inheritDoc}
-     * @param description {@inheritDoc}
+     * @param modelNameArg {@inheritDoc}
+     * @param descriptionArg {@inheritDoc}
      */
     @Override
      */
     @Override
-    public void pmdModelInfo(String modelName, String description){
-        this.modelName  .setPrimaryText(modelName);
-        this.description.setPrimaryText(description);
+    public void pmdModelInfo(String modelNameArg, String descriptionArg){
+        this.model.getModelName()  .setPrimaryText(modelNameArg);
+        this.model.getDescription().setPrimaryText(descriptionArg);
         return;
     }
 
         return;
     }
 
@@ -198,13 +184,13 @@ class TextBuilder implements PmdBasicHandler, PmdEngHandler {
 
     /**
      * {@inheritDoc}
 
     /**
      * {@inheritDoc}
-     * @param modelName {@inheritDoc}
-     * @param description {@inheritDoc}
+     * @param modelNameArg {@inheritDoc}
+     * @param descriptionArg {@inheritDoc}
      */
     @Override
      */
     @Override
-    public void pmdEngModelInfo(String modelName, String description){
-        this.modelName  .setGlobalText(modelName);
-        this.description.setGlobalText(description);
+    public void pmdEngModelInfo(String modelNameArg, String descriptionArg){
+        this.model.getModelName()  .setGlobalText(modelNameArg);
+        this.model.getDescription().setGlobalText(descriptionArg);
         return;
     }
 
         return;
     }
 
diff --git a/src/main/java/jp/sfjp/mikutoga/pmd/model/package-info.java b/src/main/java/jp/sfjp/mikutoga/pmd/model/package-info.java
new file mode 100644 (file)
index 0000000..994cb28
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * package information for Javadoc
+ *
+ * License : The MIT License
+ * Copyright(c) 2013 MikuToga Partners
+ */
+
+/**
+ * PMDモデルファイル(*.pmd)用各種基本データ構造。
+ */
+
+package jp.sfjp.mikutoga.pmd.model;
+
+/* EOF */
index 92b759e..caba9ca 100644 (file)
@@ -30,6 +30,7 @@ class ExporterMaterial extends ProxyXmlExporter {
 
 
     private final ExtraExporter exp;
 
 
     private final ExtraExporter exp;
+    private float[] rgbaBuf = null;
 
 
     /**
 
 
     /**
@@ -121,27 +122,25 @@ class ExporterMaterial extends ProxyXmlExporter {
      */
     private void putPhongShade(Material material)
             throws IOException{
      */
     private void putPhongShade(Material material)
             throws IOException{
-        float[] rgba = null;
-
         ind().putOpenSTag(PmdTag.DIFFUSE.tag()).sp();
         Color diffuse = material.getDiffuseColor();
         ind().putOpenSTag(PmdTag.DIFFUSE.tag()).sp();
         Color diffuse = material.getDiffuseColor();
-        rgba = diffuse.getRGBComponents(rgba);
-        putTriColor(rgba);
-        putFloatAttr(PmdAttr.ALPHA.attr(), rgba[IDX_ALPHA]).sp();
+        this.rgbaBuf = diffuse.getRGBComponents(this.rgbaBuf);
+        putTriColor(this.rgbaBuf);
+        putFloatAttr(PmdAttr.ALPHA.attr(), this.rgbaBuf[IDX_ALPHA]).sp();
         putCloseEmpty().ln();
 
         float shininess = material.getShininess();
         ind().putOpenSTag(PmdTag.SPECULAR.tag()).sp();
         Color specular = material.getSpecularColor();
         putCloseEmpty().ln();
 
         float shininess = material.getShininess();
         ind().putOpenSTag(PmdTag.SPECULAR.tag()).sp();
         Color specular = material.getSpecularColor();
-        rgba = specular.getRGBComponents(rgba);
-        putTriColor(rgba);
+        this.rgbaBuf = specular.getRGBComponents(this.rgbaBuf);
+        putTriColor(this.rgbaBuf);
         putFloatAttr(PmdAttr.SHININESS.attr(), shininess).sp();
         putCloseEmpty().ln();
 
         ind().putOpenSTag(PmdTag.AMBIENT.tag()).sp();
         Color ambient = material.getAmbientColor();
         putFloatAttr(PmdAttr.SHININESS.attr(), shininess).sp();
         putCloseEmpty().ln();
 
         ind().putOpenSTag(PmdTag.AMBIENT.tag()).sp();
         Color ambient = material.getAmbientColor();
-        rgba = ambient.getRGBComponents(rgba);
-        putTriColor(rgba);
+        this.rgbaBuf = ambient.getRGBComponents(this.rgbaBuf);
+        putTriColor(this.rgbaBuf);
         putCloseEmpty().ln();
 
         return;
         putCloseEmpty().ln();
 
         return;
index 3746859..aabf53e 100644 (file)
@@ -62,6 +62,7 @@ public final class Schema101009 implements LocalXmlResource{
     /**
      * {@inheritDoc}
      * @return {@inheritDoc}
     /**
      * {@inheritDoc}
      * @return {@inheritDoc}
+     * ※101009版。
      */
     @Override
     public URI getOriginalResource(){
      */
     @Override
     public URI getOriginalResource(){
@@ -70,6 +71,7 @@ public final class Schema101009 implements LocalXmlResource{
 
     /**
      * {@inheritDoc}
 
     /**
      * {@inheritDoc}
+     * ※101009版。
      * @return {@inheritDoc}
      */
     @Override
      * @return {@inheritDoc}
      */
     @Override
index 6b99257..546215f 100644 (file)
@@ -61,6 +61,7 @@ public final class Schema130128 implements LocalXmlResource{
 
     /**
      * {@inheritDoc}
 
     /**
      * {@inheritDoc}
+     * ※130128版。
      * @return {@inheritDoc}
      */
     @Override
      * @return {@inheritDoc}
      */
     @Override
@@ -70,6 +71,7 @@ public final class Schema130128 implements LocalXmlResource{
 
     /**
      * {@inheritDoc}
 
     /**
      * {@inheritDoc}
+     * ※130128版。
      * @return {@inheritDoc}
      */
     @Override
      * @return {@inheritDoc}
      */
     @Override
index f85f928..9a12175 100644 (file)
@@ -14,25 +14,15 @@ import java.io.OutputStream;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.nio.charset.Charset;
 import java.io.OutputStreamWriter;
 import java.io.Writer;
 import java.nio.charset.Charset;
-import javax.xml.parsers.DocumentBuilder;
-import javax.xml.parsers.DocumentBuilderFactory;
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.validation.Schema;
 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
 import jp.sfjp.mikutoga.pmd.IllegalPmdDataException;
 import jp.sfjp.mikutoga.pmd.model.PmdModel;
 import jp.sfjp.mikutoga.pmd.model.binio.PmdExporter;
 import jp.sfjp.mikutoga.pmd.model.binio.PmdLoader;
 import jp.sfjp.mikutoga.pmd.model.xml.PmdXmlExporter;
 import jp.sfjp.mikutoga.bin.parser.MmdFormatException;
 import jp.sfjp.mikutoga.pmd.IllegalPmdDataException;
 import jp.sfjp.mikutoga.pmd.model.PmdModel;
 import jp.sfjp.mikutoga.pmd.model.binio.PmdExporter;
 import jp.sfjp.mikutoga.pmd.model.binio.PmdLoader;
 import jp.sfjp.mikutoga.pmd.model.xml.PmdXmlExporter;
-import jp.sfjp.mikutoga.pmd.model.xml.Schema101009;
-import jp.sfjp.mikutoga.pmd.model.xml.Schema130128;
 import jp.sfjp.mikutoga.pmd.model.xml.XmlModelFileType;
 import jp.sfjp.mikutoga.pmd.model.xml.XmlPmdLoader;
 import jp.sfjp.mikutoga.pmd.model.xml.XmlModelFileType;
 import jp.sfjp.mikutoga.pmd.model.xml.XmlPmdLoader;
-import jp.sfjp.mikutoga.xml.BotherHandler;
-import jp.sfjp.mikutoga.xml.LocalXmlResource;
-import jp.sfjp.mikutoga.xml.SchemaUtil;
 import jp.sfjp.mikutoga.xml.TogaXmlException;
 import jp.sfjp.mikutoga.xml.TogaXmlException;
-import jp.sfjp.mikutoga.xml.XmlResourceResolver;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
 import org.xml.sax.InputSource;
 import org.xml.sax.SAXException;
 import org.xml.sax.XMLReader;
@@ -62,76 +52,6 @@ public class Pmd2XmlConv {
 
 
     /**
 
 
     /**
-     * ドキュメントビルダファクトリを初期化する。
-     * @param builderFactory ドキュメントビルダファクトリ
-     */
-    private static void initBuilderFactory(
-            DocumentBuilderFactory builderFactory ){
-        builderFactory.setCoalescing(true);
-        builderFactory.setExpandEntityReferences(true);
-        builderFactory.setIgnoringComments(true);
-        builderFactory.setIgnoringElementContentWhitespace(false);
-        builderFactory.setNamespaceAware(true);
-        builderFactory.setValidating(false);
-        builderFactory.setXIncludeAware(false);
-
-//      builderFactory.setFeature(name, value);
-//      builderFactory.setAttribute(name, value);
-
-        return;
-    }
-
-    /**
-     * DOMビルダ生成。
-     * @return DOMビルダ
-     */
-    private DocumentBuilder buildBuilder(){
-        XmlResourceResolver resolver = new XmlResourceResolver();
-
-        LocalXmlResource[] schemaArray;
-        switch(this.inTypes){
-        case XML_101009:
-            schemaArray = new LocalXmlResource[]{
-                Schema101009.SINGLETON,
-            };
-            break;
-        case XML_130128:
-            schemaArray = new LocalXmlResource[]{
-                Schema130128.SINGLETON,
-            };
-            break;
-        case XML_AUTO:
-            schemaArray = new LocalXmlResource[]{
-                Schema101009.SINGLETON,
-                Schema130128.SINGLETON,
-            };
-            break;
-        default:
-            throw new IllegalStateException();
-        }
-
-        Schema schema = SchemaUtil.newSchema(resolver, schemaArray);
-
-        DocumentBuilderFactory builderFactory =
-                DocumentBuilderFactory.newInstance();
-        initBuilderFactory(builderFactory);
-        builderFactory.setSchema(schema);
-
-        DocumentBuilder result;
-        try{
-            result = builderFactory.newDocumentBuilder();
-        }catch(ParserConfigurationException e){
-            assert false;
-            throw new AssertionError(e);
-        }
-        result.setEntityResolver(resolver);
-        result.setErrorHandler(BotherHandler.HANDLER);
-
-        return result;
-    }
-
-
-    /**
      * 入力ファイル種別を設定する。
      * @param type ファイル種別
      * @throws NullPointerException 引数がnull
      * 入力ファイル種別を設定する。
      * @param type ファイル種別
      * @throws NullPointerException 引数がnull
index 0772100..91d0406 100644 (file)
@@ -23,7 +23,7 @@ import org.xml.sax.XMLReader;
 /**
  * XML入力に関する各種ユーティリティ。
  */
 /**
  * XML入力に関する各種ユーティリティ。
  */
-class XmlInputUtil {
+final class XmlInputUtil {
 
     /**
      * 隠しコンストラクタ。
 
     /**
      * 隠しコンストラクタ。