File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ module Web.GPU.GPUCanvasAlphaMode
2+ ( GPUCanvasAlphaMode
3+ , opaque
4+ , premultiplied
5+ ) where
6+
7+ import Prelude
8+
9+ newtype GPUCanvasAlphaMode = GPUCanvasAlphaMode String
10+
11+ derive instance Eq GPUCanvasAlphaMode
12+ derive instance Ord GPUCanvasAlphaMode
13+ derive newtype instance Show GPUCanvasAlphaMode
14+
15+ opaque :: GPUCanvasAlphaMode
16+ opaque = GPUCanvasAlphaMode " opaque"
17+
18+ premultiplied :: GPUCanvasAlphaMode
19+ premultiplied = GPUCanvasAlphaMode " premultiplied"
Original file line number Diff line number Diff line change 1+ module Web.GPU.GPUCanvasConfiguration where
2+
3+ import Data.Newtype (class Newtype )
4+ import Web.GPU.GPUCanvasAlphaMode (GPUCanvasAlphaMode )
5+ import Web.GPU.GPUTextureFormat (GPUTextureFormat )
6+ import Web.GPU.GPUTextureUsage (GPUTextureUsageFlags )
7+ import Web.GPU.Internal.RequiredAndOptional (RequiredAndOptional )
8+ import Web.GPU.Internal.Types (GPUDevice )
9+ import Web.GPU.PredefinedColorSpace (PredefinedColorSpace )
10+
11+ newtype GPUCanvasConfiguration = GPUCanvasConfiguration
12+ ( RequiredAndOptional
13+ ( device :: GPUDevice
14+ , format :: GPUTextureFormat
15+
16+ )
17+ ( usage :: GPUTextureUsageFlags
18+ , viewFormats :: Array GPUTextureFormat
19+ , colorSpace :: PredefinedColorSpace
20+ , alphaMode :: GPUCanvasAlphaMode
21+
22+ )
23+ )
24+
25+ derive instance Newtype GPUCanvasConfiguration _
Original file line number Diff line number Diff line change 1+ export const canvasImpl = ( context ) => ( ) => context . canvas ;
2+ export const configureImpl = ( context ) => ( descriptor ) => ( ) =>
3+ context . configure ( descriptor ) ;
4+ export const unconfigureImpl = ( context ) => ( ) => context . unconfigure ( ) ;
5+ export const getCurrentTextureImpl = ( context ) => ( ) =>
6+ context . getCurrentTexture ( ) ;
Original file line number Diff line number Diff line change 1+ module Web.GPU.GPUCanvasContext
2+ ( canvas
3+ , configure
4+ , getCurrentTexture
5+ , unconfigure
6+ ) where
7+
8+ import Prelude
9+
10+ import Effect (Effect )
11+ import Web.GPU.GPUCanvasConfiguration (GPUCanvasConfiguration )
12+ import Web.GPU.Internal.Types (GPUCanvasContext , GPUTexture )
13+ import Web.HTML (HTMLCanvasElement )
14+
15+ foreign import canvasImpl :: GPUCanvasContext -> Effect HTMLCanvasElement
16+
17+ canvas :: GPUCanvasContext -> Effect HTMLCanvasElement
18+ canvas = canvasImpl
19+
20+ foreign import configureImpl
21+ :: GPUCanvasContext -> GPUCanvasConfiguration -> Effect Unit
22+
23+ configure :: GPUCanvasContext -> GPUCanvasConfiguration -> Effect Unit
24+ configure = configureImpl
25+
26+ foreign import unconfigureImpl :: GPUCanvasContext -> Effect Unit
27+
28+ unconfigure :: GPUCanvasContext -> Effect Unit
29+ unconfigure = unconfigureImpl
30+
31+ foreign import getCurrentTextureImpl :: GPUCanvasContext -> Effect GPUTexture
32+
33+ getCurrentTexture :: GPUCanvasContext -> Effect GPUTexture
34+ getCurrentTexture = getCurrentTextureImpl
Original file line number Diff line number Diff line change 1+ export const destroyImpl = ( querySet ) => ( ) => querySet . destroy ( ) ;
2+ export const typeImpl = ( querySet ) => ( ) => querySet . type ;
3+ export const countImpl = ( querySet ) => ( ) => querySet . count ;
Original file line number Diff line number Diff line change 1+ module Web.GPU.GPUQuerySet
2+ ( count
3+ , destroy
4+ , type'
5+ ) where
6+
7+ import Prelude
8+
9+ import Effect (Effect )
10+ import Web.GPU.GPUQueryType (GPUQueryType )
11+ import Web.GPU.Internal.Types (GPUQuerySet , GPUSize32 )
12+
13+ foreign import destroyImpl :: GPUQuerySet -> Effect Unit
14+
15+ destroy :: GPUQuerySet -> Effect Unit
16+ destroy = destroyImpl
17+
18+ foreign import typeImpl :: GPUQuerySet -> Effect GPUQueryType
19+
20+ type' :: GPUQuerySet -> Effect GPUQueryType
21+ type' = typeImpl
22+
23+ foreign import countImpl :: GPUQuerySet -> Effect GPUSize32
24+
25+ count :: GPUQuerySet -> Effect Int
26+ count = countImpl
Original file line number Diff line number Diff line change 1+ export const getContextImpl = ( just ) => ( nothing ) => ( canvas ) => ( ) => {
2+ const o = canvas . getContext ( "webgpu" ) ;
3+ return o ? just ( o ) : nothing ;
4+ } ;
Original file line number Diff line number Diff line change 1+ module Web.GPU.HTMLCanvasElement
2+ ( getContext
3+ ) where
4+
5+ import Data.Maybe (Maybe (..))
6+ import Effect (Effect )
7+ import Web.GPU.Internal.Types (GPUCanvasContext )
8+ import Web.HTML (HTMLCanvasElement )
9+
10+ foreign import getContextImpl
11+ :: (GPUCanvasContext -> Maybe GPUCanvasContext )
12+ -> Maybe GPUCanvasContext
13+ -> HTMLCanvasElement
14+ -> Effect (Maybe GPUCanvasContext )
15+
16+ getContext ∷ HTMLCanvasElement → Effect (Maybe GPUCanvasContext )
17+ getContext = getContextImpl Just Nothing
Original file line number Diff line number Diff line change @@ -8,6 +8,7 @@ module Web.GPU.Internal.Types
88 , GPUBindGroupLayoutEntry
99 , GPUBuffer
1010 , GPUBufferDynamicOffset
11+ , GPUCanvasContext
1112 , GPUColor
1213 , GPUCommandBuffer
1314 , GPUCommandEncoder
@@ -20,8 +21,8 @@ module Web.GPU.Internal.Types
2021 , GPUImageCopyExternalImageSource
2122 , GPUIndex32
2223 , GPUIntegerCoordinate
23- , GPUOrigin3D
2424 , GPUOrigin2D
25+ , GPUOrigin3D
2526 , GPUPipelineLayout
2627 , GPUQuerySet
2728 , GPUQueue
@@ -78,6 +79,7 @@ data GPUComputePassEncoder
7879data GPUCommandBuffer
7980data GPURenderBundle
8081data GPUImageCopyExternalImageSource
82+ data GPUCanvasContext
8183data GPUOrigin3D
8284data GPUExtent3D
8385data GPUOrigin2D
You can’t perform that action at this time.
0 commit comments