public static void RenderGlyphToContext (CGContext context, PointF position, Glyph g, Fnt font, byte[] palette, int offset) { byte[] buf = new byte[g.Width * g.Height * 4]; int i = 0; for (int y = g.Height - 1; y >= 0; y--) { for (int x = g.Width - 1; x >= 0; x--) { if (g.Bitmap[y,x] == 0) buf [i + 0] = 0; else if (g.Bitmap[y,x] == 1) buf [i + 0] = 255; else buf [i + 0] = 128; buf[i + 1] = palette[ (g.Bitmap[y,x]) * 3 + offset + 0]; buf[i + 2] = palette[ (g.Bitmap[y,x]) * 3 + offset + 1]; buf[i + 3] = palette[ (g.Bitmap[y,x]) * 3 + offset + 2]; if (buf[i+1] == 252 && buf[i+2] == 0 && buf[i+3] == 252) buf[i + 0] = 0; i += 4; } } CGImage glyphImage = CreateImage (buf, (ushort)g.Width, (ushort)g.Height, 32, g.Width * 4); context.DrawImage (new RectangleF (position, new SizeF (g.Width, g.Height)), glyphImage); }
public static CALayer RenderGlyph (Fnt font, Glyph g, byte[] palette, int offset) { byte[] buf = new byte[g.Width * g.Height * 4]; int i = 0; for (int y = g.Height - 1; y >= 0; y--) { for (int x = g.Width - 1; x >= 0; x--) { if (g.Bitmap[y,x] == 0) buf [i + 0] = 0; else if (g.Bitmap[y,x] == 1) buf [i + 0] = 255; else buf [i + 0] = 128; buf[i + 1] = palette[ (g.Bitmap[y,x]) * 3 + offset + 0]; buf[i + 2] = palette[ (g.Bitmap[y,x]) * 3 + offset + 1]; buf[i + 3] = palette[ (g.Bitmap[y,x]) * 3 + offset + 2]; if (buf[i+1] == 252 && buf[i+2] == 0 && buf[i+3] == 252) buf[i + 0] = 0; i += 4; } } return CreateLayerFromRGBAData (buf, (ushort)g.Width, (ushort)g.Height, 32, g.Width * 4); }