GithubHelp home page GithubHelp logo

garandor / pfcrender Goto Github PK

View Code? Open in Web Editor NEW
0.0 0.0 0.0 10.77 MB

A tool for the visualization of Lindenmayer system iterates

Home Page: https://garandor.github.io/pfcrender/

License: GNU General Public License v3.0

CMake 6.54% C++ 91.33% QML 2.13%
2d-graphics plane-filling-curves qt5-gui qtquick

pfcrender's People

Contributors

garandor avatar

Watchers

 avatar  avatar

pfcrender's Issues

Build list of commandline arguments dynamically at compile time

Usabilitywise it would be very nice to have built-in program parts behave the way plugins do when exposing their commandline options - i.e. have them defined in the actual classes that need them, and create a list of the options dynamically.

Since - unlike plugins - built-in code has not been run by the time the commandline options are interpreted, this can not be done at runtime, but must instead be done at compile time, or (since options are spread over multiple compilation units) link time.

The only way to accomplish this goal found in research is by using fairly complex template metaprogramming coupled with a preprocessor macro
https://stackoverflow.com/questions/18701798/building-and-accessing-a-list-of-types-at-compile-time

Actually implementing this seems only marginally relevant to the scope of this work (since statically managing a list of options centrally only impacts the programmer, not the user), so it is left for future improvement

Create a --help page that shows available plugins

Pluginnames are not listed, all options are sorted alphabetically and shown together, this will get overwhelming quickly.

At least show available plugins and group cli options by the plugins that need em

Status quo:

Usage: ./pfcrender [options]
pfcrender

Options:
-h, --help Displays this help.
-v, --version Displays version information.
--it Number LSYS iterations to compute
--rules Comma seperated list of LSYS axiom and rules for
stringsubst

Refactor common part to library

So plugins can link against it instead of compiling in necessary cpps

set (SVG_SRC

"${CMAKE_SOURCE_DIR}/src/Common/Plugin_Registry.cpp"
"${CMAKE_SOURCE_DIR}/src/Common/Config_Registry.cpp"
"${CMAKE_SOURCE_DIR}/src/Common/CLIParser.cp

=> Target_link_libraries(SVG private Common)

Improve state saving in file

The current state saving in file mechanism is a bit dumb, essentially forcing --clear usage in most cases. Find a better way (e.g. --store / --restore flags)

Enable C++17 Support

Depends on Travis and AppVeyor Support

Enables refactoring getOpt() from Config_Registry to return std::optional

Plugin System refactoring

CLI:
Calling plugin names as positional arguments, options as switches
Enables keeping calling sequence in order

Plugins:
Export Factories instead of Models

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.