Browse Source

Massive rearrangement of std module files.

Mark Sibly 9 years ago
parent
commit
1d28dd63f6
39 changed files with 738 additions and 889 deletions
  1. 0 0
      modules/std/_dev/fiber.monkey2
  2. 0 0
      modules/std/_dev/generator.monkey2
  3. 0 0
      modules/std/_dev/native/fiber.cpp
  4. 0 0
      modules/std/_dev/native/fiber.h
  5. 0 0
      modules/std/collections/container.monkey2
  6. 0 0
      modules/std/collections/list.monkey2
  7. 6 0
      modules/std/collections/map.monkey2
  8. 0 0
      modules/std/collections/stack.monkey2
  9. 0 714
      modules/std/geom.monkey2
  10. 78 0
      modules/std/geom/affinemat3.monkey2
  11. 30 0
      modules/std/geom/mat3.monkey2
  12. 25 0
      modules/std/geom/mat4.monkey2
  13. 232 0
      modules/std/geom/rect.monkey2
  14. 91 0
      modules/std/geom/vec2.monkey2
  15. 101 0
      modules/std/geom/vec3.monkey2
  16. 112 0
      modules/std/geom/vec4.monkey2
  17. 0 0
      modules/std/graphics/color.monkey2
  18. 0 0
      modules/std/graphics/pixelformat.monkey2
  19. 26 15
      modules/std/graphics/pixmap.monkey2
  20. 0 0
      modules/std/graphics/pixmaploader.monkey2
  21. 0 0
      modules/std/memory/byteorder.monkey2
  22. 0 0
      modules/std/memory/databuffer.monkey2
  23. 0 0
      modules/std/misc/chartype.monkey2
  24. 0 0
      modules/std/misc/filesystem.monkey2
  25. 0 0
      modules/std/misc/json.monkey2
  26. 0 0
      modules/std/misc/markdown.monkey2
  27. 0 0
      modules/std/misc/native/filesystem.cpp
  28. 0 0
      modules/std/misc/native/filesystem.h
  29. 0 0
      modules/std/misc/random.monkey2
  30. 0 0
      modules/std/misc/stringio.monkey2
  31. 0 0
      modules/std/misc/time.monkey2
  32. 0 9
      modules/std/native/thread.cpp
  33. 0 93
      modules/std/native/thread.h
  34. 37 33
      modules/std/std.monkey2
  35. 0 0
      modules/std/stream/datastream.monkey2
  36. 0 0
      modules/std/stream/filestream.monkey2
  37. 0 0
      modules/std/stream/stream.monkey2
  38. 0 0
      modules/std/stream/zipstream.monkey2
  39. 0 25
      modules/std/thread.monkey2

+ 0 - 0
modules/std/fiber.monkey2 → modules/std/_dev/fiber.monkey2


+ 0 - 0
modules/std/generator.monkey2 → modules/std/_dev/generator.monkey2


+ 0 - 0
modules/std/native/fiber.cpp → modules/std/_dev/native/fiber.cpp


+ 0 - 0
modules/std/native/fiber.h → modules/std/_dev/native/fiber.h


+ 0 - 0
modules/std/container.monkey2 → modules/std/collections/container.monkey2


+ 0 - 0
modules/std/list.monkey2 → modules/std/collections/list.monkey2


+ 6 - 0
modules/std/map.monkey2 → modules/std/collections/map.monkey2

@@ -1,6 +1,10 @@
 
 Namespace std.collections
 
+Alias IntMap<V>:Map<Int,V>
+Alias FloatMap<V>:Map<Float,V>
+Alias StringMap<V>:Map<String,V>
+
 #rem monkeydoc The Map class.
 #end
 Class Map<K,V>
@@ -659,6 +663,7 @@ Class Map<K,V>
 	
 End
 
+#rem
 Class IntMap<T> Extends Map<Int,T>
 End
 
@@ -667,3 +672,4 @@ End
 
 Class StringMap<T> Extends Map<String,T>
 End
+#end

+ 0 - 0
modules/std/stack.monkey2 → modules/std/collections/stack.monkey2


+ 0 - 714
modules/std/geom.monkey2

