<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>src/liblove/Data.cpp</filename>
    </added>
    <added>
      <filename>src/liblove/Data.h</filename>
    </added>
    <added>
      <filename>src/liblove/filesystem/File.cpp</filename>
    </added>
    <added>
      <filename>src/liblove/filesystem/File.h</filename>
    </added>
    <added>
      <filename>src/liblove/filesystem/wFile.h</filename>
    </added>
    <added>
      <filename>src/liblove/filesystem/wfilesystem.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/Drawable.cpp</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/Drawable.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/Volatile.cpp</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/Volatile.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wAnimation.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wColor.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wDrawable.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wFont.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wImage.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wParticleSystem.h</filename>
    </added>
    <added>
      <filename>src/liblove/graphics/wgraphics.h</filename>
    </added>
    <added>
      <filename>src/liblove/image/ImageData.cpp</filename>
    </added>
    <added>
      <filename>src/liblove/image/ImageData.h</filename>
    </added>
    <added>
      <filename>src/liblove/image/wImageData.h</filename>
    </added>
    <added>
      <filename>src/liblove/image/wimage.h</filename>
    </added>
    <added>
      <filename>src/liblove/joystick/wjoystick.h</filename>
    </added>
    <added>
      <filename>src/liblove/keyboard/wkeyboard.h</filename>
    </added>
    <added>
      <filename>src/liblove/mouse/wmouse.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wBody.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wCircleShape.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wContact.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wDistanceJoint.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wJoint.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wMouseJoint.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wPolygonShape.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wPrismaticJoint.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wRevoluteJoint.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wShape.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wWorld.h</filename>
    </added>
    <added>
      <filename>src/liblove/physics/wphysics.h</filename>
    </added>
    <added>
      <filename>src/liblove/system/wsystem.h</filename>
    </added>
    <added>
      <filename>src/liblove/timer/wtimer.h</filename>
    </added>
    <added>
      <filename>src/love_devil/ImageData.cpp</filename>
    </added>
    <added>
      <filename>src/love_devil/ImageData.h</filename>
    </added>
    <added>
      <filename>src/love_devil/love_devil.cpp</filename>
    </added>
    <added>
      <filename>src/love_devil/love_devil.h</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -1874,7 +1874,7 @@
           &lt;param name=&quot;x&quot; brief=&quot;The x-component of the center of mass in local coordinates.&quot; /&gt;
           &lt;param name=&quot;y&quot; brief=&quot;The y-component of the center of mass in local coordinates.&quot; /&gt;
           &lt;param name=&quot;m&quot; brief=&quot;The mass.&quot; /&gt;
-          &lt;param name=&quot;i&quot; brief=&quot;The interia.&quot; /&gt;
+          &lt;param name=&quot;i&quot; brief=&quot;The inertia.&quot; /&gt;
         &lt;/overload&gt;
       &lt;/func&gt;
 
@@ -2329,7 +2329,7 @@
     &lt;type name=&quot;DistanceJoint&quot; brief=&quot;Maintains a certain distance between Bodies.&quot;&gt;
 
 
-      &lt;!-- JOINT --&gt;
+      &lt;!-- JOINT 
       &lt;func name=&quot;getType&quot; brief=&quot;Gets an integer representing the type.&quot;&gt;
         &lt;overload&gt;
           &lt;ret name=&quot;type&quot; type=&quot;number&quot; brief=&quot;A constant integer.&quot; /&gt;
@@ -2369,7 +2369,7 @@
           &lt;param name=&quot;collide&quot; brief=&quot;True for the Bodies to collide, false otherwise.&quot; /&gt;
         &lt;/overload&gt;
       &lt;/func&gt;
-      &lt;!-- JOINT END --&gt;
+      JOINT END --&gt;
 
       &lt;func name=&quot;getLength&quot; brief=&quot;Gets the equilibrium distance between the two Bodies.&quot;&gt;
         &lt;overload&gt;
@@ -2422,7 +2422,7 @@
 
     &lt;/type&gt;
     &lt;type name=&quot;RevoluteJoint&quot; brief=&quot;Allow two Bodies to revolve around a shared point.&quot;&gt;
-      &lt;!-- JOINT --&gt;
+      &lt;!-- JOINT 
       &lt;func name=&quot;getType&quot; brief=&quot;Gets an integer representing the type.&quot;&gt;
         &lt;overload&gt;
           &lt;ret name=&quot;type&quot; type=&quot;number&quot; brief=&quot;A constant integer.&quot; /&gt;
@@ -2462,7 +2462,7 @@
           &lt;param name=&quot;collide&quot; brief=&quot;True for the Bodies to collide, false otherwise.&quot; /&gt;
         &lt;/overload&gt;
       &lt;/func&gt;
-      &lt;!-- JOINT END --&gt;
+      JOINT END --&gt;
 
       &lt;func name=&quot;getAngle&quot; brief=&quot;Get the current joint angle.&quot;&gt;
         &lt;overload&gt;
@@ -2579,7 +2579,7 @@
       
     &lt;/type&gt;
     &lt;type name=&quot;PrismaticJoint&quot; brief=&quot;Restricts relative motion between Bodies to one shared axis.&quot;&gt;
-      &lt;!-- JOINT --&gt;
+      &lt;!-- JOINT 
       &lt;func name=&quot;getType&quot; brief=&quot;Gets an integer representing the type.&quot;&gt;
         &lt;overload&gt;
           &lt;ret name=&quot;type&quot; type=&quot;number&quot; brief=&quot;A constant integer.&quot; /&gt;
@@ -2619,7 +2619,7 @@
           &lt;param name=&quot;collide&quot; brief=&quot;True for the Bodies to collide, false otherwise.&quot; /&gt;
         &lt;/overload&gt;
       &lt;/func&gt;
-      &lt;!-- JOINT END --&gt;
+      JOINT END --&gt;
 
 
       &lt;func name=&quot;getTranslation&quot; brief=&quot;Get the current joint translation.&quot;&gt;
@@ -2738,7 +2738,7 @@
     &lt;/type&gt;
     &lt;type name=&quot;MouseJoint&quot; brief=&quot;For controlling objects with the mouse.&quot;&gt;
 
-      &lt;!-- JOINT --&gt;
+      &lt;!-- JOINT 
       &lt;func name=&quot;getType&quot; brief=&quot;Gets an integer representing the type.&quot;&gt;
         &lt;overload&gt;
           &lt;ret name=&quot;type&quot; type=&quot;number&quot; brief=&quot;A constant integer.&quot; /&gt;
@@ -2778,7 +2778,7 @@
           &lt;param name=&quot;collide&quot; brief=&quot;True for the Bodies to collide, false otherwise.&quot; /&gt;
         &lt;/overload&gt;
       &lt;/func&gt;
-      &lt;!-- JOINT END --&gt;
+      JOINT END --&gt;
 
       &lt;func name=&quot;getTarget&quot; brief=&quot;Gets the target point.&quot;&gt;
         &lt;overload&gt;</diff>
      <filename>docs2/data.xml</filename>
    </modified>
    <modified>
      <diff>@@ -142,24 +142,200 @@
 	&lt;References&gt;
 	&lt;/References&gt;
 	&lt;Files&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\constants.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\Drawable.cpp&quot;
