Skip to content

Commit a059656

Browse files
fixed diffing [opt]
1 parent 67173a1 commit a059656

File tree

3 files changed

+40
-41
lines changed

3 files changed

+40
-41
lines changed

PPMLib/PPMFrame.cs

Lines changed: 29 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
//INSTANT C# NOTE: Formerly VB project-level imports:
22
using System.Diagnostics;
33
using System.Drawing;
4+
using System.Windows.Forms;
45

56
namespace PPMLib
67
{
@@ -20,60 +21,55 @@ public void Overwrite(PPMFrame frame)
2021
if ((_firstByteHeader & 0x80) != 0)
2122
{
2223
return;
23-
}
24-
int tX = frame._translateX;
25-
int tY = frame._translateY;
26-
//////////// < There is a mistake somewhere
27-
int ld0 = ((tX >= 0) ? (tX >> 3) : 0);
28-
int pi0 = (tX >= 0) ? 0 : ((-tX) >> 3);
29-
byte del = (byte)(tX >= 0 ? (tX & 7) : (((byte)(tX)) & 7));
30-
if (del != 0) Debug.WriteLine(tX + " " + del);
24+
}
25+
// < There is NOT a mistake anywhere
26+
int ld0 = ((_translateX >= 0) ? (_translateX >> 3) : 0);
27+
int pi0 = (_translateX >= 0) ? 0 : ((-_translateX) >> 3);
28+
byte del = (byte)(_translateX >= 0 ? (_translateX & 7) : (((byte)(_translateX)) & 7));
3129
byte ndel = (byte)(8 - del);
3230
byte alpha = (byte)((1 << (8 - del)) - 1);
3331
byte nalpha = (byte)~alpha;
34-
int pi = 0, ld = 0;
35-
if (tX >= 0)
32+
int pi, ld;
33+
if (_translateX >= 0)
3634
{
37-
for (ushort y = 0; y < 192; y++)
35+
for (int y = 0; y < 192; y++)
3836
{
39-
if (y < tY) continue;
40-
if (y - tY >= 192) break;
41-
ld = ((y << 5) + ld0);
42-
pi = (((y - tY) << 5) + pi0);
43-
Layer1._layerData[ld] ^= (byte)(frame.Layer1._layerData[pi] & alpha);
44-
Layer2._layerData[ld++] ^= (byte)(frame.Layer2._layerData[pi] & alpha);
37+
if (y < _translateY) continue;
38+
if (y - _translateY >= 192) break;
39+
ld = (y << 5) + ld0;
40+
pi = ((y - _translateY) << 5) + pi0;
41+
Layer1[ld] ^= (byte)(frame.Layer1[pi] & alpha);
42+
Layer2[ld++] ^= (byte)(frame.Layer2[pi] & alpha);
4543
while ((ld & 31) < 31)
4644
{
47-
Layer1._layerData[ld] ^= (byte)(((frame.Layer1._layerData[pi] & nalpha) >> ndel) | ((frame.Layer1._layerData[pi + 1] & alpha) << del));
48-
Layer2._layerData[ld] ^= (byte)(((frame.Layer2._layerData[pi] & nalpha) >> ndel) | ((frame.Layer2._layerData[pi + 1] & alpha) << del));
49-
//layer2[ld] ^= ((layerB[pi] & nalpha) >> ndel) | ((layerB[pi + 1] & alpha) << del);
45+
Layer1[ld] ^= (byte)(((frame.Layer1[pi] & nalpha) >> ndel) | ((frame.Layer1[pi + 1] & alpha) << del));
46+
Layer2[ld] ^= (byte)(((frame.Layer2[pi] & nalpha) >> ndel) | ((frame.Layer2[pi + 1] & alpha) << del));
5047
ld++; pi++;
5148
}
52-
Layer1._layerData[ld] ^= (byte)((frame.Layer1._layerData[pi] & nalpha) | (frame.Layer1._layerData[pi + 1] & alpha));
53-
Layer2._layerData[ld] ^= (byte)((frame.Layer2._layerData[pi] & nalpha) | (frame.Layer2._layerData[pi + 1] & alpha));
54-
//layer2[ld] ^= (layerB[pi] & nalpha) | (layerB[pi + 1] & alpha);
49+
Layer1[ld] ^= (byte)((frame.Layer1[pi] & nalpha) | (frame.Layer1[pi + 1] & alpha));
50+
Layer2[ld] ^= (byte)((frame.Layer2[pi] & nalpha) | (frame.Layer2[pi + 1] & alpha));
5551
}
5652
}
5753
else
5854
{
5955
for (ushort y = 0; y < 192; y++)
6056
{
61-
if (y < tY) continue;
62-
if (y - tY >= 192) break;
63-
ld = ((y << 5) + ld0);
64-
pi = (((y - tY) << 5) + pi0);
57+
if (y < _translateY) continue;
58+
if (y - _translateY >= 192) break;
59+
ld = (y << 5) + ld0;
60+
pi = ((y - _translateY) << 5) + pi0;
6561
while ((pi & 31) < 31)
6662
{
67-
Layer1._layerData[ld] ^= (byte)(((frame.Layer1._layerData[pi] & nalpha) >> ndel) | ((frame.Layer1._layerData[pi + 1] & alpha) << del));
68-
Layer2._layerData[ld] ^= (byte)(((frame.Layer2._layerData[pi] & nalpha) >> ndel) | ((frame.Layer2._layerData[pi + 1] & alpha) << del));
63+
Layer1[ld] ^= (byte)(((frame.Layer1[pi] & nalpha) >> ndel) | ((frame.Layer1[pi + 1] & alpha) << del));
64+
Layer2[ld] ^= (byte)(((frame.Layer2[pi] & nalpha) >> ndel) | ((frame.Layer2[pi + 1] & alpha) << del));
6965
ld++; pi++;
7066
}
71-
Layer1._layerData[ld] ^= (byte)(frame.Layer1._layerData[pi] & nalpha);
72-
Layer2._layerData[ld] ^= (byte)(frame.Layer2._layerData[pi] & nalpha);
73-
//layer2[ld] ^= layerB[pi] & nalpha;
67+
Layer1[ld] ^= (byte)(frame.Layer1[pi] & nalpha);
68+
Layer2[ld] ^= (byte)(frame.Layer2[pi] & nalpha);
7469
}
7570
}
76-
}
71+
}
72+
7773
public PPMLayer Layer1
7874
{
7975
get

PPMLib/PPMLayer.cs

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,7 @@ public class PPMLayer
77
{
88
private PenColor _pen;
99
private bool _visibility;
10-
internal byte[] _layerData = new byte[32 * 192];
11-
//public bool[,] _layerData = new bool[192, 256];
10+
internal byte[] _layerData = new byte[32 * 192];
1211
internal byte[] _linesEncoding = new byte[48];
1312
public LineEncoding LinesEncoding(int lineIndex)
1413
=> (LineEncoding)((_linesEncoding[lineIndex >> 2] >> ((lineIndex & 0x3) << 1)) & 0x3);
@@ -124,12 +123,13 @@ public bool Visible
124123
{
125124
_visibility = value;
126125
}
127-
}
128-
/*public bool this[int y, int x]
126+
}
127+
128+
public byte this[int p]
129129
{
130-
get => _layerData[y, x];
131-
set => _layerData[y, x] = value;
132-
}*/
130+
get => _layerData[p];
131+
set => _layerData[p] = value;
132+
}
133133

