private void DeleteButton_OnClick(object sender, RoutedEventArgs e)
        {
            var item = MainPage.Current.SelectedDictionaryItem;

            var settingsModel =
                (EditDictionaryListFlyout.Current.DataContext as HandwritingSettingsViewModel).
                SettingsModel;
            var list = settingsModel.DictionaryList;

            foreach (var listItem in list.Where(listItem => listItem.Equals(item)))
            {
                list.Remove(listItem);

                break;
            }

            WritePadAPI.HWR_NewUserDict(WritePadAPI.getRecoHandle());
            foreach (var listItem in list)
            {
                WritePadAPI.addWordToUserDictionary(listItem);
            }
            WritePadAPI.saveRecognizerDataOfType(WritePadAPI.USERDATA_DICTIONARY);

            GoBack();
        }
        private void EditUserWord()
        {
            var item = MainPage.Current.SelectedDictionaryItem;

            var settingsModel =
                (EditDictionaryListFlyout.Current.DataContext as HandwritingSettingsViewModel).
                SettingsModel;
            var list = settingsModel.DictionaryList;

            var position = 0;

            foreach (var listItem in list)
            {
                if (listItem.Equals(item))
                {
                    list.Remove(listItem);
                    list.Insert(position, DictionaryWord.Text);

                    break;
                }

                position += 1;
            }
            WritePadAPI.HWR_NewUserDict(WritePadAPI.getRecoHandle());
            foreach (var listItem in list)
            {
                WritePadAPI.addWordToUserDictionary(listItem);
            }
            WritePadAPI.saveRecognizerDataOfType(WritePadAPI.USERDATA_DICTIONARY);
        }
        private void PointerReleased()
        {
            var gesture = WritePadAPI.detectGesture(WritePadAPI.GEST_CUT | WritePadAPI.GEST_RETURN, _currentStroke.Points);

            switch (gesture)
            {
            case WritePadAPI.GEST_RETURN:
                InkCanvas.Children.Remove(_currentStroke);
                _currentStroke.Points.Clear();
                var strokes = (from object child in InkCanvas.Children select child as UIElement).ToList();
                var result  = RecognizeStrokes(strokes, true);
                if (string.IsNullOrEmpty(result))
                {
                    MessageBox.Show("Text could not be recognized.");
                    result = "";
                }
                RecognizedTextBox.Text = result;
                return;

            case WritePadAPI.GEST_CUT:
                ClearInk();
                return;
            }

            FinishStrokeDraw();
        }
Beispiel #4
0
 public void cleanView(bool emptyAll)
 {
     WritePadAPI.recoResetInk();
     mCurrStroke = -1;
     mPathList.Clear();
     mPath.RemoveAllPoints();
     SetNeedsDisplay();
 }
 private void MainWindow_OnClosing(object sender, CancelEventArgs e)
 {
     if (InkData != IntPtr.Zero)
     {
         WritePadAPI.INK_Erase(InkData);
         WritePadAPI.INK_FreeData(InkData);
     }
     WritePadAPI.releaseRecognizer();
 }
Beispiel #6
0
 private void Form1_Deactivate(object sender, EventArgs e)
 {
     if (InkData != IntPtr.Zero)
     {
         WritePadAPI.INK_Erase(InkData);
         WritePadAPI.INK_FreeData(InkData);
     }
     WritePadAPI.releaseRecognizer();
 }
        private void MainWindow_OnLoaded(object sender, RoutedEventArgs e)
        {
            DrawGrid();
            LanguagesCombo.ItemsSource = new[] { "English", "English (UK)", "German", "French", "Spanish", "Portuguese", "Brazilian", "Dutch", "Italian", "Finnish", "Sweddish", "Norwegian", "Danish", "Indonesian" };
            DictionaryChanged();
            var langId = WritePadAPI.getLanguage();

            UpdateSelectedLanguage(langId);
        }
 private void ClearInk()
 {
     if (InkData != IntPtr.Zero)
     {
         WritePadAPI.INK_Erase(InkData);
     }
     InkData = IntPtr.Zero;
     InkCanvas.Children.Clear();
     DrawGrid();
 }
