4.7 KiB
4.7 KiB
FreezeLib Usage Guide
FreezeLib is a Go library for generating beautiful code screenshots.
Installation
go get github.com/landaiqing/freezelib
Basic Usage
1. Simplest Example
package main
import (
"github.com/landaiqing/freezelib"
"os"
)
func main() {
// Create instance
freeze := freezelib.New()
// Code content
code := `package main
import "fmt"
func main() {
fmt.Println("Hello, World!")
}`
// Generate SVG
svgData, err := freeze.GenerateFromCode(code, "go")
if err != nil {
panic(err)
}
// Save file
os.WriteFile("hello.svg", svgData, 0644)
}
2. Generate from File
// Generate directly from file
svgData, err := freeze.GenerateFromFile("main.go")
if err != nil {
panic(err)
}
os.WriteFile("main.svg", svgData, 0644)
3. Generate PNG Format
// Generate PNG instead of SVG
pngData, err := freeze.GeneratePNGFromCode(code, "go")
if err != nil {
panic(err)
}
os.WriteFile("hello.png", pngData, 0644)
4. Save Directly to File
// One step: generate and save
err := freeze.SaveCodeToFile(code, "go", "output.svg")
if err != nil {
panic(err)
}
// Auto-detect format (by file extension)
err = freeze.SaveCodeToFile(code, "go", "output.png")
Using Preset Styles
// Use preset configurations for quick start
freeze := freezelib.NewWithPreset("dark") // Dark theme
freeze := freezelib.NewWithPreset("terminal") // Terminal style
freeze := freezelib.NewWithPreset("presentation") // Presentation style
// View all available presets
presets := freeze.GetAvailablePresets()
// Returns: ["base", "compact", "dark", "full", "light", "minimal", "neon", "presentation", "retro", "terminal"]
Custom Styling
Basic Settings
freeze := freezelib.New().
WithTheme("github-dark"). // Set theme
WithFont("JetBrains Mono", 14). // Set font and size
WithBackground("#1e1e1e"). // Set background color
WithPadding(20) // Set padding
svgData, err := freeze.GenerateFromCode(code, "go")
Add Decorative Effects
freeze := freezelib.New().
WithTheme("dracula").
WithWindow(true). // Add window controls
WithLineNumbers(true). // Show line numbers
WithShadow(20, 0, 10) // Add shadow
svgData, err := freeze.GenerateFromCode(code, "python")
View Supported Options
freeze := freezelib.New()
// View all supported languages (270+)
languages := freeze.GetSupportedLanguages()
fmt.Printf("Supports %d languages\n", len(languages))
// View all supported themes (67+)
themes := freeze.GetSupportedThemes()
fmt.Printf("Supports %d themes\n", len(themes))
// View all available presets (10)
presets := freeze.GetAvailablePresets()
fmt.Printf("Available presets: %v\n", presets)
Terminal Output Screenshots
// Screenshot terminal output (supports ANSI colors)
freeze := freezelib.NewWithPreset("terminal")
ansiOutput := "\033[32m✓ Tests passed\033[0m\n" +
"\033[31m✗ Build failed\033[0m\n" +
"\033[33m⚠ Warning: deprecated API\033[0m"
svgData, err := freeze.GenerateFromANSI(ansiOutput)
if err != nil {
panic(err)
}
os.WriteFile("terminal.svg", svgData, 0644)
Batch Processing Files
freeze := freezelib.NewWithPreset("dark")
files := []string{"main.go", "config.go", "utils.go"}
for _, file := range files {
err := freeze.SaveFileToFile(file, file+".svg")
if err != nil {
fmt.Printf("Failed to process %s: %v\n", file, err)
continue
}
fmt.Printf("Generated: %s.svg\n", file)
}
Auto Language Detection
freeze := freezelib.New()
// Don't specify language, auto-detect
code := `function hello() {
console.log("Hello, World!");
}`
// Auto-detected as JavaScript
svgData, err := freeze.GenerateFromCodeAuto(code)
if err != nil {
panic(err)
}
os.WriteFile("auto.svg", svgData, 0644)
Error Handling
svgData, err := freeze.GenerateFromCode(code, "go")
if err != nil {
fmt.Printf("Generation failed: %v\n", err)
return
}
// Save file
err = os.WriteFile("output.svg", svgData, 0644)
if err != nil {
fmt.Printf("Save failed: %v\n", err)
return
}
fmt.Println("Generated successfully!")
Common Themes
github
- GitHub light themegithub-dark
- GitHub dark themedracula
- Dracula thememonokai
- Monokai themenord
- Nord theme
Common Languages
go
- Go languagepython
- Pythonjavascript
- JavaScripttypescript
- TypeScriptjava
- Javarust
- Rustc
- C languagecpp
- C++html
- HTMLcss
- CSSjson
- JSONyaml
- YAMLmarkdown
- Markdownbash
- Shell script