]> gitweb.factorcode.org Git - factor.git/blobdiff - extra/gpu/textures/textures.factor
factor: trim using lists
[factor.git] / extra / gpu / textures / textures.factor
index a240aae9452163ff3d4d40cfa2742402c7a669f5..6f72e2138eefb57e65a758c1c262f9dc7074fb79 100644 (file)
@@ -1,7 +1,8 @@
-! (c)2009 Joe Groff bsd license
+! Copyright (C) 2009 Joe Groff.
+! See http://factorcode.org/license.txt for BSD license.
 USING: accessors alien.c-types arrays byte-arrays combinators
-destructors fry gpu gpu.buffers images kernel locals math
-opengl opengl.gl opengl.textures sequences
+destructors gpu gpu.buffers images kernel math
+opengl.gl opengl.textures sequences
 specialized-arrays typed ui.gadgets.worlds variants ;
 FROM: alien.c-types => float ;
 SPECIALIZED-ARRAY: float
@@ -46,8 +47,6 @@ TUPLE: texture-data
     { component-type component-type read-only initial: ubyte-components } ;
 
 C: <texture-data> texture-data
-UNION: ?texture-data texture-data POSTPONE: f ;
-UNION: ?float-array float-array POSTPONE: f ;
 
 VARIANT: compressed-texture-format
     DXT1-RGB DXT1-RGBA DXT3 DXT5
@@ -60,7 +59,6 @@ TUPLE: compressed-texture-data
     { length integer read-only } ;
 
 C: <compressed-texture-data> compressed-texture-data
-UNION: ?compressed-texture-data compressed-texture-data POSTPONE: f ;
 
 VARIANT: texture-wrap
     clamp-texcoord-to-edge clamp-texcoord-to-border repeat-texcoord repeat-texcoord-mirrored ;
@@ -68,12 +66,11 @@ VARIANT: texture-filter
     filter-nearest filter-linear ;
 
 UNION: wrap-set texture-wrap sequence ;
-UNION: ?texture-filter texture-filter POSTPONE: f ;
 
 TUPLE: texture-parameters
     { wrap wrap-set initial: { repeat-texcoord repeat-texcoord repeat-texcoord } }
     { min-filter texture-filter initial: filter-nearest }
-    { min-mipmap-filter ?texture-filter initial: filter-linear }
+    { min-mipmap-filter maybe{ texture-filter } initial: filter-linear }
     { mag-filter texture-filter initial: filter-linear }
     { min-lod integer initial: -1000 }
     { max-lod integer initial:  1000 }
@@ -207,7 +204,7 @@ M: cube-map-face     texture-data-gl-target
 
 PRIVATE>
 
-GENERIC# allocate-texture 3 ( tdt level dim data -- )
+GENERIC#: allocate-texture 3 ( tdt level dim data -- )
 
 M: texture-1d-data-target allocate-texture ( tdt level dim data -- )
     [ ] [ glTexImage1D ] (allocate-texture) ;
@@ -218,7 +215,7 @@ M: texture-2d-data-target allocate-texture ( tdt level dim data -- )
 M: texture-3d-data-target allocate-texture ( tdt level dim data -- )
     [ first3 ] [ glTexImage3D ] (allocate-texture) ;
 
-GENERIC# allocate-compressed-texture 3 ( tdt level dim compressed-data -- )
+GENERIC#: allocate-compressed-texture 3 ( tdt level dim compressed-data -- )
 
 M: texture-1d-data-target allocate-compressed-texture ( tdt level dim compressed-data -- )
     [ ] [ glCompressedTexImage1D ] (allocate-compressed-texture) ;
@@ -229,7 +226,7 @@ M: texture-2d-data-target allocate-compressed-texture ( tdt level dim compressed
 M: texture-3d-data-target allocate-compressed-texture ( tdt level dim compressed-data -- )
     [ first3 ] [ glCompressedTexImage3D ] (allocate-compressed-texture) ;
 
-GENERIC# update-texture 4 ( tdt level loc dim data -- )
+GENERIC#: update-texture 4 ( tdt level loc dim data -- )
 
 M: texture-1d-data-target update-texture ( tdt level loc dim data -- )
     [ ] [ glTexSubImage1D ] (update-texture) ;
@@ -240,7 +237,7 @@ M: texture-2d-data-target update-texture ( tdt level loc dim data -- )
 M: texture-3d-data-target update-texture ( tdt level loc dim data -- )
     [ first3 ] [ glTexSubImage3D ] (update-texture) ;
 
-GENERIC# update-compressed-texture 4 ( tdt level loc dim compressed-data -- )
+GENERIC#: update-compressed-texture 4 ( tdt level loc dim compressed-data -- )
 
 M: texture-1d-data-target update-compressed-texture ( tdt level loc dim compressed-data -- )
     [ ] [ glCompressedTexSubImage1D ] (update-compressed-texture) ;
@@ -255,7 +252,7 @@ M: texture-3d-data-target update-compressed-texture ( tdt level loc dim compress
     { [ dim>> ] [ bitmap>> ] [ component-order>> ] [ component-type>> ] } cleave
     <texture-data> ; inline
 
-GENERIC# texture-dim 1 ( tdt level -- dim )
+GENERIC#: texture-dim 1 ( tdt level -- dim )
 
 M:: texture-1d-data-target texture-dim ( tdt level -- dim )
     tdt bind-tdt :> texture
@@ -263,13 +260,13 @@ M:: texture-1d-data-target texture-dim ( tdt level -- dim )
 
 M:: texture-2d-data-target texture-dim ( tdt level -- dim )
     tdt bind-tdt :> texture
-    tdt texture-data-gl-target level 
+    tdt texture-data-gl-target level
     [ GL_TEXTURE_WIDTH get-texture-int ] [ GL_TEXTURE_HEIGHT get-texture-int ] 2bi
     2array ; inline
 
 M:: texture-3d-data-target texture-dim ( tdt level -- dim )
     tdt bind-tdt :> texture
-    tdt texture-data-gl-target level 
+    tdt texture-data-gl-target level
     [ GL_TEXTURE_WIDTH get-texture-int ]
     [ GL_TEXTURE_HEIGHT get-texture-int ]
     [ GL_TEXTURE_DEPTH get-texture-int ] 2tri
@@ -309,9 +306,9 @@ TYPED: read-compressed-texture ( tdt: texture-data-target level: integer -- byte
 
 : read-texture-image ( tdt level -- image )
     [ texture-dim ]
-    [ drop texture-object [ component-order>> ] [ component-type>> ] bi f ]
+    [ drop texture-object [ component-order>> ] [ component-type>> ] bi f ]
     [ read-texture ] 2tri
-    image boa ; inline
+    image boa ; inline
 
 <PRIVATE
 : bind-texture ( texture -- gl-target )
@@ -360,4 +357,3 @@ PRIVATE>
     texture-1d-array <texture> ; inline
 : <texture-2d-array> ( component-order component-type parameters -- texture )
     texture-2d-array <texture> ; inline
-