-
Notifications
You must be signed in to change notification settings - Fork 3
/
font_filters.go
104 lines (74 loc) · 2.81 KB
/
font_filters.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package main
import (
rl "github.com/chunqian/go-raylib/raylib"
"fmt"
"runtime"
)
func init() {
runtime.LockOSThread()
}
func main() {
screenWidth := int32(800)
screenHeight := int32(450)
rl.InitWindow(screenWidth, screenHeight, "raylib [text] example - font filters")
defer rl.CloseWindow()
msg := "Loaded Font"
font := rl.LoadFontEx("../text/resources/KAISG.ttf", 96, nil, 0)
defer rl.UnloadFont(font)
rl.GenTextureMipmaps((*rl.Texture2D)(&font.Texture))
fontSize := float32(font.BaseSize)
fontPosition := rl.NewVector2(40, float32(screenHeight)/2-80)
textSize := rl.NewVector2(0, 0)
rl.SetTextureFilter(rl.Texture2D(font.Texture), int32(rl.FILTER_POINT))
currentFontFilter := 0
rl.SetTargetFPS(60)
for !rl.WindowShouldClose() {
fontSize += rl.GetMouseWheelMove() * 4.0
if rl.IsKeyPressed(int32(rl.KEY_ONE)) {
rl.SetTextureFilter(rl.Texture2D(font.Texture), int32(rl.FILTER_POINT))
currentFontFilter = 0
} else if rl.IsKeyPressed(int32(rl.KEY_TWO)) {
rl.SetTextureFilter(rl.Texture2D(font.Texture), int32(rl.FILTER_BILINEAR))
currentFontFilter = 1
} else if rl.IsKeyPressed(int32(rl.KEY_THREE)) {
rl.SetTextureFilter(rl.Texture2D(font.Texture), int32(rl.FILTER_TRILINEAR))
currentFontFilter = 2
}
textSize = rl.MeasureTextEx(font, msg, fontSize, 0)
if rl.IsKeyDown(int32(rl.KEY_LEFT)) {
fontPosition.X -= 10
} else if rl.IsKeyDown(int32(rl.KEY_RIGHT)) {
fontPosition.X += 10
}
if rl.IsFileDropped() {
count := int32(0)
droppedFiles := rl.GetDroppedFiles(&count)
droppedFilePath := rl.ToString(droppedFiles, 0)
if rl.IsFileExtension(droppedFilePath, ".ttf") {
rl.UnloadFont(font)
font = rl.LoadFontEx(droppedFilePath, int32(fontSize), nil, 0)
rl.ClearDroppedFiles()
}
}
rl.BeginDrawing()
rl.ClearBackground(rl.RayWhite)
rl.DrawText("Use mouse wheel to change font size", 20, 20, 10, rl.Gray)
rl.DrawText("Use KEY_RIGHT and KEY_LEFT to move text", 20, 40, 10, rl.Gray)
rl.DrawText("Use 1, 2, 3 to change texture filter", 20, 60, 10, rl.Gray)
rl.DrawText("Drop a new TTF font for dynamic loading", 20, 80, 10, rl.DarkGray)
rl.DrawTextEx(font, msg, fontPosition, fontSize, 0, rl.Black)
rl.DrawRectangle(0, screenHeight-80, screenWidth, 80, rl.LightGray)
rl.DrawText(fmt.Sprintf("Font size: %2.2f", fontSize), 20, screenHeight-50, 10, rl.DarkGray)
rl.DrawText(fmt.Sprintf("Text size: [%2.2f, %2.2f]", textSize.X, textSize.Y), 20, screenHeight-30, 10, rl.DarkGray)
rl.DrawText("CURRENT TEXTURE FILTER:", 250, 400, 20, rl.Gray)
if currentFontFilter == 0 {
rl.DrawText("POINT", 570, 400, 20, rl.Black)
} else if currentFontFilter == 1 {
rl.DrawText("BILINEAR", 570, 400, 20, rl.Black)
} else if currentFontFilter == 2 {
rl.DrawText("TRILINEAR", 570, 400, 20, rl.Black)
}
rl.EndDrawing()
}
rl.ClearDroppedFiles()
}