⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gui_ems.c

📁 The font library converting tool MCT mainly introduces the process of the font formats to give us a
💻 C
📖 第 1 页 / 共 5 页
字号:
		ems_cursor_pos_flag =0 ;
		saved_last_skip_pos = 0;
		middle_ems_position = &(b->data->textBuffer[b->data->CurrentPosition.OffsetToText]);
		first_cons_ems_position = &(b->data->textBuffer[b->data->CurrentPosition.OffsetToText-2]);
	#endif //__MMI_HINDI_ALG__
		text_format=b->text_format;
		/*MTK Terry for EMS_NO_MEMORY or other error cause*/
		if(pixtel_UI_EMS_input_box_add_string(b,s,&text_format) != EMS_OK/*==EMS_NO_SPACE*/)
		{	UI_editor_play_tone_cannot_insert();
			b->overflow_callback();
		}
		else
		{
			#ifdef __MMI_HINDI_ALG__
			if(!TestLastPosition(b->data,&(b->data->CurrentPosition)))
				object_type_check1 = pixtel_UI_EMS_input_box_get_next_object(data_chk_type1,&p1,&current_character1,&o1);


			if ( (UI_CHK_CONSONANT(*first_cons_ems_position))&& (UI_CHK_CONSONANT(*second_cons_ems_position))
				&& (*middle_ems_position==0x4d)
				&& (*(first_cons_ems_position+1)== 0x09) && (*(second_cons_ems_position+1)== 0x09))
			{

				U8 skip_positions=0;
				PU8 src_ems_pos=second_cons_ems_position;
				PU8 dest_ems_pos;
				//dest_ems_pos = hf_get_next_cluster_p(b->data->textBuffer,src_ems_pos);
				dest_ems_pos = hf_get_next_cluster_p(src_ems_pos,src_ems_pos);
				skip_positions = dest_ems_pos - src_ems_pos;//Number of moves
				skip_positions = skip_positions >> 1;
				saved_last_skip_pos = skip_positions;
				PRINT_INFORMATION_2((MMI_TRACE_INFO, "pixtel_UI_EMS_input_box_insert_multitap_character[skip_positions]:%d  ",skip_positions));
				while(skip_positions--)
				{
					ForwardCurrentPosition(b->data,1);
				}
				ems_cursor_pos_flag =1 ;

				if (object_type_check1 == 2)
				{
					//START TARUN 20050106 :
					if (saved_last_skip_pos == 1)
					{
						// To shift the images on cluster completion
						bb = b->data->listTail;
						do
						{
							if (bb->OffsetToText == b->data->CurrentPosition.Object->OffsetToText)
								bb->OffsetToText+=(saved_last_skip_pos)*2;
							bb = bb->prev;
						}while(bb != NULL);

						ForwardCurrentPosition(b->data,saved_last_skip_pos);
						BackwardCurrentPositionSkipCR(b->data);
					}
					else if (saved_last_skip_pos > 1)
					{
						bb = b->data->listHead;
						do
						{
							if (bb->OffsetToText == b->data->CurrentPosition.Object->OffsetToText)
								bb->OffsetToText+=(saved_last_skip_pos)*2;
							bb = bb->next;
						}while(bb != NULL);


						ForwardCurrentPosition(b->data,saved_last_skip_pos);
						if (b->data->listHead == b->data->listTail)
						{
							BackwardCurrentPositionSkipCR(b->data);
						}
						else
						{
							BackwardCurrentPositionSkipCR(b->data);
							BackwardCurrentPositionSkipCR(b->data);
						}
					}
				}

			}
//PMT VIKAS GUPTA START 20051129
			if(check_for_halant)
			{

					ForwardCurrentPosition(b->data,total_no_of_objects);
					check_for_halant=0;
			}
//PMT VIKAS GUPTA END 20051129
			#endif //__MMI_HINDI_ALG__
			b->change_callback();
		}
	}
	else
	{
		#ifdef __MMI_HINDI_ALG__
		ems_cursor_pos_flag =0 ;
		saved_last_skip_pos = 0;
		second_cons_ems_position = &(b->data->textBuffer[b->data->CurrentPosition.OffsetToText-2]);

		object_type_check2 = pixtel_UI_EMS_input_box_get_previous_object(data_chk_type2,&p2,&current_character2,&o2);
//PMT VIKAS GUPTA START 20051129
		if((*second_cons_ems_position==0x4d)&&(object_type_check2==2))
		{
			check_for_halant=1;
		}
//PMT VIKAS GUPTA END 20051129
		//START TARUN PMT 20050128
		if ((object_type_check2 == 2) && (*second_cons_ems_position == 0x4d) && UI_CHK_CONSONANT(s[0]) && s[1] ==0x09 )
                //END TARUN PMT 20050128
		{
			{
				U8 skip_positions=0;
				PU8 src_ems_pos=second_cons_ems_position;
				PU8 dest_ems_pos;

				dest_ems_pos = hf_get_next_cluster_p(src_ems_pos,src_ems_pos);
				skip_positions = dest_ems_pos - src_ems_pos;
				skip_positions = skip_positions >> 1;

				// To shift the images on cluster completion
				bb = b->data->listHead;
				do
				{
					if (bb->OffsetToText == b->data->CurrentPosition.Object->OffsetToText)
						bb->OffsetToText+=(skip_positions)*2;
					bb = bb->next;
				}while(bb != NULL);
//START TARUN PMT 20050128
				//ForwardCurrentPosition(b->data,1);
//END TARUN PMT 20050128
			}
		}
		#endif //__MMI_HINDI_ALG__
		if(b->flags & UI_EMS_INPUT_BOX_OVERWRITE_MODE)
		{	if(pixtel_UI_EMS_input_box_forward_cursor(b)==1)
			{	pixtel_UI_EMS_cancel_current_position(b);
				text_format=b->text_format;
				/*MTK Terry for EMS_NO_MEMORY or other error cause*/
				if(pixtel_UI_EMS_input_box_add_string(b,s,&text_format) != EMS_OK/*==EMS_NO_SPACE*/)
				{
				   	UI_editor_play_tone_cannot_insert();
					b->overflow_callback();
				}
                else
                {
                      b->change_callback();
                }
			}
            //to prevent to enable the multitap flag while reaching the max length(cannot add any char)
            b->flags|=UI_EMS_INPUT_BOX_STATE_MULTITAP;

		}
		else
            {
               /*MTK Terry for EMS_NO_MEMORY or other error cause*/
            if(pixtel_UI_EMS_input_box_add_string(b,s,&b->text_format) != EMS_OK/*==EMS_NO_SPACE*/)
               b->overflow_callback();
            else
            {
               b->change_callback();
               //MTK Elvis
               b->flags|=UI_EMS_INPUT_BOX_STATE_MULTITAP;
               //MTK end
            }
		}
        //MTK Elvis
        //b->flags|=UI_EMS_INPUT_BOX_STATE_MULTITAP;
        //MTK end
	}
