[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#2531


http://sourceforge.jp/tracker/index.php?func=detail&aid=2531&group_id=224&atid=939
上記、夜間オーバーライドの色相置換が不適切である問題について、修正案を提案します。

なお、この修正により画像の修正が必要になるのは、
私のプラグインとqra_raさんのインテリジェントビルだけだと思います。
qra_raさんさへOKなら、画像の修正は全てこちらでやる準備は出来ています。
よろしくお願いします。

Index: HueTransformSprite.cs
===================================================================
RCS file: /cvsroot/freetrain/FreeTrain/core/framework/graphics/HueTransformSprite.cs,v
retrieving revision 1.1
diff -u -r1.1 HueTransformSprite.cs
--- HueTransformSprite.cs	25 Dec 2002 20:43:36 -0000	1.1
+++ HueTransformSprite.cs	22 Jul 2003 15:04:11 -0000
@@ -25,7 +25,7 @@
 		/// <summary>
 		/// Source colors are transformed into a color series of this.
 		/// </summary>
-		private readonly Color[] targetColor;
+		private readonly Color targetColor;
 
 		public HueTransformSprite( Picture _pic, Point _offset, Point _origin, Size _size,
 			Color _keyColor, ColorMask _mask, Color _targetColor )
@@ -34,17 +34,17 @@
 
 			this.keyColor	= new Color[]{ _keyColor, ColorMap.getNightColor(_keyColor) };
 			this.mask		= _mask;
-			this.targetColor= new Color[]{ _targetColor, ColorMap.getNightColor(_targetColor) };
+			this.targetColor= _targetColor;
 		}
 
 		public override void draw( Surface surface, Point pt ) {
 			pt.X -= offset.X;
 			pt.Y -= offset.Y;
 
-			int idx = (World.world.clock.dayOrNight==DayNight.DayTime)?0:1;
+			int idx	= (World.world.clock.dayOrNight==DayNight.DayTime)?0:1;
 			
 			surface.bltHueTransform( pt, picture.surface, origin, size,
-				keyColor[idx], mask, targetColor[idx] );
+				keyColor[idx], mask, targetColor );
 		}
 	}
 

色マップ置換にも同様の問題が存在するのですが、
こちらは、若干付け焼き刃的&落とし穴のある修正になります。
なお、現在私の知る限り、この修正によって影響を受けるプラグインはありません。

落とし穴というのは、
昼夜兼用の場合
from(4,4,4)->to(8,8,8)という指定があれば
夜画像において (1,1,1)->(2,2,2)という正常な変換の他に
(4,4,4)->to(8,8,8)という余分な変換が行われる可能性があること

夜専用画像の場合、
from(4,4,4)->to(8,8,8)という指定があれば
(4,4,4)->to(8,8,8)という正常な変換の他に
(1,1,1)->(2,2,2)という余分な変換が行われる可能性があること

Index: ColorMappedSprite.cs
===================================================================
RCS file: /cvsroot/freetrain/FreeTrain/core/framework/graphics/ColorMappedSprite.cs,v
retrieving revision 1.4
diff -u -r1.4 ColorMappedSprite.cs
--- ColorMappedSprite.cs	25 Dec 2002 02:02:42 -0000	1.4
+++ ColorMappedSprite.cs	22 Jul 2003 15:04:11 -0000
@@ -20,15 +20,17 @@
 
 			this.srcColors = new Color[2][];
 			this.srcColors[0] = new Color[srcColors.Length];
-			this.srcColors[1] = new Color[srcColors.Length];
+			this.srcColors[1] = new Color[srcColors.Length*2];
 			this.dstColors = new Color[2][];
 			this.dstColors[0] = new Color[srcColors.Length];
-			this.dstColors[1] = new Color[srcColors.Length];
+			this.dstColors[1] = new Color[srcColors.Length*2];
 			
 			for( int i=0; i<srcColors.Length; i++ ) {
 				this.srcColors[0][i] = srcColors[i];
+				this.srcColors[1][i+srcColors.Length] = srcColors[i];
 				this.srcColors[1][i] = ColorMap.getNightColor(srcColors[i]);
 				this.dstColors[0][i] = dstColors[i];
+				this.dstColors[1][i+srcColors.Length] = dstColors[i];
 				this.dstColors[1][i] = ColorMap.getNightColor(dstColors[i]);
 			}
 		}

*****CVS はコード 1 で終了しました*****


_______________________________________________
FreeTrain-general mailing list
FreeTrain-general@lists.sourceforge.jp
http://lists.sourceforge.jp/mailman/listinfo/freetrain-general

題名

名前

メッセージ