Game client codebase including: - CharacterActionControl: Character and creature management - GlobalScript: Network, items, skills, quests, utilities - RYLClient: Main client application with GUI and event handlers - Engine: 3D rendering engine (RYLGL) - MemoryManager: Custom memory allocation - Library: Third-party dependencies (DirectX, boost, etc.) - Tools: Development utilities 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
1287 lines
58 KiB
Plaintext
1287 lines
58 KiB
Plaintext
VERSION 5.00
|
|
Object = "{831FDD16-0C5C-11D2-A9FC-0000F8754DA1}#2.0#0"; "MSCOMCTL.OCX"
|
|
Object = "{F9043C88-F6F2-101A-A3C9-08002B2F49FB}#1.2#0"; "comdlg32.ocx"
|
|
Begin VB.Form frmMain
|
|
BorderStyle = 1 'Fixed Single
|
|
Caption = "SlideshowVB"
|
|
ClientHeight = 6480
|
|
ClientLeft = 60
|
|
ClientTop = 345
|
|
ClientWidth = 9045
|
|
Icon = "frmMain.frx":0000
|
|
LinkTopic = "frmMain"
|
|
MaxButton = 0 'False
|
|
ScaleHeight = 6480
|
|
ScaleWidth = 9045
|
|
Visible = 0 'False
|
|
Begin MSComDlg.CommonDialog ctrlCommonDialog
|
|
Left = 60
|
|
Top = 6000
|
|
_ExtentX = 847
|
|
_ExtentY = 847
|
|
_Version = 393216
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 0
|
|
Left = 60
|
|
TabIndex = 12
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 75
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin VB.Frame fraOptions
|
|
Height = 1890
|
|
Left = 60
|
|
TabIndex = 6
|
|
Top = 4050
|
|
Width = 4420
|
|
Begin VB.TextBox txtMaxMediaLength
|
|
Height = 375
|
|
Left = 140
|
|
OLEDropMode = 1 'Manual
|
|
TabIndex = 0
|
|
ToolTipText = "Maximum playback time per source clip."
|
|
Top = 480
|
|
Width = 4150
|
|
End
|
|
Begin VB.ComboBox cmbTransitions
|
|
Height = 315
|
|
Left = 140
|
|
TabIndex = 1
|
|
ToolTipText = "Default Transition"
|
|
Top = 1440
|
|
Width = 4150
|
|
End
|
|
Begin VB.Label lblTransitionDescription
|
|
Caption = "Select a transition to use. If the transition is not installed on your system, the default transition will be used."
|
|
Height = 375
|
|
Index = 0
|
|
Left = 140
|
|
TabIndex = 7
|
|
Top = 930
|
|
Width = 4155
|
|
End
|
|
Begin VB.Label lbltxtMaxMediaLength
|
|
Caption = "Set the maximum time for each clip in the slideshow:"
|
|
Height = 255
|
|
Index = 0
|
|
Left = 140
|
|
TabIndex = 8
|
|
Top = 225
|
|
Width = 4155
|
|
End
|
|
End
|
|
Begin VB.Frame fraCommandFixture
|
|
Height = 1890
|
|
Left = 4560
|
|
TabIndex = 9
|
|
Top = 4050
|
|
Width = 4420
|
|
Begin MSComctlLib.ProgressBar ctrlProgress
|
|
Height = 405
|
|
Left = 140
|
|
TabIndex = 10
|
|
ToolTipText = "Current Progress"
|
|
Top = 1350
|
|
Visible = 0 'False
|
|
Width = 4140
|
|
_ExtentX = 7303
|
|
_ExtentY = 714
|
|
_Version = 393216
|
|
Appearance = 1
|
|
End
|
|
Begin VB.Label lblInstructions
|
|
Caption = "This interface supports drag-and-drop editing. Drag your media files into the poster frames to preview, then select a transition."
|
|
BeginProperty Font
|
|
Name = "Comic Sans MS"
|
|
Size = 9.75
|
|
Charset = 0
|
|
Weight = 400
|
|
Underline = 0 'False
|
|
Italic = 0 'False
|
|
Strikethrough = 0 'False
|
|
EndProperty
|
|
Height = 990
|
|
Left = 150
|
|
TabIndex = 11
|
|
ToolTipText = "This interface supports drag-and-drop editing. Drag your media files into the poster frames to preview, then select a transition."
|
|
Top = 225
|
|
Width = 4140
|
|
End
|
|
End
|
|
Begin VB.CommandButton cmdWriteXTL
|
|
Caption = "Write &XTL"
|
|
Height = 350
|
|
Left = 5220
|
|
TabIndex = 3
|
|
ToolTipText = "Export using XTL Format"
|
|
Top = 6075
|
|
Width = 1215
|
|
End
|
|
Begin VB.CommandButton cmdWriteAVI
|
|
Caption = "&Write AVI"
|
|
Height = 350
|
|
Left = 6510
|
|
TabIndex = 4
|
|
ToolTipText = "Export using AVI Format"
|
|
Top = 6075
|
|
Width = 1215
|
|
End
|
|
Begin VB.CommandButton cmdPlay
|
|
Caption = "&Play"
|
|
Height = 350
|
|
Left = 3960
|
|
TabIndex = 2
|
|
ToolTipText = "Play"
|
|
Top = 6075
|
|
Width = 1215
|
|
End
|
|
Begin VB.CommandButton cmdExit
|
|
Caption = "&Exit"
|
|
Default = -1 'True
|
|
Height = 350
|
|
Left = 7785
|
|
TabIndex = 5
|
|
ToolTipText = "Exit"
|
|
Top = 6075
|
|
Width = 1215
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 1
|
|
Left = 2310
|
|
TabIndex = 13
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 75
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 2
|
|
Left = 4560
|
|
TabIndex = 14
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 75
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 3
|
|
Left = 6810
|
|
TabIndex = 15
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 75
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 4
|
|
Left = 60
|
|
TabIndex = 16
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 2100
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 5
|
|
Left = 2310
|
|
TabIndex = 17
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 2100
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 6
|
|
Left = 4560
|
|
TabIndex = 18
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 2100
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
Begin SlideshowVB.SourceClip ctrlSourceClip
|
|
DragMode = 1 'Automatic
|
|
Height = 1965
|
|
Index = 7
|
|
Left = 6810
|
|
TabIndex = 19
|
|
TabStop = 0 'False
|
|
ToolTipText = "Source Clip"
|
|
Top = 2100
|
|
Width = 2190
|
|
_ExtentX = 3863
|
|
_ExtentY = 3466
|
|
BorderColor = 4210752
|
|
BorderSize = 3
|
|
End
|
|
End
|
|
Attribute VB_Name = "frmMain"
|
|
Attribute VB_GlobalNameSpace = False
|
|
Attribute VB_Creatable = False
|
|
Attribute VB_PredeclaredId = True
|
|
Attribute VB_Exposed = False
|
|
'*******************************************************************************
|
|
'* This is a part of the Microsoft DXSDK Code Samples.
|
|
'* Copyright (C) 1999-2001 Microsoft Corporation.
|
|
'* All rights reserved.
|
|
'* This source code is only intended as a supplement to
|
|
'* Microsoft Development Tools and/or SDK documentation.
|
|
'* See these sources for detailed information regarding the
|
|
'* Microsoft samples programs.
|
|
'*******************************************************************************
|
|
Option Explicit
|
|
Option Base 0
|
|
Option Compare Text
|
|
|
|
'enable/disable clipsource dragdrop operations
|
|
Private m_boolEnableDragDrop As Boolean
|
|
'default/highlight border color on clip controls
|
|
Private Const HIGHLIGHT_CLIPBORDERCOLOR As Long = vbBlue
|
|
Private Const DEFAULT_CLIPBORDERCOLOR As Long = &H404040
|
|
'temporary filename for writing out poster frames
|
|
Private Const TEMPORARY_XTLFILENAME As String = "SlideshowVB.xtl"
|
|
'maximum preview per clip in the slideshow presentation, in seconds
|
|
Private m_nMaximumClipLength As Long
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PRIVATE INTERFACE- FORM EVENT HANDLERS
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Form_Initialize
|
|
' * procedure description: Occurs when an application creates an instance of a Form, MDIForm, or class.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub Form_Initialize()
|
|
On Local Error GoTo ErrLine
|
|
|
|
'instantiate global data
|
|
Set gbl_objTimeline = New AMTimeline
|
|
Set gbl_objRenderEngine = New RenderEngine
|
|
Set gbl_objMediaControl = New FilgraphManager
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Form_Load
|
|
' * procedure description: Occurs when a form is loaded.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub Form_Load()
|
|
On Local Error GoTo ErrLine
|
|
|
|
'enable/disable application
|
|
Call AppEnable(False, True, True)
|
|
|
|
'assign default value(s)
|
|
m_nMaximumClipLength = 8
|
|
|
|
'setup default control(s)
|
|
txtMaxMediaLength.Text = 8
|
|
cmbTransitions.Text = vbNullString
|
|
Call ViewTransitionFriendlyNamesDirect(cmbTransitions)
|
|
|
|
'assign the default transition
|
|
If TransitionCLSIDToFriendlyName(gbl_objTimeline.GetDefaultTransitionB) <> vbNullString Then _
|
|
cmbTransitions.Text = TransitionCLSIDToFriendlyName(gbl_objTimeline.GetDefaultTransitionB)
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Form_QueryUnload
|
|
' * procedure description: Occurs before a form or application closes.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
|
|
Dim frm As Form
|
|
On Local Error GoTo ErrLine
|
|
|
|
Call RenderTimelineQuasiAsync(Nothing)
|
|
|
|
Select Case UnloadMode
|
|
Case vbFormControlMenu
|
|
'0 The user chose the Close command from the Control menu on the form.
|
|
For Each frm In Forms
|
|
frm.Move Screen.Width * -8, Screen.Height * -8
|
|
frm.Visible = False: Unload frm
|
|
Next
|
|
|
|
Case vbFormCode
|
|
'1 The Unload statement is invoked from code.
|
|
Exit Sub
|
|
|
|
Case vbAppWindows
|
|
'2 The current Microsoft Windows operating environment session is ending.
|
|
For Each frm In Forms
|
|
frm.Move Screen.Width * -8, Screen.Height * -8
|
|
frm.Visible = False: Unload frm
|
|
Next
|
|
|
|
Case vbAppTaskManager
|
|
'3 The Microsoft Windows Task Manager is closing the application.
|
|
For Each frm In Forms
|
|
frm.Move Screen.Width * -8, Screen.Height * -8
|
|
frm.Visible = False: Unload frm
|
|
Next
|
|
End
|
|
|
|
Case vbFormMDIForm
|
|
'4 An MDI child form is closing because the MDI form is closing.
|
|
Exit Sub
|
|
|
|
Case vbFormOwner
|
|
'5 A form is closing because its owner is closing
|
|
For Each frm In Forms
|
|
frm.Move Screen.Width * -8, Screen.Height * -8
|
|
frm.Visible = False: Unload frm
|
|
Next
|
|
End Select
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Form_Unload
|
|
' * procedure description: Occurs when a form is about to be removed from the screen.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub Form_Unload(Cancel As Integer)
|
|
On Local Error GoTo ErrLine
|
|
|
|
'clean-up & dereference global data
|
|
If Not gbl_objTimeline Is Nothing Then Set gbl_objTimeline = Nothing
|
|
If Not gbl_objMediaControl Is Nothing Then Set gbl_objMediaControl = Nothing
|
|
If Not gbl_objVideoWindow Is Nothing Then Set gbl_objVideoWindow = Nothing
|
|
If Not gbl_objRenderEngine Is Nothing Then Set gbl_objRenderEngine = Nothing
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PRIVATE INTERFACE- CONTROL EVENT HANDLERS
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdExit_Click
|
|
' * procedure description: Occurs when the user presses and then releases a mouse button over an object.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdExit_Click()
|
|
Dim frm As Form
|
|
On Local Error GoTo ErrLine
|
|
|
|
'Invoke the Unload statement on each loaded form
|
|
For Each frm In Forms
|
|
frm.Move Screen.Width * 8, Screen.Height * 8
|
|
Unload frm: Set frm = Nothing
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdPlay_Click
|
|
' * procedure description: Occurs when the user presses and then releases a mouse button over an object.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdPlay_Click()
|
|
On Local Error GoTo ErrLine
|
|
|
|
'assign the maximum media length per clip
|
|
If IsNumeric(txtMaxMediaLength.Text) Then _
|
|
m_nMaximumClipLength = CLng(txtMaxMediaLength.Text)
|
|
|
|
'splice the video clip(s)
|
|
Set gbl_objTimeline = _
|
|
SpliceVideo(TransitionFriendlyNameToCLSID _
|
|
( _
|
|
cmbTransitions.Text), _
|
|
ctrlSourceClip(0).MediaFile, _
|
|
ctrlSourceClip(1).MediaFile, _
|
|
ctrlSourceClip(2).MediaFile, _
|
|
ctrlSourceClip(3).MediaFile, _
|
|
ctrlSourceClip(4).MediaFile, _
|
|
ctrlSourceClip(5).MediaFile, _
|
|
ctrlSourceClip(6).MediaFile, _
|
|
ctrlSourceClip(7).MediaFile _
|
|
)
|
|
|
|
'disable the ui
|
|
Call AppEnable(False, False)
|
|
|
|
'obtain a reference to the filtergraph manager
|
|
If Not gbl_objTimeline Is Nothing Then
|
|
If Not gbl_objRenderEngine Is Nothing Then
|
|
'set the timeline object
|
|
Call gbl_objRenderEngine.SetTimelineObject(gbl_objTimeline)
|
|
'playback the timeline
|
|
Call RenderTimelineQuasiAsync(gbl_objTimeline)
|
|
End If
|
|
End If
|
|
|
|
'enable the ui
|
|
If Not gbl_objTimeline Is Nothing Then
|
|
Call AppEnable(True, True)
|
|
End If
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Resume Next
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdWriteAVI_Click
|
|
' * procedure description: Occurs when the user presses and then releases a mouse button over an object.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdWriteAVI_Click()
|
|
Dim nState As Long
|
|
Dim nReturnCode As Long
|
|
Dim dblPosition As Double
|
|
Dim dblDuration As Double
|
|
Dim bstrFileName As String
|
|
Dim objMediaEvent As IMediaEvent
|
|
Dim objMediaPosition As IMediaPosition
|
|
Dim objFilterGraphManager As FilgraphManager
|
|
Dim objSmartRenderEngine As SmartRenderEngine
|
|
On Error GoTo ErrLine
|
|
|
|
'assign the maximum media length per clip
|
|
If IsNumeric(txtMaxMediaLength.Text) Then _
|
|
m_nMaximumClipLength = CLng(txtMaxMediaLength.Text)
|
|
|
|
'splice the video clip(s)
|
|
Set gbl_objTimeline = _
|
|
SpliceVideo(TransitionFriendlyNameToCLSID _
|
|
( _
|
|
cmbTransitions.Text), _
|
|
ctrlSourceClip(0).MediaFile, _
|
|
ctrlSourceClip(1).MediaFile, _
|
|
ctrlSourceClip(2).MediaFile, _
|
|
ctrlSourceClip(3).MediaFile, _
|
|
ctrlSourceClip(4).MediaFile, _
|
|
ctrlSourceClip(5).MediaFile, _
|
|
ctrlSourceClip(6).MediaFile, _
|
|
ctrlSourceClip(7).MediaFile _
|
|
)
|
|
|
|
|
|
'disable the ui
|
|
Call AppEnable(False, False, False)
|
|
|
|
'query the user for a media file
|
|
ctrlCommonDialog.DefaultExt = "AVI"
|
|
ctrlCommonDialog.InitDir = vbNullString
|
|
ctrlCommonDialog.Filter = "*.avi|*.avi"
|
|
Call ctrlCommonDialog.ShowSave
|
|
bstrFileName = ctrlCommonDialog.FileName
|
|
|
|
If bstrFileName = vbNullString Then
|
|
'enable the ui / user cancel
|
|
Call AppEnable(True, True, True)
|
|
Exit Sub
|
|
End If
|
|
|
|
|
|
'instantiate a smart render engine
|
|
Set objSmartRenderEngine = New SmartRenderEngine
|
|
'set the timeline object to the render engine
|
|
objSmartRenderEngine.SetTimelineObject gbl_objTimeline
|
|
'connect-up the render engine's frontend
|
|
objSmartRenderEngine.ConnectFrontEnd
|
|
'obtain an instance of the filtergraph manager
|
|
objSmartRenderEngine.GetFilterGraph objFilterGraphManager
|
|
'append a filewriter and av mux filter to the graph
|
|
AddFileWriterAndMux objFilterGraphManager, bstrFileName
|
|
'render the output pins on the smart render engine
|
|
RenderGroupPins objSmartRenderEngine, gbl_objTimeline
|
|
'render the filtergraph
|
|
objFilterGraphManager.Run
|
|
'derive the media event interface from the filtergraph manager
|
|
Set objMediaEvent = objFilterGraphManager
|
|
Set objMediaPosition = objMediaEvent
|
|
|
|
'display the progress during render
|
|
ctrlProgress.Value = 0
|
|
ctrlProgress.Visible = True
|
|
dblDuration = objMediaPosition.Duration
|
|
If dblDuration > 0 Then
|
|
Do Until ctrlProgress.Value = 100: DoEvents
|
|
'query current position
|
|
dblPosition = objMediaPosition.CurrentPosition
|
|
'set the progress bar's current position
|
|
If dblPosition <> 0 Then
|
|
If dblDuration > 0 Then
|
|
ctrlProgress.Value = dblPosition * 100 / dblDuration
|
|
Else: ctrlProgress.Value = 100: Exit Do
|
|
End If
|
|
Else: ctrlProgress.Value = 100: Exit Do
|
|
End If
|
|
Loop
|
|
End If
|
|
ctrlProgress.Value = 100
|
|
ctrlProgress.Visible = False
|
|
|
|
'enable the ui
|
|
Call AppEnable(True, True, True)
|
|
|
|
'clean-up & dereference
|
|
If Not objMediaEvent Is Nothing Then Set objMediaEvent = Nothing
|
|
If Not objMediaPosition Is Nothing Then Set objMediaPosition = Nothing
|
|
If Not objFilterGraphManager Is Nothing Then Set objFilterGraphManager = Nothing
|
|
If Not objSmartRenderEngine Is Nothing Then Set objSmartRenderEngine = Nothing
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Resume Next
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdWriteXTL_Click
|
|
' * procedure description: Occurs when the user presses and then releases a mouse button over an object.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdWriteXTL_Click()
|
|
Dim bstrFileName As String
|
|
Dim objXml2Dex As Xml2Dex
|
|
On Local Error GoTo ErrLine
|
|
|
|
'assign the maximum media length per clip
|
|
If IsNumeric(txtMaxMediaLength.Text) Then _
|
|
m_nMaximumClipLength = CLng(txtMaxMediaLength.Text)
|
|
|
|
'splice the video clip(s)
|
|
Set gbl_objTimeline = _
|
|
SpliceVideo(TransitionFriendlyNameToCLSID _
|
|
( _
|
|
cmbTransitions.Text), _
|
|
ctrlSourceClip(0).MediaFile, _
|
|
ctrlSourceClip(1).MediaFile, _
|
|
ctrlSourceClip(2).MediaFile, _
|
|
ctrlSourceClip(3).MediaFile, _
|
|
ctrlSourceClip(4).MediaFile, _
|
|
ctrlSourceClip(5).MediaFile, _
|
|
ctrlSourceClip(6).MediaFile, _
|
|
ctrlSourceClip(7).MediaFile _
|
|
)
|
|
|
|
'disable the ui
|
|
Call AppEnable(False, False, False)
|
|
|
|
'query the user for a media file
|
|
ctrlCommonDialog.DefaultExt = "XTL"
|
|
ctrlCommonDialog.InitDir = vbNullString
|
|
ctrlCommonDialog.Filter = "*.xtl|*.xtl"
|
|
Call ctrlCommonDialog.ShowSave
|
|
bstrFileName = ctrlCommonDialog.FileName
|
|
|
|
If bstrFileName = vbNullString Then
|
|
'enable the ui
|
|
Call AppEnable(True, True, True)
|
|
Exit Sub
|
|
Else
|
|
'if the file already exists, then delete it
|
|
If File_Exists(bstrFileName) Then _
|
|
Call File_Delete(bstrFileName, False, False, False)
|
|
End If
|
|
|
|
'obtain a reference to the filtergraph manager
|
|
If Not gbl_objTimeline Is Nothing Then
|
|
If Not gbl_objRenderEngine Is Nothing Then
|
|
'set the timeline object
|
|
Call gbl_objRenderEngine.SetTimelineObject(gbl_objTimeline)
|
|
'render the timeline
|
|
Call SaveTimeline(gbl_objTimeline, bstrFileName, DEXExportXTL)
|
|
End If
|
|
End If
|
|
|
|
'enable the ui
|
|
Call AppEnable(True, True, True)
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Resume Next
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: ctrlSourceClip_Import
|
|
' * procedure description: Occurs whenever an import of a media file into the clipsource control is attempted.
|
|
' * Set the second argument, 'Cancel' to true to cancel the operation and prevent the import.
|
|
' ******************************************************************************************************************************
|
|
Private Sub ctrlSourceClip_Import(Index As Integer, bstrFileName As String, Cancel As Boolean)
|
|
On Local Error GoTo ErrLine
|
|
|
|
'enable/disable drag/drop
|
|
If m_boolEnableDragDrop = False Then
|
|
Cancel = True
|
|
Exit Sub
|
|
End If
|
|
|
|
'otherwise enable everything
|
|
Call AppEnable(True, True, True)
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: ctrlSourceClip_DragDrop
|
|
' * procedure description: Occurs when a drag-and-drop operation is completed.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub ctrlSourceClip_DragDrop(Index As Integer, Source As Control, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If nCount <> Index Then
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Else
|
|
If ctrlSourceClip(nCount).BorderColor <> HIGHLIGHT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = HIGHLIGHT_CLIPBORDERCOLOR
|
|
End If
|
|
Next
|
|
'reset default media file
|
|
ctrlSourceClip(Index).MediaFile = Source.MediaFile
|
|
'reset the default color to the clip control
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: ctrlSourceClip_DragOver
|
|
' * procedure description: Occurs when a drag-and-drop operation is in progress.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub ctrlSourceClip_DragOver(Index As Integer, Source As Control, X As Single, Y As Single, State As Integer)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If nCount <> Index Then
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Else
|
|
If ctrlSourceClip(nCount).BorderColor <> HIGHLIGHT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = HIGHLIGHT_CLIPBORDERCOLOR
|
|
End If
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PRIVATE INTERFACE- CONTROL EVENT HANDLERS
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdPlay_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdPlay_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdWriteAVI_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdWriteAVI_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdWriteXTL_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdWriteXTL_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: cmdExit_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub cmdExit_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: ctrlProgress_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub ctrlProgress_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: Form_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub Form_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: fraCommandFixture_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub fraCommandFixture_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: fraOptions_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub fraOptions_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: lblInstructions_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub lblInstructions_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: lblTransitionDescription_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub lblTransitionDescription_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: lbltxtMaxMediaLength_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub lbltxtMaxMediaLength_MouseMove(Index As Integer, Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: txtMaxMediaLength_MouseMove
|
|
' * procedure description: Occurs when the user moves the mouse.
|
|
' * Reset control parameter(s) to default setting(s)
|
|
' ******************************************************************************************************************************
|
|
Private Sub txtMaxMediaLength_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
|
|
Dim nCount As Long
|
|
On Local Error GoTo ErrLine
|
|
|
|
For nCount = ctrlSourceClip.LBound To ctrlSourceClip.UBound
|
|
If ctrlSourceClip(nCount).BorderColor <> DEFAULT_CLIPBORDERCOLOR Then _
|
|
ctrlSourceClip(nCount).BorderColor = DEFAULT_CLIPBORDERCOLOR
|
|
Next
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' **************************************************************************************************************************************
|
|
' * PRIVATE INTERFACE- PROCEDURES
|
|
' *
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: SpliceVideo
|
|
' * procedure description: Splices a variable number of video files together using the given transition.
|
|
' * DefaultTransitionCLSID evaluates to the CLSID of the desired transition to use.
|
|
' * Files evaluates to a variable number of BSTR String arguments containing the filename(s)
|
|
' ******************************************************************************************************************************
|
|
Private Function SpliceVideo(DefaultTransitionCLSID As String, ParamArray Files()) As AMTimeline
|
|
Dim nCount As Long
|
|
Dim nCount2 As Long
|
|
Dim bstrCurrentFile As String
|
|
Dim boolAudioGroup As Boolean
|
|
Dim boolVideoGroup As Boolean
|
|
Dim dblAudioStartTime As Double
|
|
Dim dblAudioStopTime As Double
|
|
Dim dblVideoStartTime As Double
|
|
Dim dblVideoStopTime As Double
|
|
Dim objTimeline As AMTimeline
|
|
Dim objNewSource As AMTimelineSrc
|
|
Dim objNewTrack As AMTimelineTrack
|
|
Dim objTransition As AMTimelineTrans
|
|
Dim objAudioGroup As AMTimelineGroup
|
|
Dim objVideoGroup As AMTimelineGroup
|
|
Dim objTimelineTrackObject As AMTimelineObj
|
|
Dim objTimelineSourceObject As AMTimelineObj
|
|
Dim objTimelineAudioGroupObject As AMTimelineObj
|
|
Dim objTimelineVideoGroupObject As AMTimelineObj
|
|
On Local Error GoTo ErrLine
|
|
|
|
'instantiate new timeline
|
|
Set objTimeline = CreateTimeline
|
|
|
|
'enable transitions on the timeline
|
|
Call objTimeline.EnableTransitions(1)
|
|
|
|
'enumerate the files and place the group(s) on the timeline
|
|
For nCount = LBound(Files) To UBound(Files)
|
|
If TypeName(Files(nCount)) = "String" Then
|
|
If Files(nCount) <> vbNullString Then
|
|
bstrCurrentFile = Files(nCount)
|
|
If HasStreams(bstrCurrentFile) Then
|
|
If HasAudioStream(bstrCurrentFile) Then
|
|
'enumerate all the groups in the timeline to ensure audio has not yet been added
|
|
If GetGroupCount(objTimeline) > 0 Then
|
|
For nCount2 = 0 To GetGroupCount(objTimeline) - 1
|
|
If Not GroupFromTimeline(objTimeline, nCount2) Is Nothing Then
|
|
If GroupFromTimeline(objTimeline, nCount2).GetGroupName = "AUDIO" Then
|
|
boolAudioGroup = True
|
|
End If
|
|
End If
|
|
Next
|
|
If boolAudioGroup = False Then
|
|
'insert an audio group into the timeline
|
|
Set objAudioGroup = CreateGroup(objTimeline, "AUDIO", DEXMediaTypeAudio)
|
|
Call InsertGroup(objTimeline, objAudioGroup)
|
|
Set objTimelineAudioGroupObject = objAudioGroup
|
|
boolAudioGroup = True
|
|
End If
|
|
Else:
|
|
'insert an audio group into the timeline
|
|
Set objAudioGroup = CreateGroup(objTimeline, "AUDIO", DEXMediaTypeAudio)
|
|
Call InsertGroup(objTimeline, objAudioGroup)
|
|
Set objTimelineAudioGroupObject = objAudioGroup
|
|
boolAudioGroup = True
|
|
End If
|
|
End If
|
|
|
|
If HasVideoStream(bstrCurrentFile) Then
|
|
'enumerate all the groups in the timeline to ensure audio has not yet been added
|
|
If GetGroupCount(objTimeline) > 0 Then
|
|
For nCount2 = 0 To GetGroupCount(objTimeline) - 1
|
|
If Not GroupFromTimeline(objTimeline, nCount2) Is Nothing Then
|
|
If GroupFromTimeline(objTimeline, nCount2).GetGroupName = "VIDEO" Then
|
|
boolVideoGroup = True
|
|
End If
|
|
End If
|
|
Next
|
|
If boolVideoGroup = False Then
|
|
'insert a video group into the timeline
|
|
Set objVideoGroup = CreateGroup(objTimeline, "VIDEO", DEXMediaTypeVideo)
|
|
Call InsertGroup(objTimeline, objVideoGroup)
|
|
Set objTimelineVideoGroupObject = objVideoGroup
|
|
boolVideoGroup = True
|
|
End If
|
|
Else:
|
|
'insert a video group into the timeline
|
|
Set objVideoGroup = CreateGroup(objTimeline, "VIDEO", DEXMediaTypeVideo)
|
|
Call InsertGroup(objTimeline, objVideoGroup)
|
|
Set objTimelineVideoGroupObject = objVideoGroup
|
|
boolVideoGroup = True
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
'enumerate the files and place the tracks/source(s) on the timeline
|
|
For nCount = LBound(Files) To UBound(Files)
|
|
If TypeName(Files(nCount)) = "String" Then
|
|
If Files(nCount) <> vbNullString Then
|
|
bstrCurrentFile = Files(nCount)
|
|
If HasVideoStream(bstrCurrentFile) Then
|
|
'insert a new video track for the clip in the timeline
|
|
Set objNewTrack = CreateTrack(objTimeline)
|
|
Set objTimelineTrackObject = objNewTrack
|
|
Call InsertTrack(objNewTrack, objTimelineVideoGroupObject)
|
|
'inset a new sourceclip into the timeline
|
|
Set objNewSource = CreateSource(objTimeline)
|
|
'insert the new source clip into the new track
|
|
If dblVideoStopTime = 0 Then
|
|
dblVideoStartTime = m_nMaximumClipLength * (nCount): dblVideoStopTime = (m_nMaximumClipLength * (nCount + 1)) + 1
|
|
Else: dblVideoStartTime = (m_nMaximumClipLength * (nCount)) - 1: dblVideoStopTime = (m_nMaximumClipLength * (nCount + 1)) + 1
|
|
End If
|
|
Call InsertSource(objNewTrack, objNewSource, bstrCurrentFile, dblVideoStartTime, dblVideoStopTime)
|
|
'insert a new transition into each track on the timeline
|
|
If DefaultTransitionCLSID <> vbNullString Then
|
|
Set objTransition = CreateTransition(objTimeline)
|
|
dblVideoStartTime = ((m_nMaximumClipLength * (nCount))) - 1: dblVideoStopTime = (m_nMaximumClipLength * nCount + 1)
|
|
If dblVideoStartTime < 0 Then dblVideoStartTime = 0
|
|
Call InsertTransition(objTransition, objTimelineTrackObject, DefaultTransitionCLSID, dblVideoStartTime, dblVideoStopTime)
|
|
End If
|
|
End If
|
|
|
|
If HasAudioStream(bstrCurrentFile) Then
|
|
'insert a new audio track for the clip in the timeline
|
|
Set objNewTrack = CreateTrack(objTimeline)
|
|
Set objTimelineTrackObject = objNewTrack
|
|
Call InsertTrack(objNewTrack, objTimelineAudioGroupObject)
|
|
'inset a new sourceclip into the timeline
|
|
Set objNewSource = CreateSource(objTimeline)
|
|
'insert the new source clip into the new track
|
|
If dblAudioStopTime = 0 Then
|
|
dblAudioStartTime = m_nMaximumClipLength * (nCount): dblAudioStopTime = (m_nMaximumClipLength * (nCount + 1)) + 1
|
|
Else: dblAudioStartTime = (m_nMaximumClipLength * (nCount)) - 1: dblAudioStopTime = (m_nMaximumClipLength * (nCount + 1)) + 1
|
|
End If
|
|
Call InsertSource(objNewTrack, objNewSource, bstrCurrentFile, dblAudioStartTime, dblAudioStopTime)
|
|
End If
|
|
End If
|
|
End If
|
|
Next
|
|
|
|
'return the timeline
|
|
If Not objTimeline Is Nothing Then Set SpliceVideo = objTimeline
|
|
|
|
'clean-up & dereference
|
|
If Not objTimeline Is Nothing Then Set objTimeline = Nothing ' AMTimeline
|
|
If Not objNewSource Is Nothing Then Set objNewSource = Nothing ' AMTimelineSrc
|
|
If Not objNewTrack Is Nothing Then Set objNewTrack = Nothing ' AMTimelineTrack
|
|
If Not objTransition Is Nothing Then Set objTransition = Nothing ' AMTimelineTrans
|
|
If Not objAudioGroup Is Nothing Then Set objAudioGroup = Nothing ' AMTimelineGroup
|
|
If Not objVideoGroup Is Nothing Then Set objVideoGroup = Nothing ' AMTimelineGroup
|
|
If Not objTimelineTrackObject Is Nothing Then Set objTimelineTrackObject = Nothing ' AMTimelineObj
|
|
If Not objTimelineSourceObject Is Nothing Then Set objTimelineSourceObject = Nothing ' AMTimelineObj
|
|
If Not objTimelineAudioGroupObject Is Nothing Then Set objTimelineAudioGroupObject = Nothing ' AMTimelineObj
|
|
If Not objTimelineVideoGroupObject Is Nothing Then Set objTimelineVideoGroupObject = Nothing ' AMTimelineObj
|
|
Exit Function
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Function
|
|
End Function
|
|
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: ViewTransitionFriendlyNamesDirect
|
|
' * procedure description: Maps transition friendly names to a combobox for easy viewing.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub ViewTransitionFriendlyNamesDirect(cmbComboBox As Control)
|
|
On Local Error GoTo ErrLine
|
|
|
|
If Not cmbComboBox Is Nothing Then
|
|
If TypeName(cmbComboBox) = "ComboBox" Then
|
|
With cmbComboBox
|
|
.AddItem "Barn"
|
|
.AddItem "Blinds"
|
|
.AddItem "BurnFilm"
|
|
.AddItem "CenterCurls"
|
|
.AddItem "ColorFade"
|
|
.AddItem "Compositor"
|
|
.AddItem "Curls"
|
|
.AddItem "Curtains"
|
|
.AddItem "Fade"
|
|
.AddItem "FadeWhite"
|
|
.AddItem "FlowMotion"
|
|
.AddItem "GlassBlock"
|
|
.AddItem "Grid"
|
|
.AddItem "Inset"
|
|
.AddItem "Iris"
|
|
.AddItem "Jaws"
|
|
.AddItem "Lens"
|
|
.AddItem "LightWipe"
|
|
.AddItem "Liquid"
|
|
.AddItem "PageCurl"
|
|
.AddItem "PeelABCD"
|
|
.AddItem "Pixelate"
|
|
.AddItem "RadialWipe"
|
|
.AddItem "Ripple"
|
|
.AddItem "RollDown"
|
|
.AddItem "Slide"
|
|
.AddItem "SMPTE Wipe"
|
|
.AddItem "Spiral"
|
|
.AddItem "Stretch"
|
|
.AddItem "Threshold"
|
|
.AddItem "Twister"
|
|
.AddItem "Vacuum"
|
|
.AddItem "Water"
|
|
.AddItem "Wheel"
|
|
.AddItem "Wipe"
|
|
.AddItem "WormHole"
|
|
.AddItem "Zigzag"
|
|
End With
|
|
End If
|
|
End If
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|
|
|
|
|
|
' ******************************************************************************************************************************
|
|
' * procedure name: AppEnable
|
|
' * procedure description: Enabled/Disables the application's controls.
|
|
' *
|
|
' ******************************************************************************************************************************
|
|
Private Sub AppEnable(EnableControls As Boolean, Optional EnableDragDrop As Boolean = True, Optional EnableExit As Boolean = True)
|
|
On Local Error GoTo ErrLine
|
|
|
|
'enable/disable controls
|
|
If EnableControls Then
|
|
cmdPlay.Enabled = True
|
|
cmdWriteAVI.Enabled = True
|
|
cmdWriteXTL.Enabled = True
|
|
Else
|
|
cmdPlay.Enabled = False
|
|
cmdWriteAVI.Enabled = False
|
|
cmdWriteXTL.Enabled = False
|
|
End If
|
|
|
|
'enable/disable drag/drop
|
|
If EnableDragDrop Then
|
|
m_boolEnableDragDrop = True
|
|
Else: m_boolEnableDragDrop = False
|
|
End If
|
|
|
|
'enable/disable exit
|
|
If EnableExit Then
|
|
cmdExit.Enabled = True
|
|
Else: cmdExit.Enabled = False
|
|
End If
|
|
Exit Sub
|
|
|
|
ErrLine:
|
|
Err.Clear
|
|
Exit Sub
|
|
End Sub
|