Skip to content

Commit

Permalink
Add support for -n (Nop) option
Browse files Browse the repository at this point in the history
  • Loading branch information
FliegendeWurst committed Aug 1, 2018
1 parent 483825d commit 73a2a69
Show file tree
Hide file tree
Showing 5 changed files with 41 additions and 4 deletions.
4 changes: 2 additions & 2 deletions Makefile
Expand Up @@ -51,15 +51,15 @@ full.render.js: src/boilerplate/pre-module-full.js build-full/module.js src/boil

build-full/module.js: src/viz.c
emcc --version | grep $(EMSCRIPTEN_VERSION)
emcc -Oz --memory-init-file 0 -s USE_ZLIB=1 -s MODULARIZE=0 -s LEGACY_VM_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s EXPORTED_FUNCTIONS="['_vizRenderFromString', '_vizCreateFile', '_vizSetY_invert', '_vizLastErrorMessage', '_dtextract', '_Dtqueue']" -s EXPORTED_RUNTIME_METHODS="['Pointer_stringify', 'ccall', 'UTF8ToString']" -o $@ $< -I$(PREFIX_FULL)/include -I$(PREFIX_FULL)/include/graphviz -L$(PREFIX_FULL)/lib -L$(PREFIX_FULL)/lib/graphviz -lgvplugin_core -lgvplugin_dot_layout -lgvplugin_neato_layout -lcdt -lcgraph -lgvc -lgvpr -lpathplan -lexpat -lxdot
emcc -Oz --memory-init-file 0 -s USE_ZLIB=1 -s MODULARIZE=0 -s LEGACY_VM_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s EXPORTED_FUNCTIONS="['_vizRenderFromString', '_vizCreateFile', '_vizSetY_invert', '_vizSetNop', '_vizLastErrorMessage', '_dtextract', '_Dtqueue']" -s EXPORTED_RUNTIME_METHODS="['Pointer_stringify', 'ccall', 'UTF8ToString']" -o $@ $< -I$(PREFIX_FULL)/include -I$(PREFIX_FULL)/include/graphviz -L$(PREFIX_FULL)/lib -L$(PREFIX_FULL)/lib/graphviz -lgvplugin_core -lgvplugin_dot_layout -lgvplugin_neato_layout -lcdt -lcgraph -lgvc -lgvpr -lpathplan -lexpat -lxdot


lite.render.js: src/boilerplate/pre-module-lite.js build-lite/module.js src/boilerplate/post-module.js
sed -e s/{{VIZ_VERSION}}/$(VIZ_VERSION)/ -e s/{{GRAPHVIZ_VERSION}}/$(GRAPHVIZ_VERSION)/ -e s/{{EMSCRIPTEN_VERSION}}/$(EMSCRIPTEN_VERSION)/ $^ > $@

build-lite/module.js: src/viz.c
emcc --version | grep $(EMSCRIPTEN_VERSION)
emcc -D VIZ_LITE -Oz --memory-init-file 0 -s USE_ZLIB=1 -s MODULARIZE=0 -s LEGACY_VM_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s EXPORTED_FUNCTIONS="['_vizRenderFromString', '_vizCreateFile', '_vizSetY_invert', '_vizLastErrorMessage', '_dtextract', '_Dtqueue', '_dtopen', '_dtdisc', '_Dtobag', '_Dtoset', '_Dttree']" -s EXPORTED_RUNTIME_METHODS="['Pointer_stringify', 'ccall', 'UTF8ToString']" -o $@ $< -I$(PREFIX_LITE)/include -I$(PREFIX_LITE)/include/graphviz -L$(PREFIX_LITE)/lib -L$(PREFIX_LITE)/lib/graphviz -lgvplugin_core -lgvplugin_dot_layout -lcdt -lcgraph -lgvc -lgvpr -lpathplan -lxdot
emcc -D VIZ_LITE -Oz --memory-init-file 0 -s USE_ZLIB=1 -s MODULARIZE=0 -s LEGACY_VM_SUPPORT=1 -s NO_DYNAMIC_EXECUTION=1 -s EXPORTED_FUNCTIONS="['_vizRenderFromString', '_vizCreateFile', '_vizSetY_invert', '_vizSetNop', '_vizLastErrorMessage', '_dtextract', '_Dtqueue', '_dtopen', '_dtdisc', '_Dtobag', '_Dtoset', '_Dttree']" -s EXPORTED_RUNTIME_METHODS="['Pointer_stringify', 'ccall', 'UTF8ToString']" -o $@ $< -I$(PREFIX_LITE)/include -I$(PREFIX_LITE)/include/graphviz -L$(PREFIX_LITE)/lib -L$(PREFIX_LITE)/lib/graphviz -lgvplugin_core -lgvplugin_dot_layout -lcdt -lcgraph -lgvc -lgvpr -lpathplan -lxdot


