// Handles.h #ifndef _HANDLES_H_ #define _HANDLES_H_ #include /* required for all Windows applications */ #include #include "..\\..\\..\\include\\l_bitmap.h" /* LEADTOOLS main header file */ #include "..\\..\\..\\include\\l_error.h" /* LEADTOOLS error definition header file */ #include "types.h" #include typedef struct tagHANDLEDEF { L_INT nID; L_INT nShape; COLORREF crFill; } HANDLEDEF, *pHANDLEDEF; #define ALMOST_ZERO 0.9 /* small float value suitable for comparing coordinates */ #define DIFFERENT(val1,val2,epsilon) (((val1) < (val2)-(epsilon))||((val1) > (val2)+(epsilon))) #define ABS(n) (n>0 ? n : -n) L_INT ROUND(L_DOUBLE a); L_INT ISDIFFERENT(pANNPOINT pptAnn, LPPOINT ppt); #define SQR(n) ((n) * (n)) #define MY_DISTANCE(p0,p1) (sqrt(SQR(p1.x - p0.x) + SQR(p1.y - p0.y))) // Flags for use with ObjectClipCursor #define OBJECT_CLIP_CURSOR_GROUP (0) #define OBJECT_CLIP_CURSOR_SINGLETON (1) //Annotation ID functions L_INT AnnSetID(HANNOBJECT hObject, L_INT nMainID, L_INT nPartID); L_INT AnnGetID(HANNOBJECT hObject, L_INT *pnMainID, L_INT *pnPartID); L_VOID AnnClearAllID(HANNOBJECT hContainer); L_INT L_EXPORT EXT_CALLBACK HandleLocationCallback(HANNOBJECT hObject, pANNHANDLEINFO pHandleInfo, L_VOID L_FAR * pUserData); L_INT L_EXPORT EXT_CALLBACK HandleCallback(HANNOBJECT hObject, pANNHANDLEINFO pHandleInfo, L_VOID L_FAR * pUserData); L_BOOL GetHandleLocation(HANNOBJECT hObject, L_INT nHandleID, LPPOINT pptLocation); L_VOID AddUserHandles(HANNOBJECT hObject, pANNPOINT pAnnPoints); L_VOID SpineMeasure_UpdateLine(HANNOBJECT hRect, HANNOBJECT hLine); L_VOID SpineMeasure_UpdateHandles(HANNOBJECT hObject); L_INT ChangeHandleProperties(HWND hWnd, HANNOBJECT hObject, pCHANGEHANDLE pChangeHandle ); L_INT HideDefaultHandles(HANNOBJECT hObject); L_VOID AnnSortNeighborObjects(HANNOBJECT hObject, HANNOBJECT AnnObjectNeighbors[], L_INT32 nCount); L_INT AnnGetNeighborObjects(HANNOBJECT hObject, HANNOBJECT *phAnnObject, L_INT32 *pnCount); L_BOOL GetHandleInfo(HANNOBJECT hObject, L_INT nHandleID, LPPOINT pptLocation, pANNPOINT pptLocationContainer, L_INT *pnIndex); L_BOOL MoveHandle(HANNOBJECT hObject, L_INT nID, POINT pt); L_VOID GetBoundingBox(HANNOBJECT hObjects[], L_INT nCount, pANNRECT prcBounds); L_VOID ObjectClipCursor(LPCHILDDATA pData, HANNOBJECT hObject, POINT ptStart, L_INT nType, L_BOOL bRestore); L_VOID GetRectSegmentWithHandle(HANNOBJECT hRect, L_INT nID, ANNPOINT aptLine[]); L_DOUBLE DistanceToLine(ANNPOINT aptLine[], ANNPOINT aptC); L_DOUBLE DistanceUserHandleToLine(HANNOBJECT hRect, L_INT nID, POINT ptA); L_DOUBLE DistanceToUserHandle(HANNOBJECT hRect, L_INT nID, POINT ptMove); ANNPOINT PointAtDistanceToLine(ANNPOINT aptLine[], ANNPOINT aptC, L_DOUBLE dDistance); POINT PointAtDistanceToOppositeLine(HANNOBJECT hRect, L_INT nID, L_DOUBLE dDistance, POINT ptMove); POINT PointAtDistanceToUserHandle(HANNOBJECT hRect, L_INT nID, L_DOUBLE dDistance, POINT ptMove); L_VOID SwapAnnPoints(pANNPOINT pApt0, pANNPOINT pApt1); L_DOUBLE annDebugGetAngle(ANNPOINT apt1, ANNPOINT apt2, ANNPOINT apt3); ANNPOINT annDebugMidpoint(ANNPOINT apt1, ANNPOINT apt2); L_VOID annDebugDumpNeighborObjects(HANNOBJECT AnnObjectNeighbors[], L_INT32 nCount); #endif _HANDLES_H_