Changeset 8117


Ignore:
Timestamp:
May 16, 2019, 6:19:51 PM (3 years ago)
Author:
kopal
Message:

HomophonicAnalyzer:

  • analyzer now shows with blue color which words it used to lock the homophones
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/CrypPlugins/HomophonicSubstitutionAnalyzer/HomophoneSubstitutionAnalyzerPresentation.xaml.cs

    r8116 r8117  
    446446                    PlainAlphabetTextBox.Text = eventArgs.PlaintextMapping;
    447447                    CostTextBox.Text = String.Format(Properties.Resources.CostValue_0, Math.Round(eventArgs.CostValue, 2));
    448                     AutoLockWords(AnalyzerConfiguration.WordCountToFind);
     448                    var wordPositions = AutoLockWords(AnalyzerConfiguration.WordCountToFind);
    449449                    MarkLockedHomophones();
     450                    MarkFoundWords(wordPositions);
     451
    450452                    newTopEntry = AddNewBestListEntry(eventArgs.PlaintextMapping, eventArgs.CostValue, eventArgs.Plaintext);
    451453                }
     
    467469                eventArgs.NewTopEntry = newTopEntry;
    468470                NewBestValue.Invoke(sender, eventArgs);
     471            }
     472        }
     473
     474        /// <summary>
     475        /// Marks the found words in blue color
     476        /// </summary>
     477        /// <param name="wordPositions"></param>
     478        private void MarkFoundWords(Dictionary<int, int> wordPositions)
     479        {
     480            //Color the found words in blue
     481            foreach (var value in wordPositions)
     482            {
     483                for (int i = 0; i < value.Value; i++)
     484                {
     485                    int position = value.Key + i;
     486                    foreach (var label in _ciphertextLabels)
     487                    {
     488                        if (label == null)
     489                        {
     490                            continue;
     491                        }
     492                        if (label.SymbolOffset == position)
     493                        {
     494                            label.Background = Brushes.LightSkyBlue;
     495                            _plaintextLabels[label.X, label.Y].Background = Brushes.LightSkyBlue;
     496                        }
     497                    }
     498                }
    469499            }
    470500        }
     
    643673        /// </summary>
    644674        /// <param name="symbol"></param>
     675        /// <param name="auto"></param>
    645676        private void LockHomophone(string symbol, bool auto = false)
    646677        {
     
    839870                return;
    840871            }
    841             AutoLockWords(1);
     872            var foundWords = AutoLockWords(1);
     873            MarkFoundWords(foundWords);
    842874        }
    843875
     
    846878        /// Only works, if a WordFinder has previously been created
    847879        /// </summary>
    848         private void AutoLockWords(int minCount)
     880        private Dictionary<int, int> AutoLockWords(int minCount)
    849881        {
    850882            if (_wordFinder == null)
    851883            {
    852                 return;
     884                return null;
    853885            }
    854886
     
    877909            if (wordPositions.Count < minCount)
    878910            {
    879                 return;
     911                return null;
    880912            }
    881913            foreach (var value in wordPositions)
     
    898930                }
    899931            }
     932            return wordPositions;
    900933        }
    901934
Note: See TracChangeset for help on using the changeset viewer.