#ifdef __MMI_HINDI_ALG__
	if(TestLastPosition(b->data,&(b->data->CurrentPosition)))
	{
		b->data->textBuffer[b->data->CurrentPosition.OffsetToText]=0;
		b->data->textBuffer[b->data->CurrentPosition.OffsetToText+1]=0;
	}
#endif
	pixtel_UI_EMS_input_box_locate_cursor(b);
	b->saved_cursor_ax=-1;
}

void pixtel_UI_EMS_input_box_confirm_multitap_character(UI_EMS_input_box *b)
{	b->flags&=~UI_EMS_INPUT_BOX_STATE_MULTITAP;
}

extern	EMSTextFormat	wgui_EMS_text_format;
void pixtel_UI_EMS_input_box_delete_all(UI_EMS_input_box *b)
{
#ifdef __MMI_MESSAGES_EMS__
	EMS_cancel_object_focus();
#endif
	ResetCurrentPosition(b->data);
	//MTK Elvis 20040611 donot plan tone while the EMS data is empty.
	#if 0
/* under construction !*/
	#endif
	//MTK end
	/*	Probably a better way of doing this is to have a EMS library API	*/
	GoToEndPosition(b->data);
	//START TARUN 20041230
	memset(b->data->textBuffer,0,b->data->CurrentPosition.OffsetToText);
	//END TARUN 20041230
#if defined(__MMI_MESSAGES_CONCAT_SMS__)
	CancelCurrentPosition(b->data,(U16)(b->data->Reminder.maxUsableLenPerSeg*mmi_msg_get_seg_num()));
#else
	CancelCurrentPosition(b->data,(U16)(EMS_DEFAULT_DCS_ALLOCATED_LENGTH));
#endif
	pixtel_UI_EMS_input_box_set_text_format_cursor_position(b);
	pixtel_UI_EMS_input_box_locate_cursor(b);
	b->UCS2_count=0;
	b->object_count=0;
//MTK Joy added for clear all, 1228
	b->GSM_ext_count=0;
//MTK end
	pixtel_UI_EMS_change_DCS(b);
	b->saved_cursor_ax=-1;
	ResetTextFormat(&wgui_EMS_text_format);
}

