List of changes between different versions of Cornerstone SDK are detailed below.
2.1.2
- Added warning message on Linux about low PCI express speed to GPUs
- Added more attributes to Extensions::Effects::Sparkles effect
- Fixed issues in interaction and feedback in MultiWidgets::KeyboardWidget2
- Fixed crash in browser favicon handling
- Fixed crash in erasing spline annotations
- Fixed Windows Touch driver on Windows 10 Anniversary update
2.1.1
2.1.0
2.0.8
- Fixed touch offset issue in BrowserWidget
2.0.7
- Added improved Windows Touch Support (WindowsTouchProxy-application)
- Added way to close menus in Experience
- Added self-registration of markers to Experience
- Added command line parameter "fonts-dir" for automatic font loading
- Updated glew to 1.13
- Updated application icons to use new MultiTaction branding
- Changed SiteManager not to require a license
- Changed Experience sphere distortion to be optional
- Changed Nimble::Random to use STL-implementations
- Fixed invalid state of Widget if flags were changed while interacting with it
- Fixed incorrect "90% of GPU memory used"-warnings
- Fixed clipping of sounds
- Fixed multiple issues in Resonant
- Fixed Luminous::Image copy constructor
- Fixed unregistering directories in Valuable::FileWatcher
- Fixed deadlock in Radiant::SynchronizedQueue assignment operator
- Fixed command-line applications not responding in OS X
- Fixed excessive error prints from Radiant::UDPSocket on Linux and OS X
- Fixed handling of some video file formats
- Fixed memory leak in VideoDisplay::LibAvDecoder
- Fixed loading of mipmaps in the case when image file is changed
- Fixed tracking of framebuffers in RenderContext
2.0.7-beta1
- Added support for OS X Yosemite, Ubuntu 14.04 and Windows 8.1
- Added pass-through command line arguments for embedded Node.js.
- Added TextEditWidget::onKeyEvent that allows external handling and filtering of key events
- Added Qt ODBC plugin with Windows installation package
- Added support for changing custom fonts from JS using $.app.addFont
- Updated Node.js to latest stable version v0.10.35
- Updated Qt to 4.8.6 on Windows and OS X
- Updated Libav to 9.17
- Fixed Node.js/v8 Debian packages, they no longer conflict with system packages. This also means that node and npm binaries are no longer in PATH but can be found in /opt/multitouch-nodejs-1/bin
- Fixed memory leaks related to v8 and JavaScript wrapper code. Garbage collector is also more stable.
- Fixed ImageWidget initial state and atomic image change issues
- Fixed AttributeFlags when used from CSS files. Fixes cases like { input-flags: translate-xy; input-translate-x: false; }
- Fixed zero duration single-taps sent using Windows touch
- Fixed crash on WidgetInspector if Widget id of monitored widget changed
- Experience: Make fullscreen-mode optional
- Experience: Fixed crashes with Twitter plugin
- Experience: Various minor bug fixes
2.0.6
- Added option to control glFinish() in Luminous::MultiHead
- Changed OS X builds to use Clang 5.1
- Fixed GoogleImageSearch example startup script on OS X
2.0.5
2.0.4
2.0.3
2.0.2
- Added icons for Cornerstone applications
- Added more customization options for cornerstone.BasicDrawWidget
- Added "list-offset" to scroll MultiWidgets::ListWidget
- Added more documentation about attributes and cyclic dependencies in lambdas
- Fixed MultiWidgets::VideoWidget added with –background not looping by default
- Fixed Resonant not being exposed to JavaScript
- Fixed crash in MultiWidgets::ContentLoader when using SYNCHRONOUS loading and the instance was destroyed before loading finished
- Fixed excessive thread creation when running with NO_WATCHDOG
- Fixed content-locking not working properly in MultiTaction Experience
- Fixed synchronization issues in threaded rendering
- Fixed several issues in Site Manager
- Fixed TUIO import not working with certain 3rd party sources
- Fixed pens not being forwarded in XML stream
2.0.1
2.0.0
2.0.0-rc5
- Added eof event when ImageMovieWidget reaches the last frame of the movie
- Added the possibility to set Widget parent pointer in the constructor.
- Changed TUIO Sender is now silent by default. Adding "verbose" to its features-list makes it verbose.
- Fixed ImageMovieWidget preloading when the fps is negative.
- Fixed The merging of data from multiple Cells on Windows
- Fixed Widget::reparent(nullptr)
- Fixed the calculation of data sizes for 3D textures
- Fixed a bug with CSS rule priorities
2.0.0-rc4
2.0.0-rc3
2.0.0-rc2
- Added CloudWidget to javascript libraries
- Added possibility to override font for specific keys in KeyboardWidget
- Added possibility to set the virtual marker code through application argument –virtual-marker-code CODE
- Changed ImageMovieWidget's attribute "rotation-speed" to "interaction-speed"
- Changed MarkerLauncherWidget's interface, now sends an event on marker-down and -up
- Changed BookWidget::loadBook() to BookWidget::load()
- Changed Plugins into new namespace: Extensions. Added the classes to developer documentation
- Fixed user configuration folder creation if it doesn't exist
- Fixed crash when creating a new TapAndHoldGestureOperator
- Fixed text-alignment issues with TextWidget
- Fixed serialization of TextEditWidget, newlines were deserialized as instead of
- Fixed scrollbar behaviour in TextEditWidget when enabling "follow-cursor"
- Fixed line-height and letter-spacing in SimpleTextLayout
- Fixed crash in JavaScript interpreter when pressing CTRL-c or CTRL-d
- Fixed recursive input in ViewWidget
- Fixed to ModuleSamplePlayer::stop()
- Fixed Pong plugin startup
- Fixed performance display
- Fixed issues in software color correction
- Fixed rectangles plugin behaviour and color
- Fixed crash when changing virtual input while grabbing an object
2.0.0-rc1
- Added removeOperator(), hasOperator() to JavaScript
- Added tracked object type filtering to TapAndHoldGesture
- Added GPU id to performance display if AMD_gpu_association is supported
- Changed sceneRect() to sceneRectangle()
- Changed event sending to happen after callbacks
- Changed Momentum behaviour to be frame-rate independent
- Changed Widget::autoRaiseToTop from attribute to flag
- Changed Widget::force-rendering from attribute to flag
- Changed Qt version to 4.8.4 on Windows
- Changed Widget::is-visible with display: none/block to match CSS
- Changed FunctionTask to be more consistent with other tasks
- Changed RippleOverlayWidget to be frame-rate independent
- Removed "load" event from VideoWidget. Use "source" attribute instead.
- Fixed audio device detection on Debian
- Fixed Widget::lowerToBottom(), raise(), lower() consistent when LOCK_DEPTH is set
- Fixed potential crash in reparent()
- Fixed missing Animator::Flags macro
- Fixed BrowserWidget error pseudo-state not being reset
- Fixed animation issue in VideoControlWidget
- Fixed tasks not being cancelled when BGThread is shutdown
- Fixed interaction in ListWidget
- Fixed cursor clipping in TextEditWidget
- Fixed cursor position in TextEditWidget when changing text
- Fixed issues in image loading
- Fixed scrollbar behaviour in ScrollAreaWidget
- Fixed crash in FontCache when shutting down
- Fixed rendering latency issue
- Fixed load() functions not keeping the widget alive during the function call
- Fixed text alignment
- Fixed several shortcuts in AttributeFont
2.0.0-beta13
2.0.0-beta12
IMPORTANT: On OS X, beta12 requires a new dependency package. Other platforms don't require changes.
- Added utilities to determine if content is visible in a ViewWidget
- Added load() to VideoWidget in JavaScript
- Added orientation attribute to ListWidget
- Added implicit copy constructors to JavaScript
- Added –trace-file for Application
- Added dummy mode when using an empty config file
- Added Twinkle back to Applications
- Added contrast adjustment for VideoWidget
- Added default interactions to ScrollAreaWidget
- Changed ContentLoader to execute callbacks in main-thread
- Changed RippleOverlayWidget so it can be placed anywhere in the hierarchy
- Changed Application to dynamically load Mushy when needed
- Changed DisableInputOperator to InputFlagsOperator
- Changed processMessage() to eventProcess()
- Changed DelayOperator to TimerOperator
- Changed plugin filenames to include version and .plugin
- Changed library filenames to include version
- Fixed Nimble::RectT(const QRect&) constructor
- Fixed opacity handling in ItemFlowWidget
- Fixed lambda function in ViewWidget::setScene()
- Fixed mouse cursor issues on OS X
- Fixed Radiant::BinaryData copy operator
- Fixed crash in texture handling
- Fixed crash with recursive views
- Fixed memory consumption in image loading
- Fixed issues in glyph generation and font cache
- Fixed issues with plugin loading
- Fixed opacity in CloudWidget
- Fixed memory leak in KeyboardWidget
- Fixed several issues in the web browser
- Fixed rendering artifact in VideoControlWidget
- Fixed thread-safety issue in TextLayout generation
- Fixed cursor position in empty TextEditWidget
- Fixed error handling in VideoWidget
2.0.0-beta11
IMPORTANT: On OS X, beta11 requires a new dependency package. Other platforms don't require changes.
- Added Debian Squeeze support
- Added hilite to selected widgets in WidgetInspector
- Added support for multiple sound cards (–audio-devices)
- Added font stretch support
- Changed GrabFlags to TrackedObjectType
- Fixed ImageMovieWidget::intrinsicSize()
- Fixed thread-safety issues in image and video loading
- Fixed some incorrect OpenGL commands in rendering
- Fixed nullptr handling in JavaScript
- Fixed several issues preventing application from closing properly
- Fixed OpenGL shaders leaking memory
- Fixed ItemFlowWidget CSS issues
- Fixed FileWatcher::removePath()
- Fixed Plot2D example
2.0.0-beta10
- Added JavaScriptOperator
- Added $("css selector") syntax to find widgets in JavaScript
- Added 'follow-cursor' attribute to TextEditWidget
- Added 'clear' event to clear TextEditWidget
- Added marker bookmarks for BrowserWidget
- Added a new test application 'MultiTouchBench'
- Added 'font' support to CSS
- Added Operator::added() and Operator::removed() callbacks
- Added accessor for VideoControlWidget in VideoWidget
- Added TapAndHoldGestureRecognizer
- Added "resize-to-content" to ScrollAreaWidget
- Added support for more image codecs
- Added widget count to performance display ('e')
- Changed browser backend to restart if it crashes
- Fixed progress bar rendering in BrowserWidget
- Fixed video playback when no audio latency is available
- Fixed some OpenGL crashes due to unsupported hardware
- Fixed Operator::input() not being called sometimes
- Fixed ViewWidget style handling with the scene widget
- Fixed TextWidget::boundingBox()
- Fixed memory leak in loading images and videos
- Fixed performance issues when removing widgets
2.0.0-beta9
IMPORTANT: 2.0.0-beta9 will require newer v8 and nodejs packages. On Windows they are included in the SDK package. On OS X, you must update to cornerstone-dependencies-2.0.0-beta9 on Linux, you must update to both mt-libv8_0.9.9-mt1 and mt-nodejs_0.9.9-mt1 packages. All package files are available from the download section.
- Added CSS type for Operators
- Added WidgetInspector to applications (press 'i')
- Added 'pseudo-class-changed' event to Widgets
- Changed –ignore-virtual-input to –simultaneous-virtual-input and disabled it by default
- Fixed broken attribute listeners in RenderTargetWidget
- Fixed Widget::markerUp() never being called
- Fixed GL_SAMPLE_SHADING crashes on older GPUs by disabling it
- Fixed incorrect ALL enum in AttributeBorder
- Fixed video playback when soundtrack and video have different lengths
- Fixed defining AttributeVector values from CSS
- Fixed some layout problems in the web browser
- Fixed JavaScript rendering and v8 casting issues
2.0.0-beta8
IMPORTANT: Cornerstone 2.0.0-beta8 changed some widget input event names to make the naming more consistent. The changes are:
- "singletap" is now "single-tap"
- "interactionbegin" is now "interaction-begin"
- "interactionend" is now "interaction-end"
The old event names still work, but you will get a warning when using them. Rest of the changes are described below:
- Added option to ignore virtual input (e.g. Windows Touch)
- Added positional sound playback to Resonant::ModuleSamplePlayer
- Added JavaScriptWidget for extending widget in JavaScript
- Changed RenderTargetWidget default texture from RGB to BGRA
- Changed some widget input event names
- Fixed color names not working in selectors in CSS
- Fixed crash in CSS parser running out of file descriptors
- Fixed incorrectly placed keyboard in BrowserWidget
- Fixed incorrect CSS file listeners in Application
- Fixed byte-order in VideoWidget preview images
- Fixed text rendering with projective transforms
- Fixed incorrect CSS type in RenderTargetWidget
- Fixed performance regressions in loading images
2.0.0-beta7
- Added support for CSS3 border shortcut
- Fixed checks for non-existing config files as command line arguments
- Fixed DocumentWidget crashes
- Fixed incorrect timeout in Radiant::Thread::waitEnd(timeout)
- Fixed bug in font generation that would cause some text to render incorrectly
2.0.0-beta6
- Removed Box2D as it is not being used
- Added setWidth(), setHeight(), setSize(), setX(), setY(), setLocation() to widget that accept units (callable from JavaScript)
- Added full CSS selector syntax support to Widget::find()
- Added BrowserFrameWidget
- Added attributes to rotate, translate, and scale applications globally
- Added mouse cursor hiding
- Added text color support to DocumentWidget
- Added "source" attribute to BrowserWidget
- Added Widget::stopMotion() to stop all motion in a widget
- Changed Node::eventAddListener() to return an id
- Changed MultiHead deserialization to ignore unknown tags
- Changed ClusterBridge dead source logic to less aggressive
- Fixed high-score behaviour in MissileCommand
- Fixed layout with long time-stamps in VideoControlWidget
- Fixed Matroska file format detection
- Fixed RotateTowardsHandsOperator to always choose the shorter rotation path
- Fixed hands not being passed to tracked objects when INPUT_INCLUDE_EVERYTHING_INSIDE was set
- Fixed parser error in configuration files with valid syntax
- Fixed duplicate commands in DSPNetwork
- Fixed incorrect FPS in ClusterBridge with multiple sources
- Fixed PenExample visualization
- Fixed SpringField grabbing logic
- Fixed missing Widget.onTrackedObjectUp in JavaScript
- Fixed Radint::FlagsT not being exported to JavaScript
- Fixed object ownership when passing pointers from JavaScript to C++
2.0.0-beta5
- Fixed missile command rendering
- Fixed INPUT_INCLUDE_EVERYTHING_INSIDE for hands
- Fixed error spam when using universal CSS selectors
- Fixed Node::m_sender initialization
- Fixed RGBA videos
- Fixed BookWidget rendering artifacts
- Fixed threading issues in Canvas
- Fixed race condition in Luminous::Image::texture()
- Fixed ImageMovieWidget
- Changed video decoder from ffmpeg to libav
- Changed default texture wrap mode for images to clamp to edge from repeat
- Changed frameless mode to bypass window manager on X11
- Added Widget.addOperator() to JavaScript
- Added CSS3 background-repeat modes
- Added support for synchronous loading of images and videos
- Added line break support to TextWidget
- Added animation API to JavaScript
2.0.0-beta4
- Fixed Nimble::Rectangle constructor
- Fixed crash in ScriptRunner when no arguments are specified
- Fixed MissileCommand rendering
- Fixed Canvas layout
- Fixed a case where delayed events in widgets could get lost
- Fixed potential crashes in deserialization
- Fixed AnimatorRotation
- Fixed ripple overlay (–withripple)
- Fixed some missing JavaScript callbacks in Widget
- Fixed font cache crash on application exit if caches were still being generated
- Changed Operator::input() API
- Changed the built-in performance display
2.0.0-beta3
- Fixed plugin loading
- Fixed watchdog behavior when waiting for activation
- Fixed wrong coordinate system in BookWidget input
- Fixed bug in CSS letter spacing
- Fixed various CSS selector matching errors
- Fixed slow finger movement in Twinkle
- Fixed lambda-related memory corruption when reparenting widgets
- Fixed potential infinite loop in TextLayout::boundingBox()
- Fixed video looping not properly toggled after video was opened
- Fixed INPUT_PASS_TO_CHILDREN input flag
- Fixed INPUT_INCLUDE_EVERYTHING_INSIDE input flag
- Fixed operator serialization
- Changed DELETE_ME to REMOVE_ME in Widget
- Changed grabbing to use flags
- Changed CORNERSTONE_SDK and CORNERSTONE_SDK_PATH to CORNERSTONE_ROOT
- Added "child-removed" event to Widget
- Added getAttribute() to JavaScript
- Added VC2012 x64 redistributable to the installer
- Added INPUT_KEEP_GRABS to default input flags
- Added stencil buffer support to rendering
- Added trackedObjectUp/Down callbacks to Widget
2.0.0-beta1
- Support for writing applications with Javascript.
- Support for rich text rendering, with complex layouts.
- Support for several text effects (outline, shadow, blur).
- Optimized rendering engine, with a streamlined rendering API.
- Use of C++ smart pointers to make memory management easier.
- Updated Widget API to provide more callbacks for input processing (fingerUp/Down, markerUp/Down etc.) and less need to call parent implementations for various functions.
- Support for using C++11, for example by using Lambdas with event processing.
- New web browser, that works on Windows, Linux and OS X.
- Support for practically all CSS 2.1 features, and some CSS 3.0 features.
- Automatic real-time reloading of CSS files, for faster software development.
- Unified tracking API for fingers, hands, markers and pens.
- New video player with support for several simultaneous 4k videos and video streaming.
- Simplified base application class.