コード例 #1
0
        void UpdateExplanation(ToneOfYinjie tone)
        {
            int yinjieIndex = mYinjieExplanations.FindYinjie(mYinjie.GetString());
            //string exp = "";

            FormattedString fs = new FormattedString();

            if (yinjieIndex >= 0)
            {
                string samples = "";

                if (tone == ToneOfYinjie.TONE_1)
                {
                    samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone1Samples;
                }
                else if (tone == ToneOfYinjie.TONE_2)
                {
                    samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone2Samples;
                }
                else if (tone == ToneOfYinjie.TONE_3)
                {
                    samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone3Samples;
                }
                else if (tone == ToneOfYinjie.TONE_4)
                {
                    samples = mYinjieExplanations.AllYinjies[yinjieIndex].Tone4Samples;
                }

                //exp = string.Format(" {0}\r\n {1}", mYinjieExplanations.AllYinjies[yinjieIndex].Desc, samples);

                fs.Spans.Add(new Span {
                    Text = mYinjieExplanations.AllYinjies[yinjieIndex].Desc + "\n", ForegroundColor = Color.FromHex("#E8AD00")
                });
                fs.Spans.Add(new Span {
                    Text = samples
                });

                btnClearYinjie.IsEnabled = true;
            }
            else
            {
                //exp = string.Format(" {0}\n {1}", DefaultTip1, DefaultTip2);

                fs.Spans.Add(new Span {
                    Text = DefaultTip1 + "\n", ForegroundColor = Color.FromHex("#E8AD00")
                });
                fs.Spans.Add(new Span {
                    Text = DefaultTip2
                });

                btnClearYinjie.IsEnabled = false;
            }

            //lblExplanation.Text = exp;
            lblExplanation.FormattedText = fs;
        }
コード例 #2
0
ファイル: YunmuPage.xaml.cs プロジェクト: chen2qu/pinyin
        //void InitializeYunmu()
        //{
        //	mAllYunmus = new List<Yunmu>(24);

        //	Yunmu ymA = new Yunmu("a", btnYunmuA, false);
        //	mAllYunmus.Add(ymA);

        //	Yunmu ymO = new Yunmu("o", btnYunmuO, false);
        //	mAllYunmus.Add(ymO);

        //	Yunmu ymE = new Yunmu("e", btnYunmuE, false);
        //	mAllYunmus.Add(ymE);

        //	Yunmu ymI = new Yunmu("i", btnYunmuI, true);
        //	mAllYunmus.Add(ymI);

        //	Yunmu ymU = new Yunmu("u", btnYunmuU, true);
        //	mAllYunmus.Add(ymU);

        //	Yunmu ymV = new Yunmu("ü", btnYunmuV, true);
        //	mAllYunmus.Add(ymV);

        //	Yunmu ymAI = new Yunmu("ai", btnYunmuAI, false);
        //	mAllYunmus.Add(ymAI);

        //	Yunmu ymEI = new Yunmu("ei", btnYunmuEI, false);
        //	mAllYunmus.Add(ymEI);

        //	Yunmu ymUI = new Yunmu("ui", btnYunmuUI, true);
        //	mAllYunmus.Add(ymUI);

        //	Yunmu ymAO = new Yunmu("ao", btnYunmuAO, false);
        //	mAllYunmus.Add(ymAO);

        //	Yunmu ymOU = new Yunmu("ou", btnYunmuOU, false);
        //	mAllYunmus.Add(ymOU);

        //	Yunmu ymIU = new Yunmu("iu", btnYunmuIU, true);
        //	mAllYunmus.Add(ymIU);

        //	Yunmu ymIE = new Yunmu("ie", btnYunmuIE, true);
        //	mAllYunmus.Add(ymIE);

        //	Yunmu ymVE = new Yunmu("üe", btnYunmuVE, true);
        //	mAllYunmus.Add(ymVE);

        //	Yunmu ymER = new Yunmu("er", btnYunmuER, false);
        //	mAllYunmus.Add(ymER);

        //	Yunmu ymAN = new Yunmu("an", btnYunmuAN, false);
        //	mAllYunmus.Add(ymAN);

        //	Yunmu ymEN = new Yunmu("en", btnYunmuEN, false);
        //	mAllYunmus.Add(ymEN);

        //	Yunmu ymIN = new Yunmu("in", btnYunmuIN, true);
        //	mAllYunmus.Add(ymIN);

        //	Yunmu ymUN = new Yunmu("un", btnYunmuUN, true);
        //	mAllYunmus.Add(ymUN);

        //	Yunmu ymVN = new Yunmu("ün", btnYunmuVN, true);
        //	mAllYunmus.Add(ymVN);

        //	Yunmu ymANG = new Yunmu("ang", btnYunmuANG, false);
        //	mAllYunmus.Add(ymANG);

        //	Yunmu ymENG = new Yunmu("eng", btnYunmuENG, false);
        //	mAllYunmus.Add(ymENG);

        //	Yunmu ymING = new Yunmu("ing", btnYunmuING, true);
        //	mAllYunmus.Add(ymING);

        //	Yunmu ymONG = new Yunmu("ong", btnYunmuONG, true);
        //	mAllYunmus.Add(ymONG);

        //}

        void UpdateExplanation(ToneOfYinjie tone)
        {
            YinjieXmlFile pinyinData  = PinyinDataManager.Instance.GetAllYinjies();
            int           yinjieIndex = pinyinData.FindYinjie(mYinjie.GetString());

            FormattedString fs = new FormattedString();

            if (yinjieIndex >= 0)
            {
                string samples = "";

                if (tone == ToneOfYinjie.TONE_1)
                {
                    samples = pinyinData.AllYinjies[yinjieIndex].Tone1Samples;
                }
                else if (tone == ToneOfYinjie.TONE_2)
                {
                    samples = pinyinData.AllYinjies[yinjieIndex].Tone2Samples;
                }
                else if (tone == ToneOfYinjie.TONE_3)
                {
                    samples = pinyinData.AllYinjies[yinjieIndex].Tone3Samples;
                }
                else if (tone == ToneOfYinjie.TONE_4)
                {
                    samples = pinyinData.AllYinjies[yinjieIndex].Tone4Samples;
                }
                else
                {
                    samples = "";
                }

                fs.Spans.Add(new Span {
                    Text = pinyinData.AllYinjies[yinjieIndex].Desc + "\n", ForegroundColor = Color.FromHex("#E8AD00")
                });
                if (mYinjie.ToneRule != Yinjie.ToneRuleEnum.TONERULE_NONE)
                {
                    fs.Spans.Add(new Span {
                        Text = string.Format("声调规则: {0}\n", mYinjie.ToneRules[(int)mYinjie.ToneRule]), ForegroundColor = Color.LimeGreen
                    });
                }
                fs.Spans.Add(new Span {
                    Text = samples
                });
            }
            else
            {
                fs.Spans.Add(new Span {
                    Text = DefaultTip1 + "\n", ForegroundColor = Color.FromHex("#E8AD00")
                });
            }

            lblExplanation.FormattedText = fs;
        }
コード例 #3
0
        void PlayYinjie(ToneOfYinjie tone)
        {
            string soundFile = "";

            if (mYinjie.Yunmu.Length > 0)
            {
                int toneInt = (int)tone;

                // Xamarin doesn't support adding assets with ü in name,
                // so have to replace it with v
                string yinjieWithV = mYinjie.Yunmu.Replace("ü", "v");
                soundFile = string.Format("{0}{1}.MP3", yinjieWithV, toneInt);
            }

            AudioManager.Instance.PlaySound(soundFile);
        }
