// package http_canvas -- управление холстом package http_canvas import ( "fmt" "github.com/gofiber/fiber/v2" "gitp78su.ipnodns.ru/svi/kern/v3" "gitp78su.ipnodns.ru/svi/kern/v3/kc/log_buf" "gitp78su.ipnodns.ru/svi/kern/v3/krn/ktypes" "gitp78su.ipnodns.ru/svi/goarch/lev0/alias" "gitp78su.ipnodns.ru/svi/goarch/lev0/types" "gitp78su.ipnodns.ru/svi/goarch/lev1/view_size" ) // CanvasSize -- размер хоста type CanvasSize struct { SizeX_ int `form:"w"` SizeY_ int `form:"h"` } func (sf *CanvasSize) String() string { return fmt.Sprintf("w:%v; h:%v", sf.SizeX_, sf.SizeY_) } // HttpCanvas -- управление холстом type HttpCanvas struct { log ktypes.ILogBuf canvSize CanvasSize // Размер холста size types.IViewSize // Размер холста в его координатах } // NewHttpCanvas -- создание нового холста func NewHttpCanvas() *HttpCanvas { optTerm := log_buf.OptIsTerm(true) optPref := log_buf.OptPrefix("EngineHttp") log := log_buf.NewLogBuf(optTerm, optPref) sf := &HttpCanvas{ log: log, size: view_size.NewViewSize(800, 600), } sHttp := kern.GetKernelServerHttp() fibApp := sHttp.Fiber() fibApp.Post("/api/canvas/size/set", sf.postCanvasSizeSet) return sf } // Устанавливает размер холста func (sf *HttpCanvas) postCanvasSizeSet(ctx *fiber.Ctx) error { err := ctx.BodyParser(&sf.canvSize) if err != nil { sf.log.Err("HttpCanvas.postCanvasSizeSet(): on body parser, err=\n\t%v", err) } var ( w alias.SizeX h alias.SizeY ) if sf.canvSize.SizeX_ > 0 { w = alias.SizeX(sf.canvSize.SizeX_ - 10) } if sf.canvSize.SizeY_ > 0 { h = alias.SizeY(sf.canvSize.SizeY_ - 10) } sf.size = view_size.NewViewSize(w, h) return ctx.SendString(sf.size.String()) }