diff --git a/api-reports/2_12.txt b/api-reports/2_12.txt index 1802322bd..1cecf7408 100644 --- a/api-reports/2_12.txt +++ b/api-reports/2_12.txt @@ -13250,6 +13250,7 @@ IDBVersionChangeEventInit[JT] var composed: js.UndefOr[Boolean] IDBVersionChangeEventInit[JT] var newVersion: js.UndefOr[Integer] IDBVersionChangeEventInit[JT] var oldVersion: js.UndefOr[Int] IDBVersionChangeEventInit[JT] var scoped: js.UndefOr[Boolean] +ImageBitmap[JT] def close(): Unit ImageBitmap[JT] def height: Double ImageBitmap[JT] def width: Double ImageData[JC] def data: js.Array[Int] @@ -23627,6 +23628,9 @@ experimental/mediastream/AudioTrackList[JT] var onchange: js.Function1[Event, An experimental/mediastream/AudioTrackList[JT] var onremovetrack: js.Function1[Event, Any] experimental/mediastream/AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/mediastream/AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit +experimental/mediastream/ImageCapture[JC] def grabFrame(): js.Promise[ImageBitmap] +experimental/mediastream/ImageCapture[JC] def takePhoto(): js.Promise[Blob] +experimental/mediastream/ImageCapture[JC] val track: MediaStreamTrack experimental/mediastream/MediaDeviceInfo[JT] val deviceId: String experimental/mediastream/MediaDeviceInfo[JT] val groupId: String experimental/mediastream/MediaDeviceInfo[JT] val kind: MediaDeviceKind diff --git a/api-reports/2_13.txt b/api-reports/2_13.txt index 1802322bd..1cecf7408 100644 --- a/api-reports/2_13.txt +++ b/api-reports/2_13.txt @@ -13250,6 +13250,7 @@ IDBVersionChangeEventInit[JT] var composed: js.UndefOr[Boolean] IDBVersionChangeEventInit[JT] var newVersion: js.UndefOr[Integer] IDBVersionChangeEventInit[JT] var oldVersion: js.UndefOr[Int] IDBVersionChangeEventInit[JT] var scoped: js.UndefOr[Boolean] +ImageBitmap[JT] def close(): Unit ImageBitmap[JT] def height: Double ImageBitmap[JT] def width: Double ImageData[JC] def data: js.Array[Int] @@ -23627,6 +23628,9 @@ experimental/mediastream/AudioTrackList[JT] var onchange: js.Function1[Event, An experimental/mediastream/AudioTrackList[JT] var onremovetrack: js.Function1[Event, Any] experimental/mediastream/AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], options: EventListenerOptions): Unit experimental/mediastream/AudioTrackList[JT] def removeEventListener[T <: Event](`type`: String, listener: js.Function1[T, _], useCapture: Boolean?): Unit +experimental/mediastream/ImageCapture[JC] def grabFrame(): js.Promise[ImageBitmap] +experimental/mediastream/ImageCapture[JC] def takePhoto(): js.Promise[Blob] +experimental/mediastream/ImageCapture[JC] val track: MediaStreamTrack experimental/mediastream/MediaDeviceInfo[JT] val deviceId: String experimental/mediastream/MediaDeviceInfo[JT] val groupId: String experimental/mediastream/MediaDeviceInfo[JT] val kind: MediaDeviceKind diff --git a/src/main/scala/org/scalajs/dom/WindowOrWorkerGlobalScope.scala b/src/main/scala/org/scalajs/dom/WindowOrWorkerGlobalScope.scala index 1cee8a328..83d51ae56 100644 --- a/src/main/scala/org/scalajs/dom/WindowOrWorkerGlobalScope.scala +++ b/src/main/scala/org/scalajs/dom/WindowOrWorkerGlobalScope.scala @@ -96,6 +96,12 @@ trait ImageBitmap extends js.Object { /** An unsigned long representing the width, in CSS pixels, of the ImageData. */ def width: Double = js.native + + /** Dispose of all graphical resources associated with an ImageBitmap. + * + * MDN + */ + def close(): Unit = js.native } trait CreateImageBitmapOptions extends js.Object { diff --git a/src/main/scala/org/scalajs/dom/experimental/mediastream/MediaStream.scala b/src/main/scala/org/scalajs/dom/experimental/mediastream/MediaStream.scala index 3c3c03c8d..1a6561243 100644 --- a/src/main/scala/org/scalajs/dom/experimental/mediastream/MediaStream.scala +++ b/src/main/scala/org/scalajs/dom/experimental/mediastream/MediaStream.scala @@ -2,7 +2,7 @@ */ package org.scalajs.dom.experimental.mediastream -import org.scalajs.dom.{Event, EventInit, EventTarget, TimeRanges} +import org.scalajs.dom._ import scala.scalajs.js import scala.scalajs.js.annotation._ import scala.scalajs.js.| @@ -525,6 +525,37 @@ trait MediaTrackSupportedConstraints extends js.Object { var groupId: js.UndefOr[Boolean] = js.undefined } +/** The ImageCapture interface of the MediaStream Image Capture API provides methods to enable the capture of images or + * photos from a camera or other photographic device referenced through a valid MediaStreamTrack. + * + * MDN + */ +@js.native +@JSGlobal +class ImageCapture( + init: MediaStreamTrack +) extends js.Object { + + /** Returns a reference to the MediaStreamTrack passed to the constructor. + * + * MDN + */ + val track: MediaStreamTrack = js.native + + /** Takes a single exposure using the video capture device sourcing a MediaStreamTrack and returns a Promise that + * resolves with a Blob containing the data. + * + * MDN + */ + def takePhoto(): js.Promise[Blob] = js.native + + /** Takes a snapshot of the live video in a MediaStreamTrack, returning an ImageBitmap, if successful. + * + * MDN + */ + def grabFrame(): js.Promise[ImageBitmap] = js.native +} + /** Represents a source of media data for an HTMLMediaElement object. * * A MediaSource object can be attached to a HTMLMediaElement to be played in the user agent.