areaDetector  3-7-0
EPICS areaDetector framework
Enumerations | Functions
NDPluginTransform.cpp File Reference
#include <stdlib.h>
#include <string.h>
#include <stdio.h>
#include <math.h>
#include <epicsTypes.h>
#include <epicsMessageQueue.h>
#include <epicsThread.h>
#include <epicsEvent.h>
#include <epicsTime.h>
#include <iocsh.h>
#include <asynDriver.h>
#include <epicsExport.h>
#include "NDPluginDriver.h"
#include "NDPluginTransform.h"

Enumerations

enum  NDPluginTransformType_t {
  TransformNone, TransformRotate90, TransformRotate180, TransformRotate270,
  TransformMirror, TransformRotate90Mirror, TransformRotate180Mirror, TransformRotate270Mirror
}
 

Functions

template<typename epicsType >
void transformNDArray (NDArray *inArray, NDArray *outArray, int transformType, int colorMode, NDArrayInfo_t *arrayInfo)
 Perform the move of the pixels to the new orientation. More...
 
int NDTransformConfigure (const char *portName, int queueSize, int blockingCallbacks, const char *NDArrayPort, int NDArrayAddr, int maxBuffers, size_t maxMemory, int priority, int stackSize, int maxThreads)
 Configuration command. More...
 
void NDTransformRegister (void)
 
 epicsExportRegistrar (NDTransformRegister)
 

Enumeration Type Documentation

◆ NDPluginTransformType_t

Enumerator
TransformNone 
TransformRotate90 
TransformRotate180 
TransformRotate270 
TransformMirror 
TransformRotate90Mirror 
TransformRotate180Mirror 
TransformRotate270Mirror 

Function Documentation

◆ epicsExportRegistrar()

epicsExportRegistrar ( NDTransformRegister  )

◆ NDTransformConfigure()

int NDTransformConfigure ( const char *  portName,
int  queueSize,
int  blockingCallbacks,
const char *  NDArrayPort,
int  NDArrayAddr,
int  maxBuffers,
size_t  maxMemory,
int  priority,
int  stackSize,
int  maxThreads 
)

Configuration command.

◆ NDTransformRegister()

void NDTransformRegister ( void  )

◆ transformNDArray()

template<typename epicsType >
void transformNDArray ( NDArray inArray,
NDArray outArray,
int  transformType,
int  colorMode,
NDArrayInfo_t arrayInfo 
)

Perform the move of the pixels to the new orientation.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

The values of colorStride and yStride need to change because the dimensions of the image may have changed.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

Calculate a new value for the Y stride.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

The values of colorStride and yStride need to change because the dimensions of the image may have changed.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

Calculate a new value for the Y stride.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

The values of colorStride and yStride need to change because the dimensions of the image may have changed.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

Calculate a new value for the Y stride.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

The values of colorStride and yStride need to change because the dimensions of the image may have changed.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

Calculate a new value for the Y stride.

Copy three values for each iteration of the inner loop. This moves the red, green, and blue information.

In this mode, we are moving an entire row at once. First all of the red rows are moved. Next, all of the green rows are moved. Lastly, all of the blue rows are moved. In mono mode, the outer loop only executes once.

In this mode, we are moving three rows at a time. All the red, green, and blue information for each for are moved at once.