Exemplo n.º 1
0
    public void ContentChanged(Editor editor, string[] blockIds)
    {
        String ids = "";
        String comma = "";
        int    i, N;

        for (i = 0, N = blockIds.Length; i < N; i++)
        {
            ids  += comma;
            ids  += blockIds[i];
            comma = ", ";
        }
        logger.logDebug("Content Changed: " + ids);
    }
Exemplo n.º 2
0
        public bool Convert()
        {
            var cmd_file = _path + "/cmd.json";

            cmd_file = cmd_file.Replace('/', '\\');
            FileInfo cmd_f = null;

            bool cmd_exists = false;

            try
            {
                cmd_f      = new FileInfo(cmd_file);
                cmd_exists = cmd_f.Exists;
            }
            catch (Exception e)
            {
                _logger.logDebug(e.Message);
            }

            if (cmd_exists)
            {
                bool read = false;
                Cmd  c    = null;
                while (!read)
                {
                    try
                    {
                        FileStream f_in = cmd_f.OpenRead();
                        DataContractJsonSerializer ser = new DataContractJsonSerializer(typeof(Cmd));
                        c = (Cmd)ser.ReadObject(f_in);
                        f_in.Dispose();
                        read = true;
                    }
                    catch (Exception e)
                    {
                        _logger.logDebug(e.Message);
                    }
                }

                if (c.cmd == "quit")
                {
                    _logger.logInfo("Quit received, closing Recognizer");
                    cmd_f.Delete();
                    return(true);    // Quit
                }
                else if (c.cmd == "recognize")
                {
                    _logger.logInfo("Recognition job received");
                    _editor.Clear();

                    var progress_file = c.prg_file;
                    var abort_file    = c.abort_file;

                    var      input_file = c.input_file;
                    FileInfo in_f       = new FileInfo(input_file);
                    _logger.logInfo("Size of job: " + in_f.Length / 1024 + " Kb");

                    DataContractJsonSerializer rec_ser = new DataContractJsonSerializer(typeof(StrokesInput));
                    FileStream   in_f_s = in_f.OpenRead();
                    StrokesInput si     = (StrokesInput)rec_ser.ReadObject(in_f_s);
                    in_f_s.Dispose();

                    String lng = si.lang;
                    if (lng != _lang)
                    {
                        _logger.logInfo("Resetting language to: " + lng);
                        setLanguage(lng);
                    }

                    _logger.logDebug("Assembling Pointer Events...");
                    List <PointerEvent> events = new List <PointerEvent>();

                    int i, N;
                    for (i = 0, N = si.strokes.Length; i < N; i++)
                    {
                        var stroke = si.strokes[i];
                        int j, M;
                        for (j = 0, M = stroke.x.Length; j < M; j++)
                        {
                            float x = stroke.x[j] / (300.0f / _dpiX);
                            float y = stroke.y[j] / (300.0f / _dpiY);

                            PointerEvent evt;

                            if (j == 0 && j == M - 1)
                            {
                                evt = new PointerEvent().Down(x, y);
                                events.Add(evt);
                                evt = new PointerEvent().Up(x, y);
                            }
                            else if (j == 0)
                            {
                                evt = new PointerEvent().Down(x, y);
                            }
                            else if (j == M - 1)
                            {
                                evt = new PointerEvent().Up(x, y);
                            }
                            else
                            {
                                evt = new PointerEvent().Move(x, y);
                            }

                            events.Add(evt);
                        }
                    }

                    _logger.logDebug("Feeding Pointer Events to Editor");
                    _editor.PointerEvents(events.ToArray(), false);

                    _logger.logDebug("Waiting for recognizer to finish");
                    DateTime tm_start = DateTime.Now;
                    int      s        = -1;
                    bool     cancel   = false;
                    while (!_editor.IsIdle() && !cancel && !_listener.inError())
                    {
                        App.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate { }));
                        System.Threading.Thread.Sleep(20);
                        double seconds = DateTime.Now.Subtract(tm_start).TotalSeconds;
                        int    ss      = (int)(seconds * 2);
                        if (ss != s)
                        {
                            String lang = _lang.Substring(0, 2);
                            String info;
                            if (lang == "nl")
                            {
                                info = String.Format("Handschrift herkenning bezig: {0,0:F1} seconden...", seconds);
                            }
                            else
                            {
                                info = String.Format("Recognition process busy: {0,0:F1} seconds...", seconds);
                            }

                            _logger.logInfo(info);
                            s = ss;

                            FileInfo f_a = new FileInfo(abort_file);
                            if (f_a.Exists)
                            {
                                _logger.logDebug("Abort file " + abort_file + " exists");
                                cancel = true;
                                f_a.Delete();
                            }
                            else
                            {
                                FileInfo ff = new FileInfo(progress_file);
                                if (!ff.Exists)
                                {
                                    try
                                    {
                                        FileInfo   f    = new FileInfo(progress_file + "_ff");
                                        FileStream fout = f.OpenWrite();
                                        Progress   p    = new Progress();
                                        p.info = String.Format(info);
                                        DataContractJsonSerializer f_ser = new DataContractJsonSerializer(typeof(Progress));
                                        f_ser.WriteObject(fout, p);
                                        fout.Dispose();
                                        f.MoveTo(progress_file);
                                    } catch (Exception e)
                                    {
                                        _logger.logError(e.Message);
                                    }
                                }
                            }
                        }
                        _logger.logRemaining();
                    }
                    //_editor.WaitForIdle();

                    if (cancel)
                    {
                        _logger.logInfo("Operation Cancelled");
                    }
                    else
                    {
                        _logger.logDebug("Getting result...");
                        String result = _editor.Export_(_editor.GetRootBlock(), MimeType.TEXT);

                        if (_logger.debug())
                        {
                            String rr = result.Replace("\n", "\\n");
                            if (rr.Length < 40)
                            {
                                _logger.logDebug("Result: " + rr);
                            }
                            else
                            {
                                _logger.logDebug("Result: " + rr.Substring(0, 40) + "...");
                            }
                        }

                        in_f.Delete();

                        _logger.logDebug("Writing back result to " + c.output_file);
                        var        result_file = c.output_file + "_rr";
                        var        result_ren  = c.output_file;
                        FileInfo   result_f    = new FileInfo(result_file);
                        FileStream f_out       = result_f.OpenWrite();
                        Result     r           = new Result();

                        if (_listener.inError())
                        {
                            r.type   = "error";
                            r.result = _listener.lastError();
                            _listener.resetError();
                        }
                        else
                        {
                            r.type   = "text";
                            r.result = result;
                        }

                        DataContractJsonSerializer res_ser = new DataContractJsonSerializer(typeof(Result));
                        res_ser.WriteObject(f_out, r);
                        f_out.Dispose();
                        result_f.MoveTo(result_ren);

                        _logger.logInfo("done.");
                    }

                    _logger.logRemaining();
                }

                cmd_f.Delete();
            }

            return(false); // Don't quit
        }