1. 17 Jun, 2014 1 commit
  2. 16 Jun, 2014 1 commit
    • Christian Schulte zu Berge's avatar
      Two small updates: · 0f08b399
      Christian Schulte zu Berge authored
      * SliceExtractor FitToWindow property defaults to true to mimic old behavior per default
      * PointPredicateRenderArea renders y axis label
  3. 14 Jun, 2014 1 commit
  4. 11 Jun, 2014 3 commits
  5. 10 Jun, 2014 4 commits
  6. 08 Jun, 2014 3 commits
  7. 04 Jun, 2014 2 commits
  8. 31 May, 2014 1 commit
  9. 30 May, 2014 1 commit
  10. 16 May, 2014 1 commit
    • Christian Schulte zu Berge's avatar
      Merge branch 'swig' into 'development' · 418c5e78
      Christian Schulte zu Berge authored
      Initial implementation of a Lua scripting layer
      Over the last several months a scripting layer that allows pipelines to be defined in Lua has been developed. It uses SWIG to generate Lua modules with bindings for CAMPVis classes. It is an opt-in feature, and tries to be as non-intrusive to standard CAMPVis code as possible.
      The implementation of the scripting layer has reached a state where it's possible to write fully-functional pipelines in Lua. In fact, 2 existing pipelines have been reimplemented in Lua for testing purposes and added to the project. In my opinion, this marks a good point to merge the initial implementation into the development branch — that would make it easier to test and improve it.
      Naturally, there are still many rough edges that should eventually be dealt with, but they can be addressed separately as new features:
      - bindings coverage is rather low
      - Lua pipelines currently need to be statically registered
      - pipeline definition syntax could be streamlined (e.g. by getting rid of the `instance` global variable)
  11. 11 May, 2014 3 commits
    • Artur Grunau's avatar
      Update the Lua submodule to the newest version · 2a838d8f
      Artur Grunau authored
      The CMake-enabled version of Lua that CAMPVis' scripting layer uses
      hasn't been updated in a while. Synchronise it with upstream now that
      we're getting ready to merge the `swig` branch in.
      References #1
    • Artur Grunau's avatar
      Remove `scripting/testapp.cpp` · e5b278ec
      Artur Grunau authored
      `scripting/testapp.cpp` contains a simple console application that was
      used to test CAMPVis' scripting layer before it was ready for
      integration with the main GUI application. Now that Lua pipelines can be
      registered and executed the same way regular ones are, the test
      application is no longer needed. Consequently, this commit removes it
      from the project.
      References #1
    • Artur Grunau's avatar
      Improve documentation of LuaPipeline and related classes · dc76b535
      Artur Grunau authored
      Glue classes that live in the `scripting/glue` directory were mostly
      undocumented, and the documentation of LuaPipeline was incomplete.
      Improve the documentation of LuaPipeline and LuaVmState. Document
      LuaTable, RegularLuaTable and GlobalLuaTable from the `scripting/glue`
      References #1
  12. 10 May, 2014 19 commits
    • Artur Grunau's avatar
      Add a light source to Lua pipelines · 080b3ae3
      Artur Grunau authored
      Starting with commit d6fec679, pipelines need to provide their own light
      source to function properly. Lua pipelines didn't, which caused them to
      fail to render.
      Add a SWIG wrapper for LightSourceProvider to make it accessible from
      Lua. Instantiate and attach a light source in existing Lua pipelines.
      References #1
    • Artur Grunau's avatar
      Adapt bindings to the new invalidation level system · 16ee3af2
      Artur Grunau authored
      Commit 293d43dd introduced breaking changes to the way invalidation
      levels are handled. As a result, property and processor-related bindings
      failed to compile.
      Update all SWIG bindings affected by the above problem to make them
      compatible with the current property and processor-related APIs.
      References #1
    • Artur Grunau's avatar
      Hide superfluous targets provided by LuaDist · 0786655c
      Artur Grunau authored
      LuaDist, the CMake-enabled distribution of Lua that the scripting
      feature uses on Windows, provides several targets (lua, luac, wlua) for
      which there's not much use in CAMPVis. This commit hides them from the
      target list to make project files generated by CMake cleaner.
      References #1
    • Artur Grunau's avatar
      Better error message when Lua submodule is missing · 1aa809a1
      Artur Grunau authored
      If CAMPVIS_BUILD_LIB_LUA was set but the Lua Git submodule wasn't checked
      out, the user would get a generic "could not find CMakeLists.txt" error
      message which wasn't of much help.
      Log a custom error message that provides a hint how to fix the problem in
      the above situation.
      References #1
    • Artur Grunau's avatar
      FindLua: only set LUA_FOUND if CAMPVIS_BUILD_LIB_LUA is ON · 2a946aa2
      Artur Grunau authored
      The FindLua CMake script would previously set LUA_FOUND if the directory
      containing the source code of Lua existed without checking if it was
      actually part of the build. This could lead to compilation errors if
      CAMPVIS_BUILD_LIB_LUA was disabled.
      Add an additional check to FindLua to only set LUA_FOUND if
      CAMPVIS_BUILD_LIB_LUA is ON and the directory containing the source code
      of Lua exists.
      References #1
    • Artur Grunau's avatar
      Disable the scripting feature by default · 7d4857ae
      Artur Grunau authored
      Scripting was so far enabled by default on the `swig` branch to make its
      development easier. However, it should be an opt-in feature once it's
      merged in. As that time is quickly approaching, the scripting feature has
      been disabled by default.
      References #1
    • Artur Grunau's avatar
      Remove the `campvis-scripting-test` target · bdc4817c
      Artur Grunau authored
      Early in the development of the scripting feature the
      `campvis-scripting-test` target was used to test bindings generated by
      SWIG. Now that pipelines defined in Lua have been integrated into the
      main application (where the bindings they use can be tested much more
      thoroughly) the console test application is no longer needed and has
      been removed.
      References #1
    • Artur Grunau's avatar
      Add support for all signal arities to SWIG wrappers for siglot · 9ee1138f
      Artur Grunau authored
      SWIG wrappers for siglot only supported unary signals until now. This
      commit adds support for all remaining signal arities to make it possible
      to connect to arbitrary signals from Lua.
      The implementation makes heavy use of templates but, due to the
      limitations of VS 2010 (no variadic templates), still contains lots of
      duplicated boilerplate code.
      `sigslot.i` has been moved from `scripting/` to `ext/sigslot/` to keep
      it close to the code it's wrapping.
      References #1
    • Artur Grunau's avatar
      Add support for disconnecting slots defined in Lua · 2d4761ba
      Artur Grunau authored
      Up until now it wasn't possible to manually disconnect slots defined in
      Lua: they could only be disconnected automatically when their
      corresponding signals were destroyed.
      Add a special `disconnect` method to sigslot's Lua wrapper that makes it
      possible to manually disconnect slots defined in Lua.
      References #1
    • Artur Grunau's avatar
      Guard accesses to Lua state with a mutex · a337b188
      Artur Grunau authored
      Now that support for signals and slots has been added to Lua pipelines,
      each Lua state has to be protected with a mutex because it's not
      thread-safe and different threads (running LuaPipeline or a processor
      attached to it) may try to access it simultaneously.
      The mutex needs to be recursive due to the fact that Lua code can
      trigger the emission (or copying) of signals that have slots defined it
      Lua connected to them. This in turn causes the state to be accessed from
      a thread that, unbeknownst to it, already holds a lock on the mutex.
      A pointer to the mutex is stored in the state's registry; this way code
      that accesses Lua state directly (e.g. connections between sigslot's
      signals and slots defined in Lua) can retrieve and lock it when
      References #1
    • Artur Grunau's avatar
      Make Lua connections work with copyable signals · 8f1dd0c9
      Artur Grunau authored
      Until now, Lua connections had only stub implementations of several
      sigslot's API methods, including clone() and getdest(). This led to
      crashes when signals that contained Lua connections were copied.
      Provide proper (if somewhat forced) implementations of clone() and
      getdest() for Lua connections. This makes Lua connections work with
      signals that may be copied.
      References #1
    • Artur Grunau's avatar
      Scripting: fixes related to building shared libs · 2e595fd0
      Artur Grunau authored
      Now that BUILD_SHARED_LIBS is a top-level CAMPVis option, we could take
      advantage of that and make the way we build Lua more robust. Also,
      campvis-scripting has been marked as static library to prevent the build
      from failing when BUILD_SHARED_LIBS is set.
      References #1
    • Artur Grunau's avatar
      Reimplement VolumeRendererDemo in Lua · 497b2b38
      Artur Grunau authored
      To properly test the initial support for slot functions defined in Lua,
      VolumeRendererDemo has been reimplement as a Lua pipeline.
      References #1
    • Artur Grunau's avatar
      Initial support for using Lua functions as slots · 785ba7de
      Artur Grunau authored
      Certain types of pipelines need to react to changes in their constituent
      processors. CAMPVis uses a signal-slot mechanism (based on the sigslot
      library) for this purpose. Up until now, however, there was no way to
      connect to a signal from a pipeline defined in Lua.
      This commit adds initial support for connecting Lua functions to
      sigslot's signals. The current implementation only works with unary
      signals, and should be considered a proof of concept. To test it,
      AbstractProcessor's s_validated signal has been wrapped using SWIG.
      References #1
    • Artur Grunau's avatar
      Get rid of ExtendedAutoEvaluationPipeline · d41681ec
      Artur Grunau authored
      Lua pipelines need to access certain protected properties of
      AbstractPipeline but can't reference them directly as they don't
      actually inherit from any class. ExtendedAutoEvaluationPipeline was
      added to generated bindings to expose public getters for the properties
      in question. LuaPipeline instances could then be cast to
      ExtendedAutoEvaluationPipeline to give Lua code access to these new
      However, now that HasPropertyCollection has been wrapped, the protected
      properties can be accessed via its getProperty method. This approach is
      preferred as it's much cleaner and simplifies our interface files. As a
      result, ExtendedAutoEvaluationPipeline has been removed.
      References #1
    • Artur Grunau's avatar
      Lua bindings: wrap campvis::VolumeRenderer · de05bfe3
      Artur Grunau authored
      In order to reimplement VolumeRendererDemo in Lua
      campvis::VolumeRenderer from the vis module has been wrapped using SWIG.
      References #1
    • Artur Grunau's avatar
      Add Lua bindings for several classes from campvis-core · 816fdc50
      Artur Grunau authored
      Several classes from campvis-core that are needed to reimplement
      VolumeRendererDemo in Lua have been wrapped using SWIG. Among the
      classes are: ImageData, CameraProperty,
      TrackballNavigationEventListener, and their respective super-classes.
      References #1
    • Artur Grunau's avatar
      Lua bindings: wrap tgt::Vector3 and tgt::Camera · 1fc1219c
      Artur Grunau authored
      As a prerequisite to wrapping campvis::CameraProperty, bindings for two
      new classes from TGT have been added: tgt::Vector3 and tgt::Camera.
      References #1
    • Artur Grunau's avatar
      Add support for automatic registration of Lua pipelines · c2348225
      Artur Grunau authored
      As there's currently only one Lua pipeline, we could so far get away
      with storing it in the `scripting` directory, giving it a generic name
      and registering it manually. However, this approach won't work anymore
      once additional Lua pipelines start to be implemented.
      To support multiple Lua pipelines, implement a registration mechanism
      for scripted pipelines based on PipelineFactory and similar to
      PipelineRegistrar. It scans each active module's `pipelines` directory
      for Lua pipelines, parses them and generates a registration header that,
      when included, registers them with PipelineFactory.
      As a result of the above, the test Lua pipeline had to be moved to
      `modules/preprocessing/pipelines/` and could be renamed
      References #1