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();
}