@@ -1,714 +0,0 @@
-
-Namespace std.graphics
-
-Alias Vec2i:Vec2<Int>
-Alias Vec2f:Vec2<Float>
-
-Alias Vec3i:Vec3<Int>
-Alias Vec3f:Vec3<Float>
-
-Alias Vec4i:Vec4<Int>
-Alias Vec4f:Vec4<Float>
-
-Alias Mat4f:Mat4<Float>
-
-Alias Recti:Rect<Int>
-Alias Rectf:Rect<Float>
-
-#rem monkeydoc @hidden
-#end
-Struct Vec2<T>
-
-	Field x:T
-	Field y:T
-	
-	Method New()
-	End
-	
-	Method New( x:T,y:T )
-		Self.x=x;Self.y=y
-	End
-	
-	'TODO: Generic ctors
-	'Method New<T2>( v:Vec2<T2> )
-	'	Self.x=v.x;Self.y=v.y
-	'End
-	
-	Property X:T()
-		Return x
-	Setter( x:T )
-		Self.x=x
-	End
-	
-	Property Y:T()
-		Return y
-	Setter( y:T )
-		Self.y=y
-	End
-	
-	Property Length:T()
-		Return Sqrt( x*x+y*y )
-	End
-	
-	Operator-:Vec2()
-		Return New Vec2( -x,-y )
-	End
-	
-	Operator*=( v:Vec2 )
-		x*=v.x;y*=v.y
-	End
-
-	Operator/=( v:Vec2 )
-		x/=v.x;y/=v.y
-	End
-
-	Operator+=( v:Vec2 )
-		x+=v.x;y+=v.y
-	End
-
-	Operator-=( v:Vec2 )
-		x-=v.x;y-=v.y
-	End
-	
-	Operator*=( t:T )
-		x*=t;y*=t
-	End
-	
-	Operator/=( t:T )
-		x/=t;y/=t
-	End
-	
-	Operator+=( t:T )
-		x+=t;y+=t
-	End
-	
-	Operator-=( t:T )
-		x-=t;y-=t
-	End
-	
-	Operator*:Vec2( v:Vec2 )
-		Return New Vec2( x*v.x,y*v.y )
-	End
-	
-	Operator/:Vec2( v:Vec2 )
-		Return New Vec2( x/v.x,y/v.y )
-	End
-	
-	Operator+:Vec2( v:Vec2 )
-		Return New Vec2( x+v.x,y+v.y )
-	End
-	
-	Operator-:Vec2( v:Vec2 )
-		Return New Vec2( x-v.x,y-v.y )
-	End
-	
-	Operator*:Vec2( t:T )
-		Return New Vec2( x*t,y*t )
-	End
-	
-	Operator/:Vec2( t:T )
-		Return New Vec2( x/t,y/t )
-	End
-	
-	Operator+:Vec2( t:T )
-		Return New Vec2( x+t,y+t )
-	End
-	
-	Operator-:Vec2( t:T )
-		Return New Vec2( x-t,y-t )
-	End
-	
-	Operator<=>:Int( v:Vec2 )
-		If x<v.x Return -1
-		If x>v.x Return 1
-		If y<v.y Return -1
-		If y>v.y Return 1
-		Return 0
-	End
-	
-	Method Dot:T( v:Vec2 )
-		Return x*v.x+y*v.y
-	End
-	
-	Method Normalize:Vec2()
-		Return Self/Length
-	End
-	
-	Method Blend:Vec2( v:Vec2,alpha:Float )
-		Return New Vec2( (v.x-x)*alpha+x,(v.y-y)*alpha+y )
-	End
-	
-	Method ToVec2<T2>:Vec2<T2>()
-		Return New Vec2<T2>( x,y )
-	End
-	
-	Method ToString:String()
-		Return "Vec2("+x+","+y+")"
-	End
-
-End
-
-#rem monkeydoc @hidden
-#end
-Struct Vec3<T>
-
-	Field x:T
-	Field y:T
-	Field z:T
-	
-	Method New()
-	End
-	
-	Method New( t:T )
-		x=t;y=t;z=t
-	End
-	
-	Method New( x:T,y:T,z:T )
-		Self.x=x;Self.y=y;Self.z=z
-	End
-	
-	'TODO: Generic ctors
-	'Method New<T2>( v:Vec3<T2> )
-	'	Self.x=v.x;Self.y=v.y;Self.z=v.z
-	'End
-	
-	Property X:T()
-		Return x
-	Setter( x:T )
-		Self.x=x
-	End
-	
-	Property Y:T()
-		Return y
-	Setter( y:T )
-		Self.y=y
-	End
-	
-	Property Z:T()
-		Return z
-	Setter( z:T )
-		Self.z=z
-	End
-	
-	Property Length:T()
-		Return Sqrt( x*x+y*y+z*z )
-	End	
-	
-	Operator-:Vec3()
-		Return New Vec3( -x,-y,-z )
-	End
-	
-	Operator*=( v:Vec3 )
-		x*=v.x;y*=v.y;z*=v.z
-	End
-
-	Operator/=( v:Vec3 )
-		x/=v.x;y/=v.y;z/=v.z
-	End
-
-	Operator+=( v:Vec3 )
-		x+=v.x;y+=v.y;z+=v.z
-	End
-
-	Operator-=( v:Vec3 )
-		x-=v.x;y-=v.y;z-=v.z
-	End
-	
-	Operator*=( t:T )
-		x*=t;y*=t;z*=t
-	End
-	
-	Operator/=( t:T )
-		x/=t;y/=t;z/=t
-	End
-	
-	Operator+=( t:T )
-		x+=t;y+=t;z+=t
-	End
-	
-	Operator-=( t:T )
-		x-=t;y-=t;z-=t
-	End
-	
-	Operator*:Vec3( v:Vec3 )
-		Return New Vec3( x*v.x,y*v.y,z*v.z )
-	End
-	
-	Operator/:Vec3( v:Vec3 )
-		Return New Vec3( x/v.x,y/v.y,z/v.z )
-	End
-	
-	Operator+:Vec3( v:Vec3 )
-		Return New Vec3( x+v.x,y+v.y,z+v.z )
-	End
-	
-	Operator-:Vec3( v:Vec3 )
-		Return New Vec3( x-v.x,y-v.y,z-v.z )
-	End
-	
-	Operator*:Vec3( t:T )
-		Return New Vec3( x*t,y*t,z*t )
-	End
-	
-	Operator/:Vec3( t:T )
-		Return New Vec3( x/t,y/t,z/t )
-	End
-	
-	Operator+:Vec3( t:T )
-		Return New Vec3( x+t,y+t,z+t )
-	End
-	
-	Operator-:Vec3( t:T )
-		Return New Vec3( x-t,y-t,z-t )
-	End
-	
-	Operator<=>:Int( v:Vec3 )
-		If x<v.x Return -1
-		If x>v.x Return 1
-		If y<v.y Return -1
-		If y>v.y Return 1
-		If z<v.z Return -1
-		If z>v.z Return 1
-		Return 0
-	End
-	
-	Method Dot:T( v:Vec3 )
-		Return x*v.x + y*v.y + z*v.z
-	End
-	
-	Method Normalize:Vec3()
-		Return Self/Length
-	End
-	
-	Method ToString:String()
-		Return "Vec3("+x+","+y+","+z+")"
-	End
-	
-End
-
-#rem monkeydoc @hidden
-#end
-Struct Vec4<T>
-
-	Field x:T
-	Field y:T
-	Field z:T
-	Field w:T
-	
-	Method New()
-	End
-	
-	Method New( t:T )
-		x=t;y=t;z=t;w=t
-	End
-	
-	Method New( x:T,y:T,z:T,w:T )
-		Self.x=x;Self.y=y;Self.z=z;Self.w=w
-	End
-	
-	'TODO: Generic ctors
-	'Method New<T2>( v:Vec4<T2> )
-	'	Self.x=v.x;Self.y=v.y;Self.z=v.z;Self.w=v.w
-	'End
-	
-	Property X:T()
-		Return x
-	Setter( x:T )
-		Self.x=x
-	End
-	
-	Property Y:T()
-		Return y
-	Setter( y:T )
-		Self.y=y
-	End
-	
-	Property Z:T()
-		Return z
-	Setter( z:T )
-		Self.z=z
-	End	
-	
-	Property W:T()
-		Return w
-	Setter( w:T )
-		Self.w=w
-	End
-		
-	Operator-:Vec4()
-		Return New Vec4( -x,-y,-z,-w )
-	End
-	
-	Operator*=( v:Vec4 )
-		x*=v.x;y*=v.y;z*=v.z;w*=v.w
-	End
-
-	Operator/=( v:Vec4 )
-		x/=v.x;y/=v.y;z/=v.z;w/=v.w
-	End
-
-	Operator+=( v:Vec4 )
-		x+=v.x;y+=v.y;z+=v.z;w+=v.w
-	End
-
-	Operator-=( v:Vec4 )
-		x-=v.x;y-=v.y;z-=v.z;w-=v.w
-	End
-	
-	Operator*=( t:T )
-		x*=t;y*=t;z*=t;w*=t
-	End
-	
-	Operator/=( t:T )
-		x/=t;y/=t;z/=t;w/=t
-	End
-	
-	Operator+=( t:T )
-		x+=t;y+=t;z+=t;w+=t
-	End
-	
-	Operator-=( t:T )
-		x-=t;y-=t;z-=t;w-=t
-	End
-	
-	Operator*:Vec4( v:Vec4 )
-		Return New Vec4( x*v.x,y*v.y,z*v.z,w*v.w )
-	End
-	
-	Operator/:Vec4( v:Vec4 )
-		Return New Vec4( x/v.x,y/v.y,z/v.z,w/v.w )
-	End
-	
-	Operator+:Vec4( v:Vec4 )
-		Return New Vec4( x+v.x,y+v.y,z+v.z,w+v.w )
-	End
-	
-	Operator-:Vec4( v:Vec4 )
-		Return New Vec4( x-v.x,y-v.y,z-v.z,w-v.w )
-	End
-	
-	Operator*:Vec4( t:T )
-		Return New Vec4( x*t,y*t,z*t,w*t )
-	End
-	
-	Operator/:Vec4( t:T )
-		Return New Vec4( x/t,y/t,z/t,w/t )
-	End
-	
-	Operator+:Vec4( t:T )
-		Return New Vec4( x+t,y+t,z+t,w+t )
-	End
-	
-	Operator-:Vec4( t:T )
-		Return New Vec4( x-t,y-t,z-t,w-t )
-	End
-	
-	Operator<=>:Int( v:Vec4 )
-		If x<v.x Return -1
-		If x>v.x Return 1
-		If y<v.y Return -1
-		If y>v.y Return 1
-		If z<v.z Return -1
-		If z>v.z Return 1
-		If w<v.w Return -1
-		If w>v.w Return 1
-		Return 0
-	End
-	
-	Method Dot:T( v:Vec4 )
-		Return x*v.x + y*v.y + z*v.z + w*v.w
-	End
-	
-	Method ToString:String()
-		Return "Vec4("+x+","+y+","+z+","+w+")"
-	End
-	
-End
-
-#rem monkeydoc @hidden
-#end
-Struct Mat4<T>
-
-	Field i:Vec4<T>
-	Field j:Vec4<T>
-	Field k:Vec4<T>
-	Field t:Vec4<T>
-	
-	Method New()
-		i.x=1
-		j.y=1
-		k.z=1
-		t.w=1
-	End
-	
-	Method New( i:Vec4<T>,j:Vec4<T>,k:Vec4<T>,t:Vec4<T> )
-		Self.i=i
-		Self.j=j
-		Self.k=k
-		Self.t=t
-	End
-	
-	Operator*:Vec4<T>( v:Vec4<T> )
-		Return New Vec4<T>
-	End
-	
-	Operator*:Mat4( m:Mat4 )
-		Return New Mat4
-	End
-	
-	Operator<=>:Int( m:Mat4 )
-		If i<m.i Return -1
-		If i>m.i Return 1
-		If j<m.j Return -1
-		If j>m.j Return 1
-		If k<m.k Return -1
-		If k>m.k Return 1
-		If t<m.t Return -1
-		If t>m.t Return 1
-		Return 0
-	End
-	
-End
-
-#rem monkeydoc @hidden
-#end
-Struct Rect<T>
-
-	Field min:Vec2<T>
-	Field max:Vec2<T>
-	
-	Method New( min:Vec2<T>,max:Vec2<T> )
-		Self.min=min
-		Self.max=max
-	End
-	
-	Method New( x0:T,y0:T,x1:T,y1:T )
-		min=New Vec2<T>( x0,y0 )
-		max=New Vec2<T>( x1,y1 )
-	End
-	
-	Method New( x0:T,y0:T,max:Vec2<T> )
-		Self.min=New Vec2<T>( x0,y0 )
-		Self.max=max
-	End
-	
-	Method New( min:Vec2<T>,x1:T,y1:T )
-		Self.min=min
-		Self.max=New Vec2<T>( x1,y1 )
-	End
-	
-	'TODO: Generic ctors
-	'Method New<T2>( r:Rect<T2> )
-	'	Self.min=New Vec2<T>( r.min )
-	'	Self.max=New Vec2<T>( r.max )
-	'End
-	
-	Property X:T()
-		Return min.x
-	Setter( x:T )
-		min.x=x
-	End
-	
-	Property Y:T()
-		Return min.y
-	Setter( y:T )
-		min.y=y
-	End
-	
-	Property Width:T()
-		Return max.x-min.x
-	Setter( width:T )
-		max.x=min.x+width
-	End
-	
-	Property Height:T()
-		Return max.y-min.y
-	Setter( height:T )
-		max.y=min.y+height
-	End
-	
-	Property Left:T()
-		Return min.x
-	Setter( left:T )
-		min.x=left
-	End
-	
-	Property Top:T()
-		Return min.y
-	Setter( top:T )
-		min.y=top
-	End
-	
-	Property Right:T()
-		Return max.x
-	Setter( right:T )
-		max.x=right
-	End
-	
-	Property Bottom:T()
-		Return max.y
-	Setter( bottom:T )
-		max.y=bottom
-	End
-	
-	Property Origin:Vec2<T>()
-		Return min
-	Setter( origin:Vec2<T> )
-		min=origin
-	End
-	
-	Property Size:Vec2<T>()
-		Return max-min
-	Setter( size:Vec2<T> )
-		max=min+size
-	End
-	
-	Property Center:Vec2<T>()
-		Return (min+max)/2
-	End
-	
-	Property TopLeft:Vec2<T>()
-		Return min
-	Setter( v:Vec2<T> )
-		min=v
-	End
-	
-	Property TopRight:Vec2<T>()
-		Return New Vec2<T>( max.x,min.y )
-	Setter( v:Vec2<T> )
-		max.x=v.x
-		min.y=v.y
-	End
-	
-	Property BottomRight:Vec2<T>()
-		Return max
-	Setter( v:Vec2<T> )
-		max=v
-	End
-	
-	Property BottomLeft:Vec2<T>()
-		Return New Vec2<T>( min.x,max.y )
-	Setter( v:Vec2<T> )
-		min.x=v.x
-		max.y=v.y
-	End
-	
-	Property Empty:Bool()
-		Return max.x<=min.x Or max.y<=min.y
-	End
-
-	Operator+:Rect( r:Rect )
-		Return New Rect( min+r.min,max+r.max )
-	End
-	
-	Operator-:Rect( r:Rect )
-		Return New Rect( min-r.min,max-r.max )
-	End
-	
-	Operator*:Rect( v:Vec2<T> )
-		Return New Rect( min.x*v.x,min.y*v.y,max.x*v.x,max.y*v.y )
-	End
-	
-	Operator/:Rect( v:Vec2<T> )
-		Return New Rect( min.x/v.x,min.y/v.y,max.x/v.x,max.y/v.y )
-	End
-	
-	Operator+:Rect( v:Vec2<T> )
-		Return New Rect( min+v,max+v )
-	End
-	
-	Operator-:Rect( v:Vec2<T> )
-		Return New Rect( min-v,max-v )
-	End
-	
-	Operator+=( r:Rect )
-		min+=r.min
-		max+=r.max
-	End
-	
-	Operator-=( r:Rect )
-		min-=r.min
-		max-=r.max
-	End
-
-	Operator*=( v:Vec2<T> )
-		min*=v
-		max*=v
-	End
-	
-	Operator/=( v:Vec2<T> )
-		min/=v
-		max/=v
-	End
-	
-	Operator+=( v:Vec2<T> )
-		min+=v
-		max+=v
-	End
-	
-	Operator-=( v:Vec2<T> )
-		min-=v
-		max-=v
-	End
-	
-	Operator&:Rect( r:Rect )
-		Local x0:=Max( min.x,r.min.x )
-		Local y0:=Max( min.y,r.min.y )
-		Local x1:=Min( max.x,r.max.x )
-		Local y1:=Min( max.y,r.max.y )
-		Return New Rect( x0,y0,x1,y1 )
-	End
-	
-	Operator&=( r:Rect )
-		min.x=Max( min.x,r.min.x )
-		min.y=Max( min.y,r.min.y )
-		max.x=Min( max.x,r.max.x )
-		max.y=Min( max.y,r.max.y )
-	End
-	
-	Operator|:Rect( r:Rect )
-		Local x0:=Min( min.x,r.min.x )
-		Local y0:=Min( min.y,r.min.y )
-		Local x1:=Max( max.x,r.max.x )
-		Local y1:=Max( max.y,r.max.y )
-		Return New Rect( x0,y0,x1,y1 )
-	End
-	
-	Operator|=( r:Rect )
-		min.x=Min( min.x,r.min.x )
-		min.y=Min( min.y,r.min.y )
-		max.x=Max( max.x,r.max.x )
-		max.y=Max( max.y,r.max.y )
-	End
-	
-	Operator<=>:Int( r:Rect )
-		If min.x<r.min.x Return -1
-		If min.x>r.min.x Return 1
-		If min.y<r.min.y Return -1
-		If min.y>r.min.y Return 1
-		If max.x<r.max.x Return -1
-		If max.x>r.max.x Return 1
-		If max.y<r.max.y Return -1
-		If max.y>r.max.y Return 1
-		Return 0
-	End
-	
-	Method Centered:Rect( r:Rect )
-		Local x:=(r.Width-Width)/2+min.x
-		Local y:=(r.Height-Height)/2+min.y
-		Return New Rect( x,y,x+Width,y+Height )
-	End
-	
-	Method Contains:Bool( v:Vec2<T> )
-		Return v.x>=min.x And v.x<max.x And v.y>=min.y And v.y<max.y
-	End
-	
-	Method Intersects:Bool( r:Rect<T> )
-		Return r.max.x>min.x And r.min.x<max.x And r.max.y>min.y And r.min.y<max.y
-	End
-	
-	Method ToString:String()
-		Return "Rect("+min.ToString()+","+max.ToString()+")"
-	End
-	
-End

