lib: intro the linux version of the mnit module
[nit.git] / lib / mnit_linux / linux_assets.nit
diff --git a/lib/mnit_linux/linux_assets.nit b/lib/mnit_linux/linux_assets.nit
new file mode 100644 (file)
index 0000000..9247991
--- /dev/null
@@ -0,0 +1,52 @@
+# This file is part of NIT ( http://www.nitlanguage.org ).
+#
+# Copyright 2011-2013 Alexis Laferrière <alexis.laf@xymus.net>
+#
+# Licensed under the Apache License, Version 2.0 (the "License");
+# you may not use this file except in compliance with the License.
+# You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+module linux_assets
+
+import mnit
+import linux_app
+
+redef class App
+       var assets_dir: String
+
+       redef init
+       do
+               assets_dir = sys.program_name.dirname + "/../assets/"
+
+               super
+       end
+
+       redef fun try_loading_asset( id )
+       do
+               var path = "{assets_dir}/{id}"
+               if not path.file_exists then
+                       log_error( "asset <{id}> does not exists." )
+                       exit(1)
+                       abort
+               else
+                       var ext = path.file_extension
+                       if ext == "png" or ext == "jpg" or ext == "jpeg" then
+                               return new Opengles1Image.from_file( path )
+                       else # load as text
+                               var f = new IFStream.open(path)
+                               var content = f.read_all
+                               f.close
+
+                               return content
+                       end
+               end
+       end
+end