@@ -24,6 +24,9 @@ Type GraphicsOutput
24
24
Field m_FrameBoundingBoxPosY:Int [c_LimbCount, c_MaxFrameCount]
25
25
Field m_FrameBoundingBoxSize:SVec2I = Null
26
26
27
+ Field m_OutputPanOffsetX:Int = 0
28
+ Field m_OutputPanOffsetY:Int = 0
29
+
27
30
Field m_LimbManager:LimbManager = Null
28
31
29
32
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -77,6 +80,8 @@ Type GraphicsOutput
77
80
78
81
Method SetOutputZoom :Int (newZoom:Int )
79
82
m_OutputZoom = Utility.Clamp(newZoom, 1 , 5 )
83
+ m_OutputPanOffsetX = 0
84
+ m_OutputPanOffsetY = 0
80
85
Return m_OutputZoom
81
86
EndMethod
82
87
@@ -127,6 +132,16 @@ Type GraphicsOutput
127
132
m_BentLimbPartDrawOrder = drawOrder
128
133
EndMethod
129
134
135
+ '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
136
+
137
+ Method SetOutputPanOffset (mouseMovement:SVec2I )
138
+ m_OutputPanOffsetX :- mouseMovement[ 0 ]
139
+ m_OutputPanOffsetX = Utility.Clamp(m_OutputPanOffsetX, 0 , 100 + (m_FrameCount * ((m_TileSize / m_InputZoom) + 8 )) * m_OutputZoom)
140
+
141
+ m_OutputPanOffsetY :- mouseMovement[ 1 ]
142
+ m_OutputPanOffsetY = Utility.Clamp(m_OutputPanOffsetY, 0 , 150 * m_OutputZoom)
143
+ EndMethod
144
+
130
145
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
131
146
132
147
Method GrabOutputForSaving :TPixmap ()
@@ -173,11 +188,17 @@ Type GraphicsOutput
173
188
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
174
189
175
190
Method Update ()
176
- 'Left mouse to adjust joint markers, click or hold and drag
177
- If MouseDown(1 ) Then
178
- Local mousePos:SVec2I = New SVec2I (MouseX(), MouseY())
179
- If Utility.PointIsWithinBox(mousePos, New SVec2I (0 , 0 ), m_SourceImageSize * m_InputZoom) Then
180
- m_LimbManager.SetJointMarker(mousePos)
191
+ If m_SourceImage <> Null Then
192
+ 'Getting these on mouse click is screwy so get them here
193
+ Local mouseMovement:SVec2I = New SVec2I (MouseXSpeed(), MouseYSpeed())
194
+
195
+ If MouseDown(1 ) Then
196
+ Local mousePos:SVec2I = New SVec2I (MouseX(), MouseY())
197
+ If Utility.PointIsWithinBox(mousePos, New SVec2I (0 , 0 ), m_SourceImageSize * m_InputZoom) Then
198
+ m_LimbManager.SetJointMarker(mousePos)
199
+ Else
200
+ SetOutputPanOffset(mouseMovement)
201
+ EndIf
181
202
EndIf
182
203
EndIf
183
204
EndMethod
@@ -194,6 +215,22 @@ Type GraphicsOutput
194
215
Flip(1 )
195
216
EndMethod
196
217
218
+ '////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
219
+
220
+ Method DrawZoomedOutput ()
221
+ Local outputUnzoomedSize:SVec2I = New SVec2I (100 + (m_FrameCount * ((m_TileSize / m_InputZoom) + 8 )), 230 )
222
+ Local outputCopyForZoom:TImage = CreateImage(outputUnzoomedSize[ 0 ] , outputUnzoomedSize[ 1 ] , 1 , DYNAMICIMAGE)
223
+ GrabImage(outputCopyForZoom, 0 , m_SourceImageSize[ 1 ] * m_InputZoom)
224
+
225
+ 'Hide the unzoomed output
226
+ SetColor(m_BackgroundColor[ 0 ] , m_BackgroundColor[ 1 ] , m_BackgroundColor[ 2 ] )
227
+ DrawRect(0 , m_SourceImageSize[ 1 ] * m_InputZoom, outputUnzoomedSize[ 0 ] + 20 , outputUnzoomedSize[ 1 ] + 20 )
228
+ Utility.ResetDrawColor()
229
+
230
+ SetImageHandle(outputCopyForZoom, m_OutputPanOffsetX, m_OutputPanOffsetY)
231
+ DrawImageRect(outputCopyForZoom, 0 , m_SourceImageSize[ 1 ] * m_InputZoom, outputCopyForZoom.Width * m_OutputZoom, outputCopyForZoom.Height * m_OutputZoom)
232
+ EndMethod
233
+
197
234
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
198
235
199
236
Method Draw ()
@@ -224,9 +261,7 @@ Type GraphicsOutput
224
261
EndIf
225
262
226
263
If m_OutputZoom > 1 Then
227
- Local outputCopyForZoom:TImage = CreateImage(100 + (m_FrameCount * ((m_TileSize / m_InputZoom) + 8 )), 230 , 1 , DYNAMICIMAGE)
228
- GrabImage(outputCopyForZoom, 0 , m_SourceImageSize[ 1 ] * m_InputZoom)
229
- DrawImageRect(outputCopyForZoom, 0 , m_SourceImageSize[ 1 ] * m_InputZoom, outputCopyForZoom.Width * m_OutputZoom, outputCopyForZoom.Height * m_OutputZoom)
264
+ DrawZoomedOutput()
230
265
EndIf
231
266
232
267
SetColor(m_Magenta[ 0 ] , m_Magenta[ 1 ] , m_Magenta[ 2 ] )
0 commit comments