Exemple #1
0
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;
}
Exemple #2
0
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;
}
Exemple #3
0
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;
}