canvas.go 1.4 KB

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