Files
freezelib/USAGE_EN.md

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