//////////////////////////////////////////////////////////////////////////////// //! //! \brief Mildmr CAPI header (Mdmr...) //! //! AUTHOR: Matrox Imaging //! //! COPYRIGHT NOTICE: //! Copyright © Matrox Electronic Systems Ltd., 1992-2023. //! All Rights Reserved // Revision: 10.60.0776 //////////////////////////////////////////////////////////////////////////////// #ifndef __MIL_DMR_H__ #define __MIL_DMR_H__ #if (!M_MIL_LITE) /* MIL FULL ONLY */ /* C++ directive if needed */ #ifdef __cplusplus extern "C" { #endif //////////////////////////////////////////////////////////////////////////////// // MdmrAlloc ContextTypes #define M_DOT_MATRIX 2194L //////////////////////////////////////////////////////////////////////////////// // Indexing, used in other Mdmr functions (MdmrInquire(), MdmrControl(), ...) #define M_DEFAULT 0x10000000L // also in mil.h #define M_CONTEXT 0x08000000L // also in mil.h #define M_GENERAL 0x20000000L // also in milmod.h, milstr.h, ... #define M_ALL 0x40000000L // also in mil.h #define M_ANY 0x11000000L // also in mil.h, ... #define M_FONT_MASK 0x00800000L // also in milstr.h #define M_STRING_MASK 0x00400000L // also in milstr.h #define M_CONSTRAINED_POS_MASK 0x00600000L #define M_REAL_INDEX_MASK 0x000000FFL // also in milstr.h #define M_FONT_INDEX_FLAG M_FONT_MASK #define M_STRING_INDEX_FLAG M_STRING_MASK #define M_FONT_LABEL_FLAG 0x00000000L #define M_STRING_LABEL_FLAG 0x00C00000L #define M_POSITION_CONSTRAINED_ORDER_FLAG 0x00200000L #define M_POSITION_IN_STRING_FLAG 0x00600000L #define M_INDEX_IN_STRING_FLAG 0x00A00000L #define M_INDEX_IN_FORMATTED_STRING_FLAG 0x00E00000L #define M_FONT_INDEX(IndexValue) (M_FONT_MASK | (IndexValue)) // also in milstr.h #define M_STRING_INDEX(IndexValue) (M_STRING_MASK | (IndexValue)) // also in milstr.h #define M_FONT_LABEL(LabelValue) (M_FONT_LABEL_FLAG | (LabelValue)) // also in milstr.h #define M_STRING_LABEL(LabelValue) (M_STRING_LABEL_FLAG | (LabelValue)) // also in milstr.h #define M_INDEX_IN_STRING(IndexValue) (M_INDEX_IN_STRING_FLAG | (IndexValue)) #define M_INDEX_IN_FORMATTED_STRING(IndexValue) (M_INDEX_IN_FORMATTED_STRING_FLAG | (IndexValue)) #define M_POSITION_IN_STRING(PositionValue) (M_POSITION_IN_STRING_FLAG | (PositionValue)) #define M_POSITION_CONSTRAINED_ORDER(OrderValue) (M_POSITION_CONSTRAINED_ORDER_FLAG | (OrderValue)) #define M_ALL_CONSTRAINED_POSITIONS M_POSITION_CONSTRAINED_ORDER(M_ALL) #define M_NEW_LABEL 0x04000000L #define M_OWNER_SYSTEM 1101L // also in mil.h, ... #define M_MODIFICATION_COUNT 5010L // also in mil.h, ... //////////////////////////////////////////////////////////////////////////////// // MdmrControl #define M_STRING_ADD 700L // also in milstr.h #define M_STRING_DELETE 701L // also in milstr.h #define M_FONT_ADD 702L // also in milstr.h #define M_FONT_DELETE 703L // also in milstr.h #define M_DOT_DIAMETER_MODE 2228L #define M_DOT_DIAMETER 2229L #define M_DOT_DIAMETER_SPREAD_MODE 5234L #define M_DOT_DIAMETER_SPREAD 5028L #define M_DOT_DIAMETER_STEP 5029L #define M_STRING_BOX_CENTER_MODE 2230L #define M_STRING_BOX_CENTER_X 2231L #define M_STRING_BOX_CENTER_Y 2233L #define M_TEXT_BLOCK_SIZE_MODE 2236L #define M_TEXT_BLOCK_WIDTH 2235L #define M_TEXT_BLOCK_HEIGHT 2237L #if OldDefinesSupport #define M_STRING_BOX_SIZE_MODE M_TEXT_BLOCK_SIZE_MODE #define M_STRING_BOX_WIDTH M_TEXT_BLOCK_WIDTH #define M_STRING_BOX_HEIGHT M_TEXT_BLOCK_HEIGHT MIL_DEPRECATED(M_STRING_BOX_SIZE_MODE, 1050) MIL_DEPRECATED(M_STRING_BOX_WIDTH, 1050) MIL_DEPRECATED(M_STRING_BOX_HEIGHT, 1050) #endif #define M_STRING_ANGLE_MODE 2238L #define M_STRING_ANGLE 87L #define M_STRING_ANGLE_INPUT_UNITS 2745L #define M_ITALIC_ANGLE_MODE 2239L #define M_ITALIC_ANGLE 2240L #define M_DOT_LONGITUDINAL_DISTANCE_MODE 2241L #define M_DOT_LONGITUDINAL_DISTANCE 2242L #define M_DOT_TRANSVERSE_DISTANCE_MODE 2243L #define M_DOT_TRANSVERSE_DISTANCE 2246L #define M_MIN_CONTRAST_MODE 2247L #define M_MIN_CONTRAST 600L // also in milim.h, milstr.h, milcode.h, ... #define M_MIN_INTENSITY_MODE 2248L #define M_MIN_INTENSITY 12L // also in mil3dmap.h #define M_MAX_INTENSITY_MODE 2250L #define M_MAX_INTENSITY 2251L //#define M_EXTRACTION_GRID_OFFSET 2252L //#define M_EXTRACTION_GRID_MATCHING 2253L //#define M_EXTRACTION_GRID_FIT_MODE 2254L //#define M_EXTRACTION_GRID_MAX_NB_ITERATIONS 2255L // //#define M_MATCHER_GRID_SCORE_MODE 2256L //#define M_MATCHER_GRID_DISTANCE 2257L //#define M_MATCHER_GRID_MODE 2258L //#define M_MATCHER_TEMPLATE_MODE 2259L #define M_FIXED_SPACING 2260L #define M_USE_GRAMMAR 2261L #define M_USE_BASELINE 2262L #define M_BASELINE_THRESHOLD 2263L #define M_USE_CERTAINTY 2264L #define M_CERTAINTY 202L // also in milmod.h, milpat.h, milocr.h, ... #define M_TIMEOUT 2077L // also in milblob.h, milcode.h, miledge.h, ... #define M_STRING_PARTIAL_CHAR_INVALID (5231L | M_CLIENT_ENCODING) #define M_STRING_PARTIAL_MODE 4186L #define M_STRING_CHAR_INVALID_INDICES 4187L #define M_FORMATTED_STRING_CHAR_INVALID_INDICES 4188L #define M_SKIPPED_POSITIONS 5527L //////////////////////////////////////////////////////////////////////////////// // MdmrControl / MdmrInquire // Context #define M_FOREGROUND_VALUE 4L // also in milstr.h, milocr.h, ... #define M_FOREGROUND_WHITE 0x80L // also in milstr.h, milblob.h, ... #define M_FOREGROUND_BLACK 0x100L // also in milstr.h, milblob.h, ... #define M_SPACE_SIZE_MIN 2358L #define M_SPACE_SIZE_MAX 2359L #define M_SPACE_SIZE_MIN_MODE 2459L #define M_SPACE_SIZE_MAX_MODE 2369L #define M_STRING_PITCH 3696L #define M_STRING_PITCH_MODE 3697L #define M_ITALIC_PITCH 3698L #define M_ITALIC_PITCH_MODE 3699L #define M_CHAR_WIDTH_FACTOR 2387L #define M_ENABLE -9997L // also in mil.h, milstr.h, ... #define M_DISABLE -9999L // also in mil.h, milstr.h, ... #define M_AUTO 444L // also in mil.h, ... #define M_USER_DEFINED 21L // also in mil.h, ... // Result #define M_RESET 9L // also in mil.h, mildisplay.h #define M_STOP_READ 610L // also in milstr.h, milcode.h #define M_RESULT_OUTPUT_UNITS 1300L // also in milim.h // Fonts #define M_FONT_SIZE_COLUMNS 2207L #define M_FONT_SIZE_ROWS 2208L #define M_FONT_SIZE_TEMPLATE 2222L #define M_FONT_LABEL_VALUE 2216L // also in mil.h, milstr.h, ... #define M_NUMBER_OF_CHARS 814L // also in milstr.h #define M_CHAR_ADD 1L // also in milstr.h #define M_CHAR_DELETE 2L // also in milstr.h #define M_CHAR_TEMPLATE 2223L // Chars #define M_CHAR_NAME (2212L | M_CLIENT_ENCODING) #define M_CHAR_INDEX_VALUE 2224L // String models #define M_STRING_LABEL_VALUE 2288L #define M_STRING_INDEX_VALUE 2313L #define M_STRING_NUMBER 74L // also in milstr.h, milocr.h #define M_STRING_SIZE_MIN 500L #define M_STRING_SIZE_MAX 62L // also in milstr.h, milocr.h #define M_STRING_SIZE_MIN_MAX 2388L #define M_STRING_RANK 2334L #define M_STRING_ACCEPTANCE 24L // also in milstr.h, milocr.h #define M_STRING_CERTAINTY 526L // also in milstr.h #define M_CHAR_ACCEPTANCE 25L // also in milstr.h, milocr.h // Constrained positions #define M_CONSTRAINED_ORDER 2335L #define M_CONSTRAINED_POS_INDEX_VALUE M_CONSTRAINED_ORDER #define M_ADD_PERMITTED_CHARS_ENTRY 2282L #define M_DELETE_PERMITTED_CHARS_ENTRY 2714L #define M_NUMBER_OF_PERMITTED_CHARS_ENTRIES 2283L #define M_RESET_PERMITTED_CHARS 2284L #define M_RESET_POSITION_TO_IMPLICIT_CONSTRAINTS 2337L #define M_RESET_IMPLICIT_CONSTRAINTS 2466L #define M_CLONE_CONSTRAINTS_FROM 2285L #define M_CLONE_PERMITTED_CHARS_FROM 2296L #define M_CHAR_MAX_BASELINE_DEVIATION 513L // also in milstr.h #define M_POSITION 0x00000402L // also in milmeas.h, miledge.h, milmetrol.h, mil3dmap.h #define M_NUMBER_OF_CONSTRAINED_POSITIONS 2465L // Character types #define M_ANY 0x11000000L // also in mil.h, milstr.h, ... #define M_LETTER 0x00020000L // also in milstr.h, milocr.h #define M_DIGIT 0x00040000L // also in milstr.h, milocr.h #define M_LETTERS_LOWERCASE 0X0000090EL #define M_LETTERS_UPPERCASE 0X0000090FL #define M_SPACE 2390L #define M_PUNCTUATION 1L // also in milstr.h #define M_CHAR_LIST (0X000008E9L | M_CLIENT_ENCODING) #define M_LETTERS M_LETTER #define M_DIGITS M_DIGIT #define M_PUNCTUATIONS M_PUNCTUATION #define M_TYPE 1008L // also in mil.h //////////////////////////////////////////////////////////////////////////////// // MdmrInquire // Context #define M_PREPROCESSED 14L // also in milmod.h, milstr.h, ... #define M_NUMBER_OF_STRING_MODELS 900L // also in milstr.h #define M_NUMBER_OF_FONTS 901L // also in milstr.h #define M_FONT_INDEX_VALUE 2226L #define M_INVALID -1 // also in mil.h //////////////////////////////////////////////////////////////////////////////// // MdmrName operations #define M_SET_NAME 1L // also in milmetrol.h #define M_GET_NAME 2L // also in milmetrol.h #define M_GET_FONT_LABEL 2201L #define M_GET_STRING_LABEL 2202L #define M_GET_FONT_INDEX 2203L #define M_GET_STRING_INDEX 2204L //////////////////////////////////////////////////////////////////////////////// // MdmrAllocResult ResultTypes #define M_STRING (3L | M_CLIENT_ENCODING) // also defined in milstr.h, milocr.h #define M_STRING_CHAR_NUMBER 2277L #define M_FORMATTED_STRING 793L // also in milstr.h #define M_FORMATTED_STRING_CHAR_NUMBER 2487L //////////////////////////////////////////////////////////////////////////////// // ControlTypes for dot matrix result buffers //////////////////////////////////////////////////////////////////////////////// // MdmrImportFont #define M_INTERACTIVE M_NULL // also in mil.h, milstr.h, ... #define M_DMR_FONT_FILE 2199L #define M_IMPORT_ALL_CHARS M_NULL #define M_OVERWRITE 1861L // also in mil.h, mil3dmap.h #define M_NO_OVERWRITE 0x200L // also in milstr.h //////////////////////////////////////////////////////////////////////////////// // MdmrExportFont #define M_HEX_UTF16_FOR_ALL 0x00100000L #define M_HEX_UTF16_FOR_NON_BASIC_LATIN 0x00080000L //////////////////////////////////////////////////////////////////////////////// // MdmrGetResult ResultTypes // General #define M_STATUS 0x00008002L // also in milcode.h, milcolor.h, miledge.h, ... #define M_READ_NOT_PERFORMED 2552L #define M_CURRENTLY_READING 2553L #define M_TIMEOUT_REACHED 2554L #define M_STOPPED_BY_REQUEST 2555L #define M_NOT_ENOUGH_MEMORY 4L // also in mil.h, mil3dmap.h #define M_COMPLETE 0x00000000L // also in mil.h, milmod.h #define M_INTERNAL_ERROR 5L // also in milcal.h // String #define M_STRING_BOX_UL_X 914L // also in milstr.h #define M_STRING_BOX_UL_Y 915L // also in milstr.h #define M_STRING_BOX_UR_X 916L // also in milstr.h #define M_STRING_BOX_UR_Y 917L // also in milstr.h #define M_STRING_BOX_BR_X 918L // also in milstr.h #define M_STRING_BOX_BR_Y 919L // also in milstr.h #define M_STRING_BOX_BL_X 920L // also in milstr.h #define M_STRING_BOX_BL_Y 921L // also in milstr.h #define M_STRING_MODEL_INDEX 585L // also in milstr.h #define M_STRING_MODEL_LABEL 2278L #define M_STRING_POSITION_X 586L // also in milstr.h #define M_STRING_POSITION_Y 587L // also in milstr.h #define M_STRING_SCORE 0x00001400L // also in milocr.h, milstr.h #define M_STRING_WIDTH 2297L #define M_STRING_HEIGHT 2298L // Chars #define M_CHAR_SCORE 5L // also in milocr.h, milstr.h #define M_CHAR_POSITION_X 6L // also in milocr.h, milstr.h #define M_CHAR_POSITION_Y 7L // also in milocr.h, milstr.h #define M_CHAR_BOX_UL_X 922L // also in milstr.h #define M_CHAR_BOX_UL_Y 923L // also in milstr.h #define M_CHAR_BOX_UR_X 924L // also in milstr.h #define M_CHAR_BOX_UR_Y 925L // also in milstr.h #define M_CHAR_BOX_BR_X 926L // also in milstr.h #define M_CHAR_BOX_BR_Y 927L // also in milstr.h #define M_CHAR_BOX_BL_X 928L // also in milstr.h #define M_CHAR_BOX_BL_Y 929L // also in milstr.h #define M_CHAR_FONT_INDEX 2279L #define M_CHAR_FONT_LABEL 2280L #define M_CHAR_WIDTH 2311L #define M_CHAR_HEIGHT 2312L #define M_CHAR_ANGLE 794L // also in milstr.h #define M_STRING_CHAR_ANGLE M_CHAR_ANGLE // also in milstr.h #define M_ITALIC_CHAR_ANGLE 3753L //////////////////////////////////////////////////////////////////////////////// // MdmrDraw ControlTypes #define M_DRAW_MIL_FONT_STRING 0x00000020L // also in milstr.h #define M_DRAW_MIL_FONT_FORMATTED_STRING 2715L #define M_DRAW_STRING_BOX 0x00000004L // also in milstr.h #define M_DRAW_STRING_CHAR_BOX 0x00000008L // also in milstr.h #define M_DRAW_STRING_CHAR_POSITION 0x00000010L // also in milstr.h //////////////////////////////////////////////////////////////////////////////// // Other defines //////////////////////////////////////////////////////////////////////////////// // CAPI function prototypes MIL_ID MFTYPE MdmrAlloc(MIL_ID SysId, MIL_INT64 ContextType, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr); MIL_ID MFTYPE MdmrAllocResult(MIL_ID SysId, MIL_INT64 ResultType, MIL_INT64 ControlFlag, MIL_ID* ResultDmrIdPtr); void MFTYPE MdmrFree(MIL_ID ContextOrResultDmrId); #if M_MIL_USE_64BIT // Prototypes for 64 bits OSs void MFTYPE MdmrControlInt64(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, MIL_INT64 ControlValue); void MFTYPE MdmrControlDouble(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, MIL_DOUBLE ControlValue); void MFTYPE MdmrControlStringModelDouble(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , MIL_DOUBLE ControlValue1 , MIL_DOUBLE ControlValue2 , const void* ControlValuePtr ); void MFTYPE MdmrControlStringModelInt64(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , MIL_INT64 ControlValue1 , MIL_INT64 ControlValue2 , const void* ControlValuePtr ); #else // Prototypes for 32 bits OSs #define MdmrControlInt64 MdmrControl #define MdmrControlDouble MdmrControl #define MdmrControlStringModelInt64 MdmrControlStringModel #define MdmrControlStringModelDouble MdmrControlStringModel void MFTYPE MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, MIL_DOUBLE ControlValue); void MFTYPE MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , MIL_DOUBLE ControlValue1 , MIL_DOUBLE ControlValue2 , const void* ControlValuePtr ); #endif MIL_INT MFTYPE MdmrInquire(MIL_ID ContextOrResultDmrId, MIL_INT64 InquireType, void* UserVarPtr); MIL_INT MFTYPE MdmrInquireStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 PermittedCharEntry , MIL_INT64 InquireType , void* UserVarPtr ); void MFTYPE MdmrPreprocess(MIL_ID ContextDmrId, MIL_INT64 ControlFlag); void MFTYPE MdmrRead(MIL_ID ContextDmrId, MIL_ID TargetImageBufId, MIL_ID ResultDmrId, MIL_INT64 ControlFlag); void MFTYPE MdmrGetResult(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharPositionIndex, MIL_INT64 ResultType, void* ResultArrayPtr); void MFTYPE MdmrDraw(MIL_ID ContextGraId, MIL_ID ResultDmrId, MIL_ID DstImageBufOrListGraId, MIL_INT64 Operation, MIL_INT64 Index, MIL_INT64 CharIndex, MIL_INT64 ControlFlag); #if M_MIL_USE_UNICODE void MFTYPE MdmrSaveA(MIL_CONST_TEXTA_PTR FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag); MIL_ID MFTYPE MdmrRestoreA(MIL_CONST_TEXTA_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr); void MFTYPE MdmrStreamA(MIL_TEXTA_PTR MemPtrOrFileName, MIL_ID SysId, MIL_INT64 Operation, MIL_INT64 StreamType, MIL_DOUBLE Version, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr, MIL_INT* SizeByteVarPtr); void MFTYPE MdmrSaveW(MIL_CONST_TEXTW_PTR FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag); MIL_ID MFTYPE MdmrRestoreW(MIL_CONST_TEXTW_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr); void MFTYPE MdmrStreamW(MIL_TEXTW_PTR MemPtrOrFileName, MIL_ID SysId, MIL_INT64 Operation, MIL_INT64 StreamType, MIL_DOUBLE Version, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr, MIL_INT* SizeByteVarPtr); void MFTYPE MdmrImportFontW(MIL_CONST_TEXTW_PTR FileName , MIL_INT64 FileFormat , MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_CONST_TEXTW_PTR CharList , MIL_INT64 ControlFlag ); void MFTYPE MdmrImportFontA(MIL_CONST_TEXTA_PTR FileName , MIL_INT64 FileFormat , MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_CONST_TEXTA_PTR CharList , MIL_INT64 ControlFlag ); void MFTYPE MdmrExportFontW(MIL_CONST_TEXTW_PTR FileName , MIL_INT64 FileFormat , MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 ControlFlag ); void MFTYPE MdmrExportFontA(MIL_CONST_TEXTA_PTR FileName , MIL_INT64 FileFormat , MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 ControlFlag ); #if M_MIL_USE_64BIT void MFTYPE MdmrControlFontDoubleW(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXTW_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ); void MFTYPE MdmrControlFontInt64W(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXTW_PTR CharNamePtr , MIL_INT64 ControlType , MIL_INT64 ControlValue , const void* ControlValuePtr ); void MFTYPE MdmrControlFontDoubleA(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXTA_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ); void MFTYPE MdmrControlFontInt64A(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXTA_PTR CharNamePtr , MIL_INT64 ControlType , MIL_INT64 ControlValue , const void* ControlValuePtr ); #else // Prototypes for 32 bits OSs #define MdmrControlFontDoubleW MdmrControlFontW #define MdmrControlFontDoubleA MdmrControlFontA #define MdmrControlFontInt64W MdmrControlFontW #define MdmrControlFontInt64A MdmrControlFontA void MFTYPE MdmrControlFontW(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXTW_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ); void MFTYPE MdmrControlFontA(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXTA_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ); #endif MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex , MIL_CONST_TEXTW_PTR CharNamePtr , MIL_INT64 InquireType , void* UserVarPtr ); MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex , MIL_CONST_TEXTA_PTR CharNamePtr , MIL_INT64 InquireType , void* UserVarPtr ); void MFTYPE MdmrNameW(MIL_ID ContextDmrId , MIL_INT64 Operation , MIL_INT64 LabelOrIndex , MIL_TEXTW_PTR Name , MIL_INT* ValuePtr , MIL_INT64 ControlFlag ); void MFTYPE MdmrNameA(MIL_ID ContextDmrId , MIL_INT64 Operation , MIL_INT64 LabelOrIndex , MIL_TEXTA_PTR Name , MIL_INT* ValuePtr , MIL_INT64 ControlFlag ); #if M_MIL_UNICODE_API #define MdmrSave MdmrSaveW #define MdmrRestore MdmrRestoreW #define MdmrStream MdmrStreamW #define MdmrImportFont MdmrImportFontW #define MdmrExportFont MdmrExportFontW #define MdmrInquireFont MdmrInquireFontW #define MdmrName MdmrNameW #else #define MdmrSave MdmrSaveA #define MdmrRestore MdmrRestoreA #define MdmrStream MdmrStreamA #define MdmrImportFont MdmrImportFontA #define MdmrExportFont MdmrExportFontA #define MdmrInquireFont MdmrInquireFontA #define MdmrName MdmrNameA #endif #else void MFTYPE MdmrSave(MIL_CONST_TEXT_PTR FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag); MIL_ID MFTYPE MdmrRestore(MIL_CONST_TEXT_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr); void MFTYPE MdmrStream(MIL_TEXT_PTR MemPtrOrFileName, MIL_ID SysId, MIL_INT64 Operation, MIL_INT64 StreamType, MIL_DOUBLE Version, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr, MIL_INT* SizeByteVarPtr); void MFTYPE MdmrImportFont(MIL_CONST_TEXT_PTR FileName , MIL_INT64 FileFormat , MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_CONST_TEXT_PTR CharList , MIL_INT64 ControlFlag ); void MFTYPE MdmrExportFont(MIL_CONST_TEXT_PTR FileName , MIL_INT64 FileFormat , MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 ControlFlag ); #if M_MIL_USE_64BIT void MFTYPE MdmrControlFontInt64(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXT_PTR CharNamePtr , MIL_INT64 ControlType , MIL_INT64 ControlValue , const void* ControlValuePtr ); void MFTYPE MdmrControlFontDouble(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXT_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ); #else // Prototypes for 32 bits OSs #define MdmrControlFontDouble MdmrControlFont #define MdmrControlFontInt64 MdmrControlFont void MFTYPE MdmrControlFont(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXT_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ); #endif //#if M_MIL_USE_64BIT MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex , MIL_CONST_TEXT_PTR CharNamePtr , MIL_INT64 InquireType , void* UserVarPtr ); void MFTYPE MdmrName(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation , MIL_INT64 LabelOrIndex , MIL_TEXT_PTR Name , MIL_INT* ValuePtr , MIL_INT64 ControlFlag ); #endif /* C++ directive if needed */ #ifdef __cplusplus } #endif //////////////////////////////////////////////////////////////////////////////// #ifdef __cplusplus inline void MFTYPE MdmrStreamCpp(MilStreamParam MemPtrOrFileName, MIL_ID SysId, MIL_INT64 Operation, MIL_INT64 StreamType, MIL_DOUBLE Version, MIL_INT64 ControlFlag, MIL_ID* ContextDmrIdPtr, MIL_INT* SizeByteVarPtr) { MdmrStream(MemPtrOrFileName.m_Param, SysId, Operation, StreamType, Version, ControlFlag, ContextDmrIdPtr, SizeByteVarPtr); } #undef MdmrStream #define MdmrStream MdmrStreamCpp #if M_MIL_USE_LINUX inline void MFTYPE MdmrNameCpp(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MilNameParam Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag) { //if operation generate an output if((Operation == M_GET_NAME) && Name.m_ConstStr) { #if M_MIL_USE_SAFE_TYPE SafeTypeError(MIL_TEXT("MdmrName"), MIL_TEXT("Operation not supported with const.")); #endif } MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, Name.m_Param, ValuePtr, ControlFlag); } #if !defined(M_COMPILING_MILDMRDLL) #undef MdmrName #define MdmrName MdmrNameCpp #endif #else inline void MFTYPE MdmrName(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MilNameParam Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag) { //if operation generate an output if((Operation == M_GET_NAME) && Name.m_ConstStr) { #if M_MIL_USE_SAFE_TYPE SafeTypeError(MIL_TEXT("MdmrName"), MIL_TEXT("Operation not supported with const.")); #endif } MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, Name.m_Param, ValuePtr, ControlFlag); } #endif #endif // __cplusplus #if M_MIL_USE_64BIT #ifdef __cplusplus ////////////////////////////////////////////////////////////// // MdmrControl function overloads when compiling c++ files ////////////////////////////////////////////////////////////// template inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, T* ControlValue) { MdmrControlInt64(ContextOrResultDmrId, ControlType, M_PTR_TO_MIL_INT(ControlValue)); } template inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, T ControlValue) { MdmrControlInt64(ContextOrResultDmrId, ControlType, ControlValue); } inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, float ControlValue) { MdmrControlDouble(ContextOrResultDmrId, ControlType, ControlValue); } inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, MIL_DOUBLE ControlValue) { MdmrControlDouble(ContextOrResultDmrId, ControlType, ControlValue); } ////////////////////////////////////////////////////////////// // MdmrControlStringModel function overloads when compiling // c++ files ////////////////////////////////////////////////////////////// template inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , T1 ControlValue1 , T2 ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelInt64(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, ControlValue1, ControlValue2, ControlValuePtr); } template inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , T1 ControlValue1 , float ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast(ControlValue1), static_cast(ControlValue2), ControlValuePtr); } template inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , float ControlValue1 , T2 ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast(ControlValue1), static_cast(ControlValue2), ControlValuePtr); } inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , float ControlValue1 , float ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast(ControlValue1), static_cast(ControlValue2), ControlValuePtr); } template inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , T1 ControlValue1 , MIL_DOUBLE ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast(ControlValue1), static_cast(ControlValue2), ControlValuePtr); } template inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , MIL_DOUBLE ControlValue1 , T2 ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast(ControlValue1), static_cast(ControlValue2), ControlValuePtr); } inline void MdmrControlStringModel(MIL_ID ContextDmrId , MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position , MIL_INT64 ControlType , MIL_DOUBLE ControlValue1 , MIL_DOUBLE ControlValue2 , const void* ControlValuePtr ) { MdmrControlStringModelDouble(ContextDmrId, StringModelLabelOrIndex, Position, ControlType, static_cast(ControlValue1), static_cast(ControlValue2), ControlValuePtr); } #if M_MIL_USE_UNICODE #if M_MIL_UNICODE_API #define MdmrControlFontDouble_API MdmrControlFontDoubleW #define MdmrControlFontInt64_API MdmrControlFontInt64W #else #define MdmrControlFontDouble_API MdmrControlFontDoubleA #define MdmrControlFontInt64_API MdmrControlFontInt64A #endif #else #define MdmrControlFontDouble_API MdmrControlFontDouble #define MdmrControlFontInt64_API MdmrControlFontInt64 #endif inline void MdmrControlFont(MIL_ID ContextDmrId , MIL_INT64 FontLabelOrIndex , MIL_INT64 CharIndex , MIL_CONST_TEXT_PTR CharNamePtr , MIL_INT64 ControlType , MIL_DOUBLE ControlValue , const void* ControlValuePtr ) { MdmrControlFontDouble_API(ContextDmrId , FontLabelOrIndex , CharIndex , CharNamePtr , ControlType , ControlValue , ControlValuePtr ); } #define MdmrControlFontW MdmrControlFont #define MdmrControlFontA MdmrControlFont #else ////////////////////////////////////////////////////////////// // For C file, call the default function, i.e. Double one ////////////////////////////////////////////////////////////// #define MdmrControl MdmrControlDouble #define MdmrControlStringModel MdmrControlStringModelDouble #if M_MIL_USE_UNICODE #if M_MIL_UNICODE_API #define MdmrControlFontInt64 MdmrControlFontInt64W #define MdmrControlFontDouble MdmrControlFontDoubleW #define MdmrControlFont MdmrControlFontDoubleW #define MdmrControlFontW MdmrControlFontDoubleW #define MdmrControlFontA MdmrControlFontDoubleA #else #define MdmrControlFontInt64 MdmrControlFontInt64A #define MdmrControlFontDouble MdmrControlFontDoubleA #define MdmrControlFont MdmrControlFontDoubleA #define MdmrControlFontA MdmrControlFontDoubleA #define MdmrControlFontW MdmrControlFontDoubleW #endif #else #define MdmrControlFont MdmrControlFontDouble #endif #endif // __cplusplus #else // M_MIL_USE_64BIT // Prototypes for 32 bits OSs #if M_MIL_USE_UNICODE #if M_MIL_UNICODE_API #define MdmrControlFontInt64 MdmrControlFontW #define MdmrControlFontDouble MdmrControlFontW #define MdmrControlFont MdmrControlFontW #else #define MdmrControlFontInt64 MdmrControlFontA #define MdmrControlFontDouble MdmrControlFontA #define MdmrControlFont MdmrControlFontA #endif #endif #endif // M_MIL_USE_64BIT #ifdef __cplusplus struct MilCPPConstMilStringOrPtrParam { MilCPPConstMilStringOrPtrParam(MIL_CONST_TEXT_PTR pStrParam) { m_pStr = pStrParam; } #if M_MIL_USE_STRING MilCPPConstMilStringOrPtrParam(const MIL_STRING& MilStringParam) { m_pStr = MilStringParam.c_str(); } #endif MIL_CONST_TEXT_PTR m_pStr; }; #endif //__cplusplus #if M_MIL_USE_SAFE_TYPE ////////////////////////////////////////////////////////////// // See milos.h for explanation about these functions. ////////////////////////////////////////////////////////////// // ------------------------------------------------------------------------- // MdmrGetResult safe type definitions // inline void MFTYPE MdmrGetResultSafeType(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, MilVoidPtr ResultArrayPtr) { MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64; if(!(M_DEFAULT_DATA_TYPE_BIT_SET(ResultType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(ResultType))) { MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType | M_DEFAULT_DATA_TYPE, &RequiredParamType); } const MIL_INT64 EncodingBit = RequiredParamType == M_PARAM_TYPE_MIL_TEXT ? M_CLIENT_ENCODING : 0; if(!MfuncPointerIsCompatible(RequiredParamType, ResultArrayPtr.Type, ResultType | EncodingBit)) { SafeTypeError(MIL_TEXT("MdmrGetResult")); } MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, ResultArrayPtr.Ptr); } inline void MFTYPE MdmrGetResultUnsafe(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, void* ResultArrayPtr) { MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, ResultArrayPtr); } // ---------------------------------------------------------- // MdmrInquire safe type definitions inline MIL_INT MFTYPE MdmrInquireSafeType(MIL_ID MdmrId, MIL_INT64 InquireType, MilVoidPtr UserVarPtr) { MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64; if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType))) { MdmrInquire(MdmrId, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType); } if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType)) { SafeTypeError(MIL_TEXT("MdmrInquire")); } return MdmrInquire(MdmrId, InquireType, UserVarPtr.Ptr); } inline MIL_INT MFTYPE MdmrInquireUnsafe(MIL_ID MdmrId, MIL_INT64 InquireType, void* UserVarPtr) { return MdmrInquire(MdmrId, InquireType, UserVarPtr); } // ---------------------------------------------------------- // MdmrInquireFont safe type definitions inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CharNamePtr, MIL_INT64 InquireType, MilVoidPtr UserVarPtr) { MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64; if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType))) { MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType); } if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType)) { SafeTypeError(MIL_TEXT("MdmrInquireFont")); } return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType, UserVarPtr.Ptr); } inline MIL_INT MFTYPE MdmrInquireFontUnsafe(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CPPCharNamePtr, MIL_INT64 InquireType, void* UserVarPtr) { return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CPPCharNamePtr.m_pStr, InquireType, UserVarPtr); } // ---------------------------------------------------------- // MdmrInquireStringModel safe type definitions inline MIL_INT MFTYPE MdmrInquireStringModelSafeType(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry, MIL_INT64 InquireType, MilVoidPtr UserVarPtr) { MIL_INT64 RequiredParamType = M_PARAM_TYPE_MIL_INT64; if(!(M_DEFAULT_DATA_TYPE_BIT_SET(InquireType) || M_RECOMMENDED_DATA_TYPE_BIT_SET(InquireType))) { MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType | M_DEFAULT_DATA_TYPE, &RequiredParamType); } if(!MfuncPointerIsCompatible(RequiredParamType, UserVarPtr.Type, InquireType)) { SafeTypeError(MIL_TEXT("MdmrInquireStringModel")); } return MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, UserVarPtr.Ptr); } inline MIL_INT MFTYPE MdmrInquireStringModelUnsafe(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry, MIL_INT64 InquireType, void* UserVarPtr) { return MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, UserVarPtr); } //------------------------------ // Safetype functions assignment #define MdmrGetResult MdmrGetResultSafeType #define MdmrInquire MdmrInquireSafeType #if !M_MIL_USE_LINUX #undef MdmrInquireFont #endif #define MdmrInquireFont MdmrInquireFontSafeType #define MdmrInquireStringModel MdmrInquireStringModelSafeType #else // #if M_MIL_USE_SAFE_TYPE #define MdmrGetResultUnsafe MdmrGetResult #define MdmrInquireUnsafe MdmrInquire #define MdmrInquireFontUnsafe MdmrInquireFont #define MdmrInquireStringModelUnsafe MdmrInquireStringModel #endif // #if M_MIL_USE_SAFE_TYPE // ---------------------------------------------------------- // Overload for std::vector. #if defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR template inline MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId, MIL_INT FontLabelOrIndex, MIL_INT64 CharIndex, MIL_CONST_TEXT_PTR CharNamePtr, MIL_INT64 InquireType, std::vector &UserVarPtr) { // If the given MIL data type is not the same as the SrcType, change it to the correct one // and give a warning. MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits::TypeFlag; #if M_MIL_USE_SAFE_TYPE if(M_GET_HLVLDATATYPE(InquireType) != 0) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload.")); } #endif InquireType = M_STRIP_HLVLDATATYPE(InquireType) + InternalTrueDataTypeForStdVector; MIL_INT InternalNumberOfElementsForStdVector = 0; MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr, M_STRIP_HLVLDATATYPE(InquireType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector); UserVarPtr.resize(InternalNumberOfElementsForStdVector); if(InternalNumberOfElementsForStdVector > 0) { return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr, InquireType, &UserVarPtr[0]); } return 0; } template inline void MFTYPE MdmrGetResult(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, std::vector &ResultArrayPtr) { //! If the given MIL data type is not the same as the SrcType, change it to the correct one //! and give a warning. MIL_INT64 InternalTrueDataTypeForStdVector = MilTraits::TypeFlag; #if M_MIL_USE_SAFE_TYPE if(M_GET_HLVLDATATYPE(ResultType) != 0) { SafeTypeError(MIL_TEXT("MdmrGetResult"), MIL_TEXT("Combination value for the required data type is not supported with std::vector overload.")); } #endif ResultType = M_STRIP_HLVLDATATYPE(ResultType) + InternalTrueDataTypeForStdVector; MIL_INT InternalNumberOfElementsForStdVector = 0; MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, M_STRIP_HLVLDATATYPE(ResultType) + M_NB_ELEMENTS + M_TYPE_MIL_INT, &InternalNumberOfElementsForStdVector); ResultArrayPtr.resize(InternalNumberOfElementsForStdVector); if(InternalNumberOfElementsForStdVector > 0) { MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, &ResultArrayPtr[0]); } } // ---------------------------------------------------------- // Overloads for std::vector in MdmrControlFont. inline void MFTYPE MdmrControlFont(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MIL_CONST_TEXT_PTR CharNamePtr, MIL_INT64 ControlType, MIL_DOUBLE ControlValue, const std::vector& ControlValuePtr) { #if M_MIL_USE_SAFE_TYPE switch(ControlType) { case M_CHAR_ADD: case M_CHAR_TEMPLATE: { MIL_INT InternalFontSizeColumnsForStdVector = 0; MIL_INT InternalFontSizeRowsForStdVector = 0; MdmrInquireFont(ContextDmrId, FontLabelOrIndex, M_DEFAULT, M_NULL, M_FONT_SIZE_COLUMNS + M_TYPE_MIL_INT, &InternalFontSizeColumnsForStdVector); // Do not continue in case of any MIL error. if(InternalFontSizeColumnsForStdVector <= 0) { return; } MdmrInquireFont(ContextDmrId, FontLabelOrIndex, M_DEFAULT, M_NULL, M_FONT_SIZE_ROWS + M_TYPE_MIL_INT, &InternalFontSizeRowsForStdVector); // Do not continue in case of any MIL error. if(InternalFontSizeRowsForStdVector <= 0) { return; } if(InternalFontSizeColumnsForStdVector == M_DEFAULT) { InternalFontSizeColumnsForStdVector = 5; } if(InternalFontSizeRowsForStdVector == M_DEFAULT) { InternalFontSizeRowsForStdVector = 7; } if(InternalFontSizeColumnsForStdVector*InternalFontSizeRowsForStdVector > (MIL_INT)ControlValuePtr.size()) { SafeTypeError(MIL_TEXT("MdmrControlFont"), MIL_TEXT("Invalid size of the specified ControlValuePtr.")); } } break; default: { SafeTypeError(MIL_TEXT("MdmrControlFont"), MIL_TEXT("Invalid ControlType for the specified ControlValuePtr.")); } break; } #endif MdmrControlFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr, ControlType, ControlValue, &ControlValuePtr[0]); } // ---------------------------------------------------------- // Overloads for std::vector in MxxxStream. inline void MFTYPE MdmrStream(std::vector &MemPtrOrFileName, MIL_ID SysId, MIL_INT64 Operation, MIL_INT64 StreamType, MIL_DOUBLE Version, MIL_INT64 ControlFlag, MIL_ID* McontextIdPtr, MIL_INT* SizeByteVarPtr) { MxxxStreamForStdVector(MemPtrOrFileName, SysId, Operation, StreamType, Version, ControlFlag, McontextIdPtr, SizeByteVarPtr, MdmrStream); } #endif // defined(M_MIL_USE_VECTOR) && M_MIL_USE_VECTOR #if M_MIL_USE_STRING /***************************************************************************/ /* DMR MODULE */ /***************************************************************************/ #if M_MIL_USE_UNICODE #if M_MIL_UNICODE_API inline void MFTYPE MdmrControlFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING& CharNamePtr, MIL_INT64 ControlType, MIL_DOUBLE ControlValue, const void* ControlValuePtr) { return MdmrControlFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), ControlType, ControlValue, ControlValuePtr); } inline void MFTYPE MdmrSaveW(const MIL_STRING& FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag) { return MdmrSaveW(FileName.c_str(), ContextDmrId, ControlFlag); } inline MIL_ID MFTYPE MdmrRestoreW(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrId) { return MdmrRestoreW(FileName.c_str(), SysId, ControlFlag, ContextDmrId); } inline void MFTYPE MdmrImportFontW(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, const MIL_STRING& CharList, MIL_INT64 ControlFlag) { MdmrImportFontW(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, CharList.c_str(), ControlFlag); } inline void MFTYPE MdmrImportFontW(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharList, MIL_INT64 ControlFlag) { MdmrImportFontW(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, (MIL_CONST_TEXT_PTR)CharList, ControlFlag); } inline void MFTYPE MdmrExportFontW(const MIL_STRING &FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 ControlFlag) { MdmrExportFontW(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, ControlFlag); } inline MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr, MIL_INT64 InquireType, void* UserVarPtr) { return MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, UserVarPtr); } inline MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr, MIL_INT64 InquireType, MIL_STRING &UserVarPtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, &UserVarPtr[0]); UserVarPtr.resize(InternalStringSize - 1); } return RetValue; } inline MIL_INT MFTYPE MdmrInquireFontW(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, int /*NullCharNamePtr*/, MIL_INT64 InquireType, MIL_STRING &UserVarPtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFontW(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &UserVarPtr[0]); UserVarPtr.resize(InternalStringSize - 1); } return RetValue; } inline void MFTYPE MdmrNameW(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MIL_STRING &Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag) { //if operation generate an output if(Operation == M_GET_NAME) { MIL_INT InternalStringSize = 0; MdmrNameW(ContextOrResultDmrId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag); if(InternalStringSize > 0) { Name.assign(InternalStringSize, MIL_TEXT('\0')); MdmrNameW(ContextOrResultDmrId, Operation, LabelOrIndex, &Name[0], ValuePtr, ControlFlag); Name.resize(InternalStringSize - 1); } } else { MdmrNameW(ContextOrResultDmrId, Operation, LabelOrIndex, (MIL_TEXT_PTR)Name.c_str(), ValuePtr, ControlFlag); } } #else inline void MFTYPE MdmrControlFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING& CharNamePtr, MIL_INT64 ControlType, MIL_DOUBLE ControlValue, const void* ControlValuePtr) { return MdmrControlFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), ControlType, ControlValue, ControlValuePtr); } inline void MFTYPE MdmrSaveA(const MIL_STRING& FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag) { return MdmrSaveA(FileName.c_str(), ContextDmrId, ControlFlag); } inline MIL_ID MFTYPE MdmrRestoreA(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrId) { return MdmrRestoreA(FileName.c_str(), SysId, ControlFlag, ContextDmrId); } inline void MFTYPE MdmrImportFontA(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, const MIL_STRING& CharList, MIL_INT64 ControlFlag) { MdmrImportFontA(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, CharList.c_str(), ControlFlag); } inline void MFTYPE MdmrImportFontA(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharList, MIL_INT64 ControlFlag) { MdmrImportFontA(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, (MIL_CONST_TEXT_PTR)CharList, ControlFlag); } inline void MFTYPE MdmrExportFontA(const MIL_STRING &FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 ControlFlag) { MdmrExportFontA(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, ControlFlag); } inline MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr, MIL_INT64 InquireType, void* UserVarPtr) { return MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, UserVarPtr); } inline MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr, MIL_INT64 InquireType, MIL_STRING &UserVarPtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Operation not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, &UserVarPtr[0]); UserVarPtr.resize(InternalStringSize - 1); } return RetValue; } inline MIL_INT MFTYPE MdmrInquireFontA(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, int /*NullCharNamePtr*/, MIL_INT64 InquireType, MIL_STRING &UserVarPtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFontA(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &UserVarPtr[0]); UserVarPtr.resize(InternalStringSize - 1); } return RetValue; } inline void MFTYPE MdmrNameA(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MIL_STRING &Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag) { //if operation generate an output if(Operation == M_GET_NAME) { MIL_INT InternalStringSize = 0; MdmrNameA(ContextOrResultDmrId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag); if(InternalStringSize > 0) { Name.assign(InternalStringSize, MIL_TEXT('\0')); MdmrNameA(ContextOrResultDmrId, Operation, LabelOrIndex, &Name[0], ValuePtr, ControlFlag); Name.resize(InternalStringSize - 1); } } else { MdmrNameA(ContextOrResultDmrId, Operation, LabelOrIndex, (MIL_TEXT_PTR)Name.c_str(), ValuePtr, ControlFlag); } } #endif /* M_MIL_UNICODE_API*/ #else inline void MFTYPE MdmrControlFont(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING& CharNamePtr, MIL_INT64 ControlType, MIL_DOUBLE ControlValue, const void* ControlValuePtr) { return MdmrControlFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), ControlType, ControlValue, ControlValuePtr); } inline void MFTYPE MdmrSave(const MIL_STRING& FileName, MIL_ID ContextDmrId, MIL_INT64 ControlFlag) { return MdmrSave(FileName.c_str(), ContextDmrId, ControlFlag); } inline MIL_ID MFTYPE MdmrRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_ID* ContextDmrId) { return MdmrRestore(FileName.c_str(), SysId, ControlFlag, ContextDmrId); } inline void MFTYPE MdmrImportFont(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, const MIL_STRING& CharList, MIL_INT64 ControlFlag) { MdmrImportFont(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, CharList.c_str(), ControlFlag); } inline void MFTYPE MdmrImportFont(const MIL_STRING& FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharList, MIL_INT64 ControlFlag) { MdmrImportFont(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, (MIL_CONST_TEXT_PTR)CharList, ControlFlag); } inline void MFTYPE MdmrExportFont(const MIL_STRING &FileName, MIL_INT64 FileFormat, MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 ControlFlag) { MdmrExportFont(FileName.c_str(), FileFormat, ContextDmrId, FontLabelOrIndex, ControlFlag); } #if !M_MIL_USE_SAFE_TYPE inline MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CharNamePtr, MIL_INT64 InquireType, void* UserVarPtr) { return MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType, UserVarPtr); } inline MIL_INT MFTYPE MdmrInquireFont(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, MilCPPConstMilStringOrPtrParam CharNamePtr, MIL_INT64 InquireType, MIL_STRING &UserVarPtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.m_pStr, InquireType, &UserVarPtr[0]); UserVarPtr.resize(InternalStringSize - 1); } return RetValue; } #endif inline void MFTYPE MdmrName(MIL_ID ContextOrResultDmrId, MIL_INT64 Operation, MIL_INT64 LabelOrIndex, MIL_STRING &Name, MIL_INT* ValuePtr, MIL_INT64 ControlFlag) { //if operation generate an output if(Operation == M_GET_NAME) { MIL_INT InternalStringSize = 0; MdmrName(ContextOrResultDmrId, M_GET_NAME, LabelOrIndex, M_NULL, &InternalStringSize, ControlFlag); if(InternalStringSize > 0) { Name.assign(InternalStringSize, MIL_TEXT('\0')); MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, &Name[0], ValuePtr, ControlFlag); Name.resize(InternalStringSize - 1); } } else { MdmrName(ContextOrResultDmrId, Operation, LabelOrIndex, (MIL_TEXT_PTR)Name.c_str(), ValuePtr, ControlFlag); } } #endif /* M_MIL_USE_UNICODE */ #if M_MIL_USE_64BIT #else #ifdef __cplusplus template inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, T* ControlValue) { MdmrControl(ContextOrResultDmrId, ControlType, M_PTR_TO_MIL_INT(ControlValue)); } #endif #endif inline void MdmrControl(MIL_ID ContextOrResultDmrId, MIL_INT64 ControlType, const MIL_STRING& ControlValue) { MdmrControl(ContextOrResultDmrId, ControlType, M_PTR_TO_MIL_INT(ControlValue.c_str())); } #if M_MIL_USE_SAFE_TYPE inline MIL_INT MFTYPE MdmrInquireSafeType(MIL_ID ContextOrResultDmrId, MIL_INT64 InquireType, MIL_STRING& ValuePtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquire"), MIL_TEXT("Inquire Type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquire(ContextOrResultDmrId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ValuePtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquire(ContextOrResultDmrId, InquireType, &ValuePtr[0]); ValuePtr.resize(InternalStringSize - 1); } return RetValue; } inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, const MIL_STRING &CharNamePtr, MIL_INT64 InquireType, MIL_STRING &ValuePtr) { if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire Type not supported with MIL_STRING.")); } MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ValuePtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, CharNamePtr.c_str(), InquireType, &ValuePtr[0]); ValuePtr.resize(InternalStringSize - 1); } return RetValue; } inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, int NullCharNamePtr, MIL_INT64 InquireType, MIL_STRING &ValuePtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire Type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; if(NullCharNamePtr != 0) SafeTypeError(MIL_TEXT("MdmrInquireFont")); MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ValuePtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &ValuePtr[0]); ValuePtr.resize(InternalStringSize - 1); } return RetValue; } #if M_MIL_SAFE_TYPE_M_NULL_PTR_TYPE_EXISTS inline MIL_INT MFTYPE MdmrInquireFontSafeType(MIL_ID ContextDmrId, MIL_INT64 FontLabelOrIndex, MIL_INT64 CharIndex, std::nullptr_t, MIL_INT64 InquireType, MIL_STRING &ValuePtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireFont"), MIL_TEXT("Inquire Type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ValuePtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireFont(ContextDmrId, FontLabelOrIndex, CharIndex, 0, InquireType, &ValuePtr[0]); ValuePtr.resize(InternalStringSize - 1); } return RetValue; } #endif inline MIL_INT MFTYPE MdmrInquireStringModelSafeType(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry, MIL_INT64 InquireType, MIL_STRING &ValuePtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((InquireType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrInquireStringModel"), MIL_TEXT("Inquire Type not supported with MIL_STRING.")); } #endif MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ValuePtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, &ValuePtr[0]); ValuePtr.resize(InternalStringSize - 1); } return RetValue; } inline void MFTYPE MdmrGetResultSafeType(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, MIL_STRING &ResultArrayPtr) { #if MIL_COMPILE_VERSION >= MIL_COMPILE_TRUNK_VERSION && M_MIL_USE_SAFE_TYPE if((ResultType & M_CLIENT_ENCODING) != M_CLIENT_ENCODING) { SafeTypeError(MIL_TEXT("MdmrGetResult"), MIL_TEXT("Result Type not supported with MIL_STRING.")); } #endif bool InternalFlagIndicatingToDoMilStringOperations = true; if(StringIndex == M_ALL) { MIL_INT InternalNumberOfStrings = 0; MdmrGetResult(ResultDmrId, M_DEFAULT, M_DEFAULT, M_STRING_NUMBER + M_TYPE_MIL_INT, &InternalNumberOfStrings); if(InternalNumberOfStrings > 1) { InternalFlagIndicatingToDoMilStringOperations = false; SafeTypeError(MIL_TEXT("MdmrGetResult"), MIL_TEXT("MIL_STRING overloads do not support a function call returning multiple strings.")); } } if(InternalFlagIndicatingToDoMilStringOperations) { MIL_INT InternalStringSize = 0; MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, (ResultType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ResultArrayPtr.assign(InternalStringSize, MIL_TEXT('\0')); MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, &ResultArrayPtr[0]); ResultArrayPtr.resize(InternalStringSize - 1); } } } #else inline MIL_INT MFTYPE MdmrInquire(MIL_ID ContextOrResultDmrId, MIL_INT64 InquireType, MIL_STRING &ValuePtr) { MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquire(ContextOrResultDmrId, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ValuePtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquire(ContextOrResultDmrId, InquireType, &ValuePtr[0]); ValuePtr.resize(InternalStringSize - 1); } return RetValue; } inline MIL_INT MFTYPE MdmrInquireStringModel(MIL_ID ContextDmrId, MIL_INT64 StringModelLabelOrIndex, MIL_INT64 Position, MIL_INT64 PermittedCharEntry, MIL_INT64 InquireType, MIL_STRING &UserVarPtr) { MIL_INT RetValue = 0; MIL_INT InternalStringSize = 0; MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, (InquireType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { UserVarPtr.assign(InternalStringSize, MIL_TEXT('\0')); RetValue = MdmrInquireStringModel(ContextDmrId, StringModelLabelOrIndex, Position, PermittedCharEntry, InquireType, &UserVarPtr[0]); UserVarPtr.resize(InternalStringSize - 1); } return RetValue; } inline void MFTYPE MdmrGetResult(MIL_ID ResultDmrId, MIL_INT64 StringIndex, MIL_INT64 CharacterPosIndex, MIL_INT64 ResultType, MIL_STRING &ResultArrayPtr) { bool InternalFlagIndicatingToDoMilStringOperations = true; if(StringIndex == M_ALL) { MIL_INT InternalNumberOfStrings = 0; MdmrGetResult(ResultDmrId, M_DEFAULT, M_DEFAULT, M_STRING_NUMBER + M_TYPE_MIL_INT, &InternalNumberOfStrings); if(InternalNumberOfStrings > 1) { InternalFlagIndicatingToDoMilStringOperations = false; } } if(InternalFlagIndicatingToDoMilStringOperations) { MIL_INT InternalStringSize = 0; //Inquire the byte content MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, (ResultType & (~M_HLVLDATATYPE_MASK)) + M_STRING_SIZE + M_TYPE_MIL_INT, &InternalStringSize); if(InternalStringSize > 0) { ResultArrayPtr.assign(InternalStringSize, MIL_TEXT('\0')); MdmrGetResult(ResultDmrId, StringIndex, CharacterPosIndex, ResultType, &ResultArrayPtr[0]); ResultArrayPtr.resize(InternalStringSize - 1); } } } #endif #endif /* M_MIL_USE_STRING*/ //////////////////////////////////////////////////////////////////////////////// // MIL_UNIQUE_ID support #if M_MIL_USE_MIL_UNIQUE_ID #if M_MIL_USE_SAFE_TYPE template <> inline bool MilIsCorrectObjectType<&MdmrFree>(MIL_INT64 ObjectType) { return (ObjectType & ~M_USER_DEFINE_LOW_ATTRIBUTE) == M_DMR_OBJECT; } #endif typedef MIL_UNIQUE_ID<&MdmrFree> MIL_UNIQUE_DMR_ID; #if M_MIL_USE_MOVE_SEMANTICS inline MIL_UNIQUE_DMR_ID MdmrAlloc(MIL_ID SysId, MIL_INT64 ContextType, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG) { return MIL_UNIQUE_DMR_ID(MdmrAlloc(SysId, ContextType, ControlFlag, M_NULL)); } inline MIL_UNIQUE_DMR_ID MdmrAllocResult(MIL_ID SysId, MIL_INT64 ResultType, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG) { return MIL_UNIQUE_DMR_ID(MdmrAllocResult(SysId, ResultType, ControlFlag, M_NULL)); } inline MIL_UNIQUE_DMR_ID MdmrRestore(MIL_CONST_TEXT_PTR FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG) { return MIL_UNIQUE_DMR_ID(MdmrRestore(FileName, SysId, ControlFlag, M_NULL)); } #if M_MIL_USE_STRING inline MIL_UNIQUE_DMR_ID MdmrRestore(const MIL_STRING& FileName, MIL_ID SysId, MIL_INT64 ControlFlag, MIL_UNIQUE_ID_TAG) { return MIL_UNIQUE_DMR_ID(MdmrRestore(FileName, SysId, ControlFlag, M_NULL)); } #endif // M_MIL_USE_STRING template inline void MdmrFree(const MIL_UNIQUE_ID&) = delete; inline void MdmrStream(MilStreamParam MemPtrOrFileName, MIL_ID SysId , MIL_INT64 Operation , MIL_INT64 StreamType , MIL_DOUBLE Version , MIL_INT64 ControlFlag , MIL_UNIQUE_DMR_ID* ContextDmrIdPtr , MIL_INT* SizeByteVarPtr ) { MxxxStreamForMilUniqueId(MemPtrOrFileName, SysId, Operation, StreamType, Version, ControlFlag, ContextDmrIdPtr, SizeByteVarPtr, MdmrStream); } #endif // M_MIL_USE_MOVE_SEMANTICS #endif // M_MIL_USE_MIL_UNIQUE_ID // End of MIL_UNIQUE_ID support //////////////////////////////////////////////////////////////////////////////// #endif // !M_MIL_LITE #endif // __MIL_DMR_H__