Skip to content

Commit

Permalink
self path lines, netview Params -> Options and other updates; change …
Browse files Browse the repository at this point in the history
…drives netview updates
  • Loading branch information
rcoreilly committed Aug 27, 2024
1 parent ff830f4 commit 42082ad
Show file tree
Hide file tree
Showing 9 changed files with 175 additions and 124 deletions.
10 changes: 5 additions & 5 deletions netview/laymesh.go
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ func (lm *LayMesh) MeshSize() (nVtx, nIndex int, hasColor bool) {
}
shp := &lm.Lay.AsEmer().Shape
lm.Shape.CopyShape(shp)
if lm.View.Params.Raster.On {
if lm.View.Options.Raster.On {
if shp.NumDims() == 4 {
lm.NumVertex, lm.NumIndex = lm.RasterSize4D()
} else {
Expand Down Expand Up @@ -93,8 +93,8 @@ func (lm *LayMesh) Set(vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry m
if lm.Lay == nil || lm.Shape.NumDims() == 0 {
return // nothing
}
if lm.View.Params.Raster.On {
if lm.View.Params.Raster.XAxis {
if lm.View.Options.Raster.On {
if lm.View.Options.Raster.XAxis {
if lm.Shape.NumDims() == 4 {
lm.RasterSet4DX(vtxAry, normAry, texAry, clrAry, idxAry)
} else {
Expand Down Expand Up @@ -127,7 +127,7 @@ func (lm *LayMesh) Set2D(vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry
fnz := float32(nz)
fnx := float32(nx)

uw := lm.View.Params.UnitSize
uw := lm.View.Options.UnitSize
uo := (1.0 - uw)
segs := 1

Expand Down Expand Up @@ -181,7 +181,7 @@ func (lm *LayMesh) Set4D(vtxAry, normAry, texAry, clrAry math32.ArrayF32, idxAry
fnuz := float32(nuz)
fnux := float32(nux)

usz := lm.View.Params.UnitSize
usz := lm.View.Options.UnitSize
uo := (1.0 - usz) // offset = space

// for 4D, we build in spaces between groups without changing the overall size of layer
Expand Down
32 changes: 16 additions & 16 deletions netview/layraster.go
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ func (lm *LayMesh) RasterSize2D() (nVtx, nIndex int) {
nuz := ss.DimSize(0)
nux := ss.DimSize(1)
nz := nuz*nux + nuz - 1
nx := lm.View.Params.Raster.Max + 1
nx := lm.View.Options.Raster.Max + 1
segs := 1

vtxSz, idxSz := shape.PlaneN(segs, segs)
Expand All @@ -31,7 +31,7 @@ func (lm *LayMesh) RasterSize4D() (nVtx, nIndex int) {
nux := ss.DimSize(3)

nz := nuz*nux + nuz - 1
nx := lm.View.Params.Raster.Max + 1
nx := lm.View.Options.Raster.Max + 1

segs := 1

Expand All @@ -46,8 +46,8 @@ func (lm *LayMesh) RasterSet2DX(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
nuz := ss.DimSize(0)
nux := ss.DimSize(1)
nz := nuz*nux + nuz - 1
nx := lm.View.Params.Raster.Max + 1
htsc := 0.5 * lm.View.Params.Raster.UnitHeight
nx := lm.View.Options.Raster.Max + 1
htsc := 0.5 * lm.View.Options.Raster.UnitHeight

fnoz := float32(lm.Shape.DimSize(0))
fnox := float32(lm.Shape.DimSize(1))
Expand All @@ -56,7 +56,7 @@ func (lm *LayMesh) RasterSet2DX(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
fnz := float32(nz)
fnx := float32(nx)

usz := lm.View.Params.Raster.UnitSize
usz := lm.View.Options.Raster.UnitSize
uo := (1.0 - usz)

xsc := fnux / fnx
Expand Down Expand Up @@ -127,8 +127,8 @@ func (lm *LayMesh) RasterSet2DZ(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
nuz := ss.DimSize(0)
nux := ss.DimSize(1)
nx := nuz*nux + nuz - 1
nz := lm.View.Params.Raster.Max + 1
htsc := 0.5 * lm.View.Params.Raster.UnitHeight
nz := lm.View.Options.Raster.Max + 1
htsc := 0.5 * lm.View.Options.Raster.UnitHeight

fnoz := float32(lm.Shape.DimSize(0))
fnox := float32(lm.Shape.DimSize(1))
Expand All @@ -137,7 +137,7 @@ func (lm *LayMesh) RasterSet2DZ(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
fnz := float32(nz)
fnx := float32(nx)

usz := lm.View.Params.Raster.UnitSize
usz := lm.View.Options.Raster.UnitSize
uo := (1.0 - usz)

xsc := fnux / fnx
Expand Down Expand Up @@ -210,8 +210,8 @@ func (lm *LayMesh) RasterSet4DX(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
nux := ss.DimSize(3)

nz := nuz*nux + nuz - 1
nx := lm.View.Params.Raster.Max + 1
htsc := 0.5 * lm.View.Params.Raster.UnitHeight
nx := lm.View.Options.Raster.Max + 1
htsc := 0.5 * lm.View.Options.Raster.UnitHeight

fnpoz := float32(lm.Shape.DimSize(0))
fnpox := float32(lm.Shape.DimSize(1))
Expand All @@ -222,7 +222,7 @@ func (lm *LayMesh) RasterSet4DX(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
fnx := float32(nx)
fnz := float32(nz)

usz := lm.View.Params.UnitSize
usz := lm.View.Options.UnitSize
uo := 2.0 * (1.0 - usz) // offset = space

// for 4D, we build in spaces between groups without changing the overall size of layer
Expand All @@ -239,7 +239,7 @@ func (lm *LayMesh) RasterSet4DX(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
xscr := xsc * (fnux / fnx)
zscr := zsc * (fnuz / fnz)

uszr := lm.View.Params.Raster.UnitSize
uszr := lm.View.Options.Raster.UnitSize
uor := (1.0 - uszr) // offset = space

xuw := xscr * uszr
Expand Down Expand Up @@ -311,8 +311,8 @@ func (lm *LayMesh) RasterSet4DZ(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
nux := ss.DimSize(3)

nx := nuz*nux + nuz - 1
nz := lm.View.Params.Raster.Max + 1
htsc := 0.5 * lm.View.Params.Raster.UnitHeight
nz := lm.View.Options.Raster.Max + 1
htsc := 0.5 * lm.View.Options.Raster.UnitHeight

fnpoz := float32(lm.Shape.DimSize(0))
fnpox := float32(lm.Shape.DimSize(1))
Expand All @@ -323,7 +323,7 @@ func (lm *LayMesh) RasterSet4DZ(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
fnx := float32(nx)
fnz := float32(nz)

usz := lm.View.Params.UnitSize
usz := lm.View.Options.UnitSize
uo := 2.0 * (1.0 - usz) // offset = space

// for 4D, we build in spaces between groups without changing the overall size of layer
Expand All @@ -340,7 +340,7 @@ func (lm *LayMesh) RasterSet4DZ(vtxAry, normAry, texAry, clrAry math32.ArrayF32,
xscr := xsc * (fnux / fnx)
zscr := zsc * (fnuz / fnz)

uszr := lm.View.Params.Raster.UnitSize
uszr := lm.View.Options.Raster.UnitSize
uor := (1.0 - uszr) // offset = space

xuw := xscr * uszr
Expand Down
2 changes: 1 addition & 1 deletion netview/netdata.go
Original file line number Diff line number Diff line change
Expand Up @@ -645,7 +645,7 @@ func (nv *NetView) PlotSelectedUnit() (*table.Table, *plotcore.PlotEditor) { //t
plt.SetTable(dt)

for _, vnm := range nd.UnVars {
vp, ok := nv.VarParams[vnm]
vp, ok := nv.VarOptions[vnm]
if !ok {
continue
}
Expand Down
61 changes: 32 additions & 29 deletions netview/netview.go
Original file line number Diff line number Diff line change
Expand Up @@ -56,15 +56,15 @@ type NetView struct {
SynVarsMap map[string]int

// parameters for the list of variables to view
VarParams map[string]*VarParams
VarOptions map[string]*VarOptions

// current var params -- only valid during Update of display
CurVarParams *VarParams `json:"-" xml:"-" display:"-"`
CurVarOptions *VarOptions `json:"-" xml:"-" display:"-"`

// parameters controlling how the view is rendered
Params Params
Options Options

// color map for mapping values to colors -- set by name in Params
// color map for mapping values to colors -- set by name in Options
ColorMap *colormap.Map

// color map value representing ColorMap
Expand All @@ -85,14 +85,17 @@ type NetView struct {
// mutex on data access
DataMu sync.RWMutex `display:"-" copier:"-" json:"-" xml:"-"`

hasPaths bool // to detect if paths changes
// these are used to detect need to update
layerNameSizeShown float32
hasPaths bool
pathTypeShown string
pathWidthShown float32
}

func (nv *NetView) Init() {
nv.Frame.Init()
nv.Params.NetView = nv
nv.Params.Defaults()
nv.ColorMap = colormap.AvailableMaps[string(nv.Params.ColorMap)]
nv.Options.Defaults()
nv.ColorMap = colormap.AvailableMaps[string(nv.Options.ColorMap)]
nv.RecNo = -1
nv.Styler(func(s *styles.Style) {
s.Direction = styles.Column
Expand Down Expand Up @@ -138,7 +141,7 @@ func (nv *NetView) Init() {
func (nv *NetView) SetNet(net emer.Network) {
nv.Net = net
nv.DataMu.Lock()
nv.Data.Init(nv.Net, nv.Params.MaxRecs, nv.Params.NoSynData, nv.Net.MaxParallelData())
nv.Data.Init(nv.Net, nv.Options.MaxRecs, nv.Options.NoSynData, nv.Net.MaxParallelData())
nv.DataMu.Unlock()
nv.UpdateTree() // need children
nv.UpdateLayers()
Expand All @@ -158,8 +161,8 @@ func (nv *NetView) SetVar(vr string) {
// SetMaxRecs sets the maximum number of records that are maintained (default 210)
// resets the current data in the process
func (nv *NetView) SetMaxRecs(max int) {
nv.Params.MaxRecs = max
nv.Data.Init(nv.Net, nv.Params.MaxRecs, nv.Params.NoSynData, nv.Net.MaxParallelData())
nv.Options.MaxRecs = max
nv.Data.Init(nv.Net, nv.Options.MaxRecs, nv.Options.NoSynData, nv.Net.MaxParallelData())
}

// HasLayers returns true if network has any layers -- else no display
Expand Down Expand Up @@ -190,8 +193,8 @@ func (nv *NetView) Record(counters string, rastCtr int) {
if counters != "" {
nv.LastCtrs = counters
}
nv.Data.PathType = nv.Params.PathType
nv.Data.Record(nv.LastCtrs, rastCtr, nv.Params.Raster.Max)
nv.Data.PathType = nv.Options.PathType
nv.Data.Record(nv.LastCtrs, rastCtr, nv.Options.Raster.Max)
nv.RecTrackLatest() // if we make a new record, then user expectation is to track latest..
}

Expand Down Expand Up @@ -249,13 +252,13 @@ func (nv *NetView) Current() { //types:add
// UpdateImpl does the guts of updating -- backend for Update or GoUpdate
func (nv *NetView) UpdateImpl() {
nv.DataMu.Lock()
vp, ok := nv.VarParams[nv.Var]
vp, ok := nv.VarOptions[nv.Var]
if !ok {
nv.DataMu.Unlock()
log.Printf("NetView: %v variable: %v not found\n", nv.Name, nv.Var)
return
}
nv.CurVarParams = vp
nv.CurVarOptions = vp

if !vp.Range.FixMin || !vp.Range.FixMax {
needUpdate := false
Expand Down Expand Up @@ -369,9 +372,9 @@ func (nv *NetView) RecFastBkwd() bool {
return false
}
if nv.RecNo < 0 {
nv.RecNo = nv.Data.Ring.Len - nv.Params.NFastSteps
nv.RecNo = nv.Data.Ring.Len - nv.Options.NFastSteps
} else {
nv.RecNo -= nv.Params.NFastSteps
nv.RecNo -= nv.Options.NFastSteps
}
if nv.RecNo < 0 {
nv.RecNo = 0
Expand Down Expand Up @@ -420,7 +423,7 @@ func (nv *NetView) RecFastFwd() bool {
if nv.RecNo < 0 {
return false
}
nv.RecNo += nv.Params.NFastSteps
nv.RecNo += nv.Options.NFastSteps
if nv.RecNo >= nv.Data.Ring.Len-1 {
nv.RecNo = nv.Data.Ring.Len - 1
}
Expand Down Expand Up @@ -464,7 +467,7 @@ func (nv *NetView) VarsListUpdate() {
return
}
nv.Vars = nvars
nv.VarParams = make(map[string]*VarParams, len(nv.Vars))
nv.VarOptions = make(map[string]*VarOptions, len(nv.Vars))

nv.SynVars = synvars
nv.SynVarsMap = make(map[string]int, len(synvars))
Expand All @@ -475,7 +478,7 @@ func (nv *NetView) VarsListUpdate() {
unprops := nv.Net.UnitVarProps()
pathprops := nv.Net.SynVarProps()
for _, nm := range nv.Vars {
vp := &VarParams{Var: nm}
vp := &VarOptions{Var: nm}
vp.Defaults()
var vtag string
if strings.HasPrefix(nm, "r.") || strings.HasPrefix(nm, "s.") {
Expand All @@ -486,7 +489,7 @@ func (nv *NetView) VarsListUpdate() {
if vtag != "" {
vp.SetProps(vtag)
}
nv.VarParams[nm] = vp
nv.VarOptions[nm] = vp
}
}

Expand Down Expand Up @@ -517,7 +520,7 @@ func (nv *NetView) makeVars(netframe *core.Frame) {
tabs[ct.Cat] = tf
tf.Styler(func(s *styles.Style) {
s.Display = styles.Grid
s.Columns = nv.Params.NVarCols
s.Columns = nv.Options.NVarCols
s.Grow.Set(1, 1)
s.Overflow.Y = styles.OverflowAuto
s.Background = colors.Scheme.SurfaceContainerLow
Expand Down Expand Up @@ -632,9 +635,9 @@ var NilColor = color.RGBA{0x20, 0x20, 0x20, 0x40}
// UnitValColor returns the raw value, scaled value, and color representation
// for given unit of given layer. scaled is in range -1..1
func (nv *NetView) UnitValColor(lay emer.Layer, idx1d int, raw float32, hasval bool) (scaled float32, clr color.RGBA) {
if nv.CurVarParams == nil || nv.CurVarParams.Var != nv.Var {
if nv.CurVarOptions == nil || nv.CurVarOptions.Var != nv.Var {
ok := false
nv.CurVarParams, ok = nv.VarParams[nv.Var]
nv.CurVarOptions, ok = nv.VarOptions[nv.Var]
if !ok {
return
}
Expand All @@ -647,15 +650,15 @@ func (nv *NetView) UnitValColor(lay emer.Layer, idx1d int, raw float32, hasval b
clr = NilColor
}
} else {
clp := nv.CurVarParams.Range.ClipValue(raw)
norm := nv.CurVarParams.Range.NormValue(clp)
clp := nv.CurVarOptions.Range.ClipValue(raw)
norm := nv.CurVarOptions.Range.NormValue(clp)
var op float32
if nv.CurVarParams.ZeroCtr {
if nv.CurVarOptions.ZeroCtr {
scaled = float32(2*norm - 1)
op = (nv.Params.ZeroAlpha + (1-nv.Params.ZeroAlpha)*math32.Abs(scaled))
op = (nv.Options.ZeroAlpha + (1-nv.Options.ZeroAlpha)*math32.Abs(scaled))
} else {
scaled = float32(norm)
op = (nv.Params.ZeroAlpha + (1-nv.Params.ZeroAlpha)*0.8) // no meaningful alpha -- just set at 80\%
op = (nv.Options.ZeroAlpha + (1-nv.Options.ZeroAlpha)*0.8) // no meaningful alpha -- just set at 80\%
}
clr = colors.WithAF32(nv.ColorMap.Map(norm), op)
}
Expand Down
Loading

0 comments on commit 42082ad

Please sign in to comment.