+		&lt;Filter
+			Name=&quot;filesystem&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\filesystem\File.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\filesystem\File.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\filesystem\wFile.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\filesystem\wfilesystem.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;graphics&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\Drawable.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\Drawable.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\Volatile.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\Volatile.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wAnimation.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wColor.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wDrawable.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wFont.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wgraphics.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wImage.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\graphics\wParticleSystem.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;image&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\image\ImageData.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\image\ImageData.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\image\wimage.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\image\wImageData.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;joystick&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\joystick\wjoystick.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;keyboard&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\keyboard\wkeyboard.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;mouse&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\mouse\wmouse.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;physics&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wBody.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wCircleShape.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wContact.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wDistanceJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wMouseJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wphysics.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wPolygonShape.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wPrismaticJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wRevoluteJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wShape.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\physics\wWorld.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;system&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\system\wsystem.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;timer&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\..\src\liblove\timer\wtimer.h&quot;
+				&gt;
+			&lt;/File&gt;
+		&lt;/Filter&gt;
+		&lt;File
+			RelativePath=&quot;..\..\..\src\liblove\config.h&quot;
 			&gt;
 		&lt;/File&gt;
 		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\Drawable.h&quot;
+			RelativePath=&quot;..\..\..\src\liblove\constants.h&quot;
 			&gt;
 		&lt;/File&gt;
 		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\File.cpp&quot;
+			RelativePath=&quot;..\..\..\src\liblove\Data.cpp&quot;
 			&gt;
 		&lt;/File&gt;
 		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\File.h&quot;
+			RelativePath=&quot;..\..\..\src\liblove\Data.h&quot;
 			&gt;
 		&lt;/File&gt;
 		&lt;File
@@ -215,118 +391,6 @@
 			&gt;
 		&lt;/File&gt;
 		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\Volatile.cpp&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\Volatile.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wAnimation.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wBody.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wCircleShape.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wColor.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wContact.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wDistanceJoint.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wDrawable.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wFile.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wfilesystem.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wFont.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wgraphics.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wImage.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wJoint.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wjoystick.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wkeyboard.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wmouse.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wMouseJoint.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wParticleSystem.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wphysics.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wPolygonShape.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wPrismaticJoint.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wRevoluteJoint.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wShape.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wsystem.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wtimer.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
-			RelativePath=&quot;..\..\..\src\liblove\wWorld.h&quot;
-			&gt;
-		&lt;/File&gt;
-		&lt;File
 			RelativePath=&quot;..\..\..\src\liblove\wwrap.h&quot;
 			&gt;
 		&lt;/File&gt;</diff>
      <filename>platform/msvc2008/liblove/liblove.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -132,7 +132,7 @@
 			/&gt;
 			&lt;Tool
 				Name=&quot;VCLinkerTool&quot;
-				AdditionalDependencies=&quot;liblove.lib lua.lib SDLmain-d.lib SDL-d.lib opengl32.lib glu32.lib DevIL.lib freetype.lib physfs.lib ws2_32.lib&quot;
+				AdditionalDependencies=&quot;liblove.lib lua.lib SDLmain.lib SDL.lib opengl32.lib glu32.lib DevIL.lib freetype.lib physfs.lib ws2_32.lib&quot;
 				AdditionalLibraryDirectories=&quot;lib;Release&quot;
 				GenerateDebugInformation=&quot;true&quot;
 				SubSystem=&quot;2&quot;
@@ -230,10 +230,6 @@
 				&gt;
 			&lt;/File&gt;
 			&lt;File
-				RelativePath=&quot;..\..\src\love_opengl\GLee.c&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
 				RelativePath=&quot;..\..\src\love_opengl\Image.cpp&quot;
 				&gt;
 				&lt;FileConfiguration
@@ -250,14 +246,6 @@
 				&gt;
 			&lt;/File&gt;
 			&lt;File
-				RelativePath=&quot;..\..\src\love_opengl\ImageFont.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_opengl\ImageFont.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
 				RelativePath=&quot;..\..\src\love_opengl\love_opengl.cpp&quot;
 				&gt;
 				&lt;FileConfiguration
@@ -371,236 +359,24 @@
 			&lt;/File&gt;
 		&lt;/Filter&gt;
 		&lt;Filter
-			Name=&quot;box2d&quot;
+			Name=&quot;devil&quot;
 			&gt;
 			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Body.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Body.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\CircleShape.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\CircleShape.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Contact.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Contact.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\DistanceJoint.cpp&quot;
+				RelativePath=&quot;..\..\src\love_devil\ImageData.cpp&quot;
 				&gt;
 			&lt;/File&gt;
 			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\DistanceJoint.h&quot;
+				RelativePath=&quot;..\..\src\love_devil\ImageData.h&quot;
 				&gt;
 			&lt;/File&gt;
 			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Joint.cpp&quot;
+				RelativePath=&quot;..\..\src\love_devil\love_devil.cpp&quot;
 				&gt;
 			&lt;/File&gt;
 			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Joint.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\love_box2d.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\love_box2d.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\MouseJoint.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\MouseJoint.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\PolygonShape.cpp&quot;
+				RelativePath=&quot;..\..\src\love_devil\love_devil.h&quot;
 				&gt;
 			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\PolygonShape.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\PrismaticJoint.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\PrismaticJoint.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\RevoluteJoint.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\RevoluteJoint.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Shape.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\Shape.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\World.cpp&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;File
-				RelativePath=&quot;..\..\src\love_box2d\World.h&quot;
-				&gt;
-			&lt;/File&gt;
-			&lt;Filter
-				Name=&quot;box2d&quot;
-				&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2BlockAllocator.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2Body.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2BroadPhase.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2CircleContact.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\Shapes\b2CircleShape.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2CollideCircle.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2CollidePoly.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2Collision.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2Contact.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2ContactManager.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2ContactSolver.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2Distance.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2DistanceJoint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2GearJoint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2Island.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2Joint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2Math.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2MouseJoint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2PairManager.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2PolyAndCircleContact.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2PolyContact.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\Shapes\b2PolygonShape.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2PrismaticJoint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2PulleyJoint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2RevoluteJoint.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2Settings.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\Shapes\b2Shape.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2StackAllocator.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2TimeOfImpact.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2World.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2WorldCallbacks.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-				&lt;File
-					RelativePath=&quot;..\..\src\love_box2d\graham\GrahamScanConvexHull.cpp&quot;
-					&gt;
-				&lt;/File&gt;
-			&lt;/Filter&gt;
 		&lt;/Filter&gt;
 		&lt;Filter
 			Name=&quot;sdlkeyboard&quot;
@@ -842,6 +618,238 @@
 				&gt;
 			&lt;/File&gt;
 		&lt;/Filter&gt;