#if(EMS_USE_CRLF_COMBINATION||EMS_USE_ESC_COMBINATION)

void pixtel_UI_EMS_input_box_delete(UI_EMS_input_box *b)
{
#ifdef __MMI_MESSAGES_EMS__
	EMS_cancel_object_focus();
#endif
	if(UI_TEST_CR_CHARACTER(b->data->textBuffer[b->data->CurrentPosition.OffsetToText]))
	{	if(ForwardCurrentPosition(b->data,1)==1)
		{	if(!UI_TEST_LF_CHARACTER(b->data->textBuffer[b->data->CurrentPosition.OffsetToText]))
				BackwardCurrentPosition(b->data,1);
		}
	}
	if(pixtel_UI_EMS_input_box_forward_cursor(b)==1)
	{	pixtel_UI_EMS_cancel_current_position(b);
		pixtel_UI_EMS_input_box_set_text_format_cursor_position(b);
		pixtel_UI_EMS_input_box_locate_cursor(b);
	}
	else UI_editor_play_tone_cannot_change();
	b->saved_cursor_ax=-1;
}

void pixtel_UI_EMS_input_box_previous(UI_EMS_input_box *b)
{
#if defined(__MMI_LANG_VIETNAMESE__)
	EMSPosition			mapped_cursor_position;
	UI_character_type current_character,dummy_c = 0;
	EMSData*			data=b->data;
	EMSObject*			current_object;
	byte				object_type;
	viet_tone_mark tone_mark = VIET_TONE_NONE;
	viet_vowel_letter viet_vowel = VIET_VOWEL_NONE;
#endif

/* MTK Add Steven 20050505  */
#if defined(__MMI_LANG_THAI__)
	EMSPosition			mapped_cursor_position_thai;
	UI_character_type 		current_character_thai,dummy_c_thai 	= 	0;
	EMSData*			data_thai								=	b->data;
	EMSObject*			current_object_thai;
	byte					object_type_thai;
	UI_character_type		pre_one_char							=	0;
	UI_character_type		pre_two_char							=	0;
	UI_character_type		pre_three_char							=	0;
#endif
/* MTK End */

#ifdef __MMI_MESSAGES_EMS__
	EMS_cancel_object_focus();
#endif
#if defined(__MMI_LANG_VIETNAMESE__)
      EMS_map_position(data,&data->CurrentPosition,&mapped_cursor_position);
      object_type=pixtel_UI_EMS_input_box_get_previous_object(data,&mapped_cursor_position,&current_character,&current_object);
      if (1==object_type)
      {
		if ((current_character >= 0x0300) && (current_character <= 0x0323))
		{
			object_type=pixtel_UI_EMS_input_box_get_previous_object(data,&mapped_cursor_position,&dummy_c,&current_object);//get next character
			if (1==object_type)
			{
  				viet_vowel = mmi_viet_vowel_letter(dummy_c);
				if (VIET_VOWEL_NONE != viet_vowel)
				{
        				tone_mark = mmi_viet_tone_mark(current_character);
					if (VIET_TONE_NONE != tone_mark)
					{
						current_character = mmi_viet_combine_vowel_tone(viet_vowel,tone_mark);
						BackwardCurrentPositionSkipCR(b->data);
					}
					else
					{
						object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,&current_object);
					}
				}
				else
				{
					object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,&current_object);
				}
			}
			else if (0!=object_type)
			{
				object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,&current_object);
			}
		}
      }
#endif