+ 78 - 0
modules/std/geom/affinemat3.monkey2

@@ -0,0 +1,78 @@
+
+Namespace std.geom
+
+Alias AffineMat3f:AffineMat3<Float>
+
+Struct AffineMat3<T>
+
+	Field i:Vec2<T>
+	Field j:Vec2<T>
+	Field t:Vec2<T>
+	
+	Method New()
+		i.x=1;j.y=1
+	End
+	
+'	Method New( m:AffineMat3 )
+'		i=m.i;j=m.j;t=m.t
+'	End
+	
+	Method New( i:Vec2<T>,j:Vec2<T>,t:Vec2<T> )
+		Self.i=i;Self.j=j;Self.t=t
+	End
+	
+	Method New( ix:T,iy:T,jx:T,jy:T,tx:T,ty:T )
+		Self.i.x=ix;Self.i.y=iy;Self.j.x=jx;Self.j.y=jy;Self.t.x=tx;Self.t.y=ty
+	End
+	
+	Operator-:AffineMat3()
+		Local idet:=1.0/(i.x*j.y-i.y*j.x)
+		Return New AffineMat3(
+			j.y*idet , -i.y*idet,
+			-j.x*idet , i.x*idet,
+			(j.x*t.y-j.y*t.x)*idet , (i.y*t.x-i.x*t.y)*idet )
+	End
+	
+	Operator*:Vec2<T>( v:Vec2<T> )
+		Return New Vec2<T>( i.x*v.x + j.x*v.y + t.x , i.y*v.x + j.y*v.y + t.y )
+	End
+	
+	Operator*:AffineMat3( m:AffineMat3 )
+		Return New AffineMat3(
+			i.x*m.i.x + j.x*m.i.y       , i.y*m.i.x + j.y*m.i.y ,
+			i.x*m.j.x + j.x*m.j.y       , i.y*m.j.x + j.y*m.j.y ,
+			i.x*m.t.x + j.x*m.t.y + t.x , i.y*m.t.x + j.y*m.t.y + t.y )
+	End
+			
+	Method Transform:Vec2<T>( x:T,y:T )
+		Return New Vec2<T>( i.x*x + j.x*y + t.x , i.y*x + j.y*y + t.y )
+	End
+	
+	Method Transform:AffineMat3( ix:Float,iy:Float,jx:Float,jy:Float,tx:Float,ty:Float )
+		Return New AffineMat3(
+			i.x*ix + j.x*iy       , i.y*ix + j.y*iy ,
+			i.x*jx + j.x*jy       , i.y*jx + j.y*jy ,
+			i.x*tx + j.x*ty + t.x , i.y*tx + j.y*ty + t.y )
+	End
+	
+	Method Translate:AffineMat3( v:Vec2<T> )
+		Return Transform( 1,0,0,1,v.x,v.y )
+	End
+	
+	Method Translate:AffineMat3( tx:T,ty:T )
+		Return Transform( 1,0,0,1,tx,ty )
+	End
+	
+	Method Rotate:AffineMat3( rz:Double )
+		Return Transform( Cos( rz ),-Sin( rz ),Sin( rz ),Cos( rz ),0,0 )
+	End
+	
+	Method Scale:AffineMat3( v:Vec2<T> )
+		Return Transform( v.x,0,0,v.y,0,0 )
+	End
+	
+	Method Scale:AffineMat3( sx:T,sy:T )
+		Return Transform( sx,0,0,sy,0,0 )
+	End
+	
+End

