| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- // package view_link -- отображение связи между объектами
- package view_link
- import (
- svg "github.com/ajstarks/svgo"
- "gitp78su.ipnodns.ru/svi/kern/v3"
- "gitp78su.ipnodns.ru/svi/goarch/lev0/types"
- "gitp78su.ipnodns.ru/svi/goarch/lev1/arch_link"
- )
- // ViewLink -- отображение связи между объектами
- type ViewLink struct {
- *arch_link.ArchLink
- Coord_ types.IViewCoord
- CoordEnd_ types.IViewCoord
- Offset_ types.IViewOffset
- }
- var (
- hassert = kern.GetFnHassert()
- )
- // NewViewLink -- возвращает новое отображение связи
- func NewViewLink(archLink *arch_link.ArchLink, coord, coordEnd types.IViewCoord,
- offset types.IViewOffset) *ViewLink {
- hassert(archLink != nil, "NewViewLink: archLink == nil")
- hassert(coord != nil, "NewViewLink: coord == nil")
- hassert(offset != nil, "NewViewLink: offset == nil")
- sf := &ViewLink{
- ArchLink: archLink,
- Coord_: coord,
- CoordEnd_: coordEnd,
- Offset_: offset,
- }
- return sf
- }
- // Draw -- рисует связь между объектами
- func (sf *ViewLink) Draw(canvas *svg.SVG) {
- x, y := sf.Coord_.Int()
- x1, y1 := sf.CoordEnd_.Int()
- offX, offY := sf.Offset_.Int()
- // Линия
- canvas.Line(x, y, x1, y1, "stroke:black;stroke-width:1")
- strLabel := sf.String()
- if strLabel != "" {
- canvas.Text(x+offX, y+offY, strLabel, "font-size: 12px; font-family: Courier; fill: black")
- }
- if sf.TypeLink() != "" {
- canvas.Text(x+offX, y+offY+12, "<<"+sf.TypeLink()+">>", "font-size: 12px; font-family: Courier; fill: black")
- }
- if msgErr := sf.Check(); msgErr != "" { // Проверка на правильность
- canvas.Group("Ошибка")
- canvas.Title(msgErr)
- canvas.Image(x-20+offX, y-20+offY, 16, 16, "/static/img/warning.png")
- }
- canvas.Gend() // Group end
- }
- // CoordEnd -- координаты конца связи
- //
- //go:fix inline
- func (sf *ViewLink) CoordEnd() types.IViewCoord {
- return sf.CoordEnd_
- }
|