gravity_type.go 898 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. package options
  2. import "fmt"
  3. type GravityType int
  4. const (
  5. GravityUnknown GravityType = iota
  6. GravityCenter
  7. GravityNorth
  8. GravityEast
  9. GravitySouth
  10. GravityWest
  11. GravityNorthWest
  12. GravityNorthEast
  13. GravitySouthWest
  14. GravitySouthEast
  15. GravitySmart
  16. GravityFocusPoint
  17. )
  18. var gravityTypes = map[string]GravityType{
  19. "ce": GravityCenter,
  20. "no": GravityNorth,
  21. "ea": GravityEast,
  22. "so": GravitySouth,
  23. "we": GravityWest,
  24. "nowe": GravityNorthWest,
  25. "noea": GravityNorthEast,
  26. "sowe": GravitySouthWest,
  27. "soea": GravitySouthEast,
  28. "sm": GravitySmart,
  29. "fp": GravityFocusPoint,
  30. }
  31. func (gt GravityType) String() string {
  32. for k, v := range gravityTypes {
  33. if v == gt {
  34. return k
  35. }
  36. }
  37. return ""
  38. }
  39. func (gt GravityType) MarshalJSON() ([]byte, error) {
  40. for k, v := range gravityTypes {
  41. if v == gt {
  42. return []byte(fmt.Sprintf("%q", k)), nil
  43. }
  44. }
  45. return []byte("null"), nil
  46. }