public static ITexture Load(ICoreFactory factory, MetaFontId id, ITexture regular, ITexture bold) { var texture = (EightBitTexture)(id.IsBold ? bold : regular); var bytes = (byte[])texture.TextureData.Clone(); if (!Mappings.TryGetValue(id.Color, out var mapping)) { mapping = Mappings[FontColor.White]; } for (int i = 0; i < bytes.Length; i++) { if (bytes[i] == 0) { continue; } bytes[i] = mapping[bytes[i]]; } return(factory.CreateEightBitTexture( $"Font{id.Color}{(id.IsBold ? "Bold" : "")}", texture.Width, texture.Height, texture.MipLevels, texture.ArrayLayers, bytes, texture.SubImages)); }
public ITexture Build(MetaFontId id) { var assets = Resolve <IAssetManager>(); var textureId = (SpriteId)(id.IsBold ? Base.Font.BoldFont : Base.Font.RegularFont); var texture = (IReadOnlyTexture <byte>)assets.LoadTexture(textureId); if (texture == null) { throw new InvalidOperationException($"MetafontBuilder: Could not load font {textureId}"); } var bytes = texture.PixelData.ToArray(); if (!Mappings.TryGetValue(id.Color, out var mapping)) { mapping = Mappings[FontColor.White]; } for (int i = 0; i < bytes.Length; i++) { if (bytes[i] == 0) { continue; } bytes[i] = mapping[bytes[i]]; } return(new ArrayTexture <byte>( textureId, $"Font{id.Color}{(id.IsBold ? "Bold" : "")}", texture.Width, texture.Height, texture.ArrayLayers, bytes, texture.Regions)); }
public static ITexture Load(MetaFontId id, ITexture regular, ITexture bold) { var texture = (EightBitTexture)(id.IsBold ? bold : regular); var bytes = (byte[])texture.TextureData.Clone(); var mapping = Mappings[id.Color]; for (int i = 0; i < bytes.Length; i++) { if (bytes[i] == 0) { continue; } bytes[i] = mapping[bytes[i]]; } return(new EightBitTexture( $"Font{id.Color}{(id.IsBold ? "Bold" : "")}", texture.Width, texture.Height, texture.MipLevels, texture.ArrayLayers, bytes, texture.SubImages)); }