mirror of
				https://github.com/esimov/pigo.git
				synced 2025-10-31 03:16:25 +08:00 
			
		
		
		
	Include vendor dependencies
This commit is contained in:
		
							
								
								
									
										117
									
								
								vendor/github.com/fogleman/gg/util.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										117
									
								
								vendor/github.com/fogleman/gg/util.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,117 @@ | ||||
| package gg | ||||
|  | ||||
| import ( | ||||
| 	"fmt" | ||||
| 	"image" | ||||
| 	"image/draw" | ||||
| 	_ "image/jpeg" | ||||
| 	"image/png" | ||||
| 	"io/ioutil" | ||||
| 	"math" | ||||
| 	"os" | ||||
| 	"strings" | ||||
|  | ||||
| 	"github.com/golang/freetype/truetype" | ||||
|  | ||||
| 	"golang.org/x/image/font" | ||||
| 	"golang.org/x/image/math/fixed" | ||||
| ) | ||||
|  | ||||
| func Radians(degrees float64) float64 { | ||||
| 	return degrees * math.Pi / 180 | ||||
| } | ||||
|  | ||||
| func Degrees(radians float64) float64 { | ||||
| 	return radians * 180 / math.Pi | ||||
| } | ||||
|  | ||||
| func LoadImage(path string) (image.Image, error) { | ||||
| 	file, err := os.Open(path) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	defer file.Close() | ||||
| 	im, _, err := image.Decode(file) | ||||
| 	return im, err | ||||
| } | ||||
|  | ||||
| func LoadPNG(path string) (image.Image, error) { | ||||
| 	file, err := os.Open(path) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	defer file.Close() | ||||
| 	return png.Decode(file) | ||||
| } | ||||
|  | ||||
| func SavePNG(path string, im image.Image) error { | ||||
| 	file, err := os.Create(path) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
| 	defer file.Close() | ||||
| 	return png.Encode(file, im) | ||||
| } | ||||
|  | ||||
| func imageToRGBA(src image.Image) *image.RGBA { | ||||
| 	dst := image.NewRGBA(src.Bounds()) | ||||
| 	draw.Draw(dst, dst.Rect, src, image.ZP, draw.Src) | ||||
| 	return dst | ||||
| } | ||||
|  | ||||
| func parseHexColor(x string) (r, g, b, a int) { | ||||
| 	x = strings.TrimPrefix(x, "#") | ||||
| 	a = 255 | ||||
| 	if len(x) == 3 { | ||||
| 		format := "%1x%1x%1x" | ||||
| 		fmt.Sscanf(x, format, &r, &g, &b) | ||||
| 		r |= r << 4 | ||||
| 		g |= g << 4 | ||||
| 		b |= b << 4 | ||||
| 	} | ||||
| 	if len(x) == 6 { | ||||
| 		format := "%02x%02x%02x" | ||||
| 		fmt.Sscanf(x, format, &r, &g, &b) | ||||
| 	} | ||||
| 	if len(x) == 8 { | ||||
| 		format := "%02x%02x%02x%02x" | ||||
| 		fmt.Sscanf(x, format, &r, &g, &b, &a) | ||||
| 	} | ||||
| 	return | ||||
| } | ||||
|  | ||||
| func fixp(x, y float64) fixed.Point26_6 { | ||||
| 	return fixed.Point26_6{fix(x), fix(y)} | ||||
| } | ||||
|  | ||||
| func fix(x float64) fixed.Int26_6 { | ||||
| 	return fixed.Int26_6(x * 64) | ||||
| } | ||||
|  | ||||
| func unfix(x fixed.Int26_6) float64 { | ||||
| 	const shift, mask = 6, 1<<6 - 1 | ||||
| 	if x >= 0 { | ||||
| 		return float64(x>>shift) + float64(x&mask)/64 | ||||
| 	} | ||||
| 	x = -x | ||||
| 	if x >= 0 { | ||||
| 		return -(float64(x>>shift) + float64(x&mask)/64) | ||||
| 	} | ||||
| 	return 0 | ||||
| } | ||||
|  | ||||
| func LoadFontFace(path string, points float64) (font.Face, error) { | ||||
| 	fontBytes, err := ioutil.ReadFile(path) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	f, err := truetype.Parse(fontBytes) | ||||
| 	if err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
| 	face := truetype.NewFace(f, &truetype.Options{ | ||||
| 		Size: points, | ||||
| 		// Hinting: font.HintingFull, | ||||
| 	}) | ||||
| 	return face, nil | ||||
| } | ||||
		Reference in New Issue
	
	Block a user
	 esimov
					esimov