+ 30 - 0
modules/std/geom/mat3.monkey2

@@ -0,0 +1,30 @@
+
+Namespace std.geom
+
+Alias Mat3f:Mat3<Float>
+
+Class Mat3<T>
+
+	Field i:Vec3<T>
+	Field j:Vec3<T>
+	Field k:Vec3<T>
+	
+	Method New()
+		i.x=1;j.y=1;k.z=1
+	End
+	
+	Method New( m:Mat3 )
+		i=m.i;j=m.j;k=m.k
+	End
+	
+	Method New( i:Vec3<T>,j:Vec3<T>,k:Vec3<T> )
+		Self.i=i;Self.j=j;Self.k=k
+	End
+	
+	Method New( ix:T,iy:T,iz:T,jx:T,jy:T,jz:T,kx:T,ky:T,kz:T )
+		Self.i.x=ix;Self.i.y=iy;Self.i.z=iz
+		Self.j.x=jx;Self.j.y=jy;Self.j.z=jz
+		Self.k.x=jx;Self.k.y=jy;Self.k.z=kz
+	End
+
+End

+ 25 - 0
modules/std/geom/mat4.monkey2

@@ -0,0 +1,25 @@
+
+Namespace std.geom
+
+Alias Mat4f:Mat4<Float>
+
+Struct Mat4<T>
+
+	Field i:Vec4<T>
+	Field j:Vec4<T>
+	Field k:Vec4<T>
+	Field t:Vec4<T>
+	
+	Method New()
+		i.x=1;j.y=1;k.z=1;t.w=1
+	End
+	
+	Method New( i:T,j:T,k:T,t:T )
+		Self.i.x=i;Self.j.y=j;Self.k.z=k;Self.t.w=t
+	End
+	
+	Method New( i:Vec4<T>,j:Vec4<T>,k:Vec4<T>,t:Vec4<T> )
+		Self.i=i;Self.j=j;Self.k=k;Self.t=t
+	End
+	
+End