$(PREFIX_FULL):
Expand Down
1 change: 1 addition & 0 deletions src/boilerplate/post-module.js
Expand Up @@ -8,6 +8,7 @@ function render(instance, src, options) {
}

instance['ccall']('vizSetY_invert', 'number', ['number'], [options.yInvert ? 1 : 0]);
instance['ccall']('vizSetNop', 'number', ['number'], [options.nop ? options.nop : 0]);

var resultPointer = instance['ccall']('vizRenderFromString', 'number', ['string', 'string', 'string'], [src, options.format, options.engine]);
var resultString = instance['Pointer_stringify'](resultPointer);
Expand Down
4 changes: 2 additions & 2 deletions src/index.js
Expand Up @@ -149,7 +149,7 @@ class Viz {
}
}

renderString(src, { format = 'svg', engine = 'dot', files = [], images = [], yInvert = false } = {}) {
renderString(src, { format = 'svg', engine = 'dot', files = [], images = [], yInvert = false, nop = 0 } = {}) {
for (let i = 0; i < images.length; i++) {
files.push({
path: images[i].path,
Expand All @@ -159,7 +159,7 @@ class Viz {
});
}

return this.wrapper.render(src, { format, engine, files, images, yInvert });
return this.wrapper.render(src, { format, engine, files, images, yInvert, nop });
}

renderSVGElement(src, options = {}) {
Expand Down
6 changes: 6 additions & 0 deletions src/viz.c
Expand Up @@ -2,6 +2,7 @@
#include <emscripten.h>

extern int Y_invert;
extern int Nop;

extern gvplugin_library_t gvplugin_core_LTX_library;
extern gvplugin_library_t gvplugin_dot_layout_LTX_library;
Expand Down Expand Up @@ -34,6 +35,11 @@ void vizSetY_invert(int invert) {
Y_invert = invert;
}

void vizSetNop(int value) {
if (value != 0)
Nop = value;
}

char* vizRenderFromString(const char *src, const char *format, const char *engine) {
GVC_t *context;
Agraph_t *graph;
Expand Down
30 changes: 30 additions & 0 deletions test-browser/modules/options.js
Expand Up @@ -32,3 +32,33 @@ QUnit.test("should accept yInvert option", function(assert) {
assert.deepEqual(regular, regular2, "Subsequent calls not setting yInvert should return the regular positions");
});
});

QUnit.test("should accept nop option and produce different outputs", function(assert) {
var viz = new Viz();
var regular;
var nop1;
var nop2;
var graphSrc = "digraph { a[pos=\"10,20\"]; b[pos=\"12,22\"]; a -> b [pos=\"20,20 20,20 20,20 20,20\"]; }";

return viz.renderString(graphSrc, { engine: "neato", format: "svg" })
.then(function(result) {
regular = result;
})
.then(function() {
return viz.renderString(graphSrc, { engine: "neato", format: "svg", nop: 1 })
})
.then(function(result) {
nop1 = result;

assert.ok(nop1 != regular, "Nop = 1 should produce different result than default");
})
.then(function() {
return viz.renderString(graphSrc, { engine: "neato", format: "svg", nop: 2 })
})
.then(function(result) {
nop2 = result;

assert.ok(nop2 != regular, "Nop = 2 should produce different result than default");
assert.ok(nop2 != nop1, "Nop = 2 should produce different result than Nop = 1");
});
});

0 comments on commit 73a2a69

Please sign in to comment.