void TNMParallelCoordinates::process() { // Activate the user-outport as the rendering target _outport.activateTarget(); // Clear the buffer _outport.clearTarget(); // Render the handles renderHandles(); // Render the parallel coordinates lines renderLines(); // We are done with the visual part _outport.deactivateTarget(); // Activate the internal port used for picking _privatePort.activateTarget(); // Clear that buffer as well _privatePort.clearTarget(); // Render the handles with the picking information encoded in the red channel renderHandlesPicking(); // Render the lines with the picking information encoded in the green/blue/alpha channel renderLinesPicking(); // We are done with the private render target _privatePort.deactivateTarget(); }
void TNMParallelCoordinates::process() { if (!_inport.hasData()) return; // If the underlying data has changed, we need to extract the names of the data values // and make them available in the combobox for the coloring options if (_inport.hasChanged()) { _colorMethod.setOptions(std::vector<Option<int> >()); for (size_t i = 0; i < _inport.getData()->valueNames.size(); ++i) { std::stringstream s; s << i; _colorMethod.addOption(s.str(), _inport.getData()->valueNames[i], i); s.str(""); } _colorMethod.updateWidgets(); } // Activate the user-outport as the rendering target _outport.activateTarget(); // Clear the buffer _outport.clearTarget(); // Render the handles renderHandles(); // Render the parallel coordinates lines renderLines(); // Render text renderText(); // We are done with the visual part _outport.deactivateTarget(); // Activate the internal port used for picking _privatePort.activateTarget(); // Clear that buffer as well _privatePort.clearTarget(); // Render the handles with the picking information encoded in the red channel renderHandlesPicking(); // Render the lines with the picking information encoded in the green/blue/alpha channel renderLinesPicking(); // We are done with the private render target _privatePort.deactivateTarget(); }