Files
freezelib/USAGE_EN.md

4.7 KiB

FreezeLib Usage Guide

Language / 语言: English | 中文

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 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