Skip to content

Commit 81fb734

Browse files
committed
Add workspace view panning when zooming output
1 parent 2ebc9e0 commit 81fb734

File tree

1 file changed

+43
-8
lines changed

1 file changed

+43
-8
lines changed

Types/GraphicsOutput.bmx

Lines changed: 43 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,9 @@ Type GraphicsOutput
2424
Field m_FrameBoundingBoxPosY:Int[c_LimbCount, c_MaxFrameCount]
2525
Field m_FrameBoundingBoxSize:SVec2I = Null
2626

27+
Field m_OutputPanOffsetX:Int = 0
28+
Field m_OutputPanOffsetY:Int = 0
29+
2730
Field m_LimbManager:LimbManager = Null
2831

2932
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
@@ -77,6 +80,8 @@ Type GraphicsOutput
7780

7881
Method SetOutputZoom:Int(newZoom:Int)
7982
m_OutputZoom = Utility.Clamp(newZoom, 1, 5)
83+
m_OutputPanOffsetX = 0
84+
m_OutputPanOffsetY = 0
8085
Return m_OutputZoom
8186
EndMethod
8287

@@ -127,6 +132,16 @@ Type GraphicsOutput
127132
m_BentLimbPartDrawOrder = drawOrder
128133
EndMethod
129134

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+
130145
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
131146

132147
Method GrabOutputForSaving:TPixmap()
@@ -173,11 +188,17 @@ Type GraphicsOutput
173188
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
174189

175190
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
181202
EndIf
182203
EndIf
183204
EndMethod
@@ -194,6 +215,22 @@ Type GraphicsOutput
194215
Flip(1)
195216
EndMethod
196217

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+
197234
'////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
198235

199236
Method Draw()
@@ -224,9 +261,7 @@ Type GraphicsOutput
224261
EndIf
225262

226263
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()
230265
EndIf
231266

232267
SetColor(m_Magenta[0], m_Magenta[1], m_Magenta[2])

0 commit comments

Comments
 (0)