summaryrefslogtreecommitdiffstats
path: root/vendor/github.com/golang/freetype/example/freetype/main.go
diff options
context:
space:
mode:
Diffstat (limited to 'vendor/github.com/golang/freetype/example/freetype/main.go')
-rw-r--r--vendor/github.com/golang/freetype/example/freetype/main.go150
1 files changed, 150 insertions, 0 deletions
diff --git a/vendor/github.com/golang/freetype/example/freetype/main.go b/vendor/github.com/golang/freetype/example/freetype/main.go
new file mode 100644
index 000000000..dfbde9a2f
--- /dev/null
+++ b/vendor/github.com/golang/freetype/example/freetype/main.go
@@ -0,0 +1,150 @@
+// Copyright 2010 The Freetype-Go Authors. All rights reserved.
+// Use of this source code is governed by your choice of either the
+// FreeType License or the GNU General Public License version 2 (or
+// any later version), both of which can be found in the LICENSE file.
+
+// +build example
+//
+// This build tag means that "go install github.com/golang/freetype/..."
+// doesn't install this example program. Use "go run main.go" to run it or "go
+// install -tags=example" to install it.
+
+package main
+
+import (
+ "bufio"
+ "flag"
+ "fmt"
+ "image"
+ "image/color"
+ "image/draw"
+ "image/png"
+ "io/ioutil"
+ "log"
+ "os"
+
+ "github.com/golang/freetype"
+ "golang.org/x/image/font"
+)
+
+var (
+ dpi = flag.Float64("dpi", 72, "screen resolution in Dots Per Inch")
+ fontfile = flag.String("fontfile", "../../testdata/luxisr.ttf", "filename of the ttf font")
+ hinting = flag.String("hinting", "none", "none | full")
+ size = flag.Float64("size", 12, "font size in points")
+ spacing = flag.Float64("spacing", 1.5, "line spacing (e.g. 2 means double spaced)")
+ wonb = flag.Bool("whiteonblack", false, "white text on a black background")
+)
+
+var text = []string{
+ "’Twas brillig, and the slithy toves",
+ "Did gyre and gimble in the wabe;",
+ "All mimsy were the borogoves,",
+ "And the mome raths outgrabe.",
+ "",
+ "“Beware the Jabberwock, my son!",
+ "The jaws that bite, the claws that catch!",
+ "Beware the Jubjub bird, and shun",
+ "The frumious Bandersnatch!”",
+ "",
+ "He took his vorpal sword in hand:",
+ "Long time the manxome foe he sought—",
+ "So rested he by the Tumtum tree,",
+ "And stood awhile in thought.",
+ "",
+ "And as in uffish thought he stood,",
+ "The Jabberwock, with eyes of flame,",
+ "Came whiffling through the tulgey wood,",
+ "And burbled as it came!",
+ "",
+ "One, two! One, two! and through and through",
+ "The vorpal blade went snicker-snack!",
+ "He left it dead, and with its head",
+ "He went galumphing back.",
+ "",
+ "“And hast thou slain the Jabberwock?",
+ "Come to my arms, my beamish boy!",
+ "O frabjous day! Callooh! Callay!”",
+ "He chortled in his joy.",
+ "",
+ "’Twas brillig, and the slithy toves",
+ "Did gyre and gimble in the wabe;",
+ "All mimsy were the borogoves,",
+ "And the mome raths outgrabe.",
+}
+
+func main() {
+ flag.Parse()
+
+ // Read the font data.
+ fontBytes, err := ioutil.ReadFile(*fontfile)
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ f, err := freetype.ParseFont(fontBytes)
+ if err != nil {
+ log.Println(err)
+ return
+ }
+
+ // Initialize the context.
+ fg, bg := image.Black, image.White
+ ruler := color.RGBA{0xdd, 0xdd, 0xdd, 0xff}
+ if *wonb {
+ fg, bg = image.White, image.Black
+ ruler = color.RGBA{0x22, 0x22, 0x22, 0xff}
+ }
+ rgba := image.NewRGBA(image.Rect(0, 0, 640, 480))
+ draw.Draw(rgba, rgba.Bounds(), bg, image.ZP, draw.Src)
+ c := freetype.NewContext()
+ c.SetDPI(*dpi)
+ c.SetFont(f)
+ c.SetFontSize(*size)
+ c.SetClip(rgba.Bounds())
+ c.SetDst(rgba)
+ c.SetSrc(fg)
+ switch *hinting {
+ default:
+ c.SetHinting(font.HintingNone)
+ case "full":
+ c.SetHinting(font.HintingFull)
+ }
+
+ // Draw the guidelines.
+ for i := 0; i < 200; i++ {
+ rgba.Set(10, 10+i, ruler)
+ rgba.Set(10+i, 10, ruler)
+ }
+
+ // Draw the text.
+ pt := freetype.Pt(10, 10+int(c.PointToFixed(*size)>>6))
+ for _, s := range text {
+ _, err = c.DrawString(s, pt)
+ if err != nil {
+ log.Println(err)
+ return
+ }
+ pt.Y += c.PointToFixed(*size * *spacing)
+ }
+
+ // Save that RGBA image to disk.
+ outFile, err := os.Create("out.png")
+ if err != nil {
+ log.Println(err)
+ os.Exit(1)
+ }
+ defer outFile.Close()
+ b := bufio.NewWriter(outFile)
+ err = png.Encode(b, rgba)
+ if err != nil {
+ log.Println(err)
+ os.Exit(1)
+ }
+ err = b.Flush()
+ if err != nil {
+ log.Println(err)
+ os.Exit(1)
+ }
+ fmt.Println("Wrote out.png OK.")
+}