Changeset 358:9d02fc8dbf64 in finroc_tools_gui-java


Ignore:
Timestamp:
13.11.2019 12:04:44 (11 months ago)
Author:
Max Reichardt <max.reichardt@…>
Branch:
default
Phase:
public
Message:

Adds 'scale factor' for plotted channels in Plotter widget - and fixes input data channel selection

File:
1 edited

Legend:

Unmodified
Added
Removed
  • widgets/Plotter.java

    r355 r358  
    101101        int channelX = 0, channelY = 0; 
    102102        int valueSkip = 0; 
     103        double scaleFactor = 1; 
    103104 
    104105        ColorMode colorMode = ColorMode.UNICOLOR_HEAT_0; 
     
    367368                    boolean firstTimestampSet = false; 
    368369 
    369                     tempChannelIndices[InputBufferPortTypes.X.ordinal()] = currentData[InputBufferPortTypes.X.ordinal()] != null ? Math.max(0, Math.min(c.channelX, currentData[InputBufferPortTypes.X.ordinal()].getChannels().length)) : 0; 
    370                     tempChannelIndices[InputBufferPortTypes.Y.ordinal()] = currentData[InputBufferPortTypes.Y.ordinal()] != null ? Math.max(0, Math.min(c.channelY, currentData[InputBufferPortTypes.Y.ordinal()].getChannels().length)) : 0; 
    371                     tempChannelIndices[InputBufferPortTypes.HEAT.ordinal()] = currentData[InputBufferPortTypes.HEAT.ordinal()] != null ? Math.max(0, Math.min(c.channelHeat, currentData[InputBufferPortTypes.HEAT.ordinal()].getChannels().length)) : 0; 
     370                    tempChannelIndices[InputBufferPortTypes.X.ordinal()] = c.channelX; 
     371                    tempChannelIndices[InputBufferPortTypes.Y.ordinal()] = c.channelY; 
     372                    tempChannelIndices[InputBufferPortTypes.HEAT.ordinal()] = c.channelHeat; 
    372373 
    373374                    for (int i = 0; i < c.consistentDataPorts.length; i++) { 
     
    389390                                } 
    390391 
     392                                final double scaleFactor = (c.scaleFactor == 0 || type != InputBufferPortTypes.Y.ordinal()) ? 1 : c.scaleFactor; 
    391393                                if (valueCount == 0) { 
    392394                                    c.valueRangeMin[type] = 0; 
     
    412414                                        IntList input = (IntList)inputData; 
    413415                                        for (int k = 0; k < valueCount; k++) { 
    414                                             values[k] = input.get(k * inputValueIncrement); 
     416                                            values[k] = scaleFactor * input.get(k * inputValueIncrement); 
    415417                                        } 
    416418                                    } else { 
    417                                         ArrayBuffer.Channel channel = inputData.getChannels()[tempChannelIndices[type]]; 
     419                                        ArrayBuffer.Channel[] channels = inputData.getChannels(); 
     420                                        ArrayBuffer.Channel channel = channels[Math.max(0, Math.min(tempChannelIndices[type], channels.length - 1))]; 
    418421                                        ByteBuffer buffer = inputData.getByteBuffer(); 
    419422                                        int offset = channel.getOffset(); 
    420423                                        if (channel.getDataType() == ArrayBuffer.AttributeType.FLOAT) { 
    421424                                            for (int k = 0; k < valueCount; k++) { 
    422                                                 values[k] = buffer.getFloat(offset); 
     425                                                values[k] = scaleFactor * buffer.getFloat(offset); 
    423426                                                offset += channel.getStride() * inputValueIncrement; 
    424427                                            } 
    425428                                        } else if (channel.getDataType() == ArrayBuffer.AttributeType.DOUBLE) { 
    426429                                            for (int k = 0; k < valueCount; k++) { 
    427                                                 values[k] = buffer.getDouble(offset); 
     430                                                values[k] = scaleFactor * buffer.getDouble(offset); 
    428431                                                offset += channel.getStride() * inputValueIncrement; 
    429432                                            } 
Note: See TracChangeset for help on using the changeset viewer.