+ 232 - 0
modules/std/geom/rect.monkey2

@@ -0,0 +1,232 @@
+
+Namespace std.geom
+
+Alias Recti:Rect<Int>
+Alias Rectf:Rect<Float>
+
+Struct Rect<T>
+
+	Field min:Vec2<T>
+	Field max:Vec2<T>
+	
+	Method New( min:Vec2<T>,max:Vec2<T> )
+		Self.min=min
+		Self.max=max
+	End
+	
+	Method New( x0:T,y0:T,x1:T,y1:T )
+		min=New Vec2<T>( x0,y0 )
+		max=New Vec2<T>( x1,y1 )
+	End
+	
+	Method New( x0:T,y0:T,max:Vec2<T> )
+		Self.min=New Vec2<T>( x0,y0 )
+		Self.max=max
+	End
+	
+	Method New( min:Vec2<T>,x1:T,y1:T )
+		Self.min=min
+		Self.max=New Vec2<T>( x1,y1 )
+	End
+	
+	Property X:T()
+		Return min.x
+	Setter( x:T )
+		min.x=x
+	End
+	
+	Property Y:T()
+		Return min.y
+	Setter( y:T )
+		min.y=y
+	End
+	
+	Property Width:T()
+		Return max.x-min.x
+	Setter( width:T )
+		max.x=min.x+width
+	End
+	
+	Property Height:T()
+		Return max.y-min.y
+	Setter( height:T )
+		max.y=min.y+height
+	End
+	
+	Property Left:T()
+		Return min.x
+	Setter( left:T )
+		min.x=left
+	End
+	
+	Property Top:T()
+		Return min.y
+	Setter( top:T )
+		min.y=top
+	End
+	
+	Property Right:T()
+		Return max.x
+	Setter( right:T )
+		max.x=right
+	End
+	
+	Property Bottom:T()
+		Return max.y
+	Setter( bottom:T )
+		max.y=bottom
+	End
+	
+	Property Origin:Vec2<T>()
+		Return min
+	Setter( origin:Vec2<T> )
+		min=origin
+	End
+	
+	Property Size:Vec2<T>()
+		Return max-min
+	Setter( size:Vec2<T> )
+		max=min+size
+	End
+	
+	Property Center:Vec2<T>()
+		Return (min+max)/2
+	End
+	
+	Property TopLeft:Vec2<T>()
+		Return min
+	Setter( v:Vec2<T> )
+		min=v
+	End
+	
+	Property TopRight:Vec2<T>()
+		Return New Vec2<T>( max.x,min.y )
+	Setter( v:Vec2<T> )
+		max.x=v.x
+		min.y=v.y
+	End
+	
+	Property BottomRight:Vec2<T>()
+		Return max
+	Setter( v:Vec2<T> )
+		max=v
+	End
+	
+	Property BottomLeft:Vec2<T>()
+		Return New Vec2<T>( min.x,max.y )
+	Setter( v:Vec2<T> )
+		min.x=v.x
+		max.y=v.y
+	End
+	
+	Property Empty:Bool()
+		Return max.x<=min.x Or max.y<=min.y
+	End
+
+	Operator+:Rect( r:Rect )
+		Return New Rect( min+r.min,max+r.max )
+	End
+	
+	Operator-:Rect( r:Rect )
+		Return New Rect( min-r.min,max-r.max )
+	End
+	
+	Operator*:Rect( v:Vec2<T> )
+		Return New Rect( min.x*v.x,min.y*v.y,max.x*v.x,max.y*v.y )
+	End
+	
+	Operator/:Rect( v:Vec2<T> )
+		Return New Rect( min.x/v.x,min.y/v.y,max.x/v.x,max.y/v.y )
+	End
+	
+	Operator+:Rect( v:Vec2<T> )
+		Return New Rect( min+v,max+v )
+	End
+	
+	Operator-:Rect( v:Vec2<T> )
+		Return New Rect( min-v,max-v )
+	End
+	
+	Operator+=( r:Rect )
+		min+=r.min
+		max+=r.max
+	End
+	
+	Operator-=( r:Rect )
+		min-=r.min
+		max-=r.max
+	End
+
+	Operator*=( v:Vec2<T> )
+		min*=v
+		max*=v
+	End
+	
+	Operator/=( v:Vec2<T> )
+		min/=v
+		max/=v
+	End
+	
+	Operator+=( v:Vec2<T> )
+		min+=v
+		max+=v
+	End
+	
+	Operator-=( v:Vec2<T> )
+		min-=v
+		max-=v
+	End
+	
+	Operator&:Rect( r:Rect )
+		Local x0:=Max( min.x,r.min.x )
+		Local y0:=Max( min.y,r.min.y )
+		Local x1:=Min( max.x,r.max.x )
+		Local y1:=Min( max.y,r.max.y )
+		Return New Rect( x0,y0,x1,y1 )
+	End
+	
+	Operator&=( r:Rect )
+		min.x=Max( min.x,r.min.x )
+		min.y=Max( min.y,r.min.y )
+		max.x=Min( max.x,r.max.x )
+		max.y=Min( max.y,r.max.y )
+	End
+	
+	Operator|:Rect( r:Rect )
+		Local x0:=Min( min.x,r.min.x )
+		Local y0:=Min( min.y,r.min.y )
+		Local x1:=Max( max.x,r.max.x )
+		Local y1:=Max( max.y,r.max.y )
+		Return New Rect( x0,y0,x1,y1 )
+	End
+	
+	Operator|=( r:Rect )
+		min.x=Min( min.x,r.min.x )
+		min.y=Min( min.y,r.min.y )
+		max.x=Max( max.x,r.max.x )
+		max.y=Max( max.y,r.max.y )
+	End
+	
+	Method Centered:Rect( r:Rect )
+		Local x:=(r.Width-Width)/2+min.x
+		Local y:=(r.Height-Height)/2+min.y
+		Return New Rect( x,y,x+Width,y+Height )
+	End
+	
+	Method Contains:Bool( v:Vec2<T> )
+		Return v.x>=min.x And v.x<max.x And v.y>=min.y And v.y<max.y
+	End
+	
+	Method Contains:Bool( r:Rect )
+		Return min.x<=r.min.x And max.x>=r.max.x And min.y<=r.min.y And max.y>=r.max.y
+	End
+	
+	Method Intersects:Bool( r:Rect )
+		Return r.max.x>min.x And r.min.x<max.x And r.max.y>min.y And r.min.y<max.y
+	End
+	
+	Method ToString:String()
+		Return "Rect("+min.ToString()+","+max.ToString()+")"
+	End
+	
+End

