bdf: make it possible to set the drawing colour
Intended for red and black tapes.
This commit is contained in:
		
							
								
								
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								LICENSE
									
									
									
									
									
								
							@@ -1,4 +1,4 @@
 | 
			
		||||
Copyright (c) 2019, Přemysl Eric Janouch <p@janouch.name>
 | 
			
		||||
Copyright (c) 2019 - 2021, Přemysl Eric Janouch <p@janouch.name>
 | 
			
		||||
 | 
			
		||||
Permission to use, copy, modify, and/or distribute this software for any
 | 
			
		||||
purpose with or without fee is hereby granted.
 | 
			
		||||
 
 | 
			
		||||
@@ -66,11 +66,13 @@ func (f *Font) FindGlyph(r rune) (glyph, bool) {
 | 
			
		||||
 | 
			
		||||
// DrawString draws the specified text string onto dst horizontally along
 | 
			
		||||
// the baseline starting at dp, using black color.
 | 
			
		||||
func (f *Font) DrawString(dst draw.Image, dp image.Point, s string) {
 | 
			
		||||
func (f *Font) DrawString(dst draw.Image, dp image.Point,
 | 
			
		||||
	color color.Color, s string) {
 | 
			
		||||
	src := image.NewUniform(color)
 | 
			
		||||
	for _, r := range s {
 | 
			
		||||
		g, _ := f.FindGlyph(r)
 | 
			
		||||
		draw.DrawMask(dst, g.bounds.Add(dp),
 | 
			
		||||
			image.Black, image.ZP, &g, g.bounds.Min, draw.Over)
 | 
			
		||||
			src, image.ZP, &g, g.bounds.Min, draw.Over)
 | 
			
		||||
		dp.X += g.advance
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -3,6 +3,7 @@ package main
 | 
			
		||||
import (
 | 
			
		||||
	"html/template"
 | 
			
		||||
	"image"
 | 
			
		||||
	"image/color"
 | 
			
		||||
	"image/draw"
 | 
			
		||||
	"image/png"
 | 
			
		||||
	"log"
 | 
			
		||||
@@ -82,7 +83,7 @@ func main() {
 | 
			
		||||
 | 
			
		||||
		img := image.NewRGBA(super)
 | 
			
		||||
		draw.Draw(img, super, image.White, image.ZP, draw.Src)
 | 
			
		||||
		font.DrawString(img, image.ZP, font.Name)
 | 
			
		||||
		font.DrawString(img, image.ZP, color.Black, font.Name)
 | 
			
		||||
 | 
			
		||||
		fonts[filename] = fontItem{Font: font, Preview: img}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package main
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"image"
 | 
			
		||||
	"image/color"
 | 
			
		||||
	"image/draw"
 | 
			
		||||
	"image/png"
 | 
			
		||||
	"log"
 | 
			
		||||
@@ -26,7 +27,7 @@ func main() {
 | 
			
		||||
 | 
			
		||||
	img := image.NewRGBA(super)
 | 
			
		||||
	draw.Draw(img, super, image.White, image.ZP, draw.Src)
 | 
			
		||||
	font.DrawString(img, image.ZP, font.Name)
 | 
			
		||||
	font.DrawString(img, image.ZP, color.Black, font.Name)
 | 
			
		||||
 | 
			
		||||
	fo, err := os.Create("out.png")
 | 
			
		||||
	if err != nil {
 | 
			
		||||
 
 | 
			
		||||
@@ -4,6 +4,7 @@ import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"html/template"
 | 
			
		||||
	"image"
 | 
			
		||||
	"image/color"
 | 
			
		||||
	"image/draw"
 | 
			
		||||
	"image/png"
 | 
			
		||||
	"log"
 | 
			
		||||
@@ -260,7 +261,7 @@ func main() {
 | 
			
		||||
 | 
			
		||||
		img := image.NewRGBA(super)
 | 
			
		||||
		draw.Draw(img, super, image.White, image.ZP, draw.Src)
 | 
			
		||||
		font.DrawString(img, image.ZP, font.Name)
 | 
			
		||||
		font.DrawString(img, image.ZP, color.Black, font.Name)
 | 
			
		||||
 | 
			
		||||
		fonts = append(fonts, &fontItem{Path: path, Font: font, Preview: img})
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -2,6 +2,7 @@ package label
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"image"
 | 
			
		||||
	"image/color"
 | 
			
		||||
	"image/draw"
 | 
			
		||||
	"strings"
 | 
			
		||||
 | 
			
		||||
@@ -19,7 +20,7 @@ func GenLabelForHeight(font *bdf.Font,
 | 
			
		||||
	textRect, _ := font.BoundString(text)
 | 
			
		||||
	textImg := image.NewRGBA(textRect)
 | 
			
		||||
	draw.Draw(textImg, textRect, image.White, image.ZP, draw.Src)
 | 
			
		||||
	font.DrawString(textImg, image.ZP, text)
 | 
			
		||||
	font.DrawString(textImg, image.ZP, color.Black, text)
 | 
			
		||||
 | 
			
		||||
	scaledTextImg := imgutil.Scale{Image: textImg, Scale: scale}
 | 
			
		||||
	scaledTextRect := scaledTextImg.Bounds()
 | 
			
		||||
@@ -93,7 +94,7 @@ func GenLabelForWidth(font *bdf.Font,
 | 
			
		||||
	for i, line := range lines {
 | 
			
		||||
		textImg := image.NewRGBA(rects[i])
 | 
			
		||||
		draw.Draw(textImg, rects[i], image.White, image.ZP, draw.Src)
 | 
			
		||||
		font.DrawString(textImg, image.ZP, line)
 | 
			
		||||
		font.DrawString(textImg, image.ZP, color.Black, line)
 | 
			
		||||
 | 
			
		||||
		scaledImg := imgutil.Scale{Image: textImg, Scale: scale}
 | 
			
		||||
		scaledRect := scaledImg.Bounds()
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user