@@ -16,29 +16,24 @@ namespace NdiStreamDeck
16
16
/// </summary>
17
17
internal sealed class NdiStreamDeckView : IDisposable
18
18
{
19
- private readonly IStreamDeckBoard deck ;
19
+ private readonly IMacroBoard deck ;
20
20
private readonly IList < VideoFrameReceiver > sources ;
21
21
private int activeSourceIndex ;
22
22
23
23
// Just for convenience...
24
24
private readonly int rows ;
25
25
private readonly int columns ;
26
- private readonly int keyWidth ;
27
- private readonly int keyHeight ;
28
- private readonly int keyGapWidth ;
29
- private readonly int keyGapHeight ;
26
+ private readonly int keySize ;
27
+ private readonly int gapSize ;
30
28
31
29
// Note: not using IReadOnlyList as that doesn't have IndexOf :(
32
- internal NdiStreamDeckView ( IStreamDeckBoard deck , IList < VideoFrameReceiver > sources )
30
+ internal NdiStreamDeckView ( IMacroBoard deck , IList < VideoFrameReceiver > sources )
33
31
{
34
32
this . deck = deck ;
35
- rows = deck . Keys . KeyCountY ;
36
- columns = deck . Keys . KeyCountX ;
37
- keyWidth = deck . Keys . KeyWidth ;
38
- keyHeight = deck . Keys . KeyHeight ;
39
-
40
- keyGapWidth = deck . Keys . GetKeyDistanceXWorkaround ( ) ;
41
- keyGapHeight = deck . Keys . GetKeyDistanceYWorkaround ( ) ;
33
+ rows = deck . Keys . CountY ;
34
+ columns = deck . Keys . CountX ;
35
+ keySize = deck . Keys . KeySize ;
36
+ gapSize = deck . Keys . GapSize ;
42
37
43
38
this . sources = sources . Take ( rows ) . ToList ( ) ;
44
39
deck . KeyStateChanged += HandleStreamDeckKey ;
@@ -86,8 +81,8 @@ private void HandleStreamDeckKey(object sender, KeyEventArgs e)
86
81
/// </summary>
87
82
private unsafe void DrawThumbnail ( int row , VideoFrame frame )
88
83
{
89
- var height = keyHeight ;
90
- var width = keyWidth ;
84
+ var height = keySize ;
85
+ var width = keySize ;
91
86
var data = new byte [ width * height * 3 ] ;
92
87
93
88
int scale = Math . Min ( frame . Height / height , frame . Width / width ) ;
@@ -111,7 +106,7 @@ private unsafe void DrawThumbnail(int row, VideoFrame frame)
111
106
sourceIndex += ( scale - 1 ) * 4 ;
112
107
}
113
108
}
114
- var bitmap = new KeyBitmap ( width , height , data ) ;
109
+ var bitmap = KeyBitmap . FromBgr24Array ( width , height , data ) ;
115
110
deck . SetKeyBitmap ( row * columns , bitmap ) ;
116
111
}
117
112
@@ -127,8 +122,8 @@ private unsafe void DrawFullFrame(VideoFrame frame)
127
122
int keyOffsetX = 1 ;
128
123
int keyOffsetY = 0 ;
129
124
130
- int keyPixelsWidth = keyWidth * keyColumns + keyGapWidth * ( keyColumns - 1 ) ;
131
- int keyPixelsHeight = keyHeight * keyRows + keyGapHeight * ( keyRows - 1 ) ;
125
+ int keyPixelsWidth = keySize * keyColumns + gapSize * ( keyColumns - 1 ) ;
126
+ int keyPixelsHeight = keySize * keyRows + gapSize * ( keyRows - 1 ) ;
132
127
int scale = Math . Min ( frame . Height / keyPixelsHeight , frame . Width / keyPixelsWidth ) ;
133
128
134
129
// Our simplistic scaling means we don't show absolutely everything,
@@ -140,16 +135,16 @@ private unsafe void DrawFullFrame(VideoFrame frame)
140
135
141
136
for ( int row = 0 ; row < keyRows ; row ++ )
142
137
{
143
- int startY = row * ( keyHeight + keyGapHeight ) * scale + inputOffsetY ;
138
+ int startY = row * ( keySize + gapSize ) * scale + inputOffsetY ;
144
139
for ( int col = 0 ; col < keyColumns ; col ++ )
145
140
{
146
- int startX = col * ( keyWidth + keyGapWidth ) * scale + inputOffsetX ;
147
- var data = new byte [ keyWidth * keyHeight * 3 ] ;
141
+ int startX = col * ( keySize + gapSize ) * scale + inputOffsetX ;
142
+ var data = new byte [ keySize * keySize * 3 ] ;
148
143
int destIndex = 0 ;
149
- for ( int y = 0 ; y < keyHeight ; y ++ )
144
+ for ( int y = 0 ; y < keySize ; y ++ )
150
145
{
151
146
int sourceIndex = ( y * scale + startY ) * frame . Stride + startX * 4 ;
152
- for ( int x = 0 ; x < keyWidth ; x ++ )
147
+ for ( int x = 0 ; x < keySize ; x ++ )
153
148
{
154
149
data [ destIndex ++ ] = buffer [ sourceIndex ++ ] ;
155
150
data [ destIndex ++ ] = buffer [ sourceIndex ++ ] ;
@@ -158,15 +153,15 @@ private unsafe void DrawFullFrame(VideoFrame frame)
158
153
sourceIndex += ( scale - 1 ) * 4 ;
159
154
}
160
155
}
161
- var bitmap = new KeyBitmap ( keyWidth , keyHeight , data ) ;
162
- deck . SetKeyBitmap ( ( row + keyOffsetY ) * deck . Keys . KeyCountX + col + keyOffsetX , bitmap ) ;
156
+ var bitmap = KeyBitmap . FromBgr24Array ( keySize , keySize , data ) ;
157
+ deck . SetKeyBitmap ( ( row + keyOffsetY ) * columns + col + keyOffsetX , bitmap ) ;
163
158
}
164
159
}
165
160
}
166
161
167
162
public void Dispose ( )
168
163
{
169
- deck . ClearKeysWithWorkaround ( ) ;
164
+ deck . ClearKeys ( ) ;
170
165
deck . KeyStateChanged -= HandleStreamDeckKey ;
171
166
foreach ( var source in sources )
172
167
{
0 commit comments