-/*
- * Copyright (C) 2013 FooProject
- * * This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 3 of the License, or (at your option) any later version.
-
- * This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.
- */
-using System;
-using System.Collections.Generic;
-using System.Linq;
-using System.Text;
-using System.Threading.Tasks;
-using FooEditEngine;
-using Windows.UI.Core;
-using Windows.Foundation;
-using Windows.Graphics.Printing;
-using Windows.Graphics.Printing.OptionDetails;
-
-namespace FooEditEngine.UWP
-{
- /// <summary>
- /// 印刷を行うクラス
- /// </summary>
- public class FooPrintText
- {
- /// <summary>
- /// コンストラクター
- /// </summary>
- public FooPrintText()
- {
- this.PrintStart += (s, e) => { };
- this.PrintComplete += (s, e) => { };
- this.ParseHF = (s, e) => { return e.Original; };
- }
-
- DocumentSource source;
- /// <summary>
- /// ヘッダーやフッターを処理する
- /// </summary>
- public ParseCommandHandler ParseHF;
-
- /// <summary>
- /// ヘッダー
- /// </summary>
- public string Header;
-
- /// <summary>
- /// フッター
- /// </summary>
- public string Fotter;
-
- /// <summary>
- /// 余白
- /// </summary>
- public Padding Padding;
-
- /// <summary>
- /// 印刷が開始したことを表す
- /// </summary>
- public event EventHandler PrintStart;
-
- /// <summary>
- /// 印刷が完了したことを表す
- /// </summary>
- public event EventHandler PrintComplete;
-
- /// <summary>
- /// 印刷する
- /// </summary>
- /// <param name="req">PrintTaskRequestオブジェクト</param>
- /// <param name="title">タイトル</param>
- /// <param name="textbox">印刷対象のテキストボックス</param>
- public void Print(PrintTaskRequest req,string title,FooTextBox textbox)
- {
- IAsyncAction async = textbox.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () =>
- {
- this.PrintStart(this, null);
- source = new DocumentSource(textbox,this.Padding);
- source.ParseHF = ParseHF;
- source.Header = Header;
- source.Fotter = Fotter;
-
- PrintTask task = null;
- task = req.CreatePrintTask(title, (e) =>
- {
- e.SetSource(source);
- });
- task.Completed += async (sender, e) => {
- source.Dispose();
- await textbox.Dispatcher.RunAsync(CoreDispatcherPriority.Normal, () => {
- System.Diagnostics.Debug.WriteLine("finished printing");
- this.PrintComplete(this, null);
- });
- };
- PrintOptionBuilder<DocumentSource> builder = new PrintOptionBuilder<DocumentSource>(source);
- builder.BuildPrintOption(PrintTaskOptionDetails.GetFromPrintTaskOptions(task.Options));
- });
- Task t = WindowsRuntimeSystemExtensions.AsTask(async);
- t.Wait();
- }
- }
-}