Beispiel #9
0
 private void Options_Load(object sender, EventArgs e)
 {
     flags = WritePadAPI.HWR_GetRecognitionFlags(WritePadAPI.getRecoHandle());
     SeparateLetters.Checked     = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_SEPLET);
     DisableSegmentation.Checked = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_SINGLEWORDONLY);
     AutoLearner.Checked         = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_ANALYZER);
     AutoCorrector.Checked       = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_CORRECTOR);
     UserDictionary.Checked      = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_USERDICT);
     DictionaryOnly.Checked      = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_ONLYDICT);
 }
        private void SaveUserWord()
        {
            var word = DictionaryWord.Text;

            var settingsModel =
                (EditDictionaryListFlyout.Current.DataContext as HandwritingSettingsViewModel).
                SettingsModel;
            var list = settingsModel.DictionaryList;

            list.Add(word);
            WritePadAPI.addWordToUserDictionary(word);
            WritePadAPI.saveRecognizerDataOfType(WritePadAPI.USERDATA_DICTIONARY);
        }
Beispiel #11
0
        //
        // This method is invoked when the application has loaded and is ready to run. In this
        // method you should instantiate the window, load the UI into it and then make the window
        // visible.
        //
        // You have 17 seconds to return from this method, or iOS will terminate your application.
        //
        public override bool FinishedLaunching(UIApplication app, NSDictionary options)
        {
            WritePadAPI.recoInit();
            WritePadAPI.initializeFlags();

            window = new UIWindow(UIScreen.MainScreen.Bounds);

            viewController            = new xamarin_sampleViewController();
            window.RootViewController = viewController;
            window.MakeKeyAndVisible();

            return(true);
        }
Beispiel #12
0
 private void ClearInk()
 {
     polylineList.Clear();
     if (panelCanvas != null)
     {
         panelCanvas.Invalidate();
     }
     if (InkData != IntPtr.Zero)
     {
         WritePadAPI.INK_Erase(InkData);
     }
     InkData = IntPtr.Zero;
 }
Beispiel #13
0
        private void Options_OnLoaded(object sender, RoutedEventArgs e)
        {
            recoFlags = WritePadAPI.HWR_GetRecognitionFlags(WritePadAPI.getRecoHandle());

            separate_letters.IsChecked = WritePadAPI.isRecoFlagSet(recoFlags, WritePadAPI.FLAG_SEPLET);
            single_word.IsChecked      = WritePadAPI.isRecoFlagSet(recoFlags, WritePadAPI.FLAG_SINGLEWORDONLY);
            autocorrector.IsChecked    = WritePadAPI.isRecoFlagSet(recoFlags, WritePadAPI.FLAG_CORRECTOR);
            autolearner.IsChecked      = WritePadAPI.isRecoFlagSet(recoFlags, WritePadAPI.FLAG_ANALYZER);
            user_dictionary.IsChecked  = WritePadAPI.isRecoFlagSet(recoFlags, WritePadAPI.FLAG_USERDICT);
            dict_words.IsChecked       = WritePadAPI.isRecoFlagSet(recoFlags, WritePadAPI.FLAG_ONLYDICT);

            var langId = WritePadAPI.getLanguage();

            UpdateSelectedLanguage(langId);
        }
Beispiel #14
0
        public override void TouchesEnded(MonoTouch.Foundation.NSSet touches, UIEvent evt)
        {
            base.TouchesEnded(touches, evt);
            var gesture = WritePadAPI.detectGesture(WritePadAPI.GEST_CUT | WritePadAPI.GEST_RETURN, currentStroke);

            if (!mMoved)
            {
                mX++;
            }
            AddPixelsXY(mX, mY, true);

            mCurrStroke = -1;
            mMoved      = false;
            strokeLen   = 0;

            mPath.AddLineTo(new PointF(mX, mY));
            mPathList.Add(mPath);
            mPath               = new UIBezierPath();
            mPath.LineWidth     = WritePadAPI.DEFAULT_INK_WIDTH;
            mPath.LineCapStyle  = CGLineCap.Round;
            mPath.LineJoinStyle = CGLineJoin.Round;

            SetNeedsDisplay();

            switch (gesture)
            {
            case WritePadAPI.GEST_RETURN:
                if (OnReturnGesture != null)
                {
                    mPathList.RemoveAt(mPathList.Count - 1);
                    WritePadAPI.recoDeleteLastStroke();
                    SetNeedsDisplay();
                    OnReturnGesture();
                }
                break;

            case WritePadAPI.GEST_CUT:
                if (OnCutGesture != null)
                {
                    mPathList.RemoveAt(mPathList.Count - 1);
                    WritePadAPI.recoDeleteLastStroke();
                    SetNeedsDisplay();
                    OnCutGesture();
                }
                break;
            }
        }
Beispiel #15
0
        public string Recognize(bool bLearn)
        {
            var    wordList      = new List <List <WordAlternative> > ();
            var    count         = WritePadAPI.recoStrokeCount();
            string defaultResult = WritePadAPI.recoInkData(count, false, false, false, false);

            /*if (defaultResult.Length > 0 && !alphabet.ContainsKey (defaultResult[0]))
             * {
             *      alphabet.Add (defaultResult[0], mPathList [mPathList.Count - 1]);
             * }*/

            var wordCount = WritePadAPI.recoResultColumnCount();

            for (var i = 0; i < wordCount; i++)
            {
                var wordAlternativesList = new List <WordAlternative> ();
                var altCount             = WritePadAPI.recoResultRowCount(i);
                for (var j = 0; j < altCount; j++)
                {
                    String word = WritePadAPI.recoResultWord(i, j);
                    if (word == "<--->")
                    {
                        word = "*Error*";
                    }
                    if (string.IsNullOrEmpty(word))
                    {
                        continue;
                    }
                    uint flags  = WritePadAPI.recoGetFlags();
                    var  weight = WritePadAPI.recoResultWeight(i, j);
                    if (j == 0 && bLearn && weight > 75 && 0 != (flags & WritePadAPI.FLAG_ANALYZER))
                    {
                        WritePadAPI.recoLearnWord(word, weight);
                    }

                    if (wordAlternativesList.All(x => x.Word != word))
                    {
                        wordAlternativesList.Add(new WordAlternative {
                            Word   = word,
                            Weight = weight
                        });
                    }
                }
            }
            return(defaultResult);
        }
Beispiel #16
0
        private async void ExportDictionaryButtonClick(object sender, RoutedEventArgs e)
        {
            var fileSavePicker = new FileSavePicker();

            fileSavePicker.FileTypeChoices.Add(".txt", new List <string> {
                ".txt"
            });
            fileSavePicker.SettingsIdentifier = "picker1";

            var fileToSave = await fileSavePicker.PickSaveFileAsync();

            if (fileToSave == null)
            {
                return;
            }
            WritePadAPI.exportUserDictionary(fileToSave.Path);
        }
Beispiel #17
0
        public override void TouchesBegan(MonoTouch.Foundation.NSSet touches, UIEvent evt)
        {
            base.TouchesBegan(touches, evt);
            currentStroke = new List <WritePadAPI.CGTracePoint> ();
            UITouch touch    = (UITouch)touches.AnyObject;
            var     location = touch.LocationInView(this);

            mPath.RemoveAllPoints();
            mPath.MoveTo(new PointF(location.X, location.Y));
            mX = location.X;
            mY = location.Y;
            AddCurrentPoint(mX, mY);
            mMoved      = false;
            strokeLen   = 0;
            mCurrStroke = WritePadAPI.recoNewStroke(WritePadAPI.DEFAULT_INK_WIDTH, 0xFF0000FF);
            AddPixelsXY(mX, mY, false);
        }
Beispiel #18
0
        private async void ImportDictionaryButtonClick(object sender, RoutedEventArgs e)
        {
            var filePicker = new FileOpenPicker();

            filePicker.FileTypeFilter.Add(".txt");
            filePicker.ViewMode = PickerViewMode.Thumbnail;
            filePicker.SuggestedStartLocation = PickerLocationId.DocumentsLibrary;
            filePicker.SettingsIdentifier     = "picker1";
            filePicker.CommitButtonText       = "Import user dictionary";

            var files = await filePicker.PickSingleFileAsync();

            if (files == null)
            {
                return;
            }
            WritePadAPI.importUserDictionary(files.Path);
        }
        private void SaveAutoCorrectionWordClick()
        {
            if (string.IsNullOrEmpty(AutoCorrectionFirstWord.Text) ||
                string.IsNullOrEmpty(AutoCorrectionSecondWord.Text))
            {
                return;
            }
            var firstWord       = AutoCorrectionFirstWord.Text;
            var secondWord      = AutoCorrectionSecondWord.Text;
            var isAlwaysReplace = AutoCorrectionAlwaysReplace.IsOn;
            var isIgnoreCase    = AutoCorrectionIgnoreCase.IsOn;
            var isDisabled      = AutoCorrectionDisabled.IsOn;

            var settingsModel =
                (EditAutoCorrectorListFlyout.Current.DataContext as HandwritingSettingsViewModel).SettingsModel;
            var list = settingsModel.AutoCorrectionList;

            list.Add(new HandwritingSettingsModel.CorrectionStructure
            {
                FirstWord       = firstWord,
                SecondWord      = secondWord,
                IsAlwaysReplace = isAlwaysReplace,
                IsDisabled      = isDisabled,
                IsIgnoreCase    = isIgnoreCase
            });
            var flags = 0;

            if (isIgnoreCase)
            {
                flags |= WritePadAPI.FLAG_IGNORECASE;
            }
            if (isAlwaysReplace)
            {
                flags |= WritePadAPI.FLAG_ALWAYS_REPLACE;
            }
            if (isDisabled)
            {
                flags |= WritePadAPI.FLAG_DISABLED;
            }
            WritePadAPI.HWR_AddWordToWordList(WritePadAPI.getRecoHandle(), firstWord, secondWord, flags, 0);
            WritePadAPI.saveRecognizerDataOfType(WritePadAPI.USERDATA_AUTOCORRECTOR);
            settingsModel.OnPropertyChanged("AutoCorrectionList");
        }
Beispiel #20
0
        private async void OnDictionaryChanged()
        {
            StorageFolder userpath = null;

            WritePadAPI.resetRecognizer();
            try
            {
                userpath = await ApplicationData.Current.LocalFolder.CreateFolderAsync("Dictionaries");
            }
            catch (Exception)
            {
            }
            if (userpath == null)
            {
                userpath = await ApplicationData.Current.LocalFolder.GetFolderAsync("Dictionaries");
            }
            var flags = WritePadAPI.HWR_GetRecognitionFlags(WritePadAPI.getRecoHandle());

            WritePadAPI.initRecognizerForLanguage((int)WritePadAPI.language, userpath.Path, Package.Current.InstalledLocation.Path, flags);
        }
Beispiel #21
0
        private void panelCanvas_MouseUp(object sender, MouseEventArgs e)
        {
            var gesture = WritePadAPI.detectGesture(WritePadAPI.GEST_CUT | WritePadAPI.GEST_RETURN, polylineList[polylineList.Count - 1]);

            switch (gesture)
            {
            case WritePadAPI.GEST_RETURN:
                polylineList.RemoveAt(polylineList.Count - 1);
                Refresh();
                var result = RecognizeStrokes(polylineList, true);
                if (string.IsNullOrEmpty(result))
                {
                    MessageBox.Show("Text could not be recognized.");
                    result = "";
                }
                textBox1.Text = result;
                return;

            case WritePadAPI.GEST_CUT:
                ClearInk();
                return;
            }
        }
Beispiel #22
0
        private void DeleteAutoCorrectionWordClick(object sender, RoutedEventArgs e)
        {
            var item = SelectedCorrectionStructure;

            var settingsModel =
                (EditAutoCorrectorListFlyout.Current.DataContext as HandwritingSettingsViewModel).SettingsModel;
            var list = settingsModel.AutoCorrectionList;

            WritePadAPI.HWR_EmptyWordList(WritePadAPI.getRecoHandle());
            foreach (var listItem in list.Where(listItem => listItem.Equals(item)))
            {
                list.Remove(listItem);

                break;
            }

            foreach (var listItem in list)
            {
                var flags = 0;
                if (listItem.IsIgnoreCase)
                {
                    flags |= WritePadAPI.FLAG_IGNORECASE;
                }
                if (listItem.IsAlwaysReplace)
                {
                    flags |= WritePadAPI.FLAG_ALWAYS_REPLACE;
                }
                if (listItem.IsDisabled)
                {
                    flags |= WritePadAPI.FLAG_DISABLED;
                }
                WritePadAPI.HWR_AddWordToWordList(WritePadAPI.getRecoHandle(), listItem.FirstWord, listItem.SecondWord, flags, 0);
            }
            WritePadAPI.saveRecognizerDataOfType(WritePadAPI.USERDATA_AUTOCORRECTOR);
            settingsModel.OnPropertyChanged("AutoCorrectionList");
            AddAutoCorrectionWordLightDismissAnimatedPopup.IsOpen = false;
        }
        public async void OnCanvasPointerReleased(object sender, PointerRoutedEventArgs e, Canvas InkCanvas, TextBox RecognizedTextBox)
        {
            if (e.Pointer.PointerId != _currentPointerId)
            {
                return;
            }
            if (e.GetCurrentPoint(null).Properties.PointerUpdateKind == PointerUpdateKind.RightButtonReleased)
            {
                return;
            }
            var gesture = WritePadAPI.detectGesture(WritePadAPI.GEST_CUT | WritePadAPI.GEST_RETURN, _currentStroke.Points);

            switch (gesture)
            {
            case WritePadAPI.GEST_RETURN:
                InkCanvas.Children.Remove(_currentStroke);
                _currentStroke.Points.Clear();
                var strokes = (from object child in InkCanvas.Children select child as UIElement).ToList();
                var result  = RecognizeStrokes(strokes, true);
                if (string.IsNullOrEmpty(result))
                {
                    var messageBox = new MessageDialog("Text could not be recognized.");
                    messageBox.Commands.Add(new UICommand("Close"));
                    await messageBox.ShowAsync();

                    result = "";
                }
                RecognizedTextBox.Text = result;
                return;

            case WritePadAPI.GEST_CUT:
                ClearInk(InkCanvas);
                return;
            }
            FinishStrokeDraw(InkCanvas);
        }
Beispiel #24
0
        private int AddPixelsXY(float X, float Y, bool bLastPoint)
        {
            float xNew, yNew, x1, y1;
            int   nSeg = SEGMENT3;

            if (mCurrStroke < 0)
            {
                return(0);
            }

            if (strokeLen < 1)
            {
                _lastPoint.X = _previousLocation.X = X;
                _lastPoint.Y = _previousLocation.Y = Y;
                WritePadAPI.recoAddPixel(mCurrStroke, X, Y);
                AddCurrentPoint(X, Y);
                strokeLen = 1;
                return(1);
            }

            float dx = Math.Abs(X - _lastPoint.X);
            float dy = Math.Abs(Y - _lastPoint.Y);

            if ((dx + dy) < SEGMENT_DIST_1)
            {
                _lastPoint.X = _previousLocation.X = X;
                _lastPoint.Y = _previousLocation.Y = Y;
                WritePadAPI.recoAddPixel(mCurrStroke, X, Y);
                AddCurrentPoint(X, Y);
                strokeLen++;
                return(1);
            }

            if ((dx + dy) < SEGMENT_DIST_2)
            {
                nSeg = SEGMENT2;
            }
            else if ((dx + dy) < SEGMENT_DIST_3)
            {
                nSeg = SEGMENT3;
            }
            else
            {
                nSeg = SEGMENT4;
            }
            int nPoints = 0;

            for (int i = 1; i < nSeg; i++)
            {
                x1 = _previousLocation.X + ((X - _previousLocation.X) * i) / nSeg;                 //the point "to look at"
                y1 = _previousLocation.Y + ((Y - _previousLocation.Y) * i) / nSeg;                 //the point "to look at"

                xNew = _lastPoint.X + (x1 - _lastPoint.X) / nSeg;
                yNew = _lastPoint.Y + (y1 - _lastPoint.Y) / nSeg;

                if (xNew != _lastPoint.X || yNew != _lastPoint.Y)
                {
                    _lastPoint.X = xNew;
                    _lastPoint.Y = yNew;
                    WritePadAPI.recoAddPixel(mCurrStroke, xNew, yNew);
                    AddCurrentPoint(xNew, yNew);
                    strokeLen++;
                    nPoints++;
                }
            }

            if (bLastPoint)
            {
                // add last point
                if (X != _lastPoint.X || Y != _lastPoint.Y)
                {
                    _lastPoint.X = X;
                    _lastPoint.Y = Y;
                    WritePadAPI.recoAddPixel(mCurrStroke, X, Y);
                    AddCurrentPoint(X, Y);
                    strokeLen++;
                    nPoints++;
                }
            }

            _previousLocation.X = X;
            _previousLocation.Y = Y;
            return(nPoints);
        }
Beispiel #25
0
        public void DictionaryChanged()
        {
            var path = AppDomain.CurrentDomain.BaseDirectory;

            WritePadAPI.initRecognizerForLanguage((int)WritePadAPI.language, path, path, 0);
        }
Beispiel #26
0
        private void LanguagesCombo_SelectedIndexChanged(object sender, EventArgs e)
        {
            var selIndex = (sender as ComboBox).SelectedIndex;
            var language = WritePadAPI.LanguageType.en;

            switch (selIndex)
            {
            case 0:
                language = WritePadAPI.LanguageType.en;
                break;

            case 1:
                language = WritePadAPI.LanguageType.en_uk;
                break;

            case 2:
                language = WritePadAPI.LanguageType.de;
                break;

            case 3:
                language = WritePadAPI.LanguageType.fr;
                break;

            case 4:
                language = WritePadAPI.LanguageType.es;
                break;

            case 5:
                language = WritePadAPI.LanguageType.pt_PT;
                break;

            case 6:
                language = WritePadAPI.LanguageType.pt_BR;
                break;

            case 7:
                language = WritePadAPI.LanguageType.nl;
                break;

            case 8:
                language = WritePadAPI.LanguageType.it;
                break;

            case 9:
                language = WritePadAPI.LanguageType.fi;
                break;

            case 10:
                language = WritePadAPI.LanguageType.sv;
                break;

            case 11:
                language = WritePadAPI.LanguageType.nb;
                break;

            case 12:
                language = WritePadAPI.LanguageType.da;
                break;

            case 13:
                language = WritePadAPI.LanguageType.id;
                break;
            }
            var flags = WritePadAPI.HWR_GetRecognitionFlags(WritePadAPI.getRecoHandle());

            ClearInk();
            WritePadAPI.releaseRecognizer();
            WritePadAPI.language = language;
            DictionaryChanged();
            WritePadAPI.HWR_SetRecognitionFlags(WritePadAPI.getRecoHandle(), flags);
        }
Beispiel #27
0
        private void Form1_Load(object sender, EventArgs e)
        {
            var langId = WritePadAPI.getLanguage();

            UpdateSelectedLanguage(langId);
        }
Beispiel #28
0
        /// <summary>n
        /// Recognizes a collection of Polyline objects into text. Words are recognized with alternatives, eash weighted with probability.
        /// </summary>
        /// <param name="strokes">Strokes to recognize</param>
        /// <returns></returns>
        public string RecognizeStrokes(List <List <Point> > strokes, bool bLearn)
        {
            WritePadAPI.HWR_Reset(WritePadAPI.getRecoHandle());

            if (InkData != IntPtr.Zero)
            {
                WritePadAPI.INK_Erase(InkData);
                InkData = IntPtr.Zero;
            }
            InkData = WritePadAPI.INK_InitData();

            foreach (var polyline in strokes)
            {
                WritePadAPI.AddStroke(InkData, polyline);
            }

            var res = "";
            var resultStringList = new List <string>();
            var wordList         = new List <List <WordAlternative> >();
            var defaultResultPtr = WritePadAPI.recognizeInkData(InkData, 0);
            var defaultResult    = Marshal.PtrToStringUni(defaultResultPtr);

            resultStringList.Add(defaultResult);
            var wordCount = WritePadAPI.HWR_GetResultWordCount(WritePadAPI.getRecoHandle());

            for (var i = 0; i < wordCount; i++)
            {
                var wordAlternativesList = new List <WordAlternative>();
                var altCount             = WritePadAPI.HWR_GetResultAlternativeCount(WritePadAPI.getRecoHandle(), i);
                for (var j = 0; j < altCount; j++)
                {
                    var wordPtr = WritePadAPI.getResultWord(i, j);
                    var word    = Marshal.PtrToStringUni(wordPtr);
                    if (word == "<--->")
                    {
                        word = "*Error*";
                    }
                    if (string.IsNullOrEmpty(word))
                    {
                        continue;
                    }
                    uint flags  = WritePadAPI.HWR_GetRecognitionFlags(WritePadAPI.getRecoHandle());
                    var  weight = WritePadAPI.HWR_GetResultWeight(WritePadAPI.getRecoHandle(), i, j);
                    if (weight == 0)
                    {
                        continue;
                    }
                    if (j == 0 && bLearn && weight > 75 && 0 != (flags & WritePadAPI.FLAG_ANALYZER))
                    {
                        // if learner is enabled, learn default word(s) when the Return gesture is used
                        WritePadAPI.recoLearnWord(word, weight);
                    }
                    if (wordAlternativesList.All(x => x.Word != word))
                    {
                        wordAlternativesList.Add(new WordAlternative
                        {
                            Word   = word,
                            Weight = weight
                        }
                                                 );
                    }
                    while (resultStringList.Count < j + 2)
                    {
                        var emptyStr = "";
                        for (int k = 0; k < i; k++)
                        {
                            emptyStr += "\t";
                        }
                        resultStringList.Add(emptyStr);
                    }
                    if (resultStringList[j + 1].Length > 0)
                    {
                        resultStringList[j + 1] += "\t\t";
                    }
                    resultStringList[j + 1] += word + "\t[" + weight + "%]";
                }
                wordList.Add(wordAlternativesList);
            }

            foreach (var line in resultStringList)
            {
                if (string.IsNullOrEmpty(line))
                {
                    continue;
                }
                if (res.Length > 0)
                {
                    res += Environment.NewLine;
                }
                res += line;
            }

            return(res);
        }
Beispiel #29
0
        public override UITableViewCell GetCell(UITableView tableView, NSIndexPath indexPath)
        {
            var cell = tableView.DequeueReusableCell(OptionsViewControllerCell.Key) as OptionsViewControllerCell;

            if (cell == null)
            {
                cell = new OptionsViewControllerCell();
            }

            uint flags = WritePadAPI.recoGetFlags();
            var  sw    = new UISwitch();

            sw.ValueChanged += (object sender, EventArgs e) => {
                UISwitch swit = (UISwitch)sender;
                flags = WritePadAPI.recoGetFlags();
                switch (swit.Tag)
                {
                case (int)WritePadOptions.kWritePadOptionsSepLetters:
                    flags = WritePadAPI.setRecoFlag(flags, swit.On, WritePadAPI.FLAG_SEPLET);
                    break;

                case (int)WritePadOptions.kWritePadOptionsSingleWord:
                    flags = WritePadAPI.setRecoFlag(flags, swit.On, WritePadAPI.FLAG_SINGLEWORDONLY);
                    break;

                case (int)WritePadOptions.kWritePadOptionsLearner:
                    flags = WritePadAPI.setRecoFlag(flags, swit.On, WritePadAPI.FLAG_ANALYZER);
                    break;

                case (int)WritePadOptions.kWritePadOptionsAutcorrector:
                    flags = WritePadAPI.setRecoFlag(flags, swit.On, WritePadAPI.FLAG_CORRECTOR);
                    break;

                case (int)WritePadOptions.kWritePadOptionsUserDict:
                    flags = WritePadAPI.setRecoFlag(flags, swit.On, WritePadAPI.FLAG_USERDICT);
                    break;

                case (int)WritePadOptions.kWritePadOptionsDictionaryOnly:
                    flags = WritePadAPI.setRecoFlag(flags, swit.On, WritePadAPI.FLAG_ONLYDICT);
                    break;
                }
                WritePadAPI.recoSetFlags(flags);
            };
            sw.Tag             = indexPath.Row;
            cell.AccessoryView = sw;
            switch (indexPath.Row)
            {
            case (int)WritePadOptions.kWritePadOptionsSepLetters:
                sw.On = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_SEPLET);
                cell.TextLabel.Text = "Separate letters mode (PRINT)";
                break;

            case (int)WritePadOptions.kWritePadOptionsSingleWord:
                sw.On = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_SINGLEWORDONLY);
                cell.TextLabel.Text = "Disable word segmentation (single word)";
                break;

            case (int)WritePadOptions.kWritePadOptionsLearner:
                sw.On = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_ANALYZER);
                cell.TextLabel.Text = "Enable Automatic learner";
                break;

            case (int)WritePadOptions.kWritePadOptionsAutcorrector:
                sw.On = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_CORRECTOR);
                cell.TextLabel.Text = "Enable Autocorrector";
                break;

            case (int)WritePadOptions.kWritePadOptionsUserDict:
                sw.On = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_USERDICT);
                cell.TextLabel.Text = "Enable User Dictionary";
                break;

            case (int)WritePadOptions.kWritePadOptionsDictionaryOnly:
                sw.On = WritePadAPI.isRecoFlagSet(flags, WritePadAPI.FLAG_ONLYDICT);
                cell.TextLabel.Text = "Recognize Dictionary Words Only";
                break;
            }

            return(cell);
        }
Beispiel #30
0
 public override void WillTerminate(UIApplication app)
 {
     WritePadAPI.recoFree();
 }
Beispiel #31
0
 private void UpdateSelectedLanguage(WritePadAPI.LanguageType langId)
 {
     var langIndex = 0;
     switch (langId)
     {
         case WritePadAPI.LanguageType.en:
             langIndex = 0;
             break;
         case WritePadAPI.LanguageType.en_uk:
             langIndex = 1;
             break;
         case WritePadAPI.LanguageType.de:
             langIndex = 2;
             break;
         case WritePadAPI.LanguageType.fr:
             langIndex = 3;
             break;
         case WritePadAPI.LanguageType.es:
             langIndex = 4;
             break;
         case WritePadAPI.LanguageType.pt_PT:
             langIndex = 5;
             break;
         case WritePadAPI.LanguageType.pt_BR:
             langIndex = 6;
             break;
         case WritePadAPI.LanguageType.nl:
             langIndex = 7;
             break;
         case WritePadAPI.LanguageType.it:
             langIndex = 8;
             break;
         case WritePadAPI.LanguageType.fi:
             langIndex = 9;
             break;
         case WritePadAPI.LanguageType.sv:
             langIndex = 10;
             break;
         case WritePadAPI.LanguageType.nb:
             langIndex = 11;
             break;
         case WritePadAPI.LanguageType.da:
             langIndex = 12;
             break;
     }
     LanguagesCombo.SelectedIndex = langIndex;
 }