http_canvas.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. // package http_canvas -- управление холстом
  2. package http_canvas
  3. import (
  4. "fmt"
  5. "github.com/gofiber/fiber/v2"
  6. "gitp78su.ipnodns.ru/svi/kern/v3"
  7. "gitp78su.ipnodns.ru/svi/kern/v3/kc/log_buf"
  8. "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes"
  9. "gitp78su.ipnodns.ru/svi/goarch/lev0/alias"
  10. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  11. "gitp78su.ipnodns.ru/svi/goarch/lev1/view_size"
  12. )
  13. // CanvasSize -- размер хоста
  14. type CanvasSize struct {
  15. SizeX_ int `form:"w"`
  16. SizeY_ int `form:"h"`
  17. }
  18. func (sf *CanvasSize) String() string {
  19. return fmt.Sprintf("w:%v; h:%v", sf.SizeX_, sf.SizeY_)
  20. }
  21. // HttpCanvas -- управление холстом
  22. type HttpCanvas struct {
  23. log ktypes.ILogBuf
  24. canvSize CanvasSize // Размер холста
  25. size types.IViewSize // Размер холста в его координатах
  26. }
  27. // NewHttpCanvas -- создание нового холста
  28. func NewHttpCanvas() *HttpCanvas {
  29. optTerm := log_buf.OptIsTerm(true)
  30. optPref := log_buf.OptPrefix("EngineHttp")
  31. log := log_buf.NewLogBuf(optTerm, optPref)
  32. sf := &HttpCanvas{
  33. log: log,
  34. size: view_size.NewViewSize(800, 600),
  35. }
  36. sHttp := kern.GetKernelServerHttp()
  37. fibApp := sHttp.Fiber()
  38. fibApp.Post("/api/canvas/size/set", sf.postCanvasSizeSet)
  39. return sf
  40. }
  41. // Устанавливает размер холста
  42. func (sf *HttpCanvas) postCanvasSizeSet(ctx *fiber.Ctx) error {
  43. err := ctx.BodyParser(&sf.canvSize)
  44. if err != nil {
  45. sf.log.Err("HttpCanvas.postCanvasSizeSet(): on body parser, err=\n\t%v", err)
  46. }
  47. var (
  48. w alias.SizeX
  49. h alias.SizeY
  50. )
  51. if sf.canvSize.SizeX_ > 0 {
  52. w = alias.SizeX(sf.canvSize.SizeX_ - 10)
  53. }
  54. if sf.canvSize.SizeY_ > 0 {
  55. h = alias.SizeY(sf.canvSize.SizeY_ - 10)
  56. }
  57. sf.size = view_size.NewViewSize(w, h)
  58. return ctx.SendString(sf.size.String())
  59. }