134134
public bool this[int y, int x]
135135
{

PPMLib/PPMLib.csproj

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -78,7 +78,9 @@
7878
<Reference Include="NAudio.WinMM, Version=2.0.0.0, Culture=neutral, PublicKeyToken=e279aa5131008a41, processorArchitecture=MSIL">
7979
<HintPath>..\packages\NAudio.WinMM.2.0.0\lib\netstandard2.0\NAudio.WinMM.dll</HintPath>
8080
</Reference>
81-
<Reference Include="PresentationCore" />
81+
<Reference Include="PresentationCore">
82+
<HintPath>..\..\..\..\..\..\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.7.2\PresentationCore.dll</HintPath>
83+
</Reference>
8284
<Reference Include="System" />
8385
<Reference Include="System.AppContext, Version=4.1.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
8486
<HintPath>..\packages\System.AppContext.4.3.0\lib\net463\System.AppContext.dll</HintPath>
@@ -236,6 +238,7 @@
236238
<Reference Include="System.ValueTuple, Version=4.0.3.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
237239
<HintPath>..\packages\System.ValueTuple.4.5.0\lib\net47\System.ValueTuple.dll</HintPath>
238240
</Reference>
241+
<Reference Include="System.Windows.Forms" />
239242
<Reference Include="System.Xml.Linq" />
240243
<Reference Include="System.Data.DataSetExtensions" />
241244
<Reference Include="Microsoft.CSharp" />

0 commit comments

Comments
 (0)