Skip to content

Commit

Permalink
Add user-defined formulas via ExprTk
Browse files Browse the repository at this point in the history
  • Loading branch information
jblang committed May 9, 2019
1 parent 7707893 commit 605b7dd
Show file tree
Hide file tree
Showing 9 changed files with 39,117 additions and 86 deletions.
6 changes: 5 additions & 1 deletion XaoS.pro
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,8 @@ TEMPLATE = app

QT += opengl

LIBS += -lmuparserx

macx {
TARGET = XaoS
} else {
Expand All @@ -16,13 +18,15 @@ CONFIG(debug, debug|release) {
win32:CONFIG += console
}

#DEFINES += USE_EXPRTK

DESTDIR = $$PWD/bin

include($$PWD/src/engine/engine.pri)
include($$PWD/src/filter/filter.pri)
include($$PWD/src/ui/ui.pri)
include($$PWD/src/ui-hlp/ui-hlp.pri)
include($$PWD/src/util/util.pri)
include($$PWD/src/sffe/sffe.pri)
#include($$PWD/src/sffe/sffe.pri)
include($$PWD/src/ui/ui-drv/qt/qt.pri)
include($$PWD/src/include/include.pri)
80 changes: 41 additions & 39 deletions src/engine/engine.pri
Original file line number Diff line number Diff line change
@@ -1,39 +1,41 @@
SOURCES += \
$$PWD/formulas.c \
$$PWD/fractal.c \
$$PWD/btrace.c \
$$PWD/palettef.c \
$$PWD/emboss.c \
$$PWD/star.c \
$$PWD/anti.c \
$$PWD/dither.c \
$$PWD/edge.c \
$$PWD/edge2.c \
$$PWD/rotate.c \
$$PWD/zoom.c \
$$PWD/blur.c \
$$PWD/interlace.c \
$$PWD/itersmall.c \
$$PWD/stereogram.c \
$$PWD/3d.c \
$$PWD/subwindow.c \
$$PWD/plane.c \
$$PWD/julia.c \
$$PWD/i386.c

HEADERS += \
$$PWD/calculate.h \
$$PWD/julia.h

OTHER_FILES += \
$$PWD/3dd.c \
$$PWD/btraced.c \
$$PWD/docalc.c \
$$PWD/edged.c \
$$PWD/edge2d.c \
$$PWD/docalc.c \
$$PWD/paletted.c \
$$PWD/rotated.c \
$$PWD/stard.c \
$$PWD/stereod.c \
$$PWD/zoomd.c
SOURCES += \
$$PWD/formulas.c \
$$PWD/fractal.c \
$$PWD/btrace.c \
$$PWD/palettef.c \
$$PWD/emboss.c \
$$PWD/star.c \
$$PWD/anti.c \
$$PWD/dither.c \
$$PWD/edge.c \
$$PWD/edge2.c \
$$PWD/rotate.c \
$$PWD/zoom.c \
$$PWD/blur.c \
$$PWD/interlace.c \
$$PWD/itersmall.c \
$$PWD/stereogram.c \
$$PWD/3d.c \
$$PWD/subwindow.c \
$$PWD/plane.c \
$$PWD/julia.c \
$$PWD/i386.c \
$$PWD/exprtk.cpp

HEADERS += \
$$PWD/calculate.h \
$$PWD/julia.h \
$$PWD/exprtk.hpp

OTHER_FILES += \
$$PWD/3dd.c \
$$PWD/btraced.c \
$$PWD/docalc.c \
$$PWD/edged.c \
$$PWD/edge2d.c \
$$PWD/docalc.c \
$$PWD/paletted.c \
$$PWD/rotated.c \
$$PWD/stard.c \
$$PWD/stereod.c \
$$PWD/zoomd.c
68 changes: 68 additions & 0 deletions src/engine/exprtk.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,68 @@
#include "aconfig.h"
#ifdef USE_EXPRTK
#include "exprtk.h"
#include "exprtk.hpp"
#include <complex>

typedef std::complex<double> complex_t;
typedef exprtk::symbol_table<complex_t> symbol_table_t;
typedef exprtk::expression<complex_t> expression_t;
typedef exprtk::parser<complex_t> parser_t;


bool operator<(const complex_t& a, const complex_t& b)
{
return false;
}

bool operator<=(const complex_t& a, const complex_t& b)
{
return false;
}

bool operator>(const complex_t& a, const complex_t& b)
{
return false;
}

bool operator>=(const complex_t& a, const complex_t& b)
{
return false;
}

static complex_t z;
static complex_t c;
static symbol_table_t symbol_table;
static expression_t expression;
static parser_t parser;

extern "C" {

void exprtk_setexpr(const char* expression_string)
{
parser.compile(expression_string, expression);
}

void exprtk_init()
{

symbol_table.add_variable("z", z);
symbol_table.add_variable("c", c);
symbol_table.add_constants();
expression.register_symbol_table(symbol_table);
exprtk_setexpr("z*z+c");
}

exprtk_cmplx exprtk_eval(double zre, double zim, double cre, double cim)
{
z = complex_t(zre, zim);
c = complex_t(cre, cim);
z = expression.value();
exprtk_cmplx ret;
ret.re = z.real();
ret.im = z.imag();
return ret;
}

}
#endif
Loading

0 comments on commit 605b7dd

Please sign in to comment.