Skip to content

Commit e4e4dd3

Browse files
authored
Support filled beziercurve rendering (#92)
* support filled beziercurve rendering * fix testdata * fix threshold
1 parent 698a12c commit e4e4dd3

File tree

6 files changed

+33
-14
lines changed

6 files changed

+33
-14
lines changed

alias.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -314,7 +314,7 @@ const (
314314
DiagonalsNodeStyle = cgraph.DiagonalsNodeStyle
315315
FilledNodeStyle = cgraph.FilledNodeStyle
316316
StripedNodeStyle = cgraph.StripedNodeStyle
317-
WedgesNodeStyle = cgraph.WedgesNodeStyle
317+
WedgedNodeStyle = cgraph.WedgedNodeStyle
318318
)
319319

320320
const (

cgraph/attribute.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2523,7 +2523,7 @@ const (
25232523
DiagonalsNodeStyle NodeStyle = "diagonals"
25242524
FilledNodeStyle NodeStyle = "filled"
25252525
StripedNodeStyle NodeStyle = "striped"
2526-
WedgesNodeStyle NodeStyle = "wedged"
2526+
WedgedNodeStyle NodeStyle = "wedged"
25272527
)
25282528

25292529
type EdgeStyle string

compatible_test.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ var (
2525
)
2626

2727
const (
28-
imageThreshold = 30
28+
imageThreshold = 40
2929
)
3030

3131
func generateTestData() error {
@@ -73,9 +73,9 @@ func generateTestData() error {
7373

7474
func TestGraphviz_Compatible(t *testing.T) {
7575
// generate testdata/imagehash.json
76-
// if err := generateTestData(); err != nil {
77-
// t.Fatal(err)
78-
// }
76+
//if err := generateTestData(); err != nil {
77+
// t.Fatal(err)
78+
//}
7979
var pathToHashDump map[string]string
8080
file, err := os.ReadFile(imageHashJSON)
8181
if err != nil {

gvc/image_renderer.go

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -195,11 +195,18 @@ func (r *ImageRenderer) Polyline(ctx context.Context, job *Job, a []*PointFloat)
195195
return nil
196196
}
197197

198-
func (r *ImageRenderer) BezierCurve(ctx context.Context, job *Job, a []*PointFloat) error {
198+
func (r *ImageRenderer) BezierCurve(ctx context.Context, job *Job, a []*PointFloat, filled bool) error {
199199
r.ctx.Push()
200200
defer r.ctx.Pop()
201201
r.setPenStyle(job)
202-
rgba := job.Object().PenColor().RGBAUint()
202+
var c *Color
203+
if filled {
204+
c = job.Object().FillColor()
205+
r.ctx.FillPreserve()
206+
} else {
207+
c = job.Object().PenColor()
208+
}
209+
rgba := c.RGBAUint()
203210
r.ctx.SetRGB(float64(rgba[0])/255.0, float64(rgba[1])/255.0, float64(rgba[2])/255.0)
204211
r.ctx.MoveTo(r.toX(job, a[0].X()), r.toY(job, -a[0].Y()))
205212
for i := 1; i < len(a); i += 3 {
@@ -212,7 +219,11 @@ func (r *ImageRenderer) BezierCurve(ctx context.Context, job *Job, a []*PointFlo
212219
r.toY(job, -a[i+2].Y()),
213220
)
214221
}
215-
r.ctx.Stroke()
222+
if filled {
223+
r.ctx.Fill()
224+
} else {
225+
r.ctx.Stroke()
226+
}
216227
return nil
217228
}
218229

gvc/render_plugin.go

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,7 @@ type RenderEngine interface {
4141
ResolveColor(ctx context.Context, job *Job, color *Color) error
4242
Ellipse(ctx context.Context, job *Job, points []*PointFloat, filled bool) error
4343
Polygon(ctx context.Context, job *Job, points []*PointFloat, filled bool) error
44-
BezierCurve(ctx context.Context, job *Job, points []*PointFloat) error
44+
BezierCurve(ctx context.Context, job *Job, points []*PointFloat, filled bool) error
4545
Polyline(ctx context.Context, job *Job, points []*PointFloat) error
4646
Comment(ctx context.Context, job *Job, comment string) error
4747
LibraryShape(ctx context.Context, job *Job, s string, points []*PointFloat, filled bool) error
@@ -154,7 +154,7 @@ func (e *DefaultRenderEngine) Polygon(_ context.Context, _ *Job, _ []*PointFloat
154154
return nil
155155
}
156156

157-
func (e *DefaultRenderEngine) BezierCurve(_ context.Context, _ *Job, _ []*PointFloat) error {
157+
func (e *DefaultRenderEngine) BezierCurve(_ context.Context, _ *Job, _ []*PointFloat, _ bool) error {
158158
return nil
159159
}
160160

@@ -471,12 +471,12 @@ func newRenderEngine(ctx context.Context, engine RenderEngine) (*wasm.RenderEngi
471471
}, ptr)); err != nil {
472472
return nil, err
473473
}
474-
if err := e.SetBeziercurve(ctx, wasm.CreateCallbackFunc(func(ctx context.Context, job *wasm.Job, p []*wasm.PointFloat, _ uint32, _ int) error {
474+
if err := e.SetBeziercurve(ctx, wasm.CreateCallbackFunc(func(ctx context.Context, job *wasm.Job, p []*wasm.PointFloat, _ uint32, filled int) error {
475475
points := make([]*PointFloat, len(p))
476476
for i := range p {
477477
points[i] = toPointFloat(p[i])
478478
}
479-
return engine.BezierCurve(ctx, toJob(job), points)
479+
return engine.BezierCurve(ctx, toJob(job), points, filled > 0)
480480
}, ptr)); err != nil {
481481
return nil, err
482482
}
@@ -939,6 +939,14 @@ func (s *ObjectState) SetFillColor(v *Color) {
939939
s.wasm.SetFillcolor(v.getWasm())
940940
}
941941

942+
func (s *ObjectState) StopColor() *Color {
943+
return toColor(s.wasm.GetStopcolor())
944+
}
945+
946+
func (s *ObjectState) RawStyle() []string {
947+
return s.wasm.GetRawstyle()
948+
}
949+
942950
type Color struct {
943951
wasm *wasm.Color
944952
}

testdata/imagehash.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
{"testdata/directed/KW91.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4ByYqKSwkJgcBBgA=","testdata/directed/Latin1.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4DnHIDyvgcQ4BBgA=","testdata/directed/NaN.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAAX/ggIGAA==","testdata/directed/abstract.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4EhZPHUnJTQgBBgA=","testdata/directed/alf.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4OBgWNxELBwYBBgA=","testdata/directed/arrows.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4clJyUlJyUlIBBgA=","testdata/directed/awilliams.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4AgIADBg4XFwBBgA=","testdata/directed/biological.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH42NlZOSkpEhIBBgA=","testdata/directed/clust.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4OiYnFxZXVVUBBgA=","testdata/directed/clust1.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4B4uXlaU3lZcBBgA=","testdata/directed/clust2.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4Hj6jqqqqKgMBBgA=","testdata/directed/clust3.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4DjNxcTFhMzMBBgA=","testdata/directed/clust4.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4D1Nzc3FzUw8BBgA=","testdata/directed/clust5.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4BAcnJxNTCQMBBgA=","testdata/directed/crazy.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4DyEx0RsbQw4BBgA=","testdata/directed/ctext.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4bGxsVhYXVRUBBgA=","testdata/directed/dfa.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4Dg4OMjIODg4BBgA=","testdata/directed/fig6.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4ShsXGRuZuW4BBgA=","testdata/directed/fsm.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4GBgYHgTDWxkBBgA=","testdata/directed/grammar.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4GxulJyeVAQIBBgA=","testdata/directed/hashtable.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4HBAYnJgQGJwBBgA=","testdata/directed/honda-tokoro.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4JzPUUklbe2ABBgA=","testdata/directed/japanese.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4HA9JLQcnJw8BBgA=","testdata/directed/jcctree.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4GCwmZ2dtbWUBBgA=","testdata/directed/jsort.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4AwsNVTM3JVEBBgA=","testdata/directed/ldbxtried.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4HxYbLw8HH44BBgA=","testdata/directed/longflat.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4AwQBAWExxTMBBgA=","testdata/directed/mike.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4ASE1xmdmLjwBBgA=","testdata/directed/nhg.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4ExM4bi54HwcBBgA=","testdata/directed/oldarrows.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4Ux8PDw8PB1EBBgA=","testdata/directed/pgram.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4zGwpmqvg4OABBgA=","testdata/directed/pm2way.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4GBgeJgwNBgYBBgA=","testdata/directed/pmpipe.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4BgcLGw8NS08BBgA=","testdata/directed/polypoly.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4LiwsJm5MECsBBgA=","testdata/directed/proc3d.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAAX/ggIGAA==","testdata/directed/psfonttest.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4FlXV1RUVVVUBBgA=","testdata/directed/record2.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4KhgeBpoOmh4BBgA=","testdata/directed/records.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA7/ggH5CUtlfA5ODgEGAA==","testdata/directed/rowe.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4BpI0ZkWmtDEBBgA=","testdata/directed/russian.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4U1tTUtJSEhIBBgA=","testdata/directed/sdh.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4i5uamLSkxEoBBgA=","testdata/directed/shells.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4x42T5aStj80BBgA=","testdata/directed/states.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4BwcFGREozugBBgA=","testdata/directed/structs.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4HCwsbMRGSgABBgA=","testdata/directed/switch.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4O3UbUWslG3MBBgA=","testdata/directed/table.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4DAwOJmbn5sYBBgA=","testdata/directed/train11.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA7/ggH5AQMHCB7kgwEGAA==","testdata/directed/trapeziumlr.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4YHExDw8xcWABBgA=","testdata/directed/tree.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4BgcTEzEyMLgBBgA=","testdata/directed/triedds.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4OCZkLgYWFhYBBgA=","testdata/directed/try.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4jY1LTYwPLSsBBgA=","testdata/directed/unix.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4DhszFdHbWwsBBgA=","testdata/directed/unix2.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4DhsxldNbSwsBBgA=","testdata/directed/viewfile.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4HLb2c8fJyRkBBgA=","testdata/directed/world.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4MjUXHYWVNScBBgA=","testdata/undirected/ER.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4AQMDBxcHFRcBBgA=","testdata/undirected/Heawood.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4CYiUU1ZWFgcBBgA=","testdata/undirected/Petersen.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4TG2rKjrKxkEBBgA=","testdata/undirected/ngk10_4.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4gCosKiI4WCABBgA=","testdata/undirected/process.gv":"If+BAwEBAUQB/4IAAQIBBEhhc2gBBgABBEtpbmQBBAAAAA//ggH4PWdLQgIDAwMBBgA="}
1+
{"testdata/directed/KW91.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgHJiooLCYmBwEGAA==","testdata/directed/Latin1.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgOccAPK9BxDgEGAA==","testdata/directed/NaN.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgBARFlIZiYGQEGAA==","testdata/directed/abstract.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgSFksZSUlNDAEGAA==","testdata/directed/alf.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfg4GBY2GwsHBgEGAA==","testdata/directed/arrows.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfhSUlJSUnFSUgEGAA==","testdata/directed/awilliams.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgCAgIMCBhcXAEGAA==","testdata/directed/biological.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfjY2dkxKSkSEgEGAA==","testdata/directed/clust.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfg6JicXFldVVQEGAA==","testdata/directed/clust1.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgGipaUpDSWlAEGAA==","testdata/directed/clust2.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgeHqOqqqoqAwEGAA==","testdata/directed/clust3.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgOMnBwMmAyMgEGAA==","testdata/directed/clust4.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgOU3NRcXNTDgEGAA==","testdata/directed/clust5.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgGBycnU1ELAwEGAA==","testdata/directed/crazy.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgPITHRGxtDDgEGAA==","testdata/directed/ctext.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfh8bGx2FhZVFQEGAA==","testdata/directed/dfa.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgPDw8zMw4ODgEGAA==","testdata/directed/fig6.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfhKGxcdG5m5bgEGAA==","testdata/directed/fsm.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgYGBoeBMNbGQEGAA==","testdata/directed/grammar.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgaGiQmJpQAAgEGAA==","testdata/directed/hashtable.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgcERmcmVEdnAEGAA==","testdata/directed/honda-tokoro.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgnM9RCSVt5QAEGAA==","testdata/directed/japanese.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgcDkhMBiYmDgEGAA==","testdata/directed/jcctree.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgYLCZmZmxkZAEGAA==","testdata/directed/jsort.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgDCw1RMzclUQEGAA==","testdata/directed/ldbxtried.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgeFhsvDycfjgEGAA==","testdata/directed/longflat.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgDBAEBYTHEMQEGAA==","testdata/directed/mike.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgBITVGZ2YuPAEGAA==","testdata/directed/nhg.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgTEzhuLngfBwEGAA==","testdata/directed/oldarrows.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfhSHg4ODg4GUAEGAA==","testdata/directed/pgram.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfjMbCkai+jg4AEGAA==","testdata/directed/pm2way.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgYGB4mDg0GBgEGAA==","testdata/directed/pmpipe.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgGBgIaDgRSRgEGAA==","testdata/directed/polypoly.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfguLCwubkwQCwEGAA==","testdata/directed/proc3d.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgICRkZCRkZCQEGAA==","testdata/directed/psfonttest.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfiWlJSUlJSUhAEGAA==","testdata/directed/record2.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgqCB4mmiq6HgEGAA==","testdata/directed/records.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAADv+AAfkJW2l8Hg4eAQYA","testdata/directed/rowe.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgGkzRnxaa0MQEGAA==","testdata/directed/russian.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfhTU1NS0lISEgEGAA==","testdata/directed/sdh.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfiLm5qYtKTESgEGAA==","testdata/directed/shells.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfjPjZPnpK2PzQEGAA==","testdata/directed/states.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgDBwUZESne4AEGAA==","testdata/directed/structs.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgcLCxMxkZKAAEGAA==","testdata/directed/switch.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfg5JRtRa2dLdQEGAA==","testdata/directed/table.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgMDAcn5+fHxgEGAA==","testdata/directed/train11.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAADv+AAfkBAwcIHmSHAQYA","testdata/directed/trapeziumlr.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfjgcTMPDzNxwAEGAA==","testdata/directed/tree.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgGBhISMHI4uAEGAA==","testdata/directed/triedds.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfg4JGQuBhYWFgEGAA==","testdata/directed/try.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfiNqUtNjA8tKwEGAA==","testdata/directed/unix.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgPGzEV0dtbAwEGAA==","testdata/directed/unix2.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgPCzHR0xtLCwEGAA==","testdata/directed/viewfile.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgc9vZzx8nJGAEGAA==","testdata/directed/world.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgyNRUdhZU1JwEGAA==","testdata/undirected/ER.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgCAwIGFAYUFgEGAA==","testdata/undirected/Heawood.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfgIiJRSVlYWFgEGAA==","testdata/undirected/Petersen.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfhObSsqKs7GQQEGAA==","testdata/undirected/ngk10_4.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfiBKi0qIzlYAQEGAA==","testdata/undirected/process.gv":"IH8DAQEBRAH/gAABAgEESGFzaAEGAAEES2luZAEEAAAAD/+AAfg9Z0tCAwMDAwEGAA=="}

0 commit comments

Comments
 (0)