/* MTK Steven 20050505 */
#if defined(__MMI_LANG_THAI__)
      EMS_map_position(data_thai, &data_thai->CurrentPosition, &mapped_cursor_position_thai);
      object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &current_character_thai, &current_object_thai);
      if (object_type_thai == 1 && isThaiChar(current_character_thai))// object type == 1 --> character
      {
		object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &pre_one_char, &current_object_thai);
		if(object_type_thai == 1 && isThaiChar(pre_one_char))
		{
			if(!RequireToMoveCursor(pre_one_char,current_character_thai))
			{
				BackwardCurrentPositionSkipCR(b->data);
				object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &pre_two_char, &current_object_thai);
				if(object_type_thai == 1 && isThaiChar(pre_two_char))
				{
					if(!RequireToMoveCursor(pre_two_char, pre_one_char))
					{
							BackwardCurrentPositionSkipCR(b->data);
							object_type_thai = pixtel_UI_EMS_input_box_get_previous_object(data_thai, &mapped_cursor_position_thai, &pre_three_char, &current_object_thai);
							if(object_type_thai == 1 && isThaiChar(pre_three_char))
							{
								if(!RequireToMoveCursor(pre_three_char, pre_two_char)) BackwardCurrentPositionSkipCR(b->data);
								else 	object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,&current_object_thai);
							}
							else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,&current_object_thai);
					}
					else	 object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,&current_object_thai);
				}
				else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,&current_object_thai);
			}
			else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,&current_object_thai);
		}
		else object_type_thai=pixtel_UI_EMS_input_box_get_next_object(data_thai,&mapped_cursor_position_thai,&dummy_c_thai,&current_object_thai);
      	}

#endif
/* MTK End */


	if(BackwardCurrentPositionSkipCR(b->data)!=1)
	{
		UI_editor_play_tone_cannot_navigate();
	}
	else
	{
		pixtel_UI_EMS_input_box_set_text_format_cursor_position(b);
		pixtel_UI_EMS_input_box_locate_cursor(b);
		b->saved_cursor_ax=-1;
	}
}

byte pixtel_UI_EMS_input_box_forward_cursor(UI_EMS_input_box *b)
{	if(b->data->CurrentPosition.OffsetToText<=(b->data->textLength))
	{	//START TARUN 20041212
		if(ForwardCurrentPositionSkipCR(b->data)==1)
		//if(ForwardCurrentPositionSkipCR(b->data)>=1)
		//END TARUN 20041212
			return(1);
	}
	return(0);
}

void pixtel_UI_EMS_input_box_next(UI_EMS_input_box *b)
{
#if defined(__MMI_LANG_VIETNAMESE__)
	EMSPosition			mapped_cursor_position;
	UI_character_type current_character,dummy_c = 0;
	EMSData*			data=b->data;
	EMSObject*			current_object;
	byte				object_type;
	viet_tone_mark tone_mark = VIET_TONE_NONE;
	viet_vowel_letter viet_vowel = VIET_VOWEL_NONE;
#endif

/* MTK Add Steven 20050505  */
#if defined(__MMI_LANG_THAI__)
	EMSPosition			mapped_cursor_position_thai;
	UI_character_type 		current_character_thai,dummy_c_thai 	= 	0;
	EMSData*			data_thai								=	b->data;
	EMSObject*			current_object_thai;
	byte					object_type_thai;
	UI_character_type		next_one_char							=	0;
	UI_character_type		next_two_char							=	0;
	UI_character_type		next_three_char							=	0;
#endif
/* MTK End */

#ifdef __MMI_MESSAGES_EMS__
	EMS_cancel_object_focus();
#endif
#if defined(__MMI_LANG_VIETNAMESE__)
      EMS_map_position(data,&data->CurrentPosition,&mapped_cursor_position);
      object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&current_character,&current_object);
      if (1==object_type)
      {
		if ((current_character > 0x0040) && (current_character < 0x01B1))
		{
			object_type=pixtel_UI_EMS_input_box_get_next_object(data,&mapped_cursor_position,&dummy_c,&current_object);//get next character
			if (1==object_type)
			{
     				tone_mark = mmi_viet_tone_mark(dummy_c);
				if (VIET_TONE_NONE != tone_mark)
				{
      				viet_vowel = mmi_viet_vowel_letter(current_character);
					if (VIET_VOWEL_NONE != viet_vowel)
					{
						current_character = mmi_viet_combine_vowel_tone(viet_vowel,tone_mark);
						pixtel_UI_EMS_input_box_forward_cursor(b);
					}
					else
					{
						object_type=pixtel_UI_EMS_input_box_get_previous_object(data,&mapped_cursor_position,&dummy_c,&cur

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -