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

This html diff was produced by rfcdiff 1.41. The latest version is available from http://tools.ietf.org/tools/rfcdiff/