| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- // 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())
- }
|