📄 toolbox.h
字号:
/*** Lists ***/ /* Note: FRONT_OF_LIST and END_OF_LIST only substitute for item positions in the arguments to a list function, they are not returned as item positions and should not be compared to item positions. */#define FRONT_OF_LIST -1 /* Handy Constants that substitute for item positions */#define END_OF_LIST 0 /* END_OF_LIST means one past current length of list when inserting. Otherwise it refers the last item in the list. */typedef struct ListStructTag **ListType; /* The list abstract data type */typedef int (CVICALLBACK * ListApplicationFunc)(int index, void *ptrToItem, void *callbackData); /* Basic List Operations */ListType CVIFUNC ListCreate(int elementSize);void CVIFUNC ListDispose(ListType list);void CVIFUNC ListDisposePtrList(ListType list);int CVIFUNC ListNumItems(ListType list);int CVIFUNC ListInsertItem(ListType list, void *ptrToItem, int itemPosition);void CVIFUNC ListGetItem(ListType list, void *itemDestination, int itemPosition);void CVIFUNC ListReplaceItem(ListType list, void *ptrToItem, int itemPosition);void CVIFUNC ListRemoveItem(ListType list, void *itemDestination, int itemPosition);int CVIFUNC ListInsertItems(ListType list, void *ptrToItems, int firstItemPosition, int numItemsToInsert);void CVIFUNC ListGetItems(ListType list, void *itemsDestination, int firstItemPosition, int numItemsToGet);void CVIFUNC ListReplaceItems(ListType list, void *ptrToItems, int firstItemPosition, int numItemsToReplace);void CVIFUNC ListRemoveItems(ListType list, void *itemsDestination, int firstItemPosition, int numItemsToRemove);ListType CVIFUNC ListCopy(ListType originalList);int CVIFUNC ListAppend(ListType list1, ListType list2);void CVIFUNC ListClear(ListType list);int CVIFUNC ListEqual(ListType list1, ListType list2);int CVIFUNC ListInsertInOrder(ListType list, void *ptrToItem, CompareFunction compareFunction);void * CVIFUNC ListGetPtrToItem(ListType list, int itemPosition);void * CVIFUNC ListGetDataPtr(ListType list);int CVIFUNC ListApplyToEach(ListType list, int ascending, ListApplicationFunc funcToApply, void *callbackData); /* List Searching and Sorting */int CVIFUNC ListFindItem(ListType list, void *ptrToItem, int startingPosition, CompareFunction compareFunction);void CVIFUNC ListRemoveDuplicates(ListType list, CompareFunction compareFunction);int CVIFUNC ListBinSearch(ListType list, void *itemPtr, CompareFunction compareFunction);void CVIFUNC ListQuickSort(ListType list, CompareFunction compareFunction);void CVIFUNC ListHeapSort(ListType list, CompareFunction compareFunction);void CVIFUNC ListInsertionSort(ListType list, CompareFunction compareFunction);int CVIFUNC ListIsSorted(ListType list, CompareFunction compareFunction); /* List Output to Files and Standard I/O */typedef int (CVICALLBACK * ItemOutputFunction)(FILE *stream, void *ptrToItem);int CVICALLBACK OutputStringItem(FILE *stream, void *ptrToItem);int CVICALLBACK OutputShortItem(FILE *stream, void *ptrToItem);int CVICALLBACK OutputDoubleItem(FILE *stream, void *ptrToItem);int CVICALLBACK OutputIntegerItem(FILE *stream, void *ptrToItem);int CVIFUNC OutputList(ListType list, FILE *stream, char *listPrefix, char *listSuffix, char *itemPrefix, char *itemSuffix, ItemOutputFunction itemOutputFunction); /* Advanced List Functions */void CVIFUNC ListSetAllocationPolicy(ListType list, int minItemsPerAlloc, int percentIncreasePerAlloc);void CVIFUNC ListCompact(ListType list);int CVIFUNC ListPreAllocate(ListType list, int numItems);int CVIFUNC ListGetItemSize(ListType list);int CVIFUNC GetIntListFromParmInfo(va_list parmInfo, int numIntegers, ListType *integerList); /* no function panel, too obscure */ListType CVIFUNC_C BuildIntegerList(int numIntegers, ...); /* no function panel */int CVIFUNC_C AppendToIntegerList(ListType listToAppendTo, int numIntegers, ...); /* no function panel */int CVIFUNC ListInsertAfterItem(ListType list, void *ptrToItem, void *ptrToItemToInsertAfter, CompareFunction compareFunction); /* no function panel */int CVIFUNC ListInsertBeforeItem(ListType list, void *ptrToItem, void *ptrToItemToInsertBefore, CompareFunction compareFunction); /* no function panel */ /*** User Interface Utility Functions ***/ /* Constants helpful for precise control positioning */#define LIST_BOX_SCROLL_BAR_WIDTH 16#define TEXT_BOX_FRAME_WIDTH 3#define LIST_BOX_FRAME_WIDTH 3#define LIST_BOX_RIGHT_MARGIN 2#define LIST_BOX_LEFT_MARGIN 4#define LIST_BOX_HORIZ_OVERHEAD 28 /* right position: 16 for scroll bar, 3+3 for frame, 4+2 for margins */#define LIST_BOX_CHECKMARK_AREA_WIDTH 16#define LIST_BOX_LEFT_PIXEL_POS 5 /* based in empirical observation */#define RING_HORIZ_OVERHEAD 24 /* 16 + 8 extra for margin */#define INC_DEC_WIDTH 9 /* Values for the direction parameter of DistributeCtrls() */#define VAL_TB_HORIZONTAL_DISTRIBUTION 0#define VAL_TB_VERTICAL_DISTRIBUTION 1 /* Values for the spacing parameter of DistributeCtrls() */#define VAL_TB_AREA_SPACING 0#define VAL_TB_FIXED_GAP_SPACING 1 /* Values for the whichExtreme parameter of SetAllCtrlsToIntAttributeExtreme() */#define VAL_TB_MAX 0#define VAL_TB_MIN 1typedef enum /* these values may be passed to the AttrMinMax... functions */ { ATTR_TB_BOUNDS_TOP = 6000, ATTR_TB_BOUNDS_LEFT, ATTR_TB_BOUNDS_HEIGHT, /* gettable only */ ATTR_TB_BOUNDS_WIDTH /* gettable only */ } ExtraToolBoxAttributes;typedef enum { CANCELED = 0, CHANGE_MADE = 1, NO_CHANGE_MADE = 2 } ResponseCode; /* useful for generic dialog box return codes and other places too */int CVIFUNC PutLabelOnLeft(int panel, int ctrl, int labelToCtrlGap);int CVIFUNC SetCommonDialogShortcutKeys(int panel, int enterCtrl, int escCtrl, int closeCtrl);int CVIFUNC GetDataTypeSize(int dataType);int CVIFUNC_C SetAttributeForCtrls(int panel, int attribute, int value, int numCtrls, ...);int CVIFUNC_C AttributeMaxAndMin(int panel, int attribute, int numCtrls, int *max, int *ctrlWithMax, int *min, int *ctrlWithMin, ...);int CVIFUNC_C SetCtrlsToAttributeExtreme(int panel, int attribute, int whichExtreme, int numCtrls, ...);int CVIFUNC_C DistributeCtrls(int panel, int direction, int spacing, int *position, int gap, int numCtrls, ...);int CVIFUNC_C PutLabelsOnLeft(int panel, int labelToCtrlGap, int numCtrls, ...);int CVIFUNC SetAttributeForList(int panel, ListType ctrlList, int attribute, int value);int CVIFUNC AttrMaxAndMinForList(int panel, ListType ctrlList, int attribute, int *max, int *ctrlWithMax, int *min, int *ctrlWithMin);int CVIFUNC SetAttributeToExtremeForList(int panel, ListType ctrlList, int attribute, int whichExtreme);int CVIFUNC DistributeCtrlsInList(int panel, ListType ctrlList, int direction, int spacing, int *position, int gap);int CVIFUNC PutLabelsOnLeftForList(int panel, ListType ctrlList, int labelToCtrlGap);int CVIFUNC MoveInFront(int panel, int ctrl, int ctrlToMove);int CVIFUNC MoveBehind(int panel, int ctrl, int ctrlToMove);int CVIFUNC PlaceAfter(int panel, int ctrl, int ctrlToMove);int CVIFUNC PlaceBefore(int panel, int ctrl, int ctrlToMove);int CVIFUNC GetNumericAttributeAsType(int panel, int ctrl, int attribute, int destType, void *value); /* no function panel, too obscure */int CVIFUNC CenterCtrl(int panel, int ctrl, int top, int left, int height, int width);int CVIFUNC SizeRingCtrlToText(int panel, int ring);int CVIFUNC ConformCtrlBitmapToPanel (int panel, int control, int index, int bitmap3dColor, int new3dColor, int bitmapTextColor, int newTextColor);void CVIFUNC SetCtrlRightPosition(int panel, int control, int right); /* no function panel */int CVIFUNC GetCtrlBoundRectAttribute(int panel, int ctrl, int attribute, int *value); /* no function panel */int CVIFUNC SetCtrlBoundRectAttribute(int panel, int ctrl, int attribute, int value); /* no function panel */int CVIFUNC PreviousCtrl(int panel, int ctrl, int wrap); /* no function panel */int CVIFUNC CtrlCanBeTabStop(int panel, int ctrl); /* no function panel */int CVIFUNC NextCtrlInTabOrder(int panel, int ctrl, int forward, int wrap); /* no function panel */int CVIFUNC ActivateFirstCtrl(int panel); /* no function panel */void CVIFUNC DiscardCtrlNoBOLE(int panel, int ctrl, int noDiscardEvent); /* no function panel */void CVIFUNC DiscardPanelNoBOLE(int panel, int noDiscardEvent); /* no function panel */int CVIFUNC GetMetaFontInfo(char metaFont[], char typeface[], int *bold, int *underline, int *strikeout, int *italic, int *size); int CVIFUNC IsMetaFont(char fontname[256]); int CVIFUNC GetCtrlList(int panel, ListType *ctrlList); /* no function panel */void CVIFUNC SortCtrlListByTabOrder(int panel, ListType ctrlList); /* no function panel */char * CVIFUNC UILEventString(int event);int CVIFUNC ChainCtrlCallback(int panel, int ctrl, CtrlCallbackPtr newCallback, void *newCallbackData, char *type);int CVIFUNC GetChainedCallbackData(int panel, int ctrl, char *type, void **callbackData);int CVIFUNC CallCtrlCallback(int panel, int ctrl, int event, int eventData1, int eventData2, int *returnValue);int CVIFUNC UnchainCtrlCallback(int panel, int ctrl, char *type);int CVIFUNC ChainPanelCallback(int panel, PanelCallbackPtr newCallback, void *newCallbackData, char *type); int CVIFUNC GetChainedPanelCallbackData(int panel, char *type, void **callbackData); int CVIFUNC CallPanelCallback(int panel, int event, int eventData1, int eventData2, int *returnValue); int CVIFUNC UnchainPanelCallback(int panel, char *type);int CVIFUNC EnableExtendedMouseEvents(int panel, int ctrl, double minPeriod);int CVIFUNC DisableExtendedMouseEvents(int panel, int ctrl);int CVIFUNC ConvertMouseCoordinates(int panel, int ctrl, int relativeToCtrl, int clipToControl, int *x, int *y); /*** Popup Dialogs ***/typedef void (CVICALLBACK * ShowColorChangeFunction)(ListType colorList, void *colorChangeCallbackData, int colorListIndex);typedef struct { char *name; int defaultColor; int color; } ColorChangeEntry;int CVIFUNC ColorChangePopup(char *title, ListType colorList, int allowDefault, ShowColorChangeFunction showColorChangeFunc, void *colorChangeCallbackData);int CVIFUNC CreateProgressDialog(char title[], char indicatorLabel[], int modal, int indicatorMarkerStyle, char cancelButtonLabel[]);int CVIFUNC UpdateProgressDialog(int panel, int percentDone, int processEvents);void CVIFUNC DiscardProgressDialog(int panel); /*** Constants and Conversions ***/ /* Note: A 8-byte double has 15 digits of precision */#define PI 3.1415926535897932384626433832795028841971#define TWO_PI 6.28318530717958646#define HALF_PI 1.57079632679489661#define THREE_HALVES_PI 4.71238898038468990#define RECIPROCAL_OF_PI 0.31830988618379067153#define LN_OF_PI 1.14472988584940017414#define LOG_10_OF_PI 0.49714987269413385435#define EULER 2.71828182845904523536#define RECIPROCAL_OF_EULER 0.36787944117144232159#define LOG_10_OF_EULER 0.4342944819032518276511289189166050822944#define LN_OF_10 2.3025850929940456840179914546843642076011#define LN_OF_2 0.6931471805599453094172321214581765680755#define PLANCK_CONSTANT 6.626176e-34 /* 1/Hz, uncertainty 5.4 ppm */#define ELEMENTARY_CHARGE 1.6021892e-19 /* Coulombs, uncertainty 2.9 ppm */#define SPEED_OF_LIGHT 299792458.0 /* Meters/Second, uncertainty 0.004 ppm */#define GRAVITATIONAL_CONSTANT 6.6720e-11 /* N*M^2/K^2, uncertainty 615 ppm */#define AVOGADRO_CONSTANT 6.022045e23 /* 1/mol, uncertainty 5.1 ppm */#define RYDBERG_CONSTANT 10973731.77 /* 1/m, uncertainty 0.075 ppm */#define MOLAR_GAS_CONSTANT 8.31441 /* 1/(m * K), uncertainty 31 ppm */#define RAD_TO_DEG(r) ((r)*(360.0/TWO_PI))#define DEG_TO_RAD(d) ((d)*(TWO_PI/360.0))#define CELSIUS_TO_KELVIN(c) ((c) + 273.15)#define KELVIN_TO_CELSIUS(k) ((k) - 273.15)#define CELSIUS_TO_FAHRENHEIT(c) (((c)*(9.0/5.0))+32.0)#define FAHRENHEIT_TO_CELSIUS(f) (((f)-32.0) * (5.0/9.0))#define METERS_TO_FEET(m) ((m)*3.2808399)#define FEET_TO_METERS(f) ((f)/3.2808399)#define KILOMETERS_TO_MILES(k) ((k)*0.62137119)#define MILES_TO_KILOMETERS(m) ((m)/0.62137119)#define KILOGRAMS_TO_POUNDS(k) ((k)*2.2046226) /* avdp.*/#define POUNDS_TO_KILOGRAMS(p) ((p)/2.2046226)#define LITERS_TO_GALLONS(l) ((l)*0.26417205) /* U.S. Liquid */#define GALLONS_TO_LITERS(g) ((g)/0.26417205) /* U.S. Liquid */double CVIFUNC Pi(void);double CVIFUNC TwoPi(void);double CVIFUNC HalfPi(void);double CVIFUNC ThreeHalvesPi(void);double CVIFUNC ReciprocalOfPi(void);double CVIFUNC LnOfPi(void);double CVIFUNC Log10OfPi(void);double CVIFUNC Euler(void);double CVIFUNC ReciprocalOfEuler(void);double CVIFUNC Log10OfEuler(void);double CVIFUNC Ln10(void);double CVIFUNC Ln2(void);double CVIFUNC PlanckConstant(void);double CVIFUNC ElementaryCharge(void);double CVIFUNC SpeedOfLight(void);double CVIFUNC GravitationalConstant(void);double CVIFUNC AvogadroConstant(void);double CVIFUNC RydbergConstant(void);double CVIFUNC MolarGasConstant(void);double CVIFUNC DegToRad(double degrees);double CVIFUNC RadToDeg(double radians);double CVIFUNC CelsiusToKelvin(double degreesCelsius);double CVIFUNC KelvinToCelsius(double degreesKelvin);double CVIFUNC CelsiusToFahrenheit(double degreesCelsius);double CVIFUNC FahrenheitToCelsius(double degreesFahrenheit);double CVIFUNC MetersToFeet(double meters);double CVIFUNC FeetToMeters(double feet);double CVIFUNC KilometersToMiles(double kilometers);double CVIFUNC MilesToKilometers(double miles);double CVIFUNC KilogramsToPounds(double kilograms);double CVIFUNC PoundsToKilograms(double pounds);double CVIFUNC LitersToGallons(double liters);double CVIFUNC GallonsToLiters(double gallons);#ifdef __cplusplus }#endif#endif /* TOOLBOX_HEADER */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -