48 lines
1009 B
Go
48 lines
1009 B
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"strconv"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
)
|
|
|
|
func ConvertStringUint32(s string) (uint32, error) {
|
|
v, err := strconv.ParseUint(s, 10, 32)
|
|
return uint32(v), err
|
|
}
|
|
|
|
func ConvertStringToRgba(str string) (*Rgba, error) {
|
|
parts := strings.SplitN(str, ",", 5)
|
|
if len(parts) != 4 {
|
|
return nil, fmt.Errorf("invalid rgba")
|
|
}
|
|
rgba := &Rgba{}
|
|
for i, p := range parts {
|
|
n, err := strconv.ParseUint(strings.TrimSpace(p), 10, 8)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("invalid component %d: %w", i, err)
|
|
}
|
|
rgba[i] = uint8(n)
|
|
}
|
|
return rgba, nil
|
|
}
|
|
|
|
func RgbaToUint32(r *Rgba) uint32 {
|
|
return uint32(r[0])<<24 | uint32(r[1])<<16 | uint32(r[2])<<8 | uint32(r[3])
|
|
}
|
|
|
|
func Uint32ToRgba(v uint32) *Rgba {
|
|
return &Rgba{uint8(v >> 24), uint8(v >> 16), uint8(v >> 8), uint8(v)}
|
|
}
|
|
|
|
func ConvertStringUuid(str string) (uuid.UUID, error) {
|
|
return uuid.Parse(str)
|
|
}
|
|
|
|
func ConvertStringTimestamp(str string) (time.Time, error) {
|
|
return time.Parse(time.RFC3339, str)
|
|
}
|