+		&lt;Filter
+			Name=&quot;box2d&quot;
+			&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Body.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Body.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\CircleShape.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\CircleShape.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Contact.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Contact.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\DistanceJoint.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\DistanceJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Joint.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Joint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\love_box2d.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\love_box2d.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\MouseJoint.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\MouseJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\PolygonShape.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\PolygonShape.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\PrismaticJoint.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\PrismaticJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\RevoluteJoint.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\RevoluteJoint.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Shape.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\Shape.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\World.cpp&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;File
+				RelativePath=&quot;..\..\src\love_box2d\World.h&quot;
+				&gt;
+			&lt;/File&gt;
+			&lt;Filter
+				Name=&quot;box2d&quot;
+				&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2BlockAllocator.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2Body.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2BroadPhase.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2CircleContact.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\Shapes\b2CircleShape.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2CollideCircle.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2CollidePoly.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2Collision.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2Contact.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2ContactManager.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2ContactSolver.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2Distance.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2DistanceJoint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2GearJoint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2Island.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2Joint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2Math.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2MouseJoint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2PairManager.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2PolyAndCircleContact.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Contacts\b2PolyContact.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\Shapes\b2PolygonShape.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2PrismaticJoint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2PulleyJoint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\Joints\b2RevoluteJoint.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2Settings.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\Shapes\b2Shape.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Common\b2StackAllocator.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Collision\b2TimeOfImpact.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2World.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\Source\Dynamics\b2WorldCallbacks.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+				&lt;File
+					RelativePath=&quot;..\..\src\love_box2d\graham\GrahamScanConvexHull.cpp&quot;
+					&gt;
+				&lt;/File&gt;
+			&lt;/Filter&gt;
+		&lt;/Filter&gt;
 		&lt;File
 			RelativePath=&quot;..\..\src\love.cpp&quot;
 			&gt;</diff>
      <filename>platform/msvc2008/love.vcproj</filename>
    </modified>
    <modified>
      <diff>@@ -18,6 +18,6 @@
 
 // Define this to include extra code which
 // ensures LOVE 0.5.0 compatibility.
-#define LOVE_COMPAT_050
+//#define LOVE_COMPAT_050
 
 #endif // LOVE_CONFIG_H</diff>
      <filename>src/liblove/config.h</filename>
    </modified>
    <modified>
      <diff>@@ -160,14 +160,19 @@ namespace love
 		return 0;
 	}
 
-	int luax_strtofile(lua_State * L, int idx)
+	int luax_convobj(lua_State * L, int idx, const char * mod, const char * fn)
 	{
 		// Convert string to a file.
-		luax_getfunction(L, &quot;filesystem&quot;, &quot;newFile&quot;);
-		lua_pushvalue(L, idx); // The string argument.
+		luax_getfunction(L, mod, fn);
+		lua_pushvalue(L, idx); // The initial argument.
 		lua_call(L, 1, 1); // Call the function, one arg, one return value.
-		lua_replace(L, idx); // Replace the string argument with the File.
+		lua_replace(L, idx); // Replace the initial argument with the new object.
 		return 0;
 	}
 
