📄 osdmm.c
字号:
_OSDMM_DrawStringByUnicode(); _bOSDMMFileLength = GDI_GetUniStringWidth(__pOSDUTLOutputString); //for draw the selected frame } else#endif { _OSDMM_DrawString(); _bOSDMMFileLength = GDI_GetStringWidth_909(__pOSDUTLOutputString); //for draw the selected frame } //draw serial number _OSDMM_DrawSerialNumber(bOSDMMTemp, _wOSDMMTemp+1); //draw the selected frame for program mode if (__btProgram || (_bOSDMMUIMode == OSDMM_INITIAL_MODE_COPY)) { if (LINEAR_ProgramEntryOperation(LINEAR_QUERY_INDEX, 0, __MMSelectCursor.wDirID, (WORD)(_wOSDMMTemp+1)) != 0xFF) { //draw the selected frame _OSDMM_DrawSelectedFrame(OSDMM_UPDATE_DRAW, bOSDMMTemp); } } bOSDMMTemp++; _wOSDMMTemp++; } } } _OSDMM_UpdateRightScrollBar();}//*********************************************************************************************************// Function : _OSDMM_UpdateHighlight// Abstract : This function will update the highlight.// Arguments : bUpdate: OSDMM_UPDATE_DRAW: draw the highlight.// : OSDMM_UPDATE_CLEAR: clear the highlight.// Return : none.// Side Effect : none.// Notes : //*********************************************************************************************************void _OSDMM_UpdateHighlight(BYTE bUpdate){ WORD wStringLength = 0; if ((__bMMPopMenuID == MM_POP_MENU_NONE) && (bUpdate == OSDMM_UPDATE_DRAW)) { _OSDMM_UpdateTitle(); //_OSDFM_UpdateHelp(); } switch (__MMSelectCursor.bPosition) { case POS_VOL_DIR_LIST: if (!((__MMSelectCursor.wIndex < __bMMVolumeNum) || ((__MMSelectCursor.wIndex == __bMMVolumeNum) && _OSDMM_HaveUpDIR()))) { _OSDMM_CopyDirString((BYTE)__MMSelectCursor.wDirID, (OSDMM_LEFT_SCROLL_BAR_H - OSDMM_ITEM_LEFT_WINDOW_START_H));#ifdef SUPPORT_UNICODE_CODING if ((__pMMDirNameList[__MMSelectCursor.wDirID].bMMLinkStatus & IF_UNICODE_FILE_TAG) && (__bEnCodeType != CHAR_ENCODE_ISO_CP)) { wStringLength = GDI_GetUniStringWidth(__pOSDUTLOutputString); } else#endif { wStringLength = GDI_GetStringWidth_909(__pOSDUTLOutputString); } if (bUpdate == OSDMM_UPDATE_DRAW) _bOSDMMIconType = OSDMM_ICON_TYPE_OPENFOLDER; else { if (__bActiveDirChange) //change dir really { _bOSDMMIconType = OSDMM_ICON_TYPE_FOLDER; __bActiveDirChange = FALSE; } else //Only KEY_RIGHT/KEY_LEFT to change the highlight. _bOSDMMIconType = OSDMM_ICON_TYPE_OPENFOLDER; } } else if (__MMSelectCursor.wIndex < __bMMVolumeNum) //Volume { _OSDMM_SetVolumeString(__MMSelectCursor.bVolID); wStringLength = GDI_GetStringWidth_909(__pOSDUTLOutputString); } else if ((__MMSelectCursor.wIndex == __bMMVolumeNum) && _OSDMM_HaveUpDIR())//up DIR { __pOSDUTLOutputString = aMMUpDIR; wStringLength = GDI_GetStringWidth_909(__pOSDUTLOutputString); } //Draw/clear highlight _OSDMMRect.rect.wLeft = OSDMM_ICON_LEFT_WINDOW_START_H - OSDMM_HIGHLIGHT_DISTANCE_H; _OSDMMRect.rect.wTop = OSDMM_ITEM_LEFT_WINDOW_START_V+((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW)*OSDMM_ITEM_HEIGHT-OSDMM_HIGHLIGHT_DISTANCE_V; _OSDMMRect.rect.wRight = OSDMM_ITEM_LEFT_WINDOW_START_H+wStringLength+OSDMM_HIGHLIGHT_DISTANCE_H; _OSDMMRect.rect.wBottom = OSDMM_ITEM_LEFT_WINDOW_START_V+((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW)*OSDMM_ITEM_HEIGHT+OSDMM_FILE_WINDOW_FONT_HEIGHT+OSDMM_HIGHLIGHT_DISTANCE_V; if (bUpdate == OSDMM_UPDATE_DRAW) { _OSDMMRect.bColor = OSDMM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND; } else { _OSDMMRect.bColor = OSDMM_PALETTE_ENTRY_GENERAL_BACKGROUND; } GDI_FillRect_909(0, &_OSDMMRect); if (__MMSelectCursor.wIndex == 0) { if (bUpdate == OSDMM_UPDATE_DRAW) _OSDMM_DrawVolume(0, __MMSelectCursor.bVolID, TRUE); else _OSDMM_DrawVolume(0, __MMSelectCursor.bVolID, FALSE); } else if ((__MMSelectCursor.wIndex == 1) && _OSDMM_HaveUpDIR()) { if (bUpdate == OSDMM_UPDATE_DRAW) _OSDMM_DrawUpDIR((BYTE)((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW), TRUE); else _OSDMM_DrawUpDIR((BYTE)((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW), FALSE); } else { if (bUpdate == OSDMM_UPDATE_DRAW) _OSDMM_DrawLeftFileWindowIcon((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW, _bOSDMMIconType, TRUE); else _OSDMM_DrawLeftFileWindowIcon((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW, _bOSDMMIconType, FALSE); _OSDMM_InitializeStringPalette(OSDMM_LEFT_FILE_WINDOW_REGION); if (bUpdate == OSDMM_UPDATE_DRAW) _OSDMMStringAttr.bBackground = OSDMM_PALETTE_ENTRY_HIGHLIGHT_BACKGROUND; else _OSDMMStringAttr.bBackground = OSDMM_PALETTE_ENTRY_GENERAL_BACKGROUND; _OSDMMStringAttr.wX = OSDMM_ITEM_LEFT_WINDOW_START_H; _OSDMMStringAttr.wY = OSDMM_ITEM_LEFT_WINDOW_START_V+((__MMSelectCursor.wIndex-_bOSDMMStartDrawDir)%OSDMM_MAX_DIR_IN_FILE_WINDOW)*OSDMM_ITEM_HEIGHT; //GDI_DrawString_909(0, &_OSDMMStringAttr, __pOSDUTLOutputString);#ifdef SUPPORT_UNICODE_CODING if ((__pMMDirNameList[__MMSelectCursor.wDirID].bMMLinkStatus & IF_UNICODE_FILE_TAG) && (__bEnCodeType != CHAR_ENCODE_ISO_CP)) { _OSDMM_DrawStringByUnicode(); } else#endif { _OSDMM_DrawString(); } } break; case POS_FILE_LIST: case POS_PROG_LIST: if (__MMSelectCursor.wIndex > (__wOSDMMStartDrawItem+OSDMM_MAX_ITEM_IN_FILE_WINDOW-1)) { if ((__MMSelectCursor.wIndex - (__wOSDMMStartDrawItem+OSDMM_MAX_ITEM_IN_FILE_WINDOW-1)) > 1) //jump > 1 file. { //update the __wStartDrawItem __wOSDMMStartDrawItem = __MMSelectCursor.wIndex - OSDMM_MAX_ITEM_IN_FILE_WINDOW + 1; //clear right right file window _OSDMM_ClearRegion(OSDMM_RIGHT_FILE_WINDOW_CONTENT_REGION); //Don't clear the right scroll bar because they are in the same folder. //re-draw all if (__MMSelectCursor.bPosition == POS_FILE_LIST) { _OSDMM_DrawRightFileWindow(); } else if (__MMSelectCursor.bPosition == POS_PROG_LIST) { _OSDMM_PL_DrawRightFileWindow(); } } else { __wOSDMMStartDrawItem++; _OSDMMBitmapCopy.bDestRegion = 0; _OSDMMBitmapCopy.bSrcRegion = 0; _OSDMMBitmapCopy.SrcRect.wLeft = OSDMM_VERTICAL_SEPARATE_FRAME_H+OSDMM_VERTICAL_SEPARATE_FRAME_WIDTH+1; _OSDMMBitmapCopy.SrcRect.wTop = OSDMM_ICON_RIGHT_WINDOW_START_V+OSDMM_ITEM_HEIGHT-OSDMM_SELECT_FRAME_DISTANCE_V; _OSDMMBitmapCopy.SrcRect.wRight = OSDMM_RIGHT_SCROLL_BAR_H-1; _OSDMMBitmapCopy.SrcRect.wBottom = OSDMM_ICON_RIGHT_WINDOW_START_V+(OSDMM_MAX_ITEM_IN_FILE_WINDOW-1)*OSDMM_ITEM_HEIGHT+OSDMM_FILE_WINDOW_FONT_HEIGHT+OSDMM_SELECT_FRAME_DISTANCE_V; _OSDMMBitmapCopy.wDestX = OSDMM_VERTICAL_SEPARATE_FRAME_H+OSDMM_VERTICAL_SEPARATE_FRAME_WIDTH+1; _OSDMMBitmapCopy.wDestY = OSDMM_ICON_RIGHT_WINDOW_START_V-OSDMM_SELECT_FRAME_DISTANCE_V; GDI_BitmapCopy(&_OSDMMBitmapCopy); //Then clear the last dir in this page and re-draw it. _OSDMM_ClearItemRegionInFileWindow(OSDMM_RIGHT_FILE_WINDOW, (OSDMM_MAX_ITEM_IN_FILE_WINDOW-1)); _OSDMM_UpdateRightScrollBar(); } } else if (__MMSelectCursor.wIndex < __wOSDMMStartDrawItem) { if ((__wOSDMMStartDrawItem - __MMSelectCursor.wIndex) > 1) { //update the __wStartDrawItem __wOSDMMStartDrawItem = __MMSelectCursor.wIndex; //clear right right file window _OSDMM_ClearRegion(OSDMM_RIGHT_FILE_WINDOW_CONTENT_REGION); //Don't clear the right scroll bar because they are in the same folder. //re-draw all if (__MMSelectCursor.bPosition == POS_FILE_LIST) { _OSDMM_DrawRightFileWindow(); } else if (__MMSelectCursor.bPosition == POS_PROG_LIST) { _OSDMM_PL_DrawRightFileWindow(); } } else { __wOSDMMStartDrawItem--; //scroll down. Bitmap copy. _OSDMMBitmapCopy.bDestRegion = 0; _OSDMMBitmapCopy.bSrcRegion = 0; _OSDMMBitmapCopy.SrcRect.wLeft = OSDMM_VERTICAL_SEPARATE_FRAME_H+OSDMM_VERTICAL_SEPARATE_FRAME_WIDTH+1; _OSDMMBitmapCopy.SrcRect.wTop = OSDMM_ICON_RIGHT_WINDOW_START_V-OSDMM_SELECT_FRAME_DISTANCE_V; _OSDMMBitmapCopy.SrcRect.wRight = OSDMM_RIGHT_SCROLL_BAR_H-1; _OSDMMBitmapCopy.SrcRect.wBottom = OSDMM_ICON_RIGHT_WINDOW_START_V+(OSDMM_MAX_ITEM_IN_FILE_WINDOW-2)*OSDMM_ITEM_HEIGHT+OSDMM_FILE_WINDOW_FONT_HEIGHT+OSDMM_SELECT_FRAME_DISTANCE_V; _OSDMMBitmapCopy.wDestX = OSDMM_VERTICAL_SEPARATE_FRAME_H+OSDMM_VERTICAL_SEPARATE_FRAME_WIDTH+1; _OSDMMBitmapCopy.wDestY = OSDMM_ICON_RIGHT_WINDOW_START_V+OSDMM_ITEM_HEIGHT-OSDMM_SELECT_FRAME_DISTANCE_V; GDI_BitmapCopy(&_OSDMMBitmapCopy); //Then clear the last dir in this page and re-draw it. _OSDMM_ClearItemRegionInFileWindow(OSDMM_RIGHT_FILE_WINDOW, 0); _OSDMM_UpdateRightScrollBar(); } } if (__MMSelectCursor.bPosition == POS_PROG_LIST) { _OSDMM_PL_CopyFileString((BYTE)__MMSelectCursor.wIndex); wStringLength = GDI_GetStringWidth_909(__pOSDUTLOutputString); } else { if (__MMSelectCursor.wIndex < __pMMVolumeDirTree[__MMSelectCursor.wDirID].bNoOfSubDir) //the cursor is at the folder. { _OSDMM_CopyDirString((BYTE)(__pMMVolumeDirTree[__MMSelectCursor.wDirID].b1stSubDirID+(BYTE)__MMSelectCursor.wIndex), (OSDMM_RIGHT_SCROLL_BAR_H - OSDMM_ITEM_RIGHT_WINDOW_START_H));#ifdef SUPPORT_UNICODE_CODING if ((__pMMDirNameList[(__pMMVolumeDirTree[__MMSelectCursor.wDirID].b1stSubDirID+(BYTE)__MMSelectCursor.wIndex)].bMMLinkStatus & IF_UNICODE_FILE_TAG) && (__bEnCodeType != CHAR_ENCODE_ISO_CP)) { wStringLength = GDI_GetUniStringWidth(__pOSDUTLOutputString); } else#endif { wStringLength = GDI_GetStringWidth_909(__pOSDUTLOutputString); } _bOSDMMIconType = OSDMM_ICON_TYPE_FOLDER; } else //the cursor is at the file. { //Dump one file for the highlighted item. //MM_TriggerDumping(MM_ID_RelativeToAbsolute(__MMSelectCursor.wDirID, (WORD)(__MMSelectCursor.wIndex - __pMMVolumeDirTree[__MMSelectCursor.wDirID].bNoOfSubDir)), 1); MM_DumpOneFileForHighlightItem(); //CoCo1.20, reduce code size //Dump file record. //MM_GetDumpedFileRecord(); //--CoCo1.20, reduce code size _OSDMM_CopyFileString((WORD)(__MMSelectCursor.wIndex - __pMMVolumeDirTree[__MMSelectCursor.wDirID].bNoOfSubDir));#ifdef SUPPORT
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -