235 lines
4.7 KiB
Markdown
235 lines
4.7 KiB
Markdown
# FreezeLib Usage Guide
|
|
|
|
**Language / 语言**: [English](USAGE_EN.md) | [中文](USAGE.md)
|
|
|
|
FreezeLib is a Go library for generating beautiful code screenshots.
|
|
|
|
## Installation
|
|
|
|
```bash
|
|
go get github.com/landaiqing/freezelib
|
|
```
|
|
|
|
## Basic Usage
|
|
|
|
### 1. Simplest Example
|
|
|
|
```go
|
|
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
|
|
|
|
```go
|
|
// 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
|
|
|
|
```go
|
|
// 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
|
|
|
|
```go
|
|
// 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
|
|
|
|
```go
|
|
// 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
|
|
|
|
```go
|
|
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
|
|
|
|
```go
|
|
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
|
|
|
|
```go
|
|
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
|
|
|
|
```go
|
|
// 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
|
|
|
|
```go
|
|
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
|
|
|
|
```go
|
|
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
|
|
|
|
```go
|
|
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 theme
|
|
- `github-dark` - GitHub dark theme
|
|
- `dracula` - Dracula theme
|
|
- `monokai` - Monokai theme
|
|
- `nord` - Nord theme
|
|
|
|
## Common Languages
|
|
|
|
- `go` - Go language
|
|
- `python` - Python
|
|
- `javascript` - JavaScript
|
|
- `typescript` - TypeScript
|
|
- `java` - Java
|
|
- `rust` - Rust
|
|
- `c` - C language
|
|
- `cpp` - C++
|
|
- `html` - HTML
|
|
- `css` - CSS
|
|
- `json` - JSON
|
|
- `yaml` - YAML
|
|
- `markdown` - Markdown
|
|
- `bash` - Shell script
|