RTFStatus RTFReader::ParseListTableLevelText(RTFToken p_token, int4 p_value) { RTFStatus t_status; t_status = kRTFStatusSuccess; bool t_has_parameter; t_has_parameter = (p_token & kRTFTokenHasParameter) != 0; int4 t_bullet_char; t_bullet_char = -1; switch(p_token & kRTFTokenMask) { case kRTFTokenSkipDestination: m_state . SetDestination(kRTFDestinationSkip); break; case kRTFTokenUnicode: { if (t_has_parameter) { t_bullet_char = p_value & 0xFFFF; m_input_skip_count = m_state . GetUnicodeSkip(); } } break; case kRTFTokenCharacter: { MCTextEncoding t_encoding; t_encoding = m_state . GetTextEncoding(); if (t_encoding == kMCTextEncodingUndefined) t_encoding = m_default_text_encoding; uint8_t t_input; t_input = (uint8_t)p_value; if (t_input != ';' && t_input >= 32) { uint16_t t_output; uint32_t t_read; if (MCTextEncodeToUnicode(t_encoding, &t_input, 1, &t_output, 2, t_read) && t_read == 2) t_bullet_char = t_output; } } break; } if (m_listtable_level_count <= 9 && t_bullet_char != -1) m_lists . SetStyle(m_listtable_level_count, bullet_char_to_liststyle(t_bullet_char)); return t_status; }
bool RTFText::Flush(void) { void *t_output; uint4 t_output_limit; m_output . Borrow(t_output, t_output_limit); uint4 t_used; if (!MCTextEncodeToUnicode(m_input_encoding, m_input . GetBase(), m_input . GetLength(), t_output, t_output_limit, t_used)) { if (!m_output . Ensure(t_used)) return false; m_output . Borrow(t_output, t_output_limit); MCTextEncodeToUnicode(m_input_encoding, m_input . GetBase(), m_input . GetLength(), t_output, t_output_limit, t_used); } m_output . Advance(t_used); m_input . Clear(); return true; }
RTFStatus RTFReader::ParseListText(RTFToken p_token, int4 p_value) { RTFStatus t_status; t_status = kRTFStatusSuccess; bool t_has_parameter; t_has_parameter = (p_token & kRTFTokenHasParameter) != 0; uint16_t t_bullet_char; t_bullet_char = 0; switch(p_token & kRTFTokenMask) { case kRTFTokenSkipDestination: m_state . SetDestination(kRTFDestinationSkip); break; case kRTFTokenUnicode: { if (t_has_parameter) { if ((p_value & 0xFFFF) != ' ') m_list_skip = false; m_input_skip_count = m_state . GetUnicodeSkip(); } } break; case kRTFTokenCharacter: { MCTextEncoding t_encoding; t_encoding = m_state . GetTextEncoding(); if (t_encoding == kMCTextEncodingUndefined) t_encoding = m_default_text_encoding; uint8_t t_input; t_input = (uint8_t)p_value; uint16_t t_output; uint32_t t_read; if (MCTextEncodeToUnicode(t_encoding, &t_input, 1, &t_output, 2, t_read) && t_read == 2) if (t_output != ' ') m_list_skip = false; } break; } return t_status; }