Extension.RELAXED_SHARP_QUIET_ZONE_CHECK
.X
used as a separator character in house number fields no longer count towards the maximal length of house numbers. Previously, some valid KIX codes were rejected incorrectly.BarcodePicker
resources (video elements, WebGL contexts) not being correctly released and cleaned up on destroy in some situations.loadTextRecognition
option (disabled by default) to ScanditSDK.configure()
to enable/disable text recognition, loading the appropriate more advanced version of the external Scandit Data Capture library as needed.textRecognitionSettings
option to ScanSettings
's constructor and relative functions ScanSettings.getTextRecognitionSettings()
and ScanSettings.setTextRecognitionSettings()
to control the settings being used for text recognition.recognitionMode
option to ScanSettings
's constructor and relative functions ScanSettings.getRecognitionMode()
and ScanSettings.setRecognitionMode()
to control whether codes and/or text are recognized.ScanSettings.RecognitionMode
enumeration (used inside ScanSettings
) to list the different recognition mode (code/text combinations) available.TextRecognitionSettings
class to handle configuration of text recognition settings.texts
property to the ScanResult
object, containing the list of texts found in the image (if any).ScanResult.rejectText()
function to reject a text in listeners registered with BarcodePicker.onProcessFrame()
or BarcodePicker.onScan()
: if all codes and texts in the result are rejected, sound, vibration and GUI flashing will be suppressed.logLevel
option to ScanditSDK.configure()
to select the desired console log level of the library.cameraAccessError
event to the BarcodePicker
, emitted when an error with the access to the current camera is detected.ScanSettings
or TextRecognitionSettings
.BarcodePicker
is no longer permanently stopped in case of a camera access error, if and when camera access is resumed, the barcode picker resumes its operations according to its current settings.BarcodePicker
with default camera access.deviceName
option to ScanSettings
's constructor and relative functions ScanSettings.getDeviceName()
and ScanSettings.setDeviceName()
to control the descriptive device name to identify the current device when looking at analytics tools.Barcode.Symbology.MATRIX_2_OF_5
enumeration value.Barcode.Symbology.USPS_INTELLIGENT_MAIL
enumeration value.CameraAccess.getCameras()
.codeDirectionHint
option to ScanSettings
's constructor and relative functions ScanSettings.getCodeDirectionHint()
and ScanSettings.setCodeDirectionHint()
to control the code direction hint telling in what direction 1D codes are most likely orientated, used to locate/scan difficult codes in said directions differing from the default left-to-right.Scanner
and BarcodePicker
objects stopping to scan when (re-)created during or shortly after the destruction of another instance due to an incorrect Scanner.isBusyProcessing()
reported status.CameraAccess.getCameras()
function, allowing to force updated available device information to be retrieved, instead of relying on cached information from previous calls.CameraAccess.getCameras()
and in internal operations, resulting in faster camera access and possibly reduced camera access user permission requests.BarcodePicker
visibility changes causing some UI elements to be incorrectly hidden.BarcodePicker
visibility changes not correctly maintaining its element's dimensions in some situations.BarcodePicker.setCameraType()
function to select a camera based on its camera type (facing mode/direction).BrowserCompatibility.Feature
entries in the missingFeatures
property of BrowserCompatibility
regarding incorrect website / web application access: HTTP_PROTOCOL
and SECURE_CONTEXT
, referring respectively to direct local file access instead of using a web server (file: vs http(s): protocol) and an insecure context.UnsupportedBrowserError
' s message
property now contains a summary of the missing browser features (coming from the included BrowserCompatibility
in the data
property) at its end.camera
attribute now reflects the currently active camera.cameraType
attribute can now be changed after initial creation to select a camera based on its camera type (facing mode/direction).BarcodePicker
element is hidden (externally or through the BarcodePicker.setVisible()
function).configure()
without waiting on the returned promise will return the same promise object. In case configure()
is called again after the promise returned successfully, arguments from subsequent calls are ignored and the same promise returned from the successful call will be returned. If configure()
has failed, it may be retried after the rejection of the returned promise.BarcodePicker.setActiveCamera()
, BarcodePicker.resumeScanning()
, BarcodePicker.accessCamera()
, BarcodePicker.setCameraSwitcherEnabled()
function calls done after a successful camera access while the camera is not being accessed and CameraAccess.getCameras()
function calls after the first one incorrectly triggering unnecessary camera access attempts and relative user permission requests (making the process slower) in Firefox mobile.BarcodePicker
instances created at the same time having a different and incomplete list of available cameras.BarcodePicker
occasionally processing video frames buffered just before being hidden shortly after being shown again via external style changes in Safari.BarcodePicker
not processing any video frames while the element is hidden but scanning is still enabled in Safari (hiding the element doesn't implicitly pause scanning, use BarcodePicker.pauseScanning()
and BarcodePicker.resumeScanning()
if needed).NotSupportedError
that can happen on some older browsers when accessing the camera are now automatically mapped to the more recent type: AbortError
.Parser.parseRawData()
failing to parse the given data when the byte array contains some specific values.CameraAccess.getCameras()
's promise now doesn't reject anymore on optional failed camera access (necessary in some situation for additional device data access), but instead returns a list of cameras with limited information.BarcodePicker
creation and CameraAccess.getCameras()
to fail.Implemented and enabled by default asynchronous preloading of the external Scandit Engine library (used by BarcodePicker
and Scanner
objects to perform scan operations).
If enabled, the external Scandit Engine library is preloaded (downloaded if needed, WebAssembly code compiled/instantiated and initialized) asynchronously via a separate WebWorker at library configuration time. Any BarcodePicker
or Scanner
object will then be ready to start processing video frames much faster, as the needed external Scandit Engine library will already be in a partially or fully initialized state thanks to it being preloaded.
If disabled (old behaviour), BarcodePicker
and Scanner
objects will load the external Scandit Engine library on creation (if it wasn't already loaded before by a previously created object), and will thus require more time to be initialized and ready.
In either case the loaded external Scandit Engine library will be reused whenever possible for later successive uses of the library.
Note also that preloading does not trigger a device activation for licensing purposes.
Implemented and enabled by default asynchronous preloading of barcode blurry recognition data (already in use before depending on ScanSettings
's blurryRecognition
option to allow accurate scanning capabilities for out-of-focus 1D codes).
If enabled, all the data necessary to process frames in this advanced way is generated (if needed) asynchronously via a separate WebWorker at library configuration time. Any BarcodePicker
or Scanner
object will then be able to start processing video frames much faster, as it won't need to generate barcode blurry recognition data lazily only when needed. If necessary, depending on given ScanSettings
options and on readiness of the data, processing is also initially performed without barcode blurry recognition until this data becomes available, at which point the new data will be loaded and used.
If disabled (old behaviour), BarcodePicker
and Scanner
objects will load or generate barcode blurry recognition data lazily when needed to process the first frame, depending on given ScanSettings
options, and will thus require more time the first time the library is actively used with the given active symbologies. As this needs to be done in the same WebWorker, the processing of the frame will then be blocked until the needed data is loaded or generated.
In either case the data for barcode blurry recognition will be cached for later successive uses of the library.
Note also that preloading does not trigger a device activation for licensing purposes.
Added a new preloadEngine
option to ScanditSDK.configure()
to enable/disable asynchronous preloading of the external Scandit Engine library.
Added a new preloadBlurryRecognition
option to ScanditSDK.configure()
to enable/disable asynchronous preloading of barcode blurry recognition data.
Improved and expanded Single Image Mode appearance and configuration options. The UI now looks different and contains information text and a button, with dynamic content depending on the platform. Configuration is now done via the SingleImageModeSettings
interface on BarcodePicker
creation.
Added a new SingleImageModeSettings
interface defining options available for Single Image Mode configuration on each platform: it's now possible to set custom CSS style properties for the different elements of the UI, and to pass completely different HTML elements altogether (in addition to control usage strategy of the mode as previously possible).
Added a new SingleImageModePlatformSettings
interface (used inside SingleImageModeSettings
) to define the actual options for Single Image Mode for different platforms.
Added a new SingleImageModeSettings.UsageStrategy
enumeration (used inside SingleImageModeSettings
) to list the different types of usage strategies available for Single Image Mode.
Added a new singleImageModeSettings
option to BarcodePicker.create()
to set Single Image Mode settings, accepting a SingleImageModeSettings
object.
Added a new cameraType
option to BarcodePicker.create()
to easily set the preferred initial camera type (facing mode/direction) to be used for video input and Single Image Mode (when available).
Added a new Scanner.removeListener()
function to more easily remove Scanner
event listeners in a standard way by passing event name and listener function.
Added a new Scanner.removeAllListeners()
function to more easily remove all Scanner
event listeners in a standard way by passing an event name.
It's now possible to remove listeners added for Scanner
's ready
event via the new Scanner.removeListener("ready")
or Scanner.removeAllListeners("ready")
functions.
Added new IATA 2 of 5 symbology support and relative Barcode.Symbology.IATA_2_OF_5
enumeration value.
Added new Vehicle Identification Number (VIN)
support to Parser
and relative Parser.DataFormat.VIN
enumeration value.
Added support for Ultra HD (4K) camera video feed resolution and relative CameraSettings.ResolutionPreference.ULTRA_HD
enumeration value.
Added dependency to csstype library.
BarcodePicker.create()
's singleImageMode
option (replaced by the new singleImageModeSettings
option).Scanner.processImage()
is "detached"/"neutered" becoming unusable as it's being passed to the external Scandit Engine library. Note that you can still access the same data once it's returned in the ScanResult
object's imageData
property as before.ScanResult
's imageData
property will now be overwritten with the next video frame data after being returned and made available in all submitFrame
/processFrame
/scan
even listeners for the current frame (the underlying data structure is reused). If the data is needed after the listener has finished executing, a copy should be made.ScanResult
's imageData
property is now given as an Uint8Array
(instead of Uint8ClampedArray
). In case the old data format is required, the data view (type) can easily be changed with new Uint8ClampedArray(imageData.buffer)
.BarcodePicker.setTorchEnabled()
and BarcodePicker.setZoom()
functions now return a promise resolving to the BarcodePicker
object instance instead of directly the instance; this is due to the fact that the function needs to access the camera again.SymbologySettings.getActiveSymbolCounts()
now always returns the full list of active symbol counts, also for the default cases.SymbologySettings.getEnabledChecksums()
now returns all enabled optional checksums, including any default ones.SymbologySettings.getEnabledExtensions()
now returns all enabled optional extensions, including any default ones.BarcodePicker.onReady()
function (in favor of BarcodePicker.on("ready")
).BarcodePicker.onScan()
function (in favor of BarcodePicker.on("scan")
).BarcodePicker.onSubmitFrame()
function (in favor of BarcodePicker.on("submitFrame")
).BarcodePicker.onProcessFrame()
function (in favor of BarcodePicker.on("processFrame")
).BarcodePicker.onScanError()
function (in favor of BarcodePicker.on("scanError")
).BarcodePicker.removeScanListener()
function (in favor of BarcodePicker.removeListener("scan")
).BarcodePicker.removeSubmitFrameListener()
function (in favor of BarcodePicker.removeListener("submitFrame")
).BarcodePicker.removeProcessFrameListener()
function (in favor of BarcodePicker.removeListener("processFrame")
).BarcodePicker.removeScanErrorListener()
function (in favor of BarcodePicker.removeListener("scanError")
).BarcodePicker.removeScanListeners()
function (in favor of BarcodePicker.removeAllListeners("scan")
).BarcodePicker.removeSubmitFrameListeners()
function (in favor of BarcodePicker.removeAllListeners("submitFrame")
).BarcodePicker.removeProcessFrameListeners()
function (in favor of BarcodePicker.removeAllListeners("processFrame")
).BarcodePicker.removeScanErrorListeners()
function (in favor of BarcodePicker.removeAllListeners("scanError")
).Scanner.onReady()
function (in favor of Scanner.on("ready")
).Scanner.processImage()
now accepts image data passed as Uint8Array
(data given as Uint8ClampedArray
is still compatible).BarcodePicker
and Scanner
objects is now reused whenever possible on object destruction and recreation instead of being in turn also uselessly destroyed and recreated.CameraAccess.getCameras()
calls, they will also be ignored on BarcodePicker
creation and when switching cameras through the camera switcher button, where other available cameras will be used as fallback if possible.BarcodePicker
and Scanner
initialization times for objects created later after library configuration or after a previous object's destruction, thanks to asynchronous preloading and reuse of the external Scandit Engine library.BarcodePicker
and Scanner
initialization times on first usage of the library, thanks to asynchronous preloading of barcode blurry recognition data.BarcodePicker
initialization to fail when they are selected as the automatic initial camera: if other cameras are available they will be used as fallback.CameraAccess.getCameras()
and possibly causing failures to initialize BarcodePicker
objects on some devices; these cameras are now ignored.BarcodePicker
and Scanner
objects wrongfully emitting their ready
events ahead of time: now the event more accurately represents the time when the objects can actually start being used without delay.SymbologySettings
enabled by default optional checksums and extensions not being disabled via SymbologySettings.disableChecksums()
and SymbologySettings.disableExtensions()
.ScanditEngineError
objects with specific format originating from Parser
operations causing uncaught errors instead of being returned as gracefully returned errors.Safari
.BarcodePicker
element and its contained camera video feed.BarcodePicker
's camera video feed element display caused by screen orientation changes in some scenarios.BarcodePicker
's camera video feed resolution caused by screen orientation changes, which in turn might have resulted in wrong GUI being displayed and wrong/partial video frame data being processed.currentResolution
property not being updated when screen orientation changes.ScanSettings.setProperty()
and ScanSettings.getProperty()
functions to control internal properties of the external Scandit Engine library.ScanditEngineError
throw triggering another error in Firefox.ScanditEngineError
is thrown.BarcodePicker
/Scanner
and WebWorker in Safari
, leading to lower memory requirements.BarcodePicker.create()
's targetScanningFPS
option (including the default value of 30) and BarcodePicker.setTargetScanningFPS()
function not correctly limiting the framerate to values higher or equal to 30 when the camera feed's framerate is higher than 30.Scanner.processImage()
now accepts image data passed as an HTMLImageElement
(Image
) in addition to the already existing Uint8ClampedArray
possibility.BarcodePicker.on()
and BarcodePicker.addListener()
(alternative name for the same functionality) functions to more easily add BarcodePicker
event listeners in a standard way by passing event name and listener function.BarcodePicker.removeListener()
function to more easily remove BarcodePicker
event listeners in a standard way by passing event name and listener function.BarcodePicker.removeAllListeners()
function to more easily remove all BarcodePicker
event listeners in a standard way by passing an event name.Scanner.on()
and Scanner.addListener()
(alternative name for the same functionality) functions to more easily add Scanner
event listeners in a standard way by passing event name and listener function.BarcodePicker
's ready
event via the new BarcodePicker.removeListener("ready")
or BarcodePicker.removeAllListeners("ready")
functions.scandit-engine-sdk.wasm
file is used.BarcodePicker
and Scanner
events documentation.NoCameraAvailableError
rarely being thrown (with no actual consequences) while accessing or switching the camera.currentResolution
property not being set/updated yet in some situations when the camera was just accessed.BarcodePicker.onReady()
function in favor of BarcodePicker.on("ready")
.BarcodePicker.onScan()
function in favor of BarcodePicker.on("scan")
.BarcodePicker.onSubmitFrame()
function in favor of BarcodePicker.on("submitFrame")
.BarcodePicker.onProcessFrame()
function in favor of BarcodePicker.on("processFrame")
.BarcodePicker.onScanError()
function in favor of BarcodePicker.on("scanError")
.BarcodePicker.removeScanListener()
function in favor of BarcodePicker.removeListener("scan")
.BarcodePicker.removeSubmitFrameListener()
function in favor of BarcodePicker.removeListener("submitFrame")
.BarcodePicker.removeProcessFrameListener()
function in favor of BarcodePicker.removeListener("processFrame")
.BarcodePicker.removeScanErrorListener()
function in favor of BarcodePicker.removeListener("scanError")
.BarcodePicker.removeScanListeners()
function in favor of BarcodePicker.removeAllListeners("scan")
.BarcodePicker.removeSubmitFrameListeners()
function in favor of BarcodePicker.removeAllListeners("submitFrame")
.BarcodePicker.removeProcessFrameListeners()
function in favor of BarcodePicker.removeAllListeners("processFrame")
.BarcodePicker.removeScanErrorListeners()
function in favor of BarcodePicker.removeAllListeners("scanError")
.Scanner.onReady()
function in favor of Scanner.on("ready")
.ScanResult.rejectCode()
function to reject a barcode in listeners registered with BarcodePicker.onProcessFrame()
or BarcodePicker.onScan()
: if all codes in the result are rejected, sound, vibration and GUI flashing will be suppressed.ScanResult
is now a class instead of a simple object (with the same available properties as before).BarcodePicker
creation (or first delayed access to camera) will happen faster in most scenarios thanks to quicker camera video feed access. As an added bonus some browsers like Firefox mobile will also make less permission requests to the user.blurryRecognition
option to ScanSettings
's constructor and relative functions ScanSettings.isBlurryRecognitionEnabled()
and ScanSettings.setBlurryRecognitionEnabled()
to enable/disable barcode blurry recognition.laserArea
option to BarcodePicker.create()
and relative function BarcodePicker.setLaserArea()
to manually set the area of the laser displayed when the GUI style is set to laser (the laser will match the width and be vertically centered).viewfinderArea
option to BarcodePicker.create()
and relative function BarcodePicker.setViewfinderArea()
to manually set the area of the viewfinder displayed when the GUI style is set to viewfinder.BarcodePicker
's laser will now automatically match the current ScanSettings
's searchArea
option, showing the area where codes are localized and scanned.BarcodePicker
's viewfinder will now automatically match the current ScanSettings
's searchArea
option, showing the area where codes are localized and scanned.BarcodePicker.reassignOriginElement()
now verifies the passed originElement and throws an error if it's invalid.BrowserHelper
incorrectly instantiating/leaking new WebGL contexts on each call, which could result in "Too many active WebGL contexts. Oldest context will be lost." warnings/errors depending on how often it was called.SourceUnavailableError
that can happen when accessing the camera not being correctly mapped to the more recent type: NotReadableError
.BarcodePicker
failing to initialize in particular iframe context due to incorrect originElement validation.gpuAcceleration
option to ScanSettings
's constructor and relative functions ScanSettings.isGpuAccelerationEnabled()
and ScanSettings.setGpuAccelerationEnabled()
to control GPU acceleration.BrowserCompatibility.Feature
entries in the missingFeatures
property of BrowserCompatibility
regarding GPU acceleration: WEBGL
and OFFSCREEN_CANVAS
. Note that these do not affect compatibility with the general scanning process.BrowserHelper.checkBrowserCompatibility()
function to manually retrieve a built BrowserCompatibility
object for the used OS/Browser.Scanner.clearSession()
and BarcodePicker.clearSession()
functions to remove all recognized barcodes from the scanner session and allow them to be scanned again in case a custom codeDuplicateFilter
was set in the ScanSettings
.BarcodePicker
occasionally processing video frames buffered just before being hidden shortly after being shown again (and possibly triggering "old" scan results) in Safari.BarcodePicker
's submitFrame
event listeners being incorrectly called while scanning is paused.BarcodePicker
GUI incorrectly flashing when being shown after being hidden, if a code was previously scanned.Barcode.Symbology.MICRO_QR
enumeration value.Barcode.Symbology.LAPA4SC
enumeration value.scandit-engine-sdk.wasm
file cannot be retrieved correctly.Scanner.getImageSettings()
and Scanner.getScanSettings()
functions to respectively get the currently used ImageSettings
and ScanSettings
objects (use BarcodePicker.getScanner()
to retrieve its internally used Scanner
intance).ScanditSDK.configure()
's preloadCameras
and preloadEngineLibrary
options and ScanditSDK.loadEngineLibrary()
function. Their functionality has been superseded by the (already previously existing) better possibility of calling CameraAccess.getCameras()
(camera preloading) or creating and reusing a BarcodePicker
/Scanner
object in the background (engine library preloading); as explained in the README file.CameraSettings.ResolutionPreference
numerical enumeration values in favor of string values for optional easier JavaScript usage (ex. CameraSettings.ResolutionPreference.FULL_HD
is now "full-hd"
instead of 0
).scandit-engine-sdk.wasm
retrieval: in case the file is served with incorrect MIME type, an additional network request to the server is not needed anymore and previously downloaded data is reused for WebAssembply compilation.BarcodePicker
's containing element is changed or resized in Edge.BarcodePicker.isMirrorImageEnabled()
function to correctly return camera feed video mirroring status in all situations depending on camera access.BarcodePicker.setMirrorImageEnabled()
function to correctly apply and store camera feed video mirroring preferences per camera in all situations.Barcode.Symbology.CODE32
enumeration value.BarcodePicker.create()
resolving to the picker before the camera is accessed when camera access is enabled.BarcodePicker.resumeScanning()
, BarcodePicker.accessCamera()
, BarcodePicker.setActiveCamera()
and BarcodePicker.applyCameraSettings()
triggering unnecessary camera access operations when called while the camera is currently being accessed for other reasons.CameraAccess.getCameras()
triggering unnecessary camera access operations when called while the camera is currently being accessed for other reasons.example_background.html
file showing how to initialize a BarcodePicker
object before it's needed and then start it on command.BarcodePicker
in Firefox.CameraAccess.getCameras()
returning camera objects with empty labels in Firefox when called multiple times.CameraAccess.getCameras()
not returning up-to-date camera objects.BarcodePicker.onSubmitFrame()
function to register a listener to get a ScanResult
whenever a frame is submitted for processing, making it possible to retrieve the frame before scanning is performed.BarcodePicker.removeSubmitFrameListener()
and BarcodePicker.removeSubmitFrameListeners()
functions to remove the new submitFrame
event listeners.ScanResult
event result with empty barcodes and unexpected imageData/imageSettings followed by a correctly populated ScanResult
event result when some barcodes are successfully scanned.BarcodePicker.removeScanErrorListener()
.BarcodePicker
configured via the singleImageMode
option on creation. This mode is meant as an alternative/fallback mode (provided by default as fallback) for a BarcodePicker
to provide single camera pictures to be scanned. It still performs all operations locally in the browser, but trades off continuous camera stream access for (more high quality) single snapshot scanning; this results in less browser features needed for the library to work and extended browser support. In Single Image Mode a specially set UI is provided which enables users to click/tap to directly take a picture with the camera (mobile/tablet) or upload a file (desktop), this picture is then scanned and the results are provided. In this mode special camera access permissions don't have to be requested.UnsupportedBrowserError
now has a new data
property containing more details regarding the compatibility of the used OS/browser in a new BrowserCompatibility
object. The message
property in the error object is now always the same generic message.BarcodePicker.GUIStyle
numerical enumeration values.Camera.Type
numerical enumeration values.SourceUnavailableError
that can happen on some older browsers when accessing the camera are now automatically mapped to the more recent type: NotReadableError
.BarcodePicker
GUI disappearing when the source element has a CSS transformation applied to it.BarcodePicker.setCameraSwitcherEnabled()
function to dynamically show or hide the GUI button to switch between different cameras, plus a relative BarcodePicker.isCameraSwitcherEnabled()
function to get the current status.BarcodePicker.setTorchToggleEnabled()
function to dynamically show or hide a GUI button to toggle device torch on/off, plus a relative BarcodePicker.isTorchToggleEnabled()
function to get the current status.BarcodePicker.setTapToFocusEnabled()
function to dynamically enable or disable manual camera focus when clicking/tapping on the video, plus a relative BarcodePicker.isTapToFocusEnabled()
function to get the current status.BarcodePicker.setPinchToZoomEnabled()
function to dynamically enable or disable camera zoom control via pinching gesture on the video, plus a relative BarcodePicker.isPinchToZoomEnabled()
function to get the current status.BarcodePicker.getScanner()
function to retrieve the initialized (and possibly configured) Scanner
object internally used by the BarcodePicker
instance.scanner
option to BarcodePicker.create()
to pass and use an already initialized (and possibly configured) Scanner
object on creation. Using this when needed can lead to faster component initalization thanks to the reuse of the already available external Scandit Engine library in the object.destroyScanner
optional argument (enabled by default) to the BarcodePicker.destroy()
function, allowing to prevent Scanner
destruction on BarcodePicker
destruction.BarcodePicker.setActiveCamera()
's camera
argument to be optional: when not provided the default camera is selected.BarcodePicker.pauseScanning()
not pausing camera input if the relative argument is passed and the BarcodePicker
is already in a paused state.BarcodePicker.accessCamera()
not reaccessing the camera when camera access was previously paused via BarcodePicker.pauseScanning()
.UnsupportedBrowserError
in case one of the WebAssembly-bugged iOS versions is used (11.2.2/11.2.5/11.2.6).BarcodePicker
.imageData
property to the ScanResult
object, containing the raw image byte data of the processed frame.imageSettings
property to the ScanResult
object, containing the image settings used to parse the image data of the processed frame.BarcodePicker.onProcessFrame()
function to register a listener to get a ScanResult
object whenever a frame is processed, independently from the number of recognized barcodes.BarcodePicker.removeProcessFrameListener()
and BarcodePicker.removeProcessFrameListeners()
functions to remove the new processFrame
listeners.BarcodePicker
objects, to set the video feed to cover or contain and thus be resized differently inside the given origin element.videoFit
option to BarcodePicker.create()
to set video element fit type on creation.BarcodePicker.setVideoFit()
function to set fit type dynamically for the video element.BarcodePicker.ObjectFit
enumeration to list the different types of object fit types available.BarcodePicker.GUIStyle
numerical enumeration values in favor of string values for optional easier JavaScript usage (ex. BarcodePicker.GUIStyle.LASER
is now "laser"
instead of 1
).Camera.Type
numerical enumeration values in favor of string values for optional easier JavaScript usage (ex. Camera.Type.FRONT
is now "front"
instead of 0
).targetScanningFPS
option to BarcodePicker.create()
to set target frames per second to be processed/scanned.BarcodePicker.setTargetScanningFPS()
function to set target frames per second to be processed/scanned.enablePinchToZoom
option to BarcodePicker.create()
to enable/disable pinch-to-zoom (when available).BarcodePicker.setZoom()
function to manually set zoom level (when available).BarcodePicker
s that don't acccess cameras all the time and are shared for different elements.pauseCamera
option to BarcodePicker.pauseScanning()
to also pause camera input, allowing to interrupt (and later resume) the current camera stream.BarcodePicker.reassignOriginElement()
function to reassign the BarcodePicker
to a different HTML element.BarcodePicker.resumeScanning()
function now returns a promise resolving to the BarcodePicker
object instance instead of directly the instance; this is due to the fact that the function might need to access the camera again.BarcodePicker.UIStyle
enumeration.BarcodePicker.UIStyle.SCANLINE
enumeration value.BarcodePicker.create()
's uiStyle
option.BarcodePicker
trying to access again the camera after being destroyed.BarcodePicker
still referencing the used camera as the active camera after being destroyed.BarcodePicker
instances not being correctly destroyed when never accessing a camera.Parser
object and the Scandit Parser Library's documentation.BarcodePicker.createParserForFormat()
and Scanner.createParserForFormat()
functions to create and use Parser
objects.Scanner
and BarcodePicker
objects.Scanner
objects or BarcodePicker
objects starting in a paused state or with no camera access will no longer trigger registrations.BarcodePicker
has been created, allowing for early external Scandit Engine library initialization.accessCamera
option to BarcodePicker.create()
to enable/disable camera access on BarcodePicker
creation.BarcodePicker.accessCamera()
function to access the camera after creation (if disabled on creation).BarcodePicker
element sometimes overflowing its given origin element by 1 pixel.BarcodePicker
not getting hidden when the relative option or function is provided/called.BarcodePicker
visibility option and function only partially hiding the containing element.BarcodePicker
's originElement
being left in an inconsistent state after being destroyed.BarcodePicker.setGuiStyle()
function to set the GUI after creation.BarcodePicker
documentation.NotReadableError
error plus close the video stream when it's the case.BarcodePicker
when one of the cameras cannot be accessed.BarcodePicker.UIStyle
in favor of BarcodePicker.GuiStyle
to be consistent with other existing Scandit SDKs.BarcodePicker.create()
's uiStyle
option in favor of guiStyle
.BarcodePicker.UIStyle.SCANLINE
in favor of BarcodePicker.GuiStyle.LASER
to be consistent with other existing Scandit SDKs.enableTapToFocus
option to BarcodePicker.create()
to enable/disable tap-to-focus (when available).enableTorchToggle
option to BarcodePicker.create()
to enable/disable torch toggle button (when available).BarcodePicker.setTorchEnabled()
function to enable/disable torch (when available).BarcodePicker
buttons and touch events responsiveness.BarcodePicker
creation.BarcodePicker
documentation.ScanditSDK.configure()
not rejecting in case of unsupported browsers when not performing any of the preloading functions, now the promise is correctly rejected.ScanditSDK.configure()
calls in case of unsupported browsers, now the promise is correctly rejected with said error.ScanditSDK.loadEngineLibrary()
calls in case of unsupported browsers, now the promise is correctly rejected with said error.BarcodePicker
element or page loses and regains visibility.BarcodePicker
.BarcodePicker
video feed randomly freezing when switching between multiple cameras.ScanSettings
.ScanSettings
documentation.Barcode
object to correctly contain location information as Quadrilateral
object instead of array.