imagequant/imagequant.go

61 lines
1.4 KiB
Go

package imagequant
import (
"errors"
)
/*
#cgo CFLAGS: -O3 -fno-math-errno -fopenmp -funroll-loops -fomit-frame-pointer -Wall -Wno-attributes -std=c99 -DNDEBUG -DUSE_SSE=1 -msse -fexcess-precision=fast
#cgo LDFLAGS: -fopenmp -static
#include "libimagequant.h"
const char* liqVersionString() {
return LIQ_VERSION_STRING;
}
*/
import "C"
var (
ErrQualityTooLow = errors.New("Quality too low")
ErrValueOutOfRange = errors.New("Value out of range")
ErrOutOfMemory = errors.New("Out of memory")
ErrAborted = errors.New("Aborted")
ErrBitmapNotAvailable = errors.New("Bitmap not available")
ErrBufferTooSmall = errors.New("Buffer too small")
ErrInvalidPointer = errors.New("Invalid pointer")
ErrUseAfterFree = errors.New("Use after free")
)
func translateError(iqe C.liq_error) error {
switch iqe {
case C.LIQ_OK:
return nil
case (C.LIQ_QUALITY_TOO_LOW):
return ErrQualityTooLow
case (C.LIQ_VALUE_OUT_OF_RANGE):
return ErrValueOutOfRange
case (C.LIQ_OUT_OF_MEMORY):
return ErrOutOfMemory
case (C.LIQ_ABORTED):
return ErrAborted
case (C.LIQ_BITMAP_NOT_AVAILABLE):
return ErrBitmapNotAvailable
case (C.LIQ_BUFFER_TOO_SMALL):
return ErrBufferTooSmall
case (C.LIQ_INVALID_POINTER):
return ErrInvalidPointer
default:
return errors.New("Unknown error")
}
}
func GetLibraryVersion() int {
return int(C.liq_version())
}
func GetLibraryVersionString() string {
return C.GoString(C.liqVersionString())
}