aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/library.js7
-rw-r--r--src/library_sdl.js27
2 files changed, 30 insertions, 4 deletions
diff --git a/src/library.js b/src/library.js
index d4b8078f..0574bb8d 100644
--- a/src/library.js
+++ b/src/library.js
@@ -408,6 +408,13 @@ LibraryManager.library = {
// Flush any partially-printed lines in stdout and stderr. Careful, they may have been closed
if (FS.streams[2] && FS.streams[2].object.output.buffer.length > 0) FS.streams[2].object.output('\n'.charCodeAt(0));
if (FS.streams[3] && FS.streams[3].object.output.buffer.length > 0) FS.streams[3].object.output('\n'.charCodeAt(0));
+ },
+
+ // Standardizes a path. Useful for making comparisons of pathnames work in a consistent manner.
+ // For example, ./file and file are really the same, so this function will remove ./
+ standardizePath: function(path) {
+ if (path.substr(0, 2) == './') path = path.substr(2);
+ return path;
}
},
diff --git a/src/library_sdl.js b/src/library_sdl.js
index 5188da23..88393d4a 100644
--- a/src/library_sdl.js
+++ b/src/library_sdl.js
@@ -76,7 +76,7 @@
// * SDL_Quit does nothing.
mergeInto(LibraryManager.library, {
- //$SDL__deps: ['$Browser'],
+ $SDL__deps: ['$FS'],
$SDL: {
defaults: {
width: 320,
@@ -87,6 +87,7 @@ mergeInto(LibraryManager.library, {
surfaces: {},
events: [],
musics: [null],
+ fonts: [null],
keyCodes: {
38: 273, // up arrow
@@ -168,7 +169,8 @@ mergeInto(LibraryManager.library, {
surf: surf,
buffer: buffer,
pixelFormat: pixelFormat,
- alpha: 255
+ alpha: 255,
+ flags: flags
};
return surf;
},
@@ -394,6 +396,14 @@ mergeInto(LibraryManager.library, {
return SDL.makeSurface(width, height, flags);
},
+ SDL_DisplayFormatAlpha: function(surf) {
+ var oldData = SDL.surfaces[surf];
+ var ret = SDL.makeSurface(oldData.width, oldData.height, oldData.flags);
+ var newData = SDL.surfaces[surf];
+ _memcpy(newData.buffer, oldData.buffer, oldData.height*oldData.width*4);
+ return ret;
+ },
+
SDL_FreeSurface: function(surf) {
SDL.freeSurface(surf);
},
@@ -478,7 +488,7 @@ mergeInto(LibraryManager.library, {
// SDL_Image
IMG_Load: function(filename) {
- filename = Pointer_stringify(filename);
+ filename = FS.standardizePath(Pointer_stringify(filename));
var raw = preloadedImages[filename];
assert(raw, 'Cannot find preloaded image ' + filename);
var surf = SDL.makeSurface(raw.width, raw.height, 0);
@@ -576,7 +586,7 @@ mergeInto(LibraryManager.library, {
},
Mix_LoadMUS: function(filename) {
- filename = Pointer_stringify(filename);
+ filename = FS.standardizePath(Pointer_stringify(filename));
var id = SDL.musics.length;
SDL.musics.push({
audio: new Audio(filename)
@@ -620,6 +630,15 @@ mergeInto(LibraryManager.library, {
TTF_Init: function() { return 0 },
+ TTF_OpenFont: function(filename, size) {
+ filename = FS.standardizePath(Pointer_stringify(filename));
+ var id = SDL.fonts.length;
+ SDL.fonts.push({
+ name: filename
+ });
+ return id;
+ },
+
// Misc
SDL_InitSubSystem: function(flags) { return 0 },