Type=Class
Version=5.9
ModulesStructureVersion=1
B4J=true
@EndOfDesignText@
'Created by alons on 9/8/2016.
'wrapped by Anele 'Mashy' Mbanga for ABMaterial
'anele@mbangas.com
Sub Class_Globals
Public ABMComp As ABMCustomComponent
Public ABM As ABMaterial
Private mvarWidth As String
Private mvarHeight As String
Private pg As ABMPage
Private mvarWidthLess As Int
Private camid As String
End Sub
'Initializes the object. You can add parameters to this method if needed.
Public Sub Initialize(InternalPage As ABMPage, ID As String, Width As String, Height As String)
mvarWidth = Width
mvarHeight = Height
mvarWidthLess = Width - 10
pg = InternalPage
ABMComp.Initialize("ABMComp", Me, InternalPage, ID,"")
End Sub
Sub ABMComp_Build(InternalPage As ABMPage,internalID As String) As String
'we create a div with a video and a canvas and we hide the canvas
camid = internalID
Return $"
"$
End Sub
' Is useful to run some initalisation script.
Sub ABMComp_FirstRun(InternalPage As ABMPage, internalID As String)
Dim script As String = PrepareDisplay(internalID)
InternalPage.ws.Eval(script, Array As Object(ABMComp.ID))
End Sub
private Sub PrepareDisplay(internalID As String) As String
Dim script As String = $"var ${internalID}canvas = document.getElementById('${internalID}canvas');
var ${internalID}context = ${internalID}canvas.getContext('2d');
var ${internalID}video = document.getElementById('${internalID}video');
vendorUrl = window.URL || window.webkitURL;
navigator.gettMedia = navigator.getUserMedia ||
navigator.webkitGetUserMedia ||
navigator.mozGetUserMedia ||
navigator.msGetUserMedia;
navigator.gettMedia({
video:true,
audio: false
}, function (stream){
${internalID}video.src = vendorUrl.createObjectURL(stream);
${internalID}video.play();
},function(error){
}); "$
Return script
End Sub
'take a picture
Sub TakePicture(img As ABMImage)
Dim script As String = $"var ${camid}canvas = document.getElementById('${camid}canvas');
var ${camid}context = ${camid}canvas.getContext('2d');
var ${camid}video = document.getElementById('${camid}video');
${camid}context.drawImage(${camid}video, 0, 0, ${mvarWidthLess}, ${mvarHeight});
var ${camid}dataURL = ${camid}canvas.toDataURL('image/jpeg');
var image = document.getElementById('${img.id}');
image.src = ${camid}dataURL;
b4j_raiseEvent('${ABMComp.ID}_takepicture', {'value':${camid}dataURL});"$
pg.ws.Eval(script, Array As Object(ABMComp.ID))
End Sub
' runs when a refresh is called
Sub ABMComp_Refresh(InternalPage As ABMPage, internalID As String)
Dim script As String = PrepareDisplay(internalID)
InternalPage.ws.Eval(script, Array As Object(ABMComp.ID))
End Sub
' do the stuff needed when the object is removed
Sub ABMComp_CleanUp(InternalPage As ABMPage, internalID As String)
End Sub