dmtx.h | dmtx.h | |||
---|---|---|---|---|
skipping to change at line 23 | skipping to change at line 23 | |||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | |||
Lesser General Public License for more details. | Lesser General Public License for more details. | |||
You should have received a copy of the GNU Lesser General Public | You should have received a copy of the GNU Lesser General Public | |||
License along with this library; if not, write to the Free Software | License along with this library; if not, write to the Free Software | |||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |||
Contact: mike@dragonflylogic.com | Contact: mike@dragonflylogic.com | |||
*/ | */ | |||
/* $Id: dmtx.h 185 2008-06-17 20:07:47Z mblaughton $ */ | /* $Id: dmtx.h 418 2008-09-04 19:22:15Z mblaughton $ */ | |||
/** | /** | |||
* @file dmtx.h | * @file dmtx.h | |||
* @brief Main libdmtx header | * @brief Main libdmtx header | |||
*/ | */ | |||
#ifndef __DMTX_H__ | #ifndef __DMTX_H__ | |||
#define __DMTX_H__ | #define __DMTX_H__ | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
skipping to change at line 45 | skipping to change at line 45 | |||
#endif | #endif | |||
#ifndef M_PI | #ifndef M_PI | |||
#define M_PI 3.14159265358979323846 | #define M_PI 3.14159265358979323846 | |||
#endif | #endif | |||
#ifndef M_PI_2 | #ifndef M_PI_2 | |||
#define M_PI_2 1.57079632679489661923 | #define M_PI_2 1.57079632679489661923 | |||
#endif | #endif | |||
#define DMTX_VERSION "0.5.1" | #define DMTX_VERSION "0.5.2" | |||
#define DMTX_FAILURE 0 | #define DMTX_FAILURE 0 | |||
#define DMTX_SUCCESS 1 | #define DMTX_SUCCESS 1 | |||
#define DMTX_FALSE 0 | ||||
#define DMTX_TRUE 1 | ||||
#define DMTX_STATUS_NOT_SCANNED 0 | #define DMTX_STATUS_NOT_SCANNED 0 | |||
#define DMTX_STATUS_VALID 1 | #define DMTX_STATUS_VALID 1 | |||
#define DMTX_STATUS_INVALID 2 | #define DMTX_STATUS_INVALID 2 | |||
#define DMTX_DISPLAY_SQUARE 1 | #define DMTX_DISPLAY_SQUARE 1 | |||
#define DMTX_DISPLAY_POINT 2 | #define DMTX_DISPLAY_POINT 2 | |||
#define DMTX_DISPLAY_CIRCLE 3 | #define DMTX_DISPLAY_CIRCLE 3 | |||
#define DMTX_REGION_FOUND 0 | #define DMTX_REGION_FOUND 0 | |||
#define DMTX_REGION_NOT_FOUND 1 | #define DMTX_REGION_NOT_FOUND 1 | |||
#define DMTX_REGION_TIMEOUT 2 | #define DMTX_REGION_TIMEOUT 2 | |||
#define DMTX_REGION_EOF 3 | #define DMTX_REGION_EOF 3 | |||
#define DMTX_REGION_DROPPED_EDGE 4 | ||||
#define DMTX_REGION_DROPPED_1ST 5 | ||||
#define DMTX_REGION_DROPPED_2ND 6 | ||||
#define DMTX_REGION_DROPPED_RIGHT 7 | ||||
#define DMTX_REGION_DROPPED_TOP 8 | ||||
#define DMTX_REGION_DROPPED_SIZE 9 | ||||
#define DMTX_MODULE_OFF 0x00 | #define DMTX_MODULE_OFF 0x00 | |||
#define DMTX_MODULE_ON_RED 0x01 | #define DMTX_MODULE_ON_RED 0x01 | |||
#define DMTX_MODULE_ON_GREEN 0x02 | #define DMTX_MODULE_ON_GREEN 0x02 | |||
#define DMTX_MODULE_ON_BLUE 0x04 | #define DMTX_MODULE_ON_BLUE 0x04 | |||
#define DMTX_MODULE_ON_RGB 0x07 /* ON_RED | ON_GREEN | ON_BLUE */ | #define DMTX_MODULE_ON_RGB 0x07 /* ON_RED | ON_GREEN | ON_BLUE */ | |||
#define DMTX_MODULE_UNSURE 0x08 /* ON_RED | ON_GREEN | ON_BLUE */ | #define DMTX_MODULE_ON 0x07 | |||
#define DMTX_MODULE_UNSURE 0x08 | ||||
#define DMTX_MODULE_ASSIGNED 0x10 | #define DMTX_MODULE_ASSIGNED 0x10 | |||
#define DMTX_MODULE_VISITED 0x20 | #define DMTX_MODULE_VISITED 0x20 | |||
#define DMTX_MODULE_DATA 0x40 | #define DMTX_MODULE_DATA 0x40 | |||
#define DMTX_FORMAT_MATRIX 0 | #define DMTX_FORMAT_MATRIX 0 | |||
#define DMTX_FORMAT_MOSAIC 1 | #define DMTX_FORMAT_MOSAIC 1 | |||
#define DMTX_SYMBOL_SQUARE_AUTO -1 | #define DMTX_SYMBOL_SQUARE_AUTO -1 | |||
#define DMTX_SYMBOL_SQUARE_COUNT 24 | #define DMTX_SYMBOL_SQUARE_COUNT 24 | |||
#define DMTX_SYMBOL_RECT_AUTO -2 | #define DMTX_SYMBOL_RECT_AUTO -2 | |||
skipping to change at line 130 | skipping to change at line 140 | |||
typedef enum { | typedef enum { | |||
DmtxSymAttribSymbolRows, | DmtxSymAttribSymbolRows, | |||
DmtxSymAttribSymbolCols, | DmtxSymAttribSymbolCols, | |||
DmtxSymAttribDataRegionRows, | DmtxSymAttribDataRegionRows, | |||
DmtxSymAttribDataRegionCols, | DmtxSymAttribDataRegionCols, | |||
DmtxSymAttribHorizDataRegions, | DmtxSymAttribHorizDataRegions, | |||
DmtxSymAttribVertDataRegions, | DmtxSymAttribVertDataRegions, | |||
DmtxSymAttribMappingMatrixRows, | DmtxSymAttribMappingMatrixRows, | |||
DmtxSymAttribMappingMatrixCols, | DmtxSymAttribMappingMatrixCols, | |||
DmtxSymAttribInterleavedBlocks, | DmtxSymAttribInterleavedBlocks, | |||
DmtxSymAttribBlockDataWords, | ||||
DmtxSymAttribBlockErrorWords, | DmtxSymAttribBlockErrorWords, | |||
DmtxSymAttribBlockTotalWords, | ||||
DmtxSymAttribBlockMaxCorrectable, | DmtxSymAttribBlockMaxCorrectable, | |||
DmtxSymAttribSymbolDataWords, | DmtxSymAttribSymbolDataWords, | |||
DmtxSymAttribSymbolErrorWords, | DmtxSymAttribSymbolErrorWords, | |||
DmtxSymAttribSymbolTotalWords, | ||||
DmtxSymAttribSymbolMaxCorrectable | DmtxSymAttribSymbolMaxCorrectable | |||
} DmtxSymAttribute; | } DmtxSymAttribute; | |||
typedef enum { | typedef enum { | |||
DmtxCorner00 = 0x01 << 0, | DmtxCorner00 = 0x01 << 0, | |||
DmtxCorner10 = 0x01 << 1, | DmtxCorner10 = 0x01 << 1, | |||
DmtxCorner11 = 0x01 << 2, | DmtxCorner11 = 0x01 << 2, | |||
DmtxCorner01 = 0x01 << 3 | DmtxCorner01 = 0x01 << 3 | |||
} DmtxCornerLoc; | } DmtxCornerLoc; | |||
typedef enum { | ||||
DmtxPropShrinkMin, | ||||
DmtxPropShrinkMax, | ||||
DmtxPropEdgeThresh, | ||||
DmtxPropSquareDevn, | ||||
DmtxPropScanGap, | ||||
DmtxPropWidth, | ||||
DmtxPropHeight, | ||||
DmtxPropArea, | ||||
DmtxPropXmin, | ||||
DmtxPropXmax, | ||||
DmtxPropYmin, | ||||
DmtxPropYmax, | ||||
DmtxPropScale, | ||||
DmtxPropScaledWidth, | ||||
DmtxPropScaledHeight, | ||||
DmtxPropScaledArea, | ||||
DmtxPropScaledXmin, | ||||
DmtxPropScaledXmax, | ||||
DmtxPropScaledYmin, | ||||
DmtxPropScaledYmax | ||||
} DmtxDecodeProperty; | ||||
typedef double DmtxMatrix3[3][3]; | typedef double DmtxMatrix3[3][3]; | |||
typedef unsigned char DmtxRgb[3]; | typedef unsigned char DmtxRgb[3]; | |||
/** | /** | |||
* @struct DmtxColor3 | * @struct DmtxColor3 | |||
* @brief DmtxColor3 | * @brief DmtxColor3 | |||
*/ | */ | |||
typedef struct DmtxColor3_struct { | typedef struct DmtxColor3_struct { | |||
double R; | double R; | |||
double G; | double G; | |||
double B; | double B; | |||
} DmtxColor3; | } DmtxColor3; | |||
/** | /** | |||
* @struct DmtxPixelLoc | * @struct DmtxPixelLoc | |||
* @brief DmtxPixelLoc | * @brief DmtxPixelLoc | |||
*/ | */ | |||
typedef struct DmtxPixelLoc_struct { | typedef struct DmtxPixelLoc_struct { | |||
int X; | int X; | |||
int Y; | int Y; | |||
int status; | ||||
} DmtxPixelLoc; | } DmtxPixelLoc; | |||
/** | /** | |||
* @struct DmtxVector2 | * @struct DmtxVector2 | |||
* @brief DmtxVector2 | * @brief DmtxVector2 | |||
*/ | */ | |||
typedef struct DmtxVector2_struct { | typedef struct DmtxVector2_struct { | |||
double X; | double X; | |||
double Y; | double Y; | |||
} DmtxVector2; | } DmtxVector2; | |||
skipping to change at line 203 | skipping to change at line 234 | |||
double tMin, tMax; | double tMin, tMax; | |||
DmtxVector2 p; | DmtxVector2 p; | |||
DmtxVector2 v; | DmtxVector2 v; | |||
} DmtxRay2; | } DmtxRay2; | |||
/** | /** | |||
* @struct DmtxGradient | * @struct DmtxGradient | |||
* @brief DmtxGradient | * @brief DmtxGradient | |||
*/ | */ | |||
typedef struct DmtxGradient_struct { | typedef struct DmtxGradient_struct { | |||
char isDefined; | char isDefined; | |||
double tMin, tMax, tMid; | double tMin, tMax, tMid; | |||
DmtxRay3 ray; | DmtxRay3 ray; | |||
DmtxColor3 color, colorPrev; /* XXX maybe these aren't appropriate varia bles for a gradient? */ | DmtxColor3 color, colorPrev; /* XXX maybe these aren't appropriate varia bles for a gradient? */ | |||
} DmtxGradient; | } DmtxGradient; | |||
typedef enum { | typedef enum { | |||
DmtxCompassDirNone = 0x00, | ||||
DmtxCompassDirNeg45 = 0x01, | DmtxCompassDirNeg45 = 0x01, | |||
DmtxCompassDir0 = 0x02, | DmtxCompassDir0 = 0x02, | |||
DmtxCompassDir45 = 0x04, | DmtxCompassDir45 = 0x04, | |||
DmtxCompassDir90 = 0x08 | DmtxCompassDir90 = 0x08, | |||
DmtxCompassDirOrtho = DmtxCompassDir0 | DmtxCompassDir90, | ||||
DmtxCompassDirAll = DmtxCompassDirNeg45 | DmtxCompassDir0 | DmtxCompas | ||||
sDir45 | DmtxCompassDir90 | ||||
} DmtxCompassDir; | } DmtxCompassDir; | |||
/** | /** | |||
* @struct DmtxCompassEdge | * @struct DmtxCompassEdge | |||
* @brief DmtxCompassEdge | * @brief DmtxCompassEdge | |||
*/ | */ | |||
typedef struct DmtxCompassEdge_struct { | typedef struct DmtxCompassEdge_struct { | |||
char assigned; | char dirsTested; | |||
double magnitude; /* sqrt(R^2 + G^2 + B^2) */ | char maxDirAll; | |||
DmtxColor3 intensity; | char maxDirOrtho; | |||
DmtxCompassDir edgeDir; | double magnitude; /* sqrt(R^2 + G^2 + B^2) */ | |||
DmtxCompassDir scanDir; /* DmtxCompassDir0 | DmtxCompassDir90 */ | DmtxColor3 intensity; | |||
} DmtxCompassEdge; | } DmtxCompassEdge; | |||
/** | /** | |||
* @struct DmtxImage | * @struct DmtxImage | |||
* @brief DmtxImage | * @brief DmtxImage | |||
*/ | */ | |||
typedef struct DmtxImage_struct { | typedef struct DmtxImage_struct { | |||
unsigned int pageCount; | int width; /* unscaled */ | |||
unsigned int width; | int height; /* unscaled */ | |||
unsigned int height; | int xMin; /* unscaled */ | |||
int xMax; /* unscaled */ | ||||
int yMin; /* unscaled */ | ||||
int yMax; /* unscaled */ | ||||
int scale; | ||||
int widthScaled; | ||||
int heightScaled; | ||||
int xMinScaled; | ||||
int xMaxScaled; | ||||
int yMinScaled; | ||||
int yMaxScaled; | ||||
int pageCount; | ||||
DmtxRgb *pxl; | DmtxRgb *pxl; | |||
DmtxCompassEdge *compass; | DmtxCompassEdge *compass; | |||
} DmtxImage; | } DmtxImage; | |||
/** | /** | |||
* @struct DmtxEdge | * @struct DmtxEdge | |||
* @brief DmtxEdge | * @brief DmtxEdge | |||
*/ | */ | |||
typedef struct DmtxEdge_struct { | typedef struct DmtxEdge_struct { | |||
int offset; | int offset; | |||
skipping to change at line 317 | skipping to change at line 362 | |||
/** | /** | |||
* @struct DmtxScanGrid | * @struct DmtxScanGrid | |||
* @brief DmtxScanGrid | * @brief DmtxScanGrid | |||
*/ | */ | |||
typedef struct DmtxScanGrid_struct { | typedef struct DmtxScanGrid_struct { | |||
/* set once */ | /* set once */ | |||
int minExtent; /* Smallest cross size used in scan */ | int minExtent; /* Smallest cross size used in scan */ | |||
int maxExtent; /* Size of bounding grid region (2^N - 1) */ | int maxExtent; /* Size of bounding grid region (2^N - 1) */ | |||
int xOffset; /* Offset to obtain image X coordinate */ | int xOffset; /* Offset to obtain image X coordinate */ | |||
int yOffset; /* Offset to obtain image Y coordinate */ | int yOffset; /* Offset to obtain image Y coordinate */ | |||
int xMin; /* Minimum X in image coordinate system */ | ||||
int xMax; /* Maximum X in image coordinate system */ | ||||
int yMin; /* Minimum Y in image coordinate system */ | ||||
int yMax; /* Maximum Y in image coordinate system */ | ||||
/* reset for each level */ | /* reset for each level */ | |||
int total; /* Total number of crosses at this size */ | int total; /* Total number of crosses at this size */ | |||
int extent; /* Length/width of cross in pixels */ | int extent; /* Length/width of cross in pixels */ | |||
int jumpSize; /* Distance in pixels between cross centers */ | int jumpSize; /* Distance in pixels between cross centers */ | |||
int pixelTotal; /* Total pixel count within an individual cross path */ | int pixelTotal; /* Total pixel count within an individual cross path */ | |||
int startPos; /* X and Y coordinate of first cross center in pattern * / | int startPos; /* X and Y coordinate of first cross center in pattern * / | |||
/* reset for each cross */ | /* reset for each cross */ | |||
int pixelCount; /* Progress (pixel count) within current cross pattern * / | int pixelCount; /* Progress (pixel count) within current cross pattern * / | |||
int xCenter; /* X center of current cross pattern */ | int xCenter; /* X center of current cross pattern */ | |||
int yCenter; /* Y center of current cross pattern */ | int yCenter; /* Y center of current cross pattern */ | |||
} DmtxScanGrid; | } DmtxScanGrid; | |||
/** | /** | |||
* @struct DmtxDecode | * @struct DmtxDecode | |||
* @brief DmtxDecode | * @brief DmtxDecode | |||
*/ | */ | |||
typedef struct DmtxDecode_struct { | typedef struct DmtxDecode_struct { | |||
DmtxImage *image; | DmtxImage *image; | |||
DmtxScanGrid grid; | DmtxScanGrid grid; | |||
int shrinkMin; | ||||
int shrinkMax; | ||||
int edgeThresh; | ||||
double squareDevn; | ||||
int scanGap; | ||||
} DmtxDecode; | } DmtxDecode; | |||
/** | /** | |||
* @struct DmtxTime | * @struct DmtxTime | |||
* @brief DmtxTime | * @brief DmtxTime | |||
*/ | */ | |||
typedef struct DmtxTime_struct { | typedef struct DmtxTime_struct { | |||
time_t sec; | time_t sec; | |||
unsigned long usec; | unsigned long usec; | |||
} DmtxTime; | } DmtxTime; | |||
skipping to change at line 417 | skipping to change at line 471 | |||
extern DmtxTime dmtxTimeAdd(DmtxTime t, long msec); | extern DmtxTime dmtxTimeAdd(DmtxTime t, long msec); | |||
extern int dmtxTimeExceeded(DmtxTime timeout); | extern int dmtxTimeExceeded(DmtxTime timeout); | |||
/* dmtxencode.c */ | /* dmtxencode.c */ | |||
extern DmtxEncode dmtxEncodeStructInit(void); | extern DmtxEncode dmtxEncodeStructInit(void); | |||
extern void dmtxEncodeStructDeInit(DmtxEncode *enc); | extern void dmtxEncodeStructDeInit(DmtxEncode *enc); | |||
extern int dmtxEncodeDataMatrix(DmtxEncode *enc, int n, unsigned char *s, i nt sizeIdxRequest); | extern int dmtxEncodeDataMatrix(DmtxEncode *enc, int n, unsigned char *s, i nt sizeIdxRequest); | |||
extern int dmtxEncodeDataMosaic(DmtxEncode *enc, int n, unsigned char *s, i nt sizeIdxRequest); | extern int dmtxEncodeDataMosaic(DmtxEncode *enc, int n, unsigned char *s, i nt sizeIdxRequest); | |||
/* dmtxdecode.c */ | /* dmtxdecode.c */ | |||
extern DmtxDecode dmtxDecodeStructInit(DmtxImage *img, DmtxPixelLoc p0, Dmt xPixelLoc p1, int gap); | extern DmtxDecode dmtxDecodeStructInit(DmtxImage *img); | |||
extern void dmtxDecodeStructDeInit(DmtxDecode *dec); | extern void dmtxDecodeStructDeInit(DmtxDecode *dec); | |||
extern DmtxMessage *dmtxDecodeMatrixRegion(DmtxDecode *dec, DmtxRegion *reg | extern int dmtxDecodeSetProp(DmtxDecode *dec, int prop, int value); | |||
, int fix); | extern DmtxMessage *dmtxDecodeMatrixRegion(DmtxImage *img, DmtxRegion *reg, | |||
extern DmtxMessage *dmtxDecodeMosaicRegion(DmtxDecode *dec, DmtxRegion *reg | int fix); | |||
, int fix); | extern DmtxMessage *dmtxDecodeMosaicRegion(DmtxImage *img, DmtxRegion *reg, | |||
int fix); | ||||
extern DmtxMessage *dmtxMessageMalloc(int sizeIdx, int symbolFormat); | extern DmtxMessage *dmtxMessageMalloc(int sizeIdx, int symbolFormat); | |||
extern void dmtxMessageFree(DmtxMessage **mesg); | extern void dmtxMessageFree(DmtxMessage **mesg); | |||
/* dmtxregion.c */ | /* dmtxregion.c */ | |||
extern DmtxRegion dmtxDecodeFindNextRegion(DmtxDecode *decode, DmtxTime *ti meout); | extern DmtxRegion dmtxDecodeFindNextRegion(DmtxDecode *decode, DmtxTime *ti meout); | |||
extern DmtxRegion dmtxScanPixel(DmtxDecode *decode, DmtxPixelLoc loc); | extern DmtxRegion dmtxScanPixel(DmtxDecode *decode, DmtxPixelLoc loc); | |||
/* dmtximage.c */ | /* dmtximage.c */ | |||
extern DmtxImage *dmtxImageMalloc(int width, int height); | extern DmtxImage *dmtxImageMalloc(int width, int height); | |||
extern int dmtxImageFree(DmtxImage **img); | extern int dmtxImageFree(DmtxImage **img); | |||
extern int dmtxImageGetWidth(DmtxImage *img); | extern int dmtxImageSetProp(DmtxImage *img, int prop, int value); | |||
extern int dmtxImageGetHeight(DmtxImage *img); | extern int dmtxImageGetProp(DmtxImage *img, int prop); | |||
extern int dmtxImageGetOffset(DmtxImage *img, DmtxDirection dir, int lineNb | extern int dmtxImageGetOffset(DmtxImage *img, int x, int y); | |||
r, int offset); | extern int dmtxImageSetRgb(DmtxImage *img, int x, int y, DmtxRgb rgb); | |||
extern int dmtxImageGetRgb(DmtxImage *img, int x, int y, DmtxRgb rgb); | ||||
extern int dmtxImageContainsInt(DmtxImage *img, int margin, int x, int y); | ||||
extern int dmtxImageContainsFloat(DmtxImage *img, double x, double y); | ||||
/* dmtxvector2.c */ | ||||
extern DmtxVector2 *dmtxVector2AddTo(DmtxVector2 *v1, DmtxVector2 *v2); | extern DmtxVector2 *dmtxVector2AddTo(DmtxVector2 *v1, DmtxVector2 *v2); | |||
extern DmtxVector2 *dmtxVector2Add(DmtxVector2 *vOut, DmtxVector2 *v1, Dmtx Vector2 *v2); | extern DmtxVector2 *dmtxVector2Add(DmtxVector2 *vOut, DmtxVector2 *v1, Dmtx Vector2 *v2); | |||
extern DmtxVector2 *dmtxVector2SubFrom(DmtxVector2 *v1, DmtxVector2 *v2); | extern DmtxVector2 *dmtxVector2SubFrom(DmtxVector2 *v1, DmtxVector2 *v2); | |||
extern DmtxVector2 *dmtxVector2Sub(DmtxVector2 *vOut, DmtxVector2 *v1, Dmtx Vector2 *v2); | extern DmtxVector2 *dmtxVector2Sub(DmtxVector2 *vOut, DmtxVector2 *v1, Dmtx Vector2 *v2); | |||
extern DmtxVector2 *dmtxVector2ScaleBy(DmtxVector2 *v, double s); | extern DmtxVector2 *dmtxVector2ScaleBy(DmtxVector2 *v, double s); | |||
extern DmtxVector2 *dmtxVector2Scale(DmtxVector2 *vOut, DmtxVector2 *v, dou ble s); | extern DmtxVector2 *dmtxVector2Scale(DmtxVector2 *vOut, DmtxVector2 *v, dou ble s); | |||
extern double dmtxVector2Cross(DmtxVector2 *v1, DmtxVector2 *v2); | extern double dmtxVector2Cross(DmtxVector2 *v1, DmtxVector2 *v2); | |||
extern int dmtxVector2Norm(DmtxVector2 *v); | extern double dmtxVector2Norm(DmtxVector2 *v); | |||
extern double dmtxVector2Dot(DmtxVector2 *v1, DmtxVector2 *v2); | extern double dmtxVector2Dot(DmtxVector2 *v1, DmtxVector2 *v2); | |||
extern double dmtxVector2Mag(DmtxVector2 *v); | extern double dmtxVector2Mag(DmtxVector2 *v); | |||
extern double dmtxDistanceFromRay2(DmtxRay2 *r, DmtxVector2 *q); | extern double dmtxDistanceFromRay2(DmtxRay2 *r, DmtxVector2 *q); | |||
extern double dmtxDistanceAlongRay2(DmtxRay2 *r, DmtxVector2 *q); | extern double dmtxDistanceAlongRay2(DmtxRay2 *r, DmtxVector2 *q); | |||
extern int dmtxRay2Intersect(DmtxVector2 *point, DmtxRay2 *p0, DmtxRay2 *p1 ); | extern int dmtxRay2Intersect(DmtxVector2 *point, DmtxRay2 *p0, DmtxRay2 *p1 ); | |||
extern int dmtxPointAlongRay2(DmtxVector2 *point, DmtxRay2 *r, double t); | extern int dmtxPointAlongRay2(DmtxVector2 *point, DmtxRay2 *r, double t); | |||
/* dmtxmatrix3.c */ | ||||
extern void dmtxMatrix3Copy(DmtxMatrix3 m0, DmtxMatrix3 m1); | extern void dmtxMatrix3Copy(DmtxMatrix3 m0, DmtxMatrix3 m1); | |||
extern void dmtxMatrix3Identity(DmtxMatrix3 m); | extern void dmtxMatrix3Identity(DmtxMatrix3 m); | |||
extern void dmtxMatrix3Translate(DmtxMatrix3 m, double tx, double ty); | extern void dmtxMatrix3Translate(DmtxMatrix3 m, double tx, double ty); | |||
extern void dmtxMatrix3Rotate(DmtxMatrix3 m, double angle); | extern void dmtxMatrix3Rotate(DmtxMatrix3 m, double angle); | |||
extern void dmtxMatrix3Scale(DmtxMatrix3 m, double sx, double sy); | extern void dmtxMatrix3Scale(DmtxMatrix3 m, double sx, double sy); | |||
extern void dmtxMatrix3Shear(DmtxMatrix3 m, double shx, double shy); | extern void dmtxMatrix3Shear(DmtxMatrix3 m, double shx, double shy); | |||
extern void dmtxMatrix3LineSkewTop(DmtxMatrix3 m, double b0, double b1, dou ble sz); | extern void dmtxMatrix3LineSkewTop(DmtxMatrix3 m, double b0, double b1, dou ble sz); | |||
extern void dmtxMatrix3LineSkewTopInv(DmtxMatrix3 m, double b0, double b1, double sz); | extern void dmtxMatrix3LineSkewTopInv(DmtxMatrix3 m, double b0, double b1, double sz); | |||
extern void dmtxMatrix3LineSkewSide(DmtxMatrix3 m, double b0, double b1, do uble sz); | extern void dmtxMatrix3LineSkewSide(DmtxMatrix3 m, double b0, double b1, do uble sz); | |||
extern void dmtxMatrix3LineSkewSideInv(DmtxMatrix3 m, double b0, double b1, double sz); | extern void dmtxMatrix3LineSkewSideInv(DmtxMatrix3 m, double b0, double b1, double sz); | |||
extern void dmtxMatrix3Multiply(DmtxMatrix3 mOut, DmtxMatrix3 m0, DmtxMatri x3 m1); | extern void dmtxMatrix3Multiply(DmtxMatrix3 mOut, DmtxMatrix3 m0, DmtxMatri x3 m1); | |||
extern void dmtxMatrix3MultiplyBy(DmtxMatrix3 m0, DmtxMatrix3 m1); | extern void dmtxMatrix3MultiplyBy(DmtxMatrix3 m0, DmtxMatrix3 m1); | |||
extern int dmtxMatrix3VMultiply(DmtxVector2 *vOut, DmtxVector2 *vIn, DmtxMa trix3 m); | extern int dmtxMatrix3VMultiply(DmtxVector2 *vOut, DmtxVector2 *vIn, DmtxMa trix3 m); | |||
extern int dmtxMatrix3VMultiplyBy(DmtxVector2 *v, DmtxMatrix3 m); | extern int dmtxMatrix3VMultiplyBy(DmtxVector2 *v, DmtxMatrix3 m); | |||
extern void dmtxMatrix3Print(DmtxMatrix3 m); | extern void dmtxMatrix3Print(DmtxMatrix3 m); | |||
extern void dmtxPixelFromImage(DmtxRgb rgb, DmtxImage *img, int x, int y); | /* dmtxcolor3.c */ | |||
extern void dmtxColor3FromImage2(DmtxColor3 *color, DmtxImage *img, DmtxVec tor2 p); | extern void dmtxColor3FromImage2(DmtxColor3 *color, DmtxImage *img, DmtxVec tor2 p); | |||
extern DmtxColor3 *dmtxColor3FromPixel(DmtxColor3 *color, DmtxRgb rgb); | extern DmtxColor3 *dmtxColor3FromPixel(DmtxColor3 *color, DmtxRgb rgb); | |||
extern void dmtxPixelFromColor3(DmtxRgb rgb, DmtxColor3 *color); | extern void dmtxPixelFromColor3(DmtxRgb rgb, DmtxColor3 *color); | |||
extern DmtxColor3 dmtxColor3AlongRay3(DmtxRay3 *ray, double dist); | extern DmtxColor3 dmtxColor3AlongRay3(DmtxRay3 *ray, double dist); | |||
extern DmtxColor3 *dmtxColor3AddTo(DmtxColor3 *v1, DmtxColor3 *v2); | extern DmtxColor3 *dmtxColor3AddTo(DmtxColor3 *v1, DmtxColor3 *v2); | |||
extern DmtxColor3 *dmtxColor3Add(DmtxColor3 *vOut, DmtxColor3 *v1, DmtxColo r3 *v2); | extern DmtxColor3 *dmtxColor3Add(DmtxColor3 *vOut, DmtxColor3 *v1, DmtxColo r3 *v2); | |||
extern DmtxColor3 *dmtxColor3SubFrom(DmtxColor3 *v1, DmtxColor3 *v2); | extern DmtxColor3 *dmtxColor3SubFrom(DmtxColor3 *v1, DmtxColor3 *v2); | |||
extern DmtxColor3 *dmtxColor3Sub(DmtxColor3 *vOut, DmtxColor3 *v1, DmtxColo r3 *v2); | extern DmtxColor3 *dmtxColor3Sub(DmtxColor3 *vOut, DmtxColor3 *v1, DmtxColo r3 *v2); | |||
extern DmtxColor3 *dmtxColor3ScaleBy(DmtxColor3 *v, double s); | extern DmtxColor3 *dmtxColor3ScaleBy(DmtxColor3 *v, double s); | |||
extern DmtxColor3 *dmtxColor3Scale(DmtxColor3 *vOut, DmtxColor3 *v, double s); | extern DmtxColor3 *dmtxColor3Scale(DmtxColor3 *vOut, DmtxColor3 *v, double s); | |||
extern DmtxColor3 *dmtxColor3Cross(DmtxColor3 *vOut, DmtxColor3 *v1, DmtxCo lor3 *v2); | extern DmtxColor3 *dmtxColor3Cross(DmtxColor3 *vOut, DmtxColor3 *v1, DmtxCo lor3 *v2); | |||
extern int dmtxColor3Norm(DmtxColor3 *v); | extern double dmtxColor3Norm(DmtxColor3 *v); | |||
extern double dmtxColor3Dot(DmtxColor3 *v1, DmtxColor3 *v2); | extern double dmtxColor3Dot(DmtxColor3 *v1, DmtxColor3 *v2); | |||
extern double dmtxColor3Mag(DmtxColor3 *v); | extern double dmtxColor3Mag(DmtxColor3 *v); | |||
extern double dmtxColor3MagSquared(DmtxColor3 *v); | ||||
extern double dmtxDistanceFromRay3(DmtxRay3 *r, DmtxColor3 *q); | extern double dmtxDistanceFromRay3(DmtxRay3 *r, DmtxColor3 *q); | |||
extern double dmtxDistanceAlongRay3(DmtxRay3 *r, DmtxColor3 *q); | extern double dmtxDistanceAlongRay3(DmtxRay3 *r, DmtxColor3 *q); | |||
extern int dmtxPointAlongRay3(DmtxColor3 *point, DmtxRay3 *r, double t); | extern int dmtxPointAlongRay3(DmtxColor3 *point, DmtxRay3 *r, double t); | |||
/* dmtxsymbol.c */ | ||||
extern int dmtxSymbolModuleStatus(DmtxMessage *mapping, int sizeIdx, int ro w, int col); | extern int dmtxSymbolModuleStatus(DmtxMessage *mapping, int sizeIdx, int ro w, int col); | |||
extern int dmtxGetSymbolAttribute(int attribute, int sizeIdx); | extern int dmtxGetSymbolAttribute(int attribute, int sizeIdx); | |||
extern int dmtxGetBlockDataSize(int sizeIdx, int blockIdx); | ||||
extern char *dmtxVersion(void); | extern char *dmtxVersion(void); | |||
#ifdef __cplusplus | #ifdef __cplusplus | |||
} | } | |||
#endif | #endif | |||
#endif | #endif | |||
End of changes. 28 change blocks. | ||||
32 lines changed or deleted | 96 lines changed or added | |||