+	int luax_strtofile(lua_State * L, int idx)
+	{
+		return luax_convobj(L, idx, &quot;filesystem&quot;, &quot;newFile&quot;);
+	}
+
 } // love</diff>
      <filename>src/liblove/luax.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -48,6 +48,15 @@ namespace love
 	int luax_getfunction(lua_State * L, const char * mod, const char * fn);
 
 	/**
+	* Converts an object into another object
+	* by the specified function mod.fn. The function must accept
+	* a single file as a parameter, and return one value.
+	* 
+	* Note that the initial object is converted, i.e. replaced.
+	**/
+	int luax_convobj(lua_State * L, int idx, const char * mod, const char * fn);
+
+	/**
 	* Converts a string into a File object. Note that the 
 	* string is replaced by the new File object at the
 	* specified index, and NOT pushed onto the stack.</diff>
      <filename>src/liblove/luax.h</filename>
    </modified>
    <modified>
      <diff>@@ -22,6 +22,7 @@ namespace love
 		LOVE_OBJECT_ID = 0,
 		LOVE_FILE_ID, 
 		LOVE_DRAWABLE_ID,
+		LOVE_DATA_ID,
 
 		// Module specific types.
 
@@ -32,6 +33,9 @@ namespace love
 		LOVE_FONT_ID,
 		LOVE_PARTICLE_SYSTEM_ID,
 
+		// Image
+		LOVE_IMAGE_DATA_ID,
+
 		// Physics
 		LOVE_WORLD_ID,
 		LOVE_CONTACT_ID,
@@ -50,6 +54,7 @@ namespace love
 		LOVE_OPENGL_ID, 
 		LOVE_DIRECT3D_ID,
 		LOVE_BOX2D_ID,
+		LOVE_DEVIL_ID,
 
 		// Count the number of bits needed.
 		LOVE_BIT_SIZE
@@ -60,6 +65,7 @@ namespace love
 	static const bits LOVE_OBJECT_BITS = bits(1) &lt;&lt; LOVE_OBJECT_ID;
 	static const bits LOVE_FILE_BITS = (bits(1) &lt;&lt; LOVE_FILE_ID) | LOVE_OBJECT_BITS;
 	static const bits LOVE_DRAWABLE_BITS = (bits(1) &lt;&lt; LOVE_DRAWABLE_ID) | LOVE_OBJECT_BITS;
+	static const bits LOVE_DATA_BITS = (bits(1) &lt;&lt; LOVE_DATA_ID) | LOVE_OBJECT_BITS;
 
 	// Graphics.
 	static const bits LOVE_IMAGE_BITS = (bits(1) &lt;&lt; LOVE_IMAGE_ID) | LOVE_DRAWABLE_BITS;
@@ -68,6 +74,9 @@ namespace love
 	static const bits LOVE_FONT_BITS = (bits(1) &lt;&lt; LOVE_FONT_ID) | LOVE_OBJECT_BITS;
 	static const bits LOVE_PARTICLE_SYSTEM_BITS = (bits(1) &lt;&lt; LOVE_PARTICLE_SYSTEM_ID) | LOVE_DRAWABLE_BITS;
 
+	// Image.
+	static const bits LOVE_IMAGE_DATA_BITS = (bits(1) &lt;&lt; LOVE_IMAGE_DATA_ID) | LOVE_DATA_BITS;
+	
 	// Physics.
 	static const bits LOVE_WORLD_BITS = (bits(1) &lt;&lt; LOVE_WORLD_ID) | LOVE_OBJECT_BITS;
 	static const bits LOVE_CONTACT_BITS = (bits(1) &lt;&lt; LOVE_CONTACT_ID) | LOVE_OBJECT_BITS;
@@ -85,6 +94,7 @@ namespace love
 	static const bits LOVE_OPENGL_BITS = bits(1) &lt;&lt; LOVE_OPENGL_ID;
 	static const bits LOVE_DIRECT3D_BITS = bits(1) &lt;&lt; LOVE_DIRECT3D_ID;
 	static const bits LOVE_BOX2D_BITS = bits(1) &lt;&lt; LOVE_BOX2D_ID;
+	static const bits LOVE_DEVIL_BITS = bits(1) &lt;&lt; LOVE_DEVIL_ID;
 
 	// Wraps all userdata pointers.
 	struct userdata</diff>
      <filename>src/liblove/types.h</filename>
    </modified>
    <modified>
      <diff>@@ -29,6 +29,7 @@
 #include &quot;love_sdlmouse/love_sdlmouse.h&quot;
 #include &quot;love_sdlkeyboard/love_sdlkeyboard.h&quot;
 #include &quot;love_box2d/love_box2d.h&quot;
+#include &quot;love_devil/love_devil.h&quot;
 
 int luaopen_love(lua_State * L)
 {
@@ -79,6 +80,7 @@ int luaopen_love(lua_State * L)
 	love::sdlmouse::luainfo(L);
 	love::sdlkeyboard::luainfo(L);
 	love::box2d::luainfo(L);
+	love::devil::luainfo(L);
 
 	return 0;
 }
@@ -121,7 +123,7 @@ int main(int argc, char ** argv)
 	// which gets everything started.
 
 	// TODO: This is obviously test code.
-	luaL_dofile(L, &quot;test.lua&quot;);
+	luaL_dofile(L, &quot;../../src/lua/love.lua&quot;);
 	lua_close(L);
 	printf(&quot;(press key)\n&quot;);
 	getchar();</diff>
      <filename>src/love.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -17,7 +17,7 @@
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE box2d
 #define LOVE_WRAP_BITS LOVE_BOX2D_BITS
-#include &quot;../liblove/wphysics.h&quot;
+#include &quot;../liblove/physics/wphysics.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_box2d/love_box2d.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -10,6 +10,9 @@
 
 #include &quot;Animation.h&quot;
 
+// LOVE
+#include &quot;../liblove/constants.h&quot;
+
 // STD
 #include &lt;cmath&gt;
 </diff>
      <filename>src/love_opengl/Animation.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@
 #define LOVE_OPENGL_ANIMATION_H
 
 // LOVE
-#include &quot;../liblove/Drawable.h&quot;
+#include &quot;../liblove/graphics/Drawable.h&quot;
 
 // Module.
 #include &quot;Image.h&quot;</diff>
      <filename>src/love_opengl/Animation.h</filename>
    </modified>
    <modified>
      <diff>@@ -9,8 +9,8 @@
 #define LOVE_OPENGL_FONT_H
 
 // LOVE
-#include &quot;../liblove/File.h&quot;
-#include &quot;../liblove/Volatile.h&quot;
+#include &quot;../liblove/filesystem/File.h&quot;
+#include &quot;../liblove/graphics/Volatile.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_opengl/Font.h</filename>
    </modified>
    <modified>
      <diff>@@ -30,7 +30,7 @@ namespace opengl
 	}
 
 	Image::Image(Texture * texture)
-		: x(0), y(0), width(texture-&gt;width), height(texture-&gt;height)
+		: x(0), y(0), width((float)texture-&gt;width), height((float)texture-&gt;height)
 	{
 		texture-&gt;retain();
 		this-&gt;texture = texture;
@@ -46,8 +46,8 @@ namespace opengl
 			w2, -h2
 		};
 
-		float tw = width/texture-&gt;textureWidth;
-		float th = height/texture-&gt;textureHeight;
+		float tw = width/texture-&gt;width;
+		float th = height/texture-&gt;height;
 
 		const float temp_texels [] = 
 		{
@@ -78,10 +78,10 @@ namespace opengl
 			w2, -h2
 		};
 
-		float tx = this-&gt;x/(texture-&gt;textureWidth);
-		float ty = this-&gt;y/(texture-&gt;textureHeight);
-		float tw = this-&gt;width/(texture-&gt;textureWidth);
-		float th = this-&gt;height/(texture-&gt;textureHeight);
+		float tx = this-&gt;x/(texture-&gt;width);
+		float ty = this-&gt;y/(texture-&gt;height);
+		float tw = this-&gt;width/(texture-&gt;width);
+		float th = this-&gt;height/(texture-&gt;height);
 
 		const float temp_texels [] = 
 		{</diff>
      <filename>src/love_opengl/Image.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@
 
 // LOVE
 #include &quot;../liblove/config.h&quot;
-#include &quot;../liblove/Drawable.h&quot;
+#include &quot;../liblove/graphics/Drawable.h&quot;
 
 // Module
 #include &quot;Texture.h&quot;</diff>
      <filename>src/love_opengl/Image.h</filename>
    </modified>
    <modified>
      <diff>@@ -179,11 +179,11 @@ namespace opengl
 				
 				texture-&gt;bind();
 
-				float xTex = x/(float)texture-&gt;getTextureWidth();
-				float yTex = y/(float)texture-&gt;getTextureHeight();
+				float xTex = x/(float)texture-&gt;getWidth();
+				float yTex = y/(float)texture-&gt;getHeight();
 
-				float wTex = w/(float)texture-&gt;getTextureWidth();
-				float hTex = h/(float)texture-&gt;getTextureHeight();
+				float wTex = w/(float)texture-&gt;getWidth();
+				float hTex = h/(float)texture-&gt;getHeight();
 
 				glBegin(GL_QUADS);
 					glTexCoord2f(xTex,yTex);				glVertex2f(0,0);</diff>
      <filename>src/love_opengl/ImageFont.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -12,7 +12,7 @@
 
 #include &quot;../liblove/math.h&quot;
 #include &quot;../liblove/constants.h&quot;
-#include &quot;../liblove/Drawable.h&quot;
+#include &quot;../liblove/graphics/Drawable.h&quot;
 
 // Module
 #include &quot;Color.h&quot;</diff>
      <filename>src/love_opengl/ParticleSystem.h</filename>
    </modified>
    <modified>
      <diff>@@ -23,42 +23,21 @@ namespace love
 {
 namespace opengl
 {
-	// @todo why is this method even here?
-	int power_of_two(int i)
-	{
-		// @todo Less &quot;while&quot;, more awesome.
-		// float exp = log(value) / log(2) // etc
-		int temp = 1;
-		while(temp &lt; i)
-			temp *= 2;
-		return temp;
-	}
 
-	Texture::Texture(File * file)
-		: padding(0)
+	Texture::Texture(ImageData * data)
 	{
-		file-&gt;retain();
-		this-&gt;file = file;
+		this-&gt;data = data;
+		data-&gt;retain();
+		width = data-&gt;getWidth();
+		height = data-&gt;getHeight();
 	}
 	
 	Texture::~Texture()
 	{
-		// We're done with the file.
-		file-&gt;release();
-
+		data-&gt;release();
 		unload();
 	}
 
-	int Texture::getTextureWidth() const
-	{
-		return textureWidth;
-	}
-
-	int Texture::getTextureHeight() const
-	{
-		return textureHeight;
-	}
-
 	int Texture::getWidth() const
 	{
 		return (int)width;
@@ -69,60 +48,24 @@ namespace opengl
 		return (int)width;
 	}
 
-	int Texture::getPadding() const
-	{
-		return padding;
-	}
-
 	void Texture::bind() const
 	{
 		glBindTexture(GL_TEXTURE_2D,texture);
 	}
 
-	bool Texture::read()
+	bool Texture::load()
 	{
-		if(!file-&gt;load())
-			return false;
-
-		// Generate DevIL image.
-		ilGenImages(1, &amp;image);
-
-		// Bind the image.
-		ilBindImage(image);
-
-		// Try to load the image.
-		ILboolean success = ilLoadL(IL_TYPE_UNKNOWN, (void*)file-&gt;getData(), file-&gt;getSize());
-
-		// Check for errors
-		if(!success)
-		{
-			std::cerr &lt;&lt; &quot;Could not load image \&quot;&quot; &lt;&lt; file-&gt;getFilename() &lt;&lt; &quot;\&quot;: &quot; &lt;&lt; getErrorString(ilGetError()) &lt;&lt; &quot;.&quot; &lt;&lt; std::endl;
-			return false;
-		}
-
-		this-&gt;width	= (float)ilGetInteger(IL_IMAGE_WIDTH);
-		this-&gt;height = (float)ilGetInteger(IL_IMAGE_HEIGHT);
-		this-&gt;origin = ilGetInteger(IL_IMAGE_ORIGIN);
-
-		this-&gt;textureWidth = (int)width;
-		this-&gt;textureHeight = (int)height;
-
-		ilConvertImage(IL_RGBA, IL_UNSIGNED_BYTE);
-
-		return true;
+		return loadVolatile();
 	}
 
-	rgba * Texture::getData() const
+	void Texture::unload()
 	{
-		return (rgba *)ilGetData();
+		unloadVolatile();
 	}
 
-	bool Texture::lock()
+	bool Texture::loadVolatile()
 	{
-		padTwoPower();
-
-		// Pass on to OGL
-		glGenTextures(1,(GLuint*)&amp;texture);
+		glGenTextures(1,&amp;texture);
 		glBindTexture(GL_TEXTURE_2D, texture);
 		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
 		glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
@@ -130,59 +73,15 @@ namespace opengl
 		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
 		glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
 
-		glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, (GLsizei)textureWidth, (GLsizei)textureHeight, 0, 
-			ilGetInteger(IL_IMAGE_FORMAT), ilGetInteger(IL_IMAGE_TYPE), ilGetData());
-
-		// Check for errors
-		if(texture == 0) 
-			return false;
-
-		return true;
-	}
-
-	void Texture::free()
-	{
-		// Delete DevIL-data (no longer needed)
-		ilDeleteImages(1, &amp;image);
-		
-		// Unload the file.
-		file-&gt;unload();
-	}
-
-	bool Texture::load()
-	{	
-		// Read file.
-		if(!read())
-			return false;
-
-		// Send to hardware
-		if(!lock())
-			return false;
-
-		// Free local data.
-		free();
-
-		// HW texture will be removed in unload.
-		return true;
-	}
-
-	void Texture::unload()
-	{
-		unloadVolatile();
-	}
-
-	bool Texture::loadVolatile()
-	{
-		// Read file.
-		if(!read())
-			return false;
-
-		// Send to hardware
-		if(!lock())
-			return false;
-
-		// Free local data.
-		free();
+		glTexImage2D(GL_TEXTURE_2D, 
+			0, 
+			GL_RGBA8, 
+			(GLsizei)width, 
+			(GLsizei)height, 
+			0, 
+			GL_RGBA, 
+			GL_UNSIGNED_BYTE, 
+			data-&gt;getData());
 
 		return true;
 	}
@@ -191,247 +90,9 @@ namespace opengl
 	{
 		// Delete the hardware texture.
 		if(texture != 0)
-			glDeleteTextures(1, (GLuint*)&amp;texture);
-	}
-
-	void Texture::padTwoPower()
-	{
-		// Bind the image.
-		ilBindImage(image);
-
-		// Get twopower of width and height
-		ILuint width	= power_of_two((int)this-&gt;width);
-		ILuint height	= power_of_two((int)this-&gt;height);
-
-		// No change needed?
-		if(width == this-&gt;width &amp;&amp; height == this-&gt;height)
-			return;
-
-		// Get key data
-		ILuint depth	= ilGetInteger(IL_IMAGE_DEPTH);
-		ILuint bpp		= ilGetInteger(IL_IMAGE_BPP);
-		ILuint type		= ilGetInteger(IL_IMAGE_TYPE);
-		ILuint format	= ilGetInteger(IL_IMAGE_FORMAT);
-		
-		// Create new data.
-		int size = width * height * bpp;
-
-		// Destination
-		rgba * d = new rgba[size];
-
-		// Source
-		rgba * s = (rgba *)ilGetData();
-		
-		for(int i = 0; i&lt;size; i++)
-		{
-			d[i].r = 0;
-			d[i].g = 0;
-			d[i].b = 0;
-			d[i].a = 0;
-		}
-
-		for(int y=0;y&lt;this-&gt;height;y++)
-		{
-			for(int x=0;x&lt;this-&gt;width;x++)
-			{			
-				int si = ((origin == IL_ORIGIN_LOWER_LEFT) ? (int)this-&gt;height - y - 1  : y) * (int)this-&gt;width + x;
-				int di = y * width + x;
-
-				d[di].r = s[si].r;
-				d[di].g = s[si].g;
-				d[di].b = s[si].b;
-				d[di].a = s[si].a;
-			}
-		}
-
-		// If origin was lower left, it's flipped by now.
-		origin = IL_ORIGIN_UPPER_LEFT;
-
-		// Delete the old image.
-		ilDeleteImages(1, &amp;image);
-
-		// Generate new DevIL image.
-		ilGenImages(1, &amp;image);
-
-		// Bind the image.
-		ilBindImage(image);
-
-		// Create the new image
-		ilTexImage(width, height, depth, bpp, format, type, (ILvoid*)d);
-
-		// Set new &quot;real&quot; dimensions
-		this-&gt;textureWidth = width;
-		this-&gt;textureHeight = height;
-
-		// Cleanup
-		delete [] d;
-	}
-
-	bool pixel_in_range(rgba * data, int width, int height, int x, int y)
-	{
-		return (x &gt;= 0 &amp;&amp; y &gt;= 0 &amp;&amp; x &lt; width &amp;&amp; y &lt; height);
-	}
-
-	void pixel_commit(rgba &amp; source, int &amp; r, int &amp; g, int &amp; b, int &amp; counter)
-	{
-		if(source.a != 0)
-		{
-			counter++;
-			r += source.r;
-			g += source.g;
-			b += source.b;
-		}
-	}
-
-	void pixel_average_area(rgba * data, int width, int height, int x, int y)
-	{
-		int p = 0; // Number of neighbor pixels with alpha != 0
-		int r = 0, g = 0, b = 0;
-
-		if(pixel_in_range(data, width, height, x-1, y-1)) pixel_commit(data[(y-1)*width+(x-1)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x, y-1)) pixel_commit(data[(y-1)*width+(x)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x+1, y-1)) pixel_commit(data[(y-1)*width+(x+1)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x-1, y)) pixel_commit(data[(y)*width+(x-1)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x+1, y)) pixel_commit(data[(y)*width+(x+1)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x-1, y+1)) pixel_commit(data[(y+1)*width+(x-1)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x, y+1)) pixel_commit(data[(y+1)*width+(x)], r, g, b, p);
-		if(pixel_in_range(data, width, height, x+1, y+1))pixel_commit(data[(y+1)*width+(x+1)], r, g, b, p);
-
-		if(p == 0) p = 1;
-
-		data[y*width+x].r = r/p;
-		data[y*width+x].g = g/p;
-		data[y*width+x].b = b/p;
-
-	}
-
-	void Texture::optimize()
-	{
-		// Get the width and height of the data.
-		int width	= (int)this-&gt;width;
-		int height	= (int)this-&gt;height;
-
-		// Source
-		rgba * s = (rgba *)ilGetData();
-
-		for(int y=0;y&lt;this-&gt;height;y++)
-		{
-			for(int x=0;x&lt;this-&gt;width;x++)
-			{
-				if(s[y*width+x].a == 0)
-				{
-					pixel_average_area(s, width, height, x, y);
-				}
-			}
-		}
-
-	}
-
-	void Texture::pad(int size)
-	{
-
-		padding = size;
-		
-		// Bind the image.
-		ilBindImage(image);
-
-		// Get the width and height of the data.
-		int old_width	= (int)this-&gt;width;
-		int old_height	= (int)this-&gt;height;
-
-		int new_width = old_width + size*2;
-		int new_height = old_height + size*2;
-
-		ILuint bpp = ilGetInteger(IL_IMAGE_BPP);
-
-		// Destination
-		int new_size = new_width * new_height * bpp;
-		rgba * d = new rgba[new_size];
-
-		// Source
-		rgba * s = (rgba *)ilGetData();
-
-		for(int i = 0; i&lt;new_size; i++)
-		{
-			d[i].r = 0;
-			d[i].g = 0;
-			d[i].b = 0;
-			d[i].a = 0;
-		}
-
-		for(int x = 0;x&lt;old_width;x++)
-		{
-			for(int y = 0;y&lt;old_height;y++)
-			{
-				int si = ((origin == IL_ORIGIN_LOWER_LEFT) ? old_height - y - 1  : y)*old_width+x;
-				int di = (y+size)*new_width+(x+size);
-				d[di] = s[si];
-			}
-		}
-
-		// If origin was lower left, it's flipped by now.
-		origin = IL_ORIGIN_UPPER_LEFT;
-
-		// Set the new image data.
-		setPixels(d, new_width, new_height);
-	}
-
-	void Texture::setPixels(rgba * data, int width, int height)
-	{
-
-		// Bind the image.
-		ilBindImage(image);
-
-		// Get some image data.
-		ILuint depth	= ilGetInteger(IL_IMAGE_DEPTH);
-		ILuint bpp		= ilGetInteger(IL_IMAGE_BPP);
-		ILuint type		= ilGetInteger(IL_IMAGE_TYPE);
-		ILuint format	= ilGetInteger(IL_IMAGE_FORMAT);
-		//ILuint origin	= ilGetInteger(IL_IMAGE_ORIGIN);
-		
-		// Delete the old image.
-		ilDeleteImages(1, &amp;image);
-
-		// Generate new DevIL image.
-		ilGenImages(1, &amp;image);
-
-		// Bind the new image.
-		ilBindImage(image);
-
-		// Create the new image
-		ilTexImage(width, height, depth, bpp, format, type, (ILvoid*)data);
-
-		// Set the new image dimensions.
-		this-&gt;textureWidth = width;
-		this-&gt;textureHeight = height;
-		this-&gt;width = (float)width;
-		this-&gt;height = (float)height;
-	}
-
-	const char * Texture::getErrorString(int error)
-	{
-		switch(error)
 		{
-		case IL_INVALID_ENUM: return &quot;IL_INVALID_ENUM&quot;;
-		case IL_OUT_OF_MEMORY: return &quot;IL_OUT_OF_MEMORY&quot;;
-		case IL_FORMAT_NOT_SUPPORTED: return &quot;IL_FORMAT_NOT_SUPPORTED&quot;;
-		case IL_INTERNAL_ERROR: return &quot;IL_INTERNAL_ERROR&quot;;
-		case IL_INVALID_VALUE: return &quot;IL_INVALID_VALUE&quot;;
-		case IL_ILLEGAL_OPERATION: return &quot;IL_ILLEGAL_OPERATION&quot;;
-		case IL_ILLEGAL_FILE_VALUE: return &quot;IL_ILLEGAL_FILE_VALUE&quot;;
-		case IL_INVALID_FILE_HEADER: return &quot;IL_INVALID_FILE_HEADER&quot;;
-		case IL_INVALID_PARAM: return &quot;IL_INVALID_PARAM&quot;;
-		case IL_COULD_NOT_OPEN_FILE: return &quot;IL_COULD_NOT_OPEN_FILE&quot;;
-		case IL_INVALID_EXTENSION: return &quot;IL_INVALID_EXTENSION&quot;;
-		case IL_FILE_ALREADY_EXISTS: return &quot;IL_FILE_ALREADY_EXISTS&quot;;
-		case IL_OUT_FORMAT_SAME: return &quot;IL_OUT_FORMAT_SAME&quot;;
-		case IL_STACK_OVERFLOW: return &quot;IL_STACK_OVERFLOW&quot;;
-		case IL_STACK_UNDERFLOW: return &quot;IL_STACK_UNDERFLOW&quot;;
-		case IL_INVALID_CONVERSION: return &quot;IL_INVALID_CONVERSION&quot;;
-		case IL_BAD_DIMENSIONS: return &quot;IL_BAD_DIMENSIONS&quot;;
-		case IL_FILE_READ_ERROR: return &quot;IL_FILE_READ_ERROR&quot;;
-		default:
-			return 0;
+			glDeleteTextures(1, &amp;texture);
+			texture = 0;
 		}
 	}
 	</diff>
      <filename>src/love_opengl/Texture.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -13,19 +13,13 @@
 
 // LOVE
 #include &quot;../liblove/Object.h&quot;
-#include &quot;../liblove/File.h&quot;
-#include &quot;../liblove/Volatile.h&quot;
+#include &quot;../liblove/image/ImageData.h&quot;
+#include &quot;../liblove/graphics/Volatile.h&quot;
 
 namespace love
 {
 namespace opengl
 {
-	// Pixel format structures. Luminance-Alpha and RGB(A).
-	// These might be useful to subclasses that need to convert images
-	// to power-of-two textures, and need to work with pixel data in general.
-	struct la { unsigned char l, a; };
-	struct rgb { unsigned char r, g, b; };
-	struct rgba { unsigned char r, g, b, a; };
 
 	class Texture : public Object, public Volatile
 	{
@@ -34,27 +28,13 @@ namespace opengl
 
 	private:
 
-		File * file;
-
-		// Size of the loaded image file. These are the
-		// dimensions the user needs to deal with.
-		float width;
-		float height;
+		ImageData * data;
 
 		// The size of the actual texture in hardware
 		// memory. This may be different to normal width/height 
 		// due to power-of-two conversion. 
-		int textureWidth;
-		int textureHeight;
-
-		// The image's padding.
-		int padding;
-
-		// The origin of the loaded image.
-		int origin;
-
-		// DevIL image identifier.
-		unsigned int image;
+		int width;
+		int height;
 
 		// OpenGL texture identifier.
 		unsigned int texture;
@@ -64,43 +44,16 @@ namespace opengl
 		/**
 		* Creates a new Image. Not that anything is ready to use
 		* before load is called.
-		* @param file The file from which to load the image.
 		**/
-		Texture(File * file);
+		Texture(ImageData * data);
 		
 		virtual ~Texture();
 
-		/**
-		* Gets the actual width of the hardware texture.
-		**/
-		int getTextureWidth() const;
-
-		/**
-		* Gets the actual height of the hardware texture.
-		**/
-		int getTextureHeight() const;
-
 		int getWidth() const;
 		int getHeight() const;
-
-		/**
-		* Get the amout of padding in the image. (If
-		* pad has been called).
-		**/
-		int getPadding() const;
 		
-		/**
-		* Gets a pointer to the data.
-		**/
-		rgba * getData() const;
-
 		void bind() const;
-		bool read();
-		bool lock();
-		void free();
-		void optimize();
-		void pad(int size = 1);
-		
+
 		// From Resource
 		bool load();
 		void unload();
@@ -108,32 +61,6 @@ namespace opengl
 		// From Volatile
 		bool loadVolatile();
 		void unloadVolatile();		
-
-	private:
-
-		/**
-		* Pads the image to a power of two texture.
-		* Useful for &lt; OGL2.0, which only supports these.
-		**/
-		void padTwoPower();
-
-		/**
-		* Replace the current pixel data with this one. Assumes that
-		* the image format, BPP, etc is the same.
-		* @param data The new image data.
-		* @param width The width of the new image data.
-		* @param height The height of the new image data.
-		* 
-		* @note Does not delete the image data, so remember to do 
-		* so yourself.
-		**/
-		void setPixels(rgba * data, int width, int height);
-
-		/**
-		* Returns string representations of DevIL error codes.
-		* @error The error code.
-		**/
-		static const char * getErrorString(int error);
 		
 	}; // Texture	
 </diff>
      <filename>src/love_opengl/Texture.h</filename>
    </modified>
    <modified>
      <diff>@@ -28,7 +28,7 @@
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE opengl
 #define LOVE_WRAP_BITS LOVE_OPENGL_BITS
-#include &quot;../liblove/wgraphics.h&quot;
+#include &quot;../liblove/graphics/wgraphics.h&quot;
 
 namespace love
 {
@@ -410,31 +410,13 @@ namespace opengl
 		return 4;
 	}
 
-	Image * newImage(File * file, int mode)
+	Image * newImage(ImageData * data)
 	{
-		Texture * texture = new Texture(file);
+		Texture * texture = new Texture(data);
 
-		// Read the image.
-		if(!texture-&gt;read())
-		{	
-			std::cerr &lt;&lt; &quot;Could not load image \&quot;&quot; &lt;&lt; file-&gt;getFilename() &lt;&lt; &quot;\&quot;.&quot;;
-			texture-&gt;release();
-			return 0;
-		}
-
-		// Optionally pad.
-		if(mode == IMAGE_PAD || mode == IMAGE_PAD_AND_OPTIMIZE)
-			texture-&gt;pad();
-
-		// Optionally optimize.
-		if(mode == IMAGE_OPTIMIZE || mode == IMAGE_PAD_AND_OPTIMIZE)
-			texture-&gt;optimize();
-
-		// Lock the image.
-		if(!texture-&gt;lock())
+		if(!texture-&gt;load())
 		{
-			std::cerr &lt;&lt; &quot;Could not lock image \&quot;&quot; &lt;&lt; file-&gt;getFilename() &lt;&lt; &quot;\&quot;.&quot;;
-			texture-&gt;release();
+			delete texture;
 			return 0;
 		}
 </diff>
      <filename>src/love_opengl/love_opengl.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -13,7 +13,7 @@
 
 // LOVE
 #include &quot;../liblove/config.h&quot;
-#include &quot;../liblove/File.h&quot;
+#include &quot;../liblove/filesystem/File.h&quot;
 #include &quot;../liblove/luax.h&quot;
 #include &quot;../liblove/types.h&quot;
 
@@ -142,7 +142,8 @@ namespace opengl
 	/**
 	* Creates an Image object with padding and/or optimization.
 	**/
-	Image * newImage(File * file, int mode = IMAGE_NORMAL);
+	Image * newImage(File * file);
+	Image * newImage(ImageData * data);
 	Image * newImage(Image * image, float x, float y, float w, float h);
 
 	/**</diff>
      <filename>src/love_opengl/love_opengl.h</filename>
    </modified>
    <modified>
      <diff>@@ -9,7 +9,7 @@
 #define LOVE_PHYSFS_FILE_H
 
 // LOVE
-#include &quot;../liblove/File.h&quot;
+#include &quot;../liblove/filesystem/File.h&quot;
 
 // PhysFS
 #include &lt;physfs.h&gt;</diff>
      <filename>src/love_physfs/File.h</filename>
    </modified>
    <modified>
      <diff>@@ -19,7 +19,7 @@
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE physfs
 #define LOVE_WRAP_BITS LOVE_PHYSFS_BITS
-#include &quot;../liblove/wfilesystem.h&quot;
+#include &quot;../liblove/filesystem/wfilesystem.h&quot;
 
 // For great CWD. (Current Working Directory)
 // Using this instead of boost::filesystem which totally</diff>
      <filename>src/love_physfs/love_physfs.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -18,7 +18,7 @@
 
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE sdljoystick
-#include &quot;../liblove/wjoystick.h&quot;
+#include &quot;../liblove/joystick/wjoystick.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_sdljoystick/love_sdljoystick.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@
 
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE sdlkeyboard
-#include &quot;../liblove/wkeyboard.h&quot;
+#include &quot;../liblove/keyboard/wkeyboard.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_sdlkeyboard/love_sdlkeyboard.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@
 
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE sdlmouse
-#include &quot;../liblove/wmouse.h&quot;
+#include &quot;../liblove/mouse/wmouse.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_sdlmouse/love_sdlmouse.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@
 
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE sdlsystem
-#include &quot;../liblove/wsystem.h&quot;
+#include &quot;../liblove/system/wsystem.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_sdlsystem/love_sdlsystem.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -15,7 +15,7 @@
 
 // Include the wrapper code.
 #define LOVE_WRAP_NAMESPACE sdltimer
-#include &quot;../liblove/wtimer.h&quot;
+#include &quot;../liblove/timer/wtimer.h&quot;
 
 namespace love
 {</diff>
      <filename>src/love_sdltimer/love_sdltimer.cpp</filename>
    </modified>
    <modified>
      <diff>@@ -1,192 +1,77 @@
 
+-- Make sure love table exists.
+if not love then love = {} end
 
-love.setup = {}
-
-function love.setup.getSource()
-
-	if not arg[0] then return nil end
-
-	-- Get the working directory.
-	local wd = string.gsub(love.filesystem.getWorkingDirectory(), &quot;\\&quot;, &quot;/&quot;)
-
-	-- Get the argument.
-	local a = string.gsub(arg[0], &quot;\\&quot;, &quot;/&quot;)
-
-	local absolute = string.sub(a,1,1) == &quot;/&quot; or string.find(string.sub(a,1,3), &quot;%a:/&quot;)
-
-	if absolute then
-		return a
-	else
-		return wd .. &quot;/&quot; .. a
-	end
-
-end
-
--- Removes trailing and leading whitespace 
--- from a string.
-function love.setup.trim(s)
-  return (s:gsub(&quot;^%s*(.-)%s*$&quot;, &quot;%1&quot;))
-end
-
-function love.setup.getConf()
-
-	local conf = {
-
-		[&quot;width&quot;] = 800, 
-		[&quot;height&quot;] = 600,
-		[&quot;fullscreen&quot;] = false,
-		[&quot;vsync&quot;] = true,
-		[&quot;fsaa&quot;] = 0,
-		[&quot;display_auto&quot;] = true,
-
-		[&quot;title&quot;] = &quot;Untitled Game&quot;,
-		[&quot;author&quot;] = &quot;Unknown Author&quot;,
-
-		[&quot;disable_graphics&quot;] = false,
-		[&quot;disable_audio&quot;] = false,
-		[&quot;disable_physics&quot;] = false,
-		[&quot;disable_keyboard&quot;] = false,
-		[&quot;disable_mouse&quot;] = false,
-		[&quot;disable_timer&quot;] = false,
-		[&quot;disable_joystick&quot;] = false,
-		[&quot;disable_luasocket&quot;] = false,
-		
-		[&quot;love_version&quot;] = &quot;0.6.0&quot;,
-	}
-
-	-- Read the file, if any.
-	if love.filesystem.exists(&quot;game.conf&quot;) then
-		for line in love.filesystem.lines(&quot;game.conf&quot;) do
-			local u1, u2, key, value = string.find(line, &quot;([%w_ ]+)=(.+)&quot;)
-			
-			-- Remove leading/trailing whitespace.
-			key = love.setup.trim(key)
-			value = love.setup.trim(value)
-			
-			-- Overwrite default values in conf table.
-			conf[key] = value
-		end
+function love.insmod(name, provides)
+	if love.__mod[provides] and love.__mod[provides][name] then
+		love.__mod[provides][name].open()
+		print(&quot;Opened &quot; .. provides .. &quot; module &quot; .. name .. &quot;.&quot;)
 	end
-
-	return conf
-end
-
-function love.setup.filesystem()
-
-	local source = love.setup.getSource()
-
-	if source then
-		print(&quot;Source is: &quot; .. source)
-		love.filesystem.setSource(source)
-		love.filesystem.setIdentity(&quot;test9000&quot;)
-	else
-		print(&quot;There is no source: load nogame.&quot;)
-		return false
-	end
-	return true
 end
 
 function love.init()
 
-	-- These are ALWAYS required.
-	require(&quot;love_sdlsystem&quot;)
-	require(&quot;love_physfs&quot;)
-
-	-- Setup the filesystem folders.
-	if not love.setup.filesystem() then
-		return false
+	if love.__args then
+		for i,v in pairs(love.__args) do
+			print(i,v)
+		end
 	end
 	
-	-- Read the config file.
-	local conf = love.setup.getConf()
-
-	-- These are all optional.
-	require(&quot;love_opengl&quot;)
-	require(&quot;love_sdlkeyboard&quot;)
-	require(&quot;love_sdltimer&quot;)
-	require(&quot;love_sdlmouse&quot;)
-	require(&quot;love_sdljoystick&quot;)
-	require(&quot;love_luasocket&quot;)
-	require(&quot;love_box2d&quot;)
-
-	-- Auto-configure display, unless otherwise specified.
-	if conf[&quot;display_auto&quot;] then
-		love.graphics.setMode(
-			conf[&quot;width&quot;], 
-			conf[&quot;height&quot;], 
-			conf[&quot;fullscreen&quot;],
-			conf[&quot;vsync&quot;],
-			conf[&quot;fsaa&quot;])
+	love.insmod(&quot;sdltimer&quot;, &quot;timer&quot;)
+	love.insmod(&quot;devil&quot;, &quot;image&quot;)
+	love.insmod(&quot;opengl&quot;, &quot;graphics&quot;)
+	love.insmod(&quot;sdlsystem&quot;, &quot;system&quot;)
+
+	if love.graphics.checkMode(800, 600, false) then
+		print(&quot;800x600 is supported&quot;)
+		love.graphics.setMode(800, 600, false, false)
 	end
 
-	-- Parse main file, unless a love.main has been preloaded.
-	if not love.main and love.filesystem.exists(&quot;main.lua&quot;) then
-		love.main = love.filesystem.load(&quot;main.lua&quot;)
-	end
-	
-	-- Call love.main.
-	if love.main then
-		love.main()
-	end
+	formats = love.image.getFormats()
+	print(formats)
+	data = love.image.newImageData(128, 128)
 
+	up = function (x, y, r, g, b, a)
+		local g = (x/128)*255
+		return g, g, g, 255
+	end
 
-	love.setup = nil
-	collectgarbage()
+	data:mapPixel(up)
 
-	-- Call love.run.
-	local result = xpcall(love.run,
-		function (msg)
-			print(msg, debug.traceback())
-		end)
+	image = love.graphics.newImage(data)
 
-	return result
+	love.run()
 end
 
 function love.run()
 
-	if load then load() end
-
 	-- Main loop time.
 	while true do
 
-		love.timer.step()
-		if update then update(love.timer.getDelta()) end
+		--love.timer.step()
+		--if update then update(love.timer.getDelta()) end
+
 		love.graphics.clear()
-		if draw then draw() end
+
+		love.graphics.draw(image, 200, 200)
 
 		-- Process events.
 		for e,a,b,c in love.system.events() do
 			if e == love.event_quit then return end
-			love.handlers[e](a,b,c)
+			print(e, a, b, c)
+			--love.handlers[e](a,b,c)
 		end
-		
+
 		love.graphics.present()
 
 	end
 
 end
 
--- Standard callback handlers.
-love.handlers = {
-	[love.event_keypressed] = function (b)
-		if keypressed then keypressed(b) end
-	end,
-	[love.event_keyreleased] = function (b)
-		if keyreleased then keyreleased(b) end
-	end,
-	[love.event_mousepressed] = function (x,y,b)
-		if mousepressed then mousepressed(x,y,b) end
-	end,
-	[love.event_mousereleased] = function (x,y,b)
-		if mousereleased then mousereleased(x,y,b) end
-	end,
-	[love.event_joystickpressed] = function (j,b)
-		if joystickpressed then joystickpressed(j,b) end
-	end,
-	[love.event_joystickreleased] = function (j,b)
-		if joystickreleased then joystickreleased(j,b) end
-	end,
-	[love.event_quit] = function ()
-		return
-	end,
-}
+local result = xpcall(love.init,
+	function (msg)
+		print(msg, debug.traceback())
+	end)
+
+
+print(&quot;Done.&quot;)</diff>
      <filename>src/lua/love.lua</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>tools/installer/left.bmp</filename>
    </modified>
    <modified>
      <diff></diff>
      <filename>tools/installer/top.bmp</filename>
    </modified>
  </modified>
  <removed type="array">
    <removed>
      <filename>src/liblove/Drawable.cpp</filename>
    </removed>
    <removed>
      <filename>src/liblove/Drawable.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/File.cpp</filename>
    </removed>
    <removed>
      <filename>src/liblove/File.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/Volatile.cpp</filename>
    </removed>
    <removed>
      <filename>src/liblove/Volatile.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wAnimation.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wBody.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wCircleShape.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wColor.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wContact.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wDistanceJoint.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wDrawable.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wFile.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wFont.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wImage.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wJoint.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wMouseJoint.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wParticleSystem.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wPolygonShape.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wPrismaticJoint.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wRevoluteJoint.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wShape.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wWorld.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wfilesystem.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wgraphics.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wjoystick.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wkeyboard.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wmouse.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wphysics.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wsystem.h</filename>
    </removed>
    <removed>
      <filename>src/liblove/wtimer.h</filename>
    </removed>
  </removed>
  <parents type="array">
    <parent>
      <id>e2137ebb020eb0e3785620b884630bf6e2ab7419</id>
    </parent>
  </parents>
  <author>
    <name>prerude</name>
    <email>prerude@3494dbca-881a-0410-bd34-8ecbaf855390</email>
  </author>
  <url>http://github.com/JackDanger/love/commit/126ae5548965ac76e5352ec79666091bce894bcc</url>
  <id>126ae5548965ac76e5352ec79666091bce894bcc</id>
  <committed-date>2008-12-16T03:48:14-08:00</committed-date>
  <authored-date>2008-12-16T03:48:14-08:00</authored-date>
  <message>Added love_devil. Restructured liblove.

git-svn-id: https://love.svn.sf.net/svnroot/love/trunk@673 3494dbca-881a-0410-bd34-8ecbaf855390</message>
  <tree>b99f1cd9e11f5abec27a9221bf8ef18c6ab4a85c</tree>
  <committer>
    <name>prerude</name>
    <email>prerude@3494dbca-881a-0410-bd34-8ecbaf855390</email>
  </committer>
</commit>
