diff --git a/vnr/texthook/host/textthread.cc b/vnr/texthook/host/textthread.cc index eaa331b..e13c38c 100644 --- a/vnr/texthook/host/textthread.cc +++ b/vnr/texthook/host/textthread.cc @@ -220,162 +220,6 @@ void TextThread::RemoveSingleRepeatAuto(const BYTE *con, int &len) } } -void TextThread::RemoveSingleRepeatForce(BYTE *con,int &len) -{ - // jichi 9/1/2013: manual repetition count removed - WORD *text = (WORD *)con; - //if (repeat_single_countGetValue(SETTING_REPEAT_COUNT)&&last==*text) { - // len=0; - // repeat_single_count++; - //} - //else - { - last = *text; - repeat_single_count=0; - } -} -void TextThread::RemoveCyclicRepeat(BYTE* &con, int &len) -{ - DWORD current_time = GetTickCount(); - if (status & REPEAT_SUPPRESS) { - if (current_time - last_time < (unsigned)settings->splittingInterval && - ::memcmp(storage + last_sentence + repeat_index, con, len) == 0) { - repeat_index += len; - if (repeat_index>=sentence_length) - repeat_index -= sentence_length; - len = 0; - } else { - repeat_index = 0; - status &= ~REPEAT_SUPPRESS; - } - } else if (status & REPEAT_DETECT) { - if (::memcmp(storage + last_sentence + repeat_index, con, len) == 0) { - int half_length=repeat_index+len; - if (::memcmp(storage + last_sentence, storage + last_sentence + half_length, repeat_index) == 0) { - len=0; - sentence_length=half_length; - status&=~REPEAT_DETECT; - status|=REPEAT_SUPPRESS; - - // jichi 10/27/2013: Not used - //if (status&CURRENT_SELECT) - // ReplaceSentence(storage+last_sentence+half_length,repeat_index); - ClearMemory(last_sentence+half_length,repeat_index); - used-=repeat_index; - repeat_index=0; - } - else - repeat_index += len; - } - else { - repeat_index=0; - status &= ~REPEAT_DETECT; - } - } else { - if (sentence_length == 0) - return; - else if (len <= (int)sentence_length) { - if (memcmp(storage + last_sentence, con, len) == 0) { - status |= REPEAT_DETECT; - repeat_index = len; - if (repeat_index == sentence_length) { - repeat_index = 0; - len = 0; - } - } else if (sentence_length > repeat_detect_limit) { - if (len > 2) { - DWORD u = used; - while (memcmp(storage + u - len, con, len) == 0) - u -= len; - ClearMemory(u, used - u); - used = u; - repeat_index = 0; - // jichi 10/27/2013: Not used - //if (status & CURRENT_SELECT) - // ReplaceSentence(storage + last_sentence, used - u); - status |= REPEAT_SUPPRESS; - len = 0; - } else if (len <= 2) - { - WORD tmp = *(WORD *)(storage + last_sentence); - DWORD index, last_index, tmp_len; - index = used-len; - if (index < last_sentence) - index = last_sentence; - //Locate position of current input. -_again: - *(WORD *)(storage+last_sentence) = *(WORD *)con; - while (*(WORD *)(storage + index) != *(WORD *)con) - index--; - *(WORD *)(storage + last_sentence) = tmp; - if (index > last_sentence) { - tmp_len = used - index; - if (tmp_len <= 2) { - repeat_detect_limit += 0x40; - last_time = current_time; - return; - } - if (index - last_sentence >= tmp_len && - memcmp(storage + index - tmp_len, storage + index, tmp_len) == 0) { - repeat_detect_limit = 0x80; - sentence_length =tmp_len; - index -= tmp_len; - while (memcmp(storage + index - sentence_length, storage + index, sentence_length) == 0) - index -= sentence_length; - repeat_index = 2; - len = 0; - last_index = index; - if (status&USING_UNICODE) { - while (storage[index] == storage[index + sentence_length]) - index -= 2; - index += 2; - while (true) { - tmp = *(WORD *)(storage + index); - if (tmp >= 0x3000 && tmp < 0x3020) - index += 2; - else - break; - } - } else { - DWORD last_char_len; - while (storage[index] == storage[index + sentence_length]) { - last_char_len = LeadByteTable[storage[index]]; - index -= last_char_len; - } - index += last_char_len; - while (storage[index] == 0x81) { - if ((storage[index+1]>>4) == 4) - index += 2; - else - break; - } - } - repeat_index += last_index - index; - status |= REPEAT_SUPPRESS; - last_sentence = index; - - index += sentence_length; - // jichi 10/27/2013: Not used - //if (status&CURRENT_SELECT) - // ReplaceSentence(storage + index, used - index); - - ClearMemory(index, used - index); - //memset(storage + index, 0, used - index); - used = index; - } else { - index--; - goto _again; - } - } - else - repeat_detect_limit += 0x40; - } - } - } - } - last_time = current_time; -} - void TextThread::ResetRepeatStatus() { last=0; @@ -485,20 +329,6 @@ void TextThread::AddText(const BYTE *con, int len, bool new_line, bool space) } } -void TextThread::AddTextDirect(const BYTE* con, int len, bool space) // Add to store directly, penetrating repetition filters. -{ - // jichi 10/27/2013: Accordig to the logic, both len and con must be > 0 - if (status & BUFF_NEWLINE) - AddLineBreak(); - //SetNewLineTimer(); - sentence_length += len; - - BYTE *data = const_cast(con); // jichi 10/27/2013: TODO: Figure out where con is modified - if (output) - len = output(this, data, len, false, app_data, space); - AddToStore(data, len); -} - DWORD TextThread::GetEntryString(LPSTR str, DWORD max) { DWORD len = 0; @@ -686,32 +516,4 @@ void TextThread::SetNewLineTimer() timer = SetTimer(dummyWindow, (UINT_PTR)this, settings->splittingInterval, NewLineBuff); } -DWORD TextThread::GetThreadString(LPSTR str, DWORD max) -{ - DWORD len = 0; - if (max) { - char buffer[0x200]; - char c; - if (thread_string == nullptr) - GetEntryString(buffer, 0x200); //This will allocate thread_string. - LPSTR end = thread_string; - for (; *end; end++); - c = thread_string[0]; - thread_string[0] = ':'; - LPSTR p1 = end; - for (; *p1 != ':'; p1--); - thread_string[0] = c; - if (p1 == thread_string) - return 0; - p1++; - len = end - p1; - if (len >= max) - len = max - 1; - ::memcpy(str, p1, len); - str[len] = 0; - } - - return len; -} - // EOF diff --git a/vnr/texthook/host/textthread.h b/vnr/texthook/host/textthread.h index 6d718f4..9b6a786 100644 --- a/vnr/texthook/host/textthread.h +++ b/vnr/texthook/host/textthread.h @@ -44,31 +44,16 @@ class TextThread : public MyVector public: TextThread(DWORD pid, DWORD hook, DWORD retn, DWORD spl, WORD num); ~TextThread(); - //virtual void CopyLastSentence(LPWSTR str); - //virtual void SetComment(LPWSTR); - //virtual void ExportTextToFile(LPWSTR filename); - virtual DWORD GetThreadString(LPSTR str, DWORD max); virtual DWORD GetEntryString(LPSTR str, DWORD max = 0x200); void Reset(); void AddText(const BYTE *con,int len, bool new_line, bool space); // jichi 10/27/2013: add const; remove console; add space void RemoveSingleRepeatAuto(const BYTE *con, int &len); // jichi 10/27/2013: add const - void RemoveSingleRepeatForce(BYTE *con, int &len); - void RemoveCyclicRepeat(BYTE *&con, int &len); void ResetRepeatStatus(); void AddLineBreak(); - //void ResetEditText(); - void ComboSelectCurrent(); - void UnLinkAll(); void DispatchLastSentence(); - //void AdjustPrevRepeat(DWORD len); - //void PrevRepeatLength(DWORD &len); - - //bool AddToCombo(); - bool RemoveFromCombo(); - void SetNewLineFlag(); void SetNewLineTimer(); @@ -78,9 +63,6 @@ public: DWORD Addr() const {return tp.hook; } DWORD &Status() { return status; } WORD Number() const { return thread_number; } - WORD &Last() { return last; } - WORD &LinkNumber() { return link_number; } - UINT_PTR &Timer() { return timer; } ThreadParameter *GetThreadParameter() { return &tp; } //LPCWSTR GetComment() { return comment; } @@ -100,9 +82,6 @@ public: void ClearNewLineFlag() { status &= ~BUFF_NEWLINE; } void ClearRepeatFlag() { status &= ~CYCLIC_REPEAT; } -protected: - void AddTextDirect(const BYTE *con, int len, bool space); // jichi 10/27/2013: add const; add space; change to protected - private: ThreadParameter tp;