/// <summary>
        /// Writes the gioven scores to the configured outputs.
        /// </summary>
        /// <param name="results">A set of file matching scores</param>
        public void WriteOutput()
        {
            //TODO: must be selected by settings
            TextOutput t = new TextOutput(this.Settings);

            t.Write(this.MatchingResults);
        }
 public void Append(ScriptOutput x)
 {
     DataTables.AddRange(x.DataTables);
     x.DataTables.Clear();
     TextOutput.AddRange(x.TextOutput);
     x.TextOutput.Clear();
 }
示例#3
0
 private void Log(string text)
 {
     Dispatcher.BeginInvoke(
         (Action)(
             () => TextOutput.AppendText(text + Environment.NewLine))
         );
 }
示例#4
0
        public void ReceiveLine(string text)
        {
            var formatted = new FormattedMessage(1);

            formatted.AddMarkup(text);
            TextOutput.AddMessage(formatted);
        }
示例#5
0
        public static void ShowScreenMenu()
        {
            TextOutput textOutput = new TextOutput();

            textOutput.DataOutput("\nSelect Screen type (specify index): \n 1 - Monochrome screen" +
                                  "\n 2 - Colorful screen");
        }
示例#6
0
        public static void ShowHeadsetMenu()
        {
            TextOutput textOutput = new TextOutput();

            textOutput.DataOutput("Select speaker component (specify index): \n 1 - " +
                                  "IphoneHeadset \n 2 - SamsungHeadset \n 3 - PhoneSpeaker");
        }
示例#7
0
 public GenDataTransfer(GenerateType type, int quantity, TitleOptions options, TextOutput output)
 {
     Type        = type;
     Quantity    = quantity;
     TitleOption = options;
     Output      = output;
 }
示例#8
0
        private IProducerConsumer CreateChain(ConverterInput input, ConverterOutput output, IProgressMonitor progressMonitor)
        {
            this.locked = true;
            HtmlParser htmlParser = new HtmlParser(input, this.detectEncodingFromMetaTag, false, this.testMaxTokenRuns, this.testMaxHtmlTagAttributes, this.testBoundaryConditions);

            if (this.mode == TextExtractionMode.ExtractText)
            {
                return(new HtmlTextExtractionConverter(htmlParser, output, this.testTraceStream, this.testTraceShowTokenNum, this.testTraceStopOnTokenNum));
            }
            Injection injection = null;

            if (this.injectHead != null || this.injectTail != null)
            {
                injection = ((this.injectionFormat == HeaderFooterFormat.Html) ? new HtmlInjection(this.injectHead, this.injectTail, this.injectionFormat, false, null, this.testBoundaryConditions, null, progressMonitor) : new TextInjection(this.injectHead, this.injectTail, this.testBoundaryConditions, null, progressMonitor));
            }
            IHtmlParser parser = htmlParser;

            if (this.normalizeInputHtml)
            {
                if (this.injectionFormat == HeaderFooterFormat.Html)
                {
                    parser    = new HtmlNormalizingParser(htmlParser, (HtmlInjection)injection, false, this.testMaxHtmlNormalizerNesting, this.testBoundaryConditions, this.testNormalizerTraceStream, this.testNormalizerTraceShowTokenNum, this.testNormalizerTraceStopOnTokenNum);
                    injection = null;
                }
                else
                {
                    parser = new HtmlNormalizingParser(htmlParser, null, false, this.testMaxHtmlNormalizerNesting, this.testBoundaryConditions, this.testNormalizerTraceStream, this.testNormalizerTraceShowTokenNum, this.testNormalizerTraceStopOnTokenNum);
                }
            }
            TextOutput output2 = new TextOutput(output, this.wrapFlowed, this.wrapFlowed, 72, 78, this.imageRenderingCallback, this.fallbacks, this.htmlEscape, this.testPreserveTrailingSpaces, this.testFormatTraceStream);

            return(new HtmlToTextConverter(parser, output2, injection, false, false, this.testTreatNbspAsBreakable, this.testTraceStream, this.testTraceShowTokenNum, this.testTraceStopOnTokenNum, this.ShouldUseNarrowGapForPTagHtmlToTextConversion, this.OutputAnchorLinks, this.OutputImageLinks));
        }
示例#9
0
        public HtmlToTextConverter(
            IHtmlParser parser,
            TextOutput output,
            Injection injection,
            bool convertFragment,
            bool preformattedText,
            bool testTreatNbspAsBreakable,
            bool traceShowTokenNum,
            int traceStopOnTokenNum)
        {
            this.normalizedInput = (parser is HtmlNormalizingParser);

            this.treatNbspAsBreakable = testTreatNbspAsBreakable;

            this.convertFragment = convertFragment;

            this.parser = parser;
            this.parser.SetRestartConsumer(this);

            if (!convertFragment)
            {
                this.injection = injection;

                if (this.injection != null && this.injection.HaveHead)
                {
                    this.injection.Inject(true, this.output);
                }
            }
            else
            {
                this.insidePre = preformattedText;
            }
        }
示例#10
0
        private bool ValidateParamsAfterLook(CommandResult lookCommandResult)
        {
            TextOutput validationResultMessage = new TextOutput(Verbosity.Critical, "$\n Validating");

            lookCommandResult.Output.Add(validationResultMessage);

            bool validationSuccess = true;

            Node node;

            if (Promise.Network.Nodes.TryGetValue(_nodeName, out node))
            {
                _node = node;

                var compatLevel = Promise.SoftwareLib.CheckExploitCompatibility(_softwareCode, _node);
                if (compatLevel != SoftwareLib.SoftwareCheckResult.Valid)
                {
                    if (compatLevel == SoftwareLib.SoftwareCheckResult.Unknown)
                    {
                        lookCommandResult.Output.Add(new TextOutput(Verbosity.Critical, $"It's UNKNOWN if exploit {_softwareCode} will surpass node {_nodeName} defence! (Math is ok, but not enough info on node or software to validate fitness)"));
                        validationSuccess = false;
                    }
                    else
                    {
                        lookCommandResult.Output.Add(new TextOutput(Verbosity.Critical, $"*****WARNING*****{_softwareCode} WONT surpass node {_nodeName} defence!"));
                        validationSuccess = false;
                    }
                }
            }
            else
            {
                lookCommandResult.Output.Add(new TextOutput(Verbosity.Critical, $"Node {_nodeName} is not known to exist in network. "));
                validationSuccess = false;
            }


            Software exploit;

            if (Promise.SoftwareLib.Exloits.TryGetValue(_softwareCode, out exploit))
            {
                _software = exploit;
            }
            else
            {
                lookCommandResult.Output.Add(new TextOutput(Verbosity.Critical, $"Exploit #{_softwareCode} is NOT known (not in local lib)! Better use 'info #{_softwareCode}' before hacking with it"));
                validationSuccess = false;
            }

            if (validationSuccess)
            {
                validationResultMessage.Text = "\nHack validation revealed issues:";
                lookCommandResult.Output.Add(new TextOutput(Verbosity.Critical, $"\n\n Do you want to procced anyway ? (y/n) "));
            }
            else
            {
                validationResultMessage.Text = "\nValidation - OK.";
            }

            return(validationSuccess);
        }
示例#11
0
        public void WriteWithNullThrows()
        {
            var sut = new TextOutput(new StringWriter());

            Assert.Throws <ArgumentNullException>(() =>
                                                  sut.Write(null));
        }
        public void ConstructSystem()
        {
            RngStream.SetPackageSeed(this.parameter.Seed);
            this.layoutManager.ReadLayout(new FileStream(this.parameter.LayoutPath, FileMode.Open));
            this.jobManager.ReadJobMix(new FileStream(this.parameter.JobPath, FileMode.Open));
            this.ConnectJobTypesAndOperations();
            this.ConnectComponentTypesAndOperations();
            this.ConnectStationsAndOperations();
            this.ConnectOperationsAndProcessors();
            this.ConnectNodesAndBinMagazines();
            this.ConnectInventoryPoliciesAndBinMagazines();
            ConfigurationParameter configuration = this.parameter.Configuration;

            configuration.InitializeStreams();
            if (configuration.JobArrivalType != JobArrivalType.HOPBased)
            {
                this.ChangeBinLoading(new FileStream(configuration.ToolPath, FileMode.Open));
            }
            this.algorithms.InitializeAlgorithms(this);

            if (configuration.InputState != null)
            {
                configuration.InputState.PreOperation();
                this.ReadSimulationManagerState(configuration.InputState.GetStream(), configuration.FromExecutionToPlanning);
                configuration.InputState.PostOperation();
            }

            TextOutput text = new TextOutput("JobMix.txt");

            WriteJobMix(text);
            TextOutput text2 = new TextOutput("Layout.txt");

            this.LayoutManager.WriteLayout(text2);
        }
 public void WriteJobMix(TextOutput text)
 {
     text.WriteToText(this.ToString());
     text.WriteToText(this.jobManager.ToString());
     foreach (JobType jt in this.jobManager.JobMix.JobTypes)
     {
         text.WriteToText("   " + jt.ToString());
         foreach (JobRoute jr in jt.Alternates)
         {
             text.WriteToText("     " + jr.ToString());
             foreach (Operation op in jr.Operations)
             {
                 text.WriteToText("        " + op.ToString());
                 text.WriteToText("        " + op.Station.ToString());
                 if (op.Processor != null)
                 {
                     text.WriteToText("        " + op.Processor.ToString());
                 }
                 text.WriteToText("        " + op.OperationTime.ToString());
                 foreach (ComponentType ct in op.ComponentUsages.Keys)
                 {
                     text.WriteToText("          " + ct.ToString());
                     text.WriteToText("          " + op.ComponentUsages[ct].ToString());
                 }
             }
         }
     }
     text.CloseFile();
 }
    private IEnumerator StartGame_impl()
    {
        FadingManager.GetInstance().FadeToBlack(2.0f);
        yield return(new WaitForSeconds(2.0f));

        mainMenuCameraHolder.SetActive(false);
        controller.gameObject.SetActive(true);
        controller.SetCursorLock(true);

        Dispatcher.GetInstance().SendEvent(new EBEvent()
        {
            type = EBEventType.GameStarted
        });

        TextOutput textOutput = TextOutput.GetInstance();

        textOutput.ShowText(TextManager.GetIntroText(), TextOutput.TextAreaSize.Big);
        yield return(new WaitWhile(() => textOutput.IsActive()));

        FadingManager.GetInstance().FadeToNormal(3.0f);
        yield return(new WaitForSeconds(1.0f));

        ResumeGame();
        isPauseAllowed = true;
    }
 public HtmlToTextConverter(IHtmlParser parser, TextOutput output, Injection injection, bool convertFragment, bool preformattedText, bool testTreatNbspAsBreakable, Stream traceStream, bool traceShowTokenNum, int traceStopOnTokenNum, bool shouldUseNarrowGapForPTagHtmlToTextConversion, bool outputAnchorLinks, bool outputImageLinks)
 {
     this.normalizedInput      = (parser is HtmlNormalizingParser);
     this.treatNbspAsBreakable = testTreatNbspAsBreakable;
     this.convertFragment      = convertFragment;
     this.output = output;
     this.parser = parser;
     this.parser.SetRestartConsumer(this);
     this.injection = injection;
     if (!convertFragment)
     {
         this.output.OpenDocument();
         if (this.injection != null && this.injection.HaveHead)
         {
             this.injection.Inject(true, this.output);
         }
     }
     else
     {
         this.insidePre = preformattedText;
     }
     this.shouldUseNarrowGapForPTagHtmlToTextConversion = shouldUseNarrowGapForPTagHtmlToTextConversion;
     this.outputAnchorLinks = outputImageLinks;
     this.outputImageLinks  = outputImageLinks;
 }
示例#16
0
        private void button1_Click(object sender, EventArgs e)
        {
            //1st group of radio-buttons (Speaker settings):
            VoiceOutput VoiceOutput = new VoiceOutput();
            ISpeaker    Speaker     = null;

            if (IPhoneHeadset.Checked)
            {
                Speaker = new IphoneHeadset(VoiceOutput, "IphoneX", true);
            }
            else if (SamsungHeadset.Checked)
            {
                Speaker = new SamsungHeadset(VoiceOutput, "SamsungA", true);
            }
            else if (PhoneSpeaker.Checked)
            {
                Speaker = new PhoneSpeaker(VoiceOutput, "model-ABC");
            }
            else
            {
            };

            //there is an option not to select radio button without assertion error
            if (Speaker != null)
            {
                VoiceOutput.DataOutput("Speaker selected");
                Speaker.Play(null);
            }
            else
            {
                VoiceOutput.DataOutput("Speaker is not selected");
            }

            //2nd group of radio-buttons (Screen settings)
            TextOutput TextOutput = new TextOutput();
            ScreenBase Screen     = null;
            string     screenType = null;

            if (MonochromeScreen.Checked)
            {
                Screen     = new MonochromeScreen(TextOutput, 2.0, 200);
                screenType = nameof(MonochromeScreen);
            }
            else if (ColorfulScreen.Checked)
            {
                Screen     = new ColorfulScreen(TextOutput, 7.0, 500, true);
                screenType = nameof(ColorfulScreen);
            }

            //there is an option not to select radio button without assertion error
            if (Screen != null)
            {
                textBox1.Text = "Set screen to Mobile... \n Selected screen is " + screenType;
            }
            else
            {
                textBox1.Text = "Screen is not selected";
            }
        }
示例#17
0
        public void WriteCallsInnerOutput()
        {
            var writer = new StringWriter();
            var sut    = new TextOutput(writer);

            sut.Write("line");
            Assert.Equal("line", writer.ToString());
        }
示例#18
0
 private void WriteToLog(string line)
 {
     Dispatcher.Invoke(() =>
     {
         TextOutput.Text += line + "\n";
         TextOutput.ScrollToLine(TextOutput.LineCount - 1);
     });
 }
示例#19
0
 // Token: 0x06001732 RID: 5938 RVA: 0x000B4587 File Offset: 0x000B2787
 public RtfToTextConverter(RtfParser parser, TextOutput output, Injection injection, bool treatNbspAsBreakable, Stream traceStream, bool traceShowTokenNum, int traceStopOnTokenNum)
 {
     this.treatNbspAsBreakable = treatNbspAsBreakable;
     this.output    = output;
     this.parser    = parser;
     this.injection = injection;
     this.state     = new RtfToTextConverter.RtfState(128);
 }
示例#20
0
    void Start()
    {
        textOutput = GameObject.Find ("TextFiled").GetComponent<TextOutput> ();

        acceleration_raw = Input.acceleration;
        //		textOutput.addData ("raw x", acceleration_raw.x.ToString ());
        //		textOutput.addData ("raw y", acceleration_raw.y.ToString ());
        //		textOutput.addData ("raw z", acceleration_raw.z.ToString ());
    }
示例#21
0
        protected CommandResult CreateOutput(TextOutput output, CommandState state)
        {
            var result = new CommandResult();

            result.Output.Add(output);
            result.State = state;

            return(result);
        }
示例#22
0
        public MainWindow()
        {
            mainViewModel = new MainViewModel();

            InitializeComponent();
            output           = new TextOutput();
            this.DataContext = mainViewModel;

            this.txt_Output.ScrollToEnd();
        }
示例#23
0
        public void Clear()
        {
            if (_disposed)
            {
                throw new ObjectDisposedException(this.GetType().ToString());
            }

            TextOutput.Clear();
            Rasterizer.Clear();
        }
示例#24
0
        /// <summary>
        /// Prints text using the specified color and layout options.
        /// </summary>
        /// <param name="text">The System.String to print.</param>
        /// <param name="font">The System.Drawing.Font that will be used to print text.</param>
        /// <param name="color">The System.Drawing.Color that will be used to print text.</param>
        /// <param name="rect">The System.Drawing.Rectangle that defines the bounds for text layout.</param>
        /// <param name="options">The OpenTK.Graphics.TextPrinterOptions that will be used to print text.</param>
        /// <param name="alignment">The OpenTK.Graphics.TextAlignment that will be used to print text.</param>
        /// <param name="direction">The OpenTK.Graphics.TextDirection that will be used to print text.</param>
        public void Render(string text, Font font, Color color, RectangleF rect, TextPrinterOptions options, TextAlignment alignment, TextDirection direction)
        {
            Contract.Requires(!_disposed, new ObjectDisposedException(GetType().ToString()).Message);
            Contract.Requires(!string.IsNullOrEmpty(text));
            Contract.Requires(font != null);
            Contract.Requires((rect.Width >= 0) && (rect.Height >= 0));

            var block = new TextBlock(text, font, rect, options, alignment, direction);

            TextOutput.Render(ref block, color, Rasterizer);
        }
示例#25
0
 static string UnFormat(string theInput) {
     var result = new TextOutput(IsStandard);
     var scan = new Scanner(theInput);
     while (true) {
         scan.FindTokenPair("<", ">", ourValidTagFilter);
         result.Append(scan.Leader);
         if (scan.Body.IsEmpty) break;
         if (IsStandard) result.AppendTag(GetTag(scan.Body));
     }
     return result.ToString();
 }
示例#26
0
 public override void Inject(bool head, TextOutput output)
 {
     if (head)
     {
         if (this.injectHead != null && !this.headInjected)
         {
             if (this.fragmentToTextConverter == null)
             {
                 TextParser parser = new TextParser(new ConverterBufferInput(this.injectHead, this.progressMonitor), false, false, 64, this.testBoundaryConditions);
                 this.fragmentToTextConverter = new TextToTextConverter(parser, output, null, true, false, this.traceStream, true, 0);
             }
             else
             {
                 this.fragmentToTextConverter.Initialize(this.injectHead);
             }
             while (!this.fragmentToTextConverter.Flush())
             {
             }
             this.headInjected = true;
             if (this.injectTail == null)
             {
                 ((IDisposable)this.fragmentToTextConverter).Dispose();
                 this.fragmentToTextConverter = null;
                 return;
             }
         }
     }
     else
     {
         if (this.injectHead != null && !this.headInjected)
         {
             this.headInjected = true;
         }
         if (this.injectTail != null && !this.tailInjected)
         {
             if (this.fragmentToTextConverter == null)
             {
                 TextParser parser = new TextParser(new ConverterBufferInput(this.injectTail, this.progressMonitor), false, false, 64, this.testBoundaryConditions);
                 this.fragmentToTextConverter = new TextToTextConverter(parser, output, null, true, false, this.traceStream, true, 0);
             }
             else
             {
                 this.fragmentToTextConverter.Initialize(this.injectTail);
             }
             while (!this.fragmentToTextConverter.Flush())
             {
             }
             ((IDisposable)this.fragmentToTextConverter).Dispose();
             this.fragmentToTextConverter = null;
             this.tailInjected            = true;
         }
     }
 }
 // Token: 0x06001398 RID: 5016 RVA: 0x00089D50 File Offset: 0x00087F50
 public EnrichedToTextConverter(EnrichedParser parser, TextOutput output, Injection injection, bool testTreatNbspAsBreakable, Stream traceStream, bool traceShowTokenNum, int traceStopOnTokenNum)
 {
     this.treatNbspAsBreakable = testTreatNbspAsBreakable;
     this.output    = output;
     this.parser    = parser;
     this.injection = injection;
     this.output.OpenDocument();
     if (this.injection != null && this.injection.HaveHead)
     {
         this.injection.Inject(true, this.output);
     }
 }
示例#28
0
 private string UnFormat(string theInput)
 {
     TextOutput result = new TextOutput();
     Scanner scan = new Scanner(theInput);
     while (true) {
         scan.FindTokenPair("<", ">", ourValidTagFilter);
         result.Append(scan.Leader);
         if (scan.Body.Length == 0) break;
         if (FitVersionFixture.IsStandard) result.AppendTag(GetTag(scan.Body));
     }
     return result.ToString();
 }
        public void ReceiveLine(SharedBwoinkSystem.BwoinkTextMessage message)
        {
            if (!Visible)
            {
                Unread++;
            }

            var formatted = new FormattedMessage(1);

            formatted.AddMarkup($"[color=gray]{message.SentAt.ToShortTimeString()}[/color] {message.Text}");
            TextOutput.AddMessage(formatted);
            LastMessage = message.SentAt;
        }
示例#30
0
        public void PrintNumbersWritesToNumberResultWriter(int[] numbers)
        {
            var expected = string.Join(string.Empty, numbers);
            var output   = new TextOutput(new StringWriter());
            var sut      = new Round(numbers, new StubOutput())
            {
                NumberResultWriter = output
            };

            sut.ReciteNumbers();

            Assert.Equal(expected, output.ToString());
        }
        private void Button_Click(object sender, RoutedEventArgs e)
        {
            TextOutput.Clear();
            Task.Run(() =>
            {
                Process currentProcess            = Process.GetCurrentProcess();
                AutomationElement chromiumElement =
                    GetChromiumElement(currentProcess);
                if (chromiumElement != null)
                {
                    Log("-- Element Properties --");
                    AutomationProperty[] properties =
                        chromiumElement.GetSupportedProperties();
                    foreach (AutomationProperty prop in properties)
                    {
                        Log("ProgrammaticName: " + prop.ProgrammaticName);
                        Log("\tProperty Name: " + Automation.PropertyName(prop));
                        var currentPropertyValue =
                            chromiumElement.GetCurrentPropertyValue(prop);
                        Log("\tProperty Value: " + currentPropertyValue);
                    }

                    Log("-- Element Patterns --");
                    AutomationPattern[] patterns =
                        chromiumElement.GetSupportedPatterns();
                    foreach (AutomationPattern pattern in patterns)
                    {
                        Log("ProgrammaticName: " + pattern.ProgrammaticName);
                        Log("\tPattern Name: " + Automation.PatternName(pattern));
                        object currentPattern = chromiumElement.GetCurrentPattern(pattern);
                        Log("\tPattern Value: " + currentPattern);
                        if (currentPattern is ValuePattern)
                        {
                            ValuePattern valuePattern = currentPattern as ValuePattern;
                            string value = valuePattern.Current.Value;
                            Log("\tValuePattern Value: " + value);
                        }
                    }

                    var children = chromiumElement.FindAll(TreeScope.Descendants,
                                                           Condition.TrueCondition);
                    Log("-- Element Children --");
                    Log("Children count: " + children.Count);
                    Log("-- End --");
                }
                else
                {
                    Log("-- Chromium automation element not found --");
                }
            });
        }
示例#32
0
    private IEnumerator EndingAnimation()
    {
        controller.enabled = false;
        monster.GetComponent <MonsterBehaviour>().SetPatrolEnabled(false);
        FadingManager.GetInstance().FadeToBlack(5);
        yield return(FadeOutMonsterSounds(5));

        TextOutput textOutput = TextOutput.GetInstance();

        textOutput.ShowText(TextManager.GetBadEndingText(), TextOutput.TextAreaSize.Small);
        yield return(new WaitWhile(() => textOutput.IsActive()));

        UnityEngine.SceneManagement.SceneManager.LoadScene("Main");
    }
示例#33
0
        private IProducerConsumer CreateChain(ConverterInput input, ConverterOutput output, IProgressMonitor progressMonitor)
        {
            this.locked = true;
            Injection      injection = null;
            EnrichedParser parser    = new EnrichedParser(input, this.testMaxTokenRuns, this.testBoundaryConditions);

            if (this.injectHead != null || this.injectTail != null)
            {
                injection = ((this.injectionFormat == HeaderFooterFormat.Html) ? new HtmlInjection(this.injectHead, this.injectTail, this.injectionFormat, false, null, this.testBoundaryConditions, null, progressMonitor) : new TextInjection(this.injectHead, this.injectTail, this.testBoundaryConditions, null, progressMonitor));
            }
            TextOutput output2 = new TextOutput(output, this.wrapFlowed, this.wrapFlowed, 72, 78, null, this.fallbacks, this.htmlEscape, this.testPreserveTrailingSpaces, this.testFormatTraceStream);

            return(new EnrichedToTextConverter(parser, output2, injection, this.testTreatNbspAsBreakable, this.testTraceStream, this.testTraceShowTokenNum, this.testTraceStopOnTokenNum));
        }
示例#34
0
 // Use this for initialization
 void Start()
 {
     textOutput = GameObject.Find ("TextFiled").GetComponent<TextOutput> ();
 }
示例#35
0
		protected override void OnLoad(EventArgs e)
		{
			base.OnLoad(e);

			InitialiseKeyDown ();

			// setup settings, load textures, sounds
			this.VSync = VSyncMode.On;
			this.WindowBorder = WindowBorder.Fixed;

			var screenMatrix = Matrix4.CreateOrthographicOffCenter(ClientRectangle.X, Width, Height, ClientRectangle.Y, -1, 1);

			var singleDrawCommand = new DrawCommandList ();

			var fontFileLoader = new NxFontFileLoader ();

			var heading2Config = new NxFontLoaderConfiguration (singleDrawCommand, screenMatrix, true);
			heading2 = fontFileLoader.Load("woodenFont.qfont", Height, 1.0f, heading2Config);

			var builderConfig = new NxFontBuilderConfiguration(singleDrawCommand, screenMatrix, true);
			builderConfig.BlurRadius = 1; //reduce blur radius because font is very small
			builderConfig.TextGenerationRenderHint = TextGenerationRenderHint.ClearTypeGridFit; //best render hint for this font
			mainText = new NxFont("Fonts/times.ttf", 14,  Height, builderConfig);

			var heading1Config = new NxFontBuilderConfiguration(singleDrawCommand, screenMatrix, true);
			heading1Config.Transform = screenMatrix;
			heading1 = new NxFont("Fonts/HappySans.ttf", 72, Height, heading1Config);

			var buildConfig = new NxFontBuilderConfiguration (singleDrawCommand, screenMatrix, true);
			controlsText = new NxFont("Fonts/HappySans.ttf", 32,  Height, buildConfig);

			var noShadowConfig = new NxFontBuilderConfiguration (singleDrawCommand, screenMatrix);
			codeText = new NxFont("Fonts/Comfortaa-Regular.ttf", 12,  Height, FontStyle.Regular, noShadowConfig);

			heading1.Options.Colour = new Color4(0.2f, 0.2f, 0.2f, 1.0f);
			mainText.Options.Colour = new Color4(0.1f, 0.1f, 0.1f, 1.0f);
			mainText.Options.DropShadowActive = false;
			codeText.Options.Colour = new Color4(0.0f, 0.0f, 0.4f, 1.0f);

			//					var config2 = new NxFontBuilderConfiguration(screenMatrix);
			//					config2.SuperSampleLevels = 1;
			//   font = new QFont("Fonts/times.ttf", 16,config2);
			//   font.Options.Colour = new Color4(0.1f, 0.1f, 0.1f, 1.0f);
			//   font.Options.CharacterSpacing = 0.1f;

			monoSpaced = new NxFont("Fonts/Anonymous.ttf", 10, Height, noShadowConfig);
			monoSpaced.Options.Colour = new Color4(0.1f, 0.1f, 0.1f, 1.0f);

			Console.WriteLine(" Monospaced : " + monoSpaced.IsMonospacingActive);

			GL.ClearColor(0.0f, 0.0f, 0.0f, 0.0f);
			GL.Disable(EnableCap.DepthTest);

			mOrthographicMatrix = Matrix4.CreateOrthographicOffCenter (0f, ClientRectangle.Width, ClientRectangle.Height, 0f, -1.0f, 1f);

			GenerateRightArrow ();
			var rightArrowCommands = singleDrawCommand.GetCommands ();
			singleDrawCommand.ClearCommandsOnly ();

			GenerateLeftArrow ();
			var leftArrowCommands = singleDrawCommand.GetCommands ();
			singleDrawCommand.ClearCommandsOnly ();


			var pageCommands = new List<DrawElementsIndirectCommand[]> ();
			for (int i = FIRST_PAGE; i < MAX_PAGES; ++i)
			{
				currentDemoPage = i;
				GenerateText ();
				pageCommands.Add (singleDrawCommand.GetCommands ());
				singleDrawCommand.ClearCommandsOnly ();
			}
			currentDemoPage = FIRST_PAGE;

			mSharedVertexBuffer = singleDrawCommand.AsStaticText ();
			var bufferArray = singleDrawCommand.Blocks.ToArray ();
			mConstantBuffer = new SentanceBlockStorageBuffer (bufferArray, BufferUsageHint.StaticDraw);


			screenPages = new TextOutput[MAX_PAGES];
			for (int i = 0; i < MAX_PAGES; ++i)
			{
				screenPages[i] = new TextOutput (mSharedVertexBuffer, pageCommands[i], mConstantBuffer); 
			}

			leftArrow = new TextOutput (mSharedVertexBuffer, leftArrowCommands, mConstantBuffer);
			rightArrow = new TextOutput (mSharedVertexBuffer, rightArrowCommands, mConstantBuffer);



			CheckGLError ();

			InitialiseUnload ();

			using (var vert = File.OpenRead (@"Shaders/BindlessTex.vert"))
			using (var frag = File.OpenRead (@"Shaders/BindlessTex.frag"))				
			{
				var manager = new ShaderManager ();
				programID = manager.CreateFragmentProgram (vert, frag, "");

				GL.UseProgram (programID);
					mSharedVertexBuffer.BindManually (programID);					
				GL.BindVertexArray (0);
				GL.UseProgram (0);
			}
		}
 public TextCommandParser(TextReader @in, TextOutput textOutput)
 {
     _in = @in;
     _textOutput = textOutput;
 }