canvas.go 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. // package canvas -- объект холста
  2. package canvas
  3. import (
  4. svg "github.com/ajstarks/svgo"
  5. "gitp78su.ipnodns.ru/svi/kern/v3"
  6. "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
  7. )
  8. // Canvas -- объект холста
  9. type Canvas struct {
  10. size types.IViewSize
  11. pos types.IViewCoord
  12. diaMode string
  13. }
  14. var (
  15. hassert = kern.GetFnHassert()
  16. )
  17. // NewCanvas -- возвращает новый холст
  18. func NewCanvas(diaMode string, size types.IViewSize, pos types.IViewCoord) *Canvas {
  19. hassert(diaMode != "", "NewCanvas(): diaMode is empty")
  20. hassert(size != nil, "NewCanvas(): size is nil")
  21. hassert(pos != nil, "NewCanvas(): pos is nil")
  22. sf := &Canvas{
  23. size: size,
  24. pos: pos,
  25. diaMode: diaMode,
  26. }
  27. return sf
  28. }
  29. // Draw -- рисует холст
  30. func (sf *Canvas) Draw(canvas *svg.SVG) {
  31. x, y := sf.pos.Int()
  32. w, h := sf.size.Int()
  33. canvas.Rect(0, 0, w, h, "fill:white;stroke:red;stroke-width:1")
  34. canvas.Text(x, y+2, "АРХИТЕКТУРНОЕ РЕШЕНИЕ", "font-size: 20px; font-family: sans-serif; fill: black")
  35. canvas.Text(x+15, y+20, sf.diaMode, "font-size: 14px; font-family: sans-serif; fill: black")
  36. }
  37. // Size -- возвращает размер холста
  38. //
  39. //go:fix inline
  40. func (sf *Canvas) Size() types.IViewSize {
  41. return sf.size
  42. }