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