コード例 #4
0
        void PlayYinjie(ToneOfYinjie tone)
        {
            string soundFile = "";

            // if user just chooses shengmu, then no tones are available
            // yunmu and full yinjie has tones
            if (mYinjie.Shengmu.Length > 0 && mYinjie.Yunmu.Length == 0)
            {
                soundFile = string.Format("{0}.MP3", mYinjie.Shengmu);
            }
            else
            {
                int toneInt = (int)tone;

                // Xamarin doesn't support adding assets with ü in name,
                // so have to replace it with v
                string yinjieWithV = mYinjie.GetString().Replace("ü", "v");
                soundFile = string.Format("{0}{1}.MP3", yinjieWithV, toneInt);
            }

            AudioManager.Instance.PlaySound(soundFile);
            //	AudioManager.Instance.PlayBackgroundMusic(soundFile);
        }
コード例 #5
0
 void UpdateYinjie(ToneOfYinjie tone)
 {
     lblYinjie.FormattedText = mYinjie.GetFormattedTonedString(tone, Color.FromHex("#E8AD00"), Color.LimeGreen, Color.FromHex("#E8AD00"));
 }
コード例 #6
0
        //public string GetTonedString(ToneOfYinjie tone)
        //{
        //	string ym = "";
        //	int t = (int)tone;

        //	if (mYunmu.Contains("a"))
        //	{
        //		ym = mYunmu.Replace('a', TonedA[t]);
        //              mToneRule = ToneRuleEnum.TONERULE_A;
        //	}
        //	else if (mYunmu.Contains("o"))
        //	{
        //		ym = mYunmu.Replace('o', TonedO[t]);
        //              mToneRule = ToneRuleEnum.TONERULE_O;
        //	}
        //	else if (mYunmu.Contains("e"))
        //	{
        //		ym = mYunmu.Replace('e', TonedE[t]);
        //              mToneRule = ToneRuleEnum.TONERULE_E;
        //	}
        //	else if (mYunmu.Contains("ü"))
        //	{
        //              if (Shengmu.Equals("j") || Shengmu.Equals("q") || Shengmu.Equals("x"))
        //              {
        //                  ym = mYunmu.Replace('ü', TonedU[t]);
        //                  mToneRule = ToneRuleEnum.TONERULE_VOWELS;
        //                  Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym);
        //              }
        //              else
        //              {
        //                  ym = mYunmu.Replace('ü', TonedV[t]);
        //                  mToneRule = ToneRuleEnum.TONERULE_VOWELS;
        //                  Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym);
        //              }
        //	}
        //	else
        //	{
        //		int indexI = mYunmu.IndexOf('i');
        //		int indexU = mYunmu.IndexOf('u');

        //		if (indexI >= 0 && indexU < 0)
        //		{
        //			ym = mYunmu.Replace('i', TonedI[t]);
        //                  mToneRule = ToneRuleEnum.TONERULE_VOWELS;
        //		}
        //		else if (indexI < 0 && indexU >= 0)
        //		{
        //			ym = mYunmu.Replace('u', TonedU[t]);
        //                  mToneRule = ToneRuleEnum.TONERULE_VOWELS;
        //              }
        //		else if (indexI >= 0 && indexU >= 0)
        //		{
        //			if (indexI < indexU)
        //			{
        //				ym = mYunmu.Replace('u', TonedU[t]);
        //			}
        //			else
        //			{
        //				ym = mYunmu.Replace('i', TonedI[t]);
        //			}
        //                  mToneRule = ToneRuleEnum.TONERULE_IU;
        //		}
        //		else
        //		{
        //			// if it goes here, it should be an illegal pinyin, just return what it is
        //			ym = mYunmu;
        //		}
        //	}
        //	return mShengmu + ym;
        //}

        public FormattedString GetFormattedTonedString(ToneOfYinjie tone, Color shengmuColor, Color tonedYunmuColor, Color otherYunmuColor)
        {
            string ym = "";
            int    t  = (int)tone;

            int tonedYunmuIndex = -1;

            if (mYunmu.Contains("a"))
            {
                ym = mYunmu.Replace('a', TonedA[t]);
                tonedYunmuIndex = mYunmu.IndexOf('a');
                mToneRule       = ToneRuleEnum.TONERULE_A;
            }
            else if (mYunmu.Contains("o"))
            {
                ym = mYunmu.Replace('o', TonedO[t]);
                tonedYunmuIndex = mYunmu.IndexOf('o');
                mToneRule       = ToneRuleEnum.TONERULE_O;
            }
            else if (mYunmu.Contains("e"))
            {
                ym = mYunmu.Replace('e', TonedE[t]);
                tonedYunmuIndex = mYunmu.IndexOf('e');
                mToneRule       = ToneRuleEnum.TONERULE_E;
            }
            else if (mYunmu.Contains("ü"))
            {
                //if (Shengmu.Equals("j") || Shengmu.Equals("q") || Shengmu.Equals("x"))
                //{
                //    ym = mYunmu.Replace('ü', TonedU[t]);
                //    mToneRule = ToneRuleEnum.TONERULE_VOWELS;
                //    //Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym);
                //}
                //else
                //{
                //    ym = mYunmu.Replace('ü', TonedV[t]);
                //    mToneRule = ToneRuleEnum.TONERULE_VOWELS;
                //    //Console.WriteLine("mShengmu: {0}, mYunmu: {1}, ym: {2}", mShengmu, mYunmu, ym);
                //}
                ym = mYunmu.Replace('ü', TonedV[t]);
                tonedYunmuIndex = mYunmu.IndexOf('ü');
                mToneRule       = ToneRuleEnum.TONERULE_VOWELS;
            }
            else
            {
                int indexI = mYunmu.IndexOf('i');
                int indexU = mYunmu.IndexOf('u');

                if (indexI >= 0 && indexU < 0)
                {
                    ym = mYunmu.Replace('i', TonedI[t]);
                    tonedYunmuIndex = indexI;
                    mToneRule       = ToneRuleEnum.TONERULE_VOWELS;
                }
                else if (indexI < 0 && indexU >= 0)
                {
                    ym = mYunmu.Replace('u', TonedU[t]);
                    tonedYunmuIndex = indexU;
                    mToneRule       = ToneRuleEnum.TONERULE_VOWELS;
                }
                else if (indexI >= 0 && indexU >= 0)
                {
                    if (indexI < indexU)
                    {
                        ym = mYunmu.Replace('u', TonedU[t]);
                        tonedYunmuIndex = indexU;
                    }
                    else
                    {
                        ym = mYunmu.Replace('i', TonedI[t]);
                        tonedYunmuIndex = indexI;
                    }
                    mToneRule = ToneRuleEnum.TONERULE_IU;
                }
                else
                {
                    // if it goes here, it should be an illegal pinyin, just return what it is
                    ym = mYunmu;
                }
            }

            FormattedString fs = new FormattedString();

            if (mShengmu.Length > 0)
            {
                fs.Spans.Add(new Span {
                    Text = mShengmu, ForegroundColor = shengmuColor
                });
            }
            if (tonedYunmuIndex >= 0)
            {
                string ymspan1 = ym.Substring(0, tonedYunmuIndex);
                if (ymspan1.Length > 0)
                {
                    fs.Spans.Add(new Span {
                        Text = ymspan1, ForegroundColor = otherYunmuColor
                    });
                }

                string ymspan2 = ym.Substring(tonedYunmuIndex, 1);
                fs.Spans.Add(new Span {
                    Text = ymspan2, ForegroundColor = tonedYunmuColor
                });

                if (tonedYunmuIndex < ym.Length - 1)
                {
                    fs.Spans.Add(new Span {
                        Text = ym.Substring(tonedYunmuIndex + 1), ForegroundColor = otherYunmuColor
                    });
                }
            }

            return(fs);
        }