public Sound(byte[] buffer) { using (var cbuffer = new CBuffer(buffer)) { ID = Native.Audio.SPF_LoadSound(cbuffer.Pointer, cbuffer.Length); } Duration = Native.Audio.SPF_GetSoundDuration(ID); }
public Image(byte[] buffer) { using (var cbuffer = new CBuffer(buffer)) { ID = Native.Images.SPF_LoadImage(cbuffer.Pointer, cbuffer.Length); } Width = Native.Images.SPF_GetImageWidth(ID); Height = Native.Images.SPF_GetImageHeight(ID); }
public Texture(byte[] buffer) { using (var cbuffer = new CBuffer(buffer)) { ID = Native.Textures.SPF_LoadTexture(cbuffer.Pointer, cbuffer.Length); } Width = Native.Textures.SPF_GetTextureWidth(ID); Height = Native.Textures.SPF_GetTextureHeight(ID); Flipped = Native.Textures.SPF_IsTextureFlipped(ID); }
public static Font LoadFont(byte[] buffer, int width, int height, int fontHeight, int firstCharacter = 32, int lastCharacter = 256) { int charactersCount = lastCharacter - firstCharacter; using (var cbuffer = new CBuffer(buffer)) { var glyphes = new Glyph[charactersCount]; GCHandle gcGlyphes = GCHandle.Alloc(glyphes, GCHandleType.Pinned); var ptr = Marshal.UnsafeAddrOfPinnedArrayElement(glyphes, 0); var texID = Native.Font.SPF_LoadFont(cbuffer.Pointer, width, height, fontHeight, firstCharacter, lastCharacter, gcGlyphes.AddrOfPinnedObject()); gcGlyphes.Free(); if (texID < 0) { throw new Exception("Could not render font"); } var texture = new Texture(texID, width, height); return(new Font(texture, glyphes, fontHeight, firstCharacter, lastCharacter)); } }
public Music(byte[] buffer) { _cbuffer = new CBuffer(buffer); ID = Native.Audio.SPF_LoadMusic(_cbuffer.Pointer, _cbuffer.Length); }