From ecdf859b6ce481abfd530425dcf6f0f764bd0001 Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Tue, 28 Dec 2021 03:01:00 +0000 Subject: CTAN sync 202112280300 --- graphics/asymptote/jsfile.h | 95 +++++++++++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 33 deletions(-) (limited to 'graphics/asymptote/jsfile.h') diff --git a/graphics/asymptote/jsfile.h b/graphics/asymptote/jsfile.h index af54721361..430655d4ac 100644 --- a/graphics/asymptote/jsfile.h +++ b/graphics/asymptote/jsfile.h @@ -6,63 +6,92 @@ #include "triple.h" #include "locate.h" #include "prcfile.h" +#include "abs3doutfile.h" namespace camp { -class jsfile { +class jsfile : public abs3Doutfile { jsofstream out; public: - jsfile() {} - ~jsfile() {} + jsfile(); + jsfile(string name); + ~jsfile(); - void copy(string name, bool header=false); + void close() override; + + void addCurve(const triple& z0, const triple& c0, + const triple& c1, const triple& z1, + const triple& Min, const triple& Max) override; + + void addCurve(const triple& z0, const triple& z1, + const triple& Min, const triple& Max) override; + + void addPixel(const triple& z0, double width, + const triple& Min, const triple& Max) override; + void addTriangles(size_t nP, const triple* P, size_t nN, const triple* N, + size_t nC, const prc::RGBAColour* C, size_t nI, + const uint32_t (*PI)[3], const uint32_t (*NI)[3], + const uint32_t (*CI)[3], + const triple& Min, const triple& Max) override; + + void addCylinder(const triple& center, double radius, double height, + const double& polar, const double& azimuth, + bool core) override; + void addDisk(const triple& center, double radius, + const double& polar, const double& azimuth) override; + void addTube(const triple *g, double width, + const triple& Min, const triple& Max, bool core) override; + + void addMaterial(Material const& mat) override; + + void addSphere(triple const& center, double radius) override; + + void addHemisphere(triple const& center, double radius, double const& polar, double const& azimuth) override; + + void addPatch(triple const* controls, triple const& Min, triple const& Max, prc::RGBAColour const* c) override; + + void + addStraightPatch(triple const* controls, triple const& Min, triple const& Max, prc::RGBAColour const* c) override; + + void + addBezierTriangle(triple const* control, triple const& Min, triple const& Max, prc::RGBAColour const* c) override; + + void addStraightBezierTriangle(triple const* controls, triple const& Min, triple const& Max, + prc::RGBAColour const* c) override; + + + void svgtohtml(string name); +#ifdef HAVE_LIBGLM + void precision(int digits) override {out.precision(digits);} +#endif + +protected: + void copy(string name, bool header=false); void header(string name); void meta(string name, bool scalable=true); void finish(string name); void footer(string name); - void svgtohtml(string name); -#ifdef HAVE_LIBGLM - void precision(int digits) {out.precision(digits);} +#ifdef HAVE_LIBGLM void open(string name); void comment(string name); void addColor(const prc::RGBAColour& c); void addIndices(const uint32_t *I); - void addPatch(const triple* controls, size_t n, const triple& Min, + void addRawPatch(const triple* controls, size_t n, const triple& Min, const triple& Max, const prc::RGBAColour *colors, size_t nc); - - void addCurve(const triple& z0, const triple& c0, - const triple& c1, const triple& z1, - const triple& Min, const triple& Max); - - void addCurve(const triple& z0, const triple& z1, - const triple& Min, const triple& Max); - - void addPixel(const triple& z0, double width, - const triple& Min, const triple& Max); - - void addMaterial(size_t index); - - void addTriangles(size_t nP, const triple* P, size_t nN, const triple* N, - size_t nC, const prc::RGBAColour* C, size_t nI, - const uint32_t (*PI)[3], const uint32_t (*NI)[3], - const uint32_t (*CI)[3], - const triple& Min, const triple& Max); void addSphere(const triple& center, double radius, bool half=false, const double& polar=0.0, const double& azimuth=0.0); - void addCylinder(const triple& center, double radius, double height, - const double& polar, const double& azimuth, - bool core=false); - void addDisk(const triple& center, double radius, - const double& polar=0.0, const double& azimuth=0.0); - void addTube(const triple *g, double width, - const triple& Min, const triple& Max, bool core=false); + + +private: + bool finished; + string fileName; #endif }; -- cgit v1.2.3