canvas.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // package canvas -- оюъект холста
  2. package canvas
  3. import (
  4. svg "github.com/ajstarks/svgo"
  5. "gitp78su.ipnodns.ru/svi/goarch/pkg/elems/coord"
  6. )
  7. // Canvas -- оюъект холста
  8. type Canvas struct {
  9. size *coord.Coord
  10. pos *coord.Coord
  11. diaMode string
  12. }
  13. // NewCanvas -- возвращает новый холст
  14. func NewCanvas(diaMode string, elem map[string]interface{}) *Canvas {
  15. size := coord.NewCoord("size", elem)
  16. pos := coord.NewCoord("pos", elem)
  17. sf := &Canvas{
  18. size: size,
  19. pos: pos,
  20. diaMode: diaMode,
  21. }
  22. return sf
  23. }
  24. // Draw -- рисует холст
  25. func (sf *Canvas) Draw(canvas *svg.SVG) {
  26. x := int(sf.pos.X_)
  27. y := int(sf.pos.Y_)
  28. w := int(sf.size.X_)
  29. h := int(sf.size.Y_)
  30. canvas.Rect(0, 0, w, h, "fill:white;stroke:red;stroke-width:1")
  31. canvas.Text(x, y+2, "АРХИТЕКТУРНОЕ РЕШЕНИЕ", "font-size: 20px; font-family: sans-serif; fill: black")
  32. canvas.Text(x+15, y+20, sf.diaMode, "font-size: 14px; font-family: sans-serif; fill: black")
  33. }
  34. // Size -- возвращает размер холста
  35. func (sf *Canvas) Size() (int, int) {
  36. x := int(sf.size.X_)
  37. y := int(sf.size.Y_)
  38. return x, y
  39. }