bool SetCursorPosConcrete( struct Tracker_Windows *window, struct WBlocks *wblock, NInt tracknum, int subtrack ){ struct WTracks *wtrack; int ret=0,tempret; if(tracknum>=wblock->block->num_tracks || tracknum<TEMPOTRACK) return false; if(tracknum<0){ if(tracknum==window->curr_track) return true; if(tracknum>window->curr_track){ while(window->curr_track!=tracknum){ tempret=CursorRight(window,wblock); ret=R_MAX(tempret,ret); } }else{ while(window->curr_track!=tracknum){ tempret=CursorLeft(window,wblock); ret=R_MAX(tempret,ret); } } }else{ wtrack=ListFindElement1(&wblock->wtracks->l,tracknum); int num_subtracks = GetNumSubtracks(wtrack); subtrack=R_MIN(num_subtracks-1,subtrack); if(tracknum==window->curr_track && subtrack==window->curr_track_sub) return 0; if(tracknum>window->curr_track || (tracknum==window->curr_track && subtrack>window->curr_track_sub)){ while(window->curr_track!=tracknum || window->curr_track_sub!=subtrack){ tempret=CursorRight(window,wblock); //printf("wtrack->num: %d, curr_track: %d, num_tracks: %d\n",wtrack->l.num, window->curr_track,wblock->block->num_tracks); ret=R_MAX(tempret,ret); } }else{ while(window->curr_track!=tracknum || window->curr_track_sub!=subtrack){ tempret=CursorLeft(window,wblock); ret=R_MAX(tempret,ret); } } } return true; }
int CursorNextTrack(struct Tracker_Windows *window,struct WBlocks *wblock){ int curr_track=window->curr_track; int ret=0,tempret; while(curr_track==window->curr_track){ tempret=CursorRight(window,wblock); ret=R_MAX(tempret,ret); } return ret; }
void CScreenDevice::DisplayChar (char chChar) { // TODO: Insert mode if (' ' <= (unsigned char) chChar) { DisplayChar (chChar, m_nCursorX, m_nCursorY, m_Color); CursorRight (); } }
/***************************************************************************** * FUNCTION: ProcessEscapeSequence * * RETURNS: None * * PARAMS: pEscapeSequence -- escape sequence string to be processed. * * NOTES: Processes an escape sequence received by the state machine * *****************************************************************************/ static void ProcessEscapeSequence(INT8 *pEscapeSequence) { /* if a Left Arrow Key */ if (strcmppgm2ram( (const char *) pEscapeSequence, (ROM FAR char*) leftArrowEscapeSequence) == 0) { CursorLeft(); } /* else if Right Arrow Key */ else if (strcmppgm2ram( (const char *) pEscapeSequence, (ROM FAR char*) rightArrowEscapeSequence) == 0) { CursorRight(); } #if (kWFNumHistoryEntries > 0) /* else if Up Arrow Key */ else if (strcmppgm2ram( (const char *) pEscapeSequence, (ROM FAR char*) upArrowEscapeSequence) == 0) { DisplayHistoryEntry(kWFPrevHistory); } /* else if Down Arrow Key */ else if (strcmppgm2ram( (const char *) pEscapeSequence, (ROM FAR char*) downArrowEscapeSequence) == 0) { DisplayHistoryEntry(kWFNextHistory); } #endif /* else if Home Key */ else if (strcmppgm2ram( (const char *) pEscapeSequence, (ROM FAR char*) homeKeyEscapeSequence) == 0) { CursorHome(); } /* else if End Key */ else if (strcmppgm2ram( (const char *) pEscapeSequence, (ROM FAR char*) endKeyEscapeSequence) == 0) { CursorEnd(); } }
void CursorRight_CurrPos(struct Tracker_Windows *window){ struct WBlocks *wblock=window->wblock; TrackSelectUpdate(window,wblock,CursorRight(window,wblock)); }
void CScreenDevice::Write (char chChar) { switch (m_nState) { case ScreenStateStart: switch (chChar) { case '\b': CursorLeft (); break; case '\t': Tabulator (); break; case '\n': NewLine (); break; case '\r': CarriageReturn (); break; case '\x1b': m_nState = ScreenStateEscape; break; default: DisplayChar (chChar); break; } break; case ScreenStateEscape: switch (chChar) { case 'M': ReverseScroll (); m_nState = ScreenStateStart; break; case '[': m_nState = ScreenStateBracket; break; default: m_nState = ScreenStateStart; break; } break; case ScreenStateBracket: switch (chChar) { case '?': m_nState = ScreenStateQuestionMark; break; case 'A': CursorUp (); m_nState = ScreenStateStart; break; case 'B': CursorDown (); m_nState = ScreenStateStart; break; case 'C': CursorRight (); m_nState = ScreenStateStart; break; case 'H': CursorHome (); m_nState = ScreenStateStart; break; case 'J': ClearDisplayEnd (); m_nState = ScreenStateStart; break; case 'K': ClearLineEnd (); m_nState = ScreenStateStart; break; case 'L': InsertLines (1); m_nState = ScreenStateStart; break; case 'M': DeleteLines (1); m_nState = ScreenStateStart; break; case 'P': DeleteChars (1); m_nState = ScreenStateStart; break; default: if ('0' <= chChar && chChar <= '9') { m_nParam1 = chChar - '0'; m_nState = ScreenStateNumber1; } else { m_nState = ScreenStateStart; } break; } break; case ScreenStateNumber1: switch (chChar) { case ';': m_nState = ScreenStateSemicolon; break; case 'L': InsertLines (m_nParam1); m_nState = ScreenStateStart; break; case 'M': DeleteLines (m_nParam1); m_nState = ScreenStateStart; break; case 'P': DeleteChars (m_nParam1); m_nState = ScreenStateStart; break; case 'X': EraseChars (m_nParam1); m_nState = ScreenStateStart; break; case 'h': case 'l': if (m_nParam1 == 4) { InsertMode (chChar == 'h'); } m_nState = ScreenStateStart; break; case 'm': SetStandoutMode (m_nParam1); m_nState = ScreenStateStart; break; default: if ('0' <= chChar && chChar <= '9') { m_nParam1 *= 10; m_nParam1 += chChar - '0'; if (m_nParam1 > 99) { m_nState = ScreenStateStart; } } else { m_nState = ScreenStateStart; } break; } break; case ScreenStateSemicolon: if ('0' <= chChar && chChar <= '9') { m_nParam2 = chChar - '0'; m_nState = ScreenStateNumber2; } else { m_nState = ScreenStateStart; } break; case ScreenStateQuestionMark: if ('0' <= chChar && chChar <= '9') { m_nParam1 = chChar - '0'; m_nState = ScreenStateNumber3; } else { m_nState = ScreenStateStart; } break; case ScreenStateNumber2: switch (chChar) { case 'H': CursorMove (m_nParam1, m_nParam2); m_nState = ScreenStateStart; break; case 'r': SetScrollRegion (m_nParam1, m_nParam2); m_nState = ScreenStateStart; break; default: if ('0' <= chChar && chChar <= '9') { m_nParam2 *= 10; m_nParam2 += chChar - '0'; if (m_nParam2 > 199) { m_nState = ScreenStateStart; } } else { m_nState = ScreenStateStart; } break; } break; case ScreenStateNumber3: switch (chChar) { case 'h': case 'l': if (m_nParam1 == 25) { SetCursorMode (chChar == 'h'); } m_nState = ScreenStateStart; break; default: if ('0' <= chChar && chChar <= '9') { m_nParam1 *= 10; m_nParam1 += chChar - '0'; if (m_nParam1 > 99) { m_nState = ScreenStateStart; } } else { m_nState = ScreenStateStart; } break; } break; default: m_nState = ScreenStateStart; break; } }
void SKKTextBuffer::Delete() { if(cursor_ != maxCursorPosition()) { CursorRight(); BackSpace(); } }