+ 91 - 0
modules/std/geom/vec2.monkey2

@@ -0,0 +1,91 @@
+
+Namespace std.geom
+
+Alias Vec2f:Vec2<Float>
+
+Struct Vec2<T>
+
+	Field x:T
+	Field y:T
+	
+	Method New()
+	End
+	
+'	Method New( v:Vec2 )
+'		x=v.x;y=v.y
+'	End
+	
+	Method New( x:T,y:T )
+		Self.x=x
+		Self.y=y
+	End
+	
+	Property X:T()
+		Return x
+	Setter( x:T )
+		Self.x=x
+	End
+	
+	Property Y:T()
+		Return y
+	Setter( y:T )
+		Self.y=y
+	End
+	
+	Operator-:Vec2()
+		Return New Vec2( -x,-y )
+	End
+	
+	Operator*:Vec2( v:Vec2 )
+		Return New Vec2( x*v.x,y*v.y )
+	End
+	
+	Operator/:Vec2( v:Vec2 )
+		Return New Vec2( x/v.x,y/v.y )
+	End
+	
+	Operator+:Vec2( v:Vec2 )
+		Return New Vec2( x+v.x,y+v.y )
+	End
+	
+	Operator-:Vec2( v:Vec2 )
+		Return New Vec2( x-v.x,y-v.y )
+	End
+	
+	Operator*:Vec2( s:Double )
+		Return New Vec2( x*s,y*s )
+	End
+	
+	Operator/:Vec2( s:Double )
+		Return New Vec2( x/s,y/s )
+	End
+	
+	Operator+:Vec2( s:T )
+		Return New Vec2( x+s,y+s )
+	End
+	
+	Operator-:Vec2( s:T )
+		Return New Vec2( x-s,y-s )
+	End
+
+	Property Length:Double()
+		Return Sqrt( x*x+y*y )
+	End
+	
+	Method Dot:Double( v:Vec2 )
+		Return x*v.x+y*v.y
+	End
+	
+	Method Normalize:Vec2()
+		Return Self/Length
+	End
+	
+	Method Blend:Vec2( v:Vec2,alpha:Double )
+		Return New Vec2( (v.x-x)*alpha+x,(v.y-y)*alpha+y )
+	End
+	
+	Method ToString:String()
+		Return "Vec2("+x+","+y+")"
+	End
+
+End

+ 101 - 0
modules/std/geom/vec3.monkey2

@@ -0,0 +1,101 @@
+
+Namespace std.geom
+
+Alias Vec3f:Vec3<Float>
+
+Struct Vec3<T>
+
+	Field x:T
+	Field y:T
+	Field z:T
+	
+	Method New()
+	End
+	
+'	Method New( v:Vec3 )
+'		x=v.x;y=v.y;z=v.z
+'	End
+	
+	Method New( x:T,y:T,z:T )
+		Self.x=x;Self.y=y;Self.z=z
+	End
+	
+	Method New( v:Vec2<T>,z:T )
+		Self.x=v.x;Self.y=v.y;Self.z=z
+	End
+	
+	Property X:T()
+		Return x
+	Setter( x:T )
+		Self.x=x
+	End
+	
+	Property Y:T()
+		Return y
+	Setter( y:T )
+		Self.y=y
+	End
+	
+	Property Z:T()
+		Return z
+	Setter( z:T )
+		Self.z=z
+	End
+	
+	Operator-:Vec3()
+		Return New Vec3( -x,-y,-z )
+	End
+	
+	Operator*:Vec3( v:Vec3 )
+		Return New Vec3( x*v.x,y*v.y,z*v.z )
+	End
+	
+	Operator/:Vec3( v:Vec3 )
+		Return New Vec3( x/v.x,y/v.y,z/v.z )
+	End
+	
+	Operator+:Vec3( v:Vec3 )
+		Return New Vec3( x+v.x,y+v.y,z+v.z )
+	End
+	
+	Operator-:Vec3( v:Vec3 )
+		Return New Vec3( x-v.x,y-v.y,z-v.z )
+	End
+	
+	Operator*:Vec3( s:Double )
+		Return New Vec3( x*s,y*s,z*s )
+	End
+	
+	Operator/:Vec3( s:Double )
+		Return New Vec3( x/s,y/s,z/s )
+	End
+	
+	Operator+:Vec3( s:T )
+		Return New Vec3( x+s,y+s,z+s )
+	End
+	
+	Operator-:Vec3( s:T )
+		Return New Vec3( x-s,y-s,z-s )
+	End
+	
+	Property Length:Double()
+		Return Sqrt( x*x+y*y+z*z )
+	End
+
+	Method Dot:Double( v:Vec3 )
+		Return x*v.x+y*v.y+z*v.z
+	End
+	
+	Method Normalize:Vec3()
+		Return Self/Length
+	End
+	
+	Method Blend:Vec3( v:Vec3,alpha:Double )
+		Return New Vec3( (v.x-x)*alpha+x,(v.y-y)*alpha+y,(v.z-z)*alpha+z )
+	End
+	
+	Method ToString:String()
+		Return "Vec3("+x+","+y+","+z+")"
+	End
+
+End

+ 112 - 0
modules/std/geom/vec4.monkey2

@@ -0,0 +1,112 @@
+
+Namespace std.geom
+
+Alias Vec4f:Vec4<Float>
+
+Struct Vec4<T>
+
+	Field x:T
+	Field y:T
+	Field z:T
+	Field w:T
+	
+	Method New()
+	End
+	
+'	Method New( v:Vec4 )
+'		x=v.x;y=v.y;z=v.z;w=v.w
+'	End
+	
+	Method New( x:T,y:T,z:T,w:T )
+		Self.x=x;Self.y=y;Self.z=z;Self.w=w
+	End
+	
+	Method New( v:Vec3<T>,w:T )
+		x=v.x;y=v.y;z=v.z;Self.w=w
+	End
+	
+	Method New( v:Vec2<T>,z:T,w:T )
+		x=v.x;y=v.y;Self.z=z;Self.w=w
+	End
+	
+	Property X:T()
+		Return x
+	Setter( x:T )
+		Self.x=x
+	End
+	
+	Property Y:T()
+		Return y
+	Setter( y:T )
+		Self.y=y
+	End
+	
+	Property Z:T()
+		Return z
+	Setter( z:T )
+		Self.z=z
+	End
+	
+	Property W:T()
+		Return w
+	Setter( w:T )
+		Self.w=w
+	End
+	
+	Operator-:Vec4()
+		Return New Vec4( -x,-y,-z,-w )
+	End
+	
+	Operator*:Vec4( v:Vec4 )
+		Return New Vec4( x*v.x,y*v.y,z*v.z,w*v.w )
+	End
+	
+	Operator/:Vec4( v:Vec4 )
+		Return New Vec4( x/v.x,y/v.y,z/v.z,w/v.w )
+	End
+	
+	Operator+:Vec4( v:Vec4 )
+		Return New Vec4( x+v.x,y+v.y,z+v.z,w+v.w )
+	End
+	
+	Operator-:Vec4( v:Vec4 )
+		Return New Vec4( x-v.x,y-v.y,z-v.z,w-v.w )
+	End
+	
+	Operator*:Vec4( s:Double )
+		Return New Vec4( x*s,y*s,z*s,w*s )
+	End
+	
+	Operator/:Vec4( s:Double )
+		Return New Vec4( x/s,y/s,z/s,w/s )
+	End
+	
+	Operator+:Vec4( s:T )
+		Return New Vec4( x+s,y+s,z+s,w+s )
+	End
+	
+	Operator-:Vec4( s:T )
+		Return New Vec4( x-s,y-s,z-s,w-s )
+	End
+	
+	Property Length:Double()
+		Return Sqrt( x*x+y*y+z*z )
+	End
+
+	Method Dot:Double( v:Vec4 )
+		Return x*v.x+y*v.y+z*v.z+w*v.w
+	End
+	
+	Method Normalize:Vec4()
+		Return Self/Length
+	End
+	
+	Method Blend:Vec4( v:Vec4,alpha:Double )
+		Return New Vec4( (v.x-x)*alpha+x,(v.y-y)*alpha+y,(v.z-z)*alpha+z,(v.w-w)*alpha+w )
+	End
+	
+	Method ToString:String()
+		Return "Vec4("+x+","+y+","+z+","+w+")"
+	End
+
+End

+ 0 - 0
modules/std/color.monkey2 → modules/std/graphics/color.monkey2


+ 0 - 0
modules/std/pixelformat.monkey2 → modules/std/graphics/pixelformat.monkey2


+ 26 - 15
modules/std/pixmap.monkey2 → modules/std/graphics/pixmap.monkey2

@@ -217,7 +217,7 @@ Class Pixmap
 	
 	@param y The y coordinate of the pixel.
 	
-	@param pixel The pixel to set in ARGB format.
+	@param color The pixel to set in ARGB format.
 	
 	#end
 	Method SetPixelARGB( x:Int,y:Int,color:UInt )
@@ -296,27 +296,38 @@ Class Pixmap
 		Next
 	End
 	
-	'Optimize!
-	'
-	#rem monkeydoc Pastes the pixmap to another pixmap.
+	#rem monkeydoc Clears the pixmap to an ARGB color.
+	
+	@param color ARGB color to clear the pixmap to.
 	
-	In debug builds, a runtime error will occur if the operation would write to pixels outside of the target pixmap.
+	#end
+	Method ClearARGB( color:UInt )
+		For Local y:=0 Until _height
+			For Local x:=0 Until _width
+				SetPixelARGB( x,y,color )
+			Next
+		next
+	End
+	
+	#rem monkeydoc Paste a pixmap to the pixmap.
+	
+	In debug builds, a runtime error will occur if the operation would write to pixels outside of the pixmap.
 
-	@param pixmap The pixmap to paste to.
+	Note: No alpha blending is performed - pixels in the pixmap are simply overwritten.
+	
+	@param pixmap The pixmap to paste.
 	
-	@param x The x coordinate to paste to.
+	@param x The x coordinate.
 	
-	@param y The y coordinate to paste to.
+	@param y The y coordinate.
 	
 	#end
-	Method PasteTo( pixmap:Pixmap,x:Int,y:Int )
-		DebugAssert( x>=0 And x+_width<=pixmap._width And y>=0 And y+_height=pixmap._height )
+	Method Paste( pixmap:Pixmap,x:Int,y:Int )
+		DebugAssert( x>=0 And x+pixmap._width<=_width And y>=0 And y+pixmap._height<=_height )
 		
-		'TODO: Check for overlapping rects in same pixmap!
-		'
-		For Local ty:=0 Until _height
+		For Local ty:=0 Until pixmap._height
 			For Local tx:=0 Until pixmap._width
-				pixmap.SetPixel( tx,ty,GetPixel( tx,ty ) )
+				SetPixel( x+tx,y+ty,pixmap.GetPixel( tx,ty ) )
 			Next
 		Next
 	End
@@ -398,7 +409,7 @@ Class Pixmap
 	@return Null if the file could not be opened, or contained invalid image data.
 	
 	#end
-	Function LoadPixmap:Pixmap( path:String,format:PixelFormat=PixelFormat.Unknown )
+	Function Load:Pixmap( path:String,format:PixelFormat=PixelFormat.Unknown )
 	
 		Return internal.LoadPixmap( path,format )
 

+ 0 - 0
modules/std/pixmaploader.monkey2 → modules/std/graphics/pixmaploader.monkey2


+ 0 - 0
modules/std/byteorder.monkey2 → modules/std/memory/byteorder.monkey2


+ 0 - 0
modules/std/databuffer.monkey2 → modules/std/memory/databuffer.monkey2


+ 0 - 0
modules/std/chartype.monkey2 → modules/std/misc/chartype.monkey2


+ 0 - 0
modules/std/filesystem.monkey2 → modules/std/misc/filesystem.monkey2


+ 0 - 0
modules/std/json.monkey2 → modules/std/misc/json.monkey2


+ 0 - 0
modules/std/markdown.monkey2 → modules/std/misc/markdown.monkey2


+ 0 - 0
modules/std/native/filesystem.cpp → modules/std/misc/native/filesystem.cpp


+ 0 - 0
modules/std/native/filesystem.h → modules/std/misc/native/filesystem.h


+ 0 - 0
modules/std/random.monkey2 → modules/std/misc/random.monkey2


+ 0 - 0
modules/std/stringio.monkey2 → modules/std/misc/stringio.monkey2


+ 0 - 0
modules/std/time.monkey2 → modules/std/misc/time.monkey2


+ 0 - 9
modules/std/native/thread.cpp

@@ -1,9 +0,0 @@
-
-#include "bbthread.h"
-
-#if BB_THREADED
-
-//thread_local bbThread *bbThread::_current;
-__thread bbThread *bbThread::_current;
-
-#endif

+ 0 - 93
modules/std/native/thread.h

@@ -1,93 +0,0 @@
-
-#ifndef BB_THREAD_H
-#define BB_THREAD_H
-
-#include <bbstd.h>
-
-#if BB_THREADED
-
-#include <bbobject.h>
-#include <bbfunction.h>
-
-typedef bbFunction<void()> bbThreadFunc;
-
-struct semaphore{
-	int count{};
-	std::mutex mutex;
-	std::condition_variable cond_var;
-	
-	void wait(){
-		std::unique_lock<std::mutex> lock( mutex );
-		while( !count ) cond_var.wait( lock );
-		--count;
-	}
-	
-	void signal(){
-		std::unique_lock<std::mutex> lock( mutex );
-		++count;
-		cond_var.notify_one();
-	}
-};
-
-class bbThread : public bbObject{
-
-	bbThreadFunc _func;
-	
-	std::thread _thread;
-	
-	semaphore _sema;
-	
-	static __thread bbThread *_current;
-	
-	static void entry( bbThread *current ){
-	
-		_current=current;
-
-		bbGCThread gcThread( _current );
-		
-		_current->_sema.signal();
-		
-		_current->_func();
-	}
-	
-	public:
-
-	bbThread(){
-	}
-		
-	bbThread( bbThreadFunc func ):_func( func ),_thread( entry,this ){
-		_sema.wait();
-	}
-	
-	void gcMark(){
-		bbGCMark( _func );
-	}
-	
-	void Join(){
-		_thread.join();
-	}
-	
-	void Detach(){
-		_thread.detach();
-	}
-	
-	static void Sleep( double seconds ){
-		std::this_thread::sleep_for( std::chrono::nanoseconds( bbLong( seconds * 1000000000.0 ) ) );
-	}
-	
-	static bbThread *Current(){
-		return _current;
-	}
-	
-	static void Yield_(){
-		std::this_thread::yield();
-	}
-	
-	static int HardwareThreads(){
-		return std::thread::hardware_concurrency();
-	}
-};
-
-#endif
-
-#endif

+ 37 - 33
modules/std/std.monkey2

@@ -3,39 +3,43 @@ Namespace std
 
 #Import "<libc.monkey2>"
 
-#Import "container.monkey2"
-#Import "stack.monkey2"
-#Import "list.monkey2"
-#Import "map.monkey2"
-#Import "random.monkey2"
-#Import "chartype.monkey2"
-#Import "filesystem.monkey2"
-
-#Import "byteorder.monkey2"
-
-#Import "stream.monkey2"
-#Import "filestream.monkey2"
-#Import "databuffer.monkey2"
-
-#Import "stringio.monkey2"
-#Import "datastream.monkey2"
-#Import "zipstream.monkey2"
-#Import "fiber.monkey2"
-
-#Import "pixelformat.monkey2"
-#Import "color.monkey2"
-#Import "pixmap.monkey2"
-#Import "pixmaploader.monkey2"
-
-#Import "generator.monkey2"
-
-#Import "geom.monkey2"
-
-#Import "json.monkey2"
-
-#Import "markdown.monkey2"
-
-#Import "time.monkey2"
+#Import "collections/container.monkey2"
+#Import "collections/stack.monkey2"
+#Import "collections/list.monkey2"
+#Import "collections/map.monkey2"
+
+#Import "memory/byteorder.monkey2"
+#Import "memory/databuffer.monkey2"
+
+#Import "stream/stream.monkey2"
+#Import "stream/filestream.monkey2"
+#Import "stream/datastream.monkey2"
+#Import "stream/zipstream.monkey2"
+
+#Import "geom/vec2.monkey2"
+#Import "geom/vec3.monkey2"
+#Import "geom/vec4.monkey2"
+#Import "geom/mat3.monkey2"
+#Import "geom/mat4.monkey2"
+#Import "geom/affinemat3.monkey2"
+'#Import "geom/affinemat4.monkey2"
+#Import "geom/rect.monkey2"
+
+#Import "graphics/pixelformat.monkey2"
+#Import "graphics/pixmap.monkey2"
+#Import "graphics/pixmaploader.monkey2"
+#Import "graphics/color.monkey2"
+
+#Import "misc/random.monkey2"
+#Import "misc/chartype.monkey2"
+#Import "misc/filesystem.monkey2"
+#Import "misc/stringio.monkey2"
+#Import "misc/json.monkey2"
+#Import "misc/markdown.monkey2"
+#Import "misc/time.monkey2"
+
+'#Import "_dev/fiber.monkey2"
+'#Import "_dev/generator.monkey2"
 
 Private
 

+ 0 - 0
modules/std/datastream.monkey2 → modules/std/stream/datastream.monkey2


+ 0 - 0
modules/std/filestream.monkey2 → modules/std/stream/filestream.monkey2


+ 0 - 0
modules/std/stream.monkey2 → modules/std/stream/stream.monkey2


+ 0 - 0
modules/std/zipstream.monkey2 → modules/std/stream/zipstream.monkey2


+ 0 - 25
modules/std/thread.monkey2

@@ -1,25 +0,0 @@
-
-Namespace std
-
-#Import "bbthread.h"
-#Import "bbthread.cpp"
-
-Extern
-
-Class Thread="bbThread"
-
-	Method New( func:Void() )
-	
-	Method Detach()
-
-	Method Join()
-	
-	Function Current:Thread()="bbThread::Current"
-
-	Function Sleep( seconds:Double )="bbThread::Sleep"
-	
-	Function Yield()="bbThread::Yield_"
-	
-	Function HardwareThreads:Int()="bbThread::HardwareThreads"
-	
-End