OSDN Git Service

メトロ版はもはや使ってる人がいないので削除することにした
[fooeditengine/FooEditEngine.git] / Metro / FooEditEngine / Print / DocumentSource.cs
diff --git a/Metro/FooEditEngine/Print/DocumentSource.cs b/Metro/FooEditEngine/Print/DocumentSource.cs
deleted file mode 100644 (file)
index ad90e81..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * 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 Windows.Graphics.Display;
-using Windows.Graphics.Printing;
-using System.Runtime.InteropServices;
-using Windows.UI;
-using FooEditEngine.Metro;
-
-namespace FooEditEngine
-{
-    /// <summary>
-    /// イベントデータ
-    /// </summary>
-    public sealed class ParseCommandEventArgs
-    {
-        /// <summary>
-        /// 印刷中のページ番号
-        /// </summary>
-        public int PageNumber;
-        /// <summary>
-        /// ページ範囲内で許容されている最大の番号
-        /// </summary>
-        public int MaxPageNumber;
-        /// <summary>
-        /// 処理前の文字列
-        /// </summary>
-        public string Original;
-        /// <summary>
-        /// コンストラクター
-        /// </summary>
-        /// <param name="nowPage">印刷中のページ番号</param>
-        /// <param name="maxPage">印刷すべき最大のページ番号</param>
-        /// <param name="org">処理前の文字列</param>
-        public ParseCommandEventArgs(int nowPage, int maxPage, string org)
-        {
-            this.PageNumber = nowPage;
-            this.MaxPageNumber = maxPage;
-            this.Original = org;
-        }
-    }
-
-    /// <summary>
-    /// コマンド処理用デリゲート
-    /// </summary>
-    /// <param name="sender">送信元のクラス</param>
-    /// <param name="e">イベントデータ</param>
-    /// <returns>処理後の文字列</returns>
-    public delegate string ParseCommandHandler(object sender, ParseCommandEventArgs e);
-
-
-    sealed class PrintableViewFactory
-    {
-        Windows.UI.Color foreground, comment, keyword1, keyword2, literal, url;
-        string fontName;
-        double fontSize;
-        LineBreakMethod lineBreakMethod;
-        int lineBreakCharCount, tabCount;
-        Document document;
-        bool urlMark;
-        IHilighter hilighter;
-        float displayDpi;
-        Padding padding;
-        public PrintableViewFactory(FooTextBox textbox,Padding padding)
-        {
-            this.foreground = textbox.Foreground;
-            this.comment = textbox.Comment;
-            this.keyword1 = textbox.Keyword1;
-            this.keyword2 = textbox.Keyword2;
-            this.literal = textbox.Literal;
-            this.url = textbox.URL;
-            this.fontName = textbox.FontFamily.Source;
-            this.fontSize = textbox.FontSize;
-            this.tabCount = textbox.TabChars;
-            this.document = textbox.Document;
-            this.lineBreakMethod = textbox.LineBreakMethod;
-            this.lineBreakCharCount = textbox.LineBreakCharCount;
-            this.drawLineNumber = textbox.DrawLineNumber;
-            this.urlMark = textbox.MarkURL;
-            this.hilighter = textbox.Hilighter;
-            this.displayDpi = DisplayInformation.GetForCurrentView().LogicalDpi;
-            this.padding = padding;
-            this.EnableHilight = true;
-        }
-        public D2DPrintRender CreateRender(PrintPageDescription pagedesc, IPrintDocumentPackageTarget docPackageTarget)
-        {
-            D2DPrintRender render;
-            Size size = new Size(pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height);
-            render = new D2DPrintRender(this.fontName, this.fontSize, size, Math.Min(pagedesc.DpiX, pagedesc.DpiY), docPackageTarget);
-            render.Foreground = D2DRenderBase.ToColor4(this.foreground);
-            render.Comment = D2DRenderBase.ToColor4(this.comment);
-            render.Keyword1 = D2DRenderBase.ToColor4(this.keyword1);
-            render.Keyword2 = D2DRenderBase.ToColor4(this.keyword2);
-            render.Literal = D2DRenderBase.ToColor4(this.literal);
-            render.Url = D2DRenderBase.ToColor4(this.url);
-            return render;
-        }
-        public D2DPrintPreviewRender CreateRender(PrintPageDescription pagedesc)
-        {
-            D2DPrintPreviewRender render;
-            Size size = new Size(pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height);
-            render = new D2DPrintPreviewRender(this.fontName, this.fontSize, size, this.displayDpi);
-            render.Foreground = D2DRenderBase.ToColor4(this.foreground);
-            render.Comment = D2DRenderBase.ToColor4(this.comment);
-            render.Keyword1 = D2DRenderBase.ToColor4(this.keyword1);
-            render.Keyword2 = D2DRenderBase.ToColor4(this.keyword2);
-            render.Literal = D2DRenderBase.ToColor4(this.literal);
-            render.Url = D2DRenderBase.ToColor4(this.url);
-            return render;
-        }
-        public PrintableView CreateView(PrintPageDescription pagedesc, IPrintableTextRender render, string header, string footer)
-        {
-            Document documentSnap = new Document(this.document);
-            documentSnap.LayoutLines.Render = render;
-            PrintableView view = new PrintableView(documentSnap, render,padding);
-            view.Header = header;
-            view.Footer = footer;
-            view.PageBound = new Rectangle(pagedesc.ImageableRect.X, pagedesc.ImageableRect.Y, pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height);
-            view.Hilighter = this.EnableHilight ? this.hilighter : null;
-            documentSnap.DrawLineNumber = this.drawLineNumber;
-            view.PerfomLayouts();
-
-            return view;
-        }
-
-        public bool drawLineNumber
-        {
-            get;
-            set;
-        }
-
-        public bool EnableHilight
-        {
-            get;
-            set;
-        }
-    }
-
-    sealed class DocumentSource : IPrintDocumentPageSource, IPrintPreviewPageCollection, IPrintDocumentSource,IPrintPreviewSource
-    {
-        IPrintPreviewDxgiPackageTarget dxgiPreviewTarget;
-        bool paginateCalled = false;
-        Size imageRect;
-        PrintableViewFactory factory;
-        D2DPrintPreviewRender previewRender;
-        PrintableView previewView;
-        int maxPreviePageCount;
-
-        public ParseCommandHandler ParseHF;
-        public string Header = string.Empty;
-        public string Fotter = string.Empty;
-
-        public DocumentSource(FooTextBox textbox,Padding padding)
-        {
-            this.factory = new PrintableViewFactory(textbox, padding);
-        }
-
-        internal enum SyntaxHilightApplibility
-        {
-            Apply,
-            NoApply,
-        }
-
-        [DisplayPrintOptionResourceID("SyntaxHilight")]
-        internal SyntaxHilightApplibility EnableHilight
-        {
-            get
-            {
-                return this.factory.EnableHilight ? SyntaxHilightApplibility.Apply : SyntaxHilightApplibility.NoApply;
-            }
-            set
-            {
-                this.factory.EnableHilight = value == SyntaxHilightApplibility.Apply;
-            }
-        }
-
-        internal enum LineNumberVisiblity
-        {
-            Visible,
-            Hidden
-        }
-
-        [DisplayPrintOptionResourceID("ShowLineNumber")]
-        internal LineNumberVisiblity ShowLineNumber
-        {
-            get
-            {
-                return this.factory.drawLineNumber ? LineNumberVisiblity.Visible : LineNumberVisiblity.Hidden;
-            }
-            set
-            {
-                this.factory.drawLineNumber = value == LineNumberVisiblity.Visible;
-            }
-        }
-
-        public void GetPreviewPageCollection(IPrintDocumentPackageTarget docPackageTarget, out IPrintPreviewPageCollection docPageCollection)
-        {
-            Guid guid = new Guid(PreviewPackageIds.IID_PREVIEWPACKAGETARGET_DXGI);
-            IntPtr target;
-            docPackageTarget.GetPackageTarget(guid, guid, out target);
-            this.dxgiPreviewTarget = (IPrintPreviewDxgiPackageTarget)Marshal.GetObjectForIUnknown(target);
-            docPageCollection = (IPrintPreviewPageCollection)this;
-        }
-
-        public void MakeDocument(object printTaskOptions, IPrintDocumentPackageTarget docPackageTarget)
-        {
-            PrintTaskOptions options = (PrintTaskOptions)printTaskOptions;
-            PrintPageDescription pagedesc = options.GetPageDescription(1);
-
-            D2DPrintRender render = this.factory.CreateRender(pagedesc, docPackageTarget);
-            PrintableView view = this.factory.CreateView(pagedesc, render, this.Header, this.Fotter);
-
-            bool result = false;
-            int currentPage = 0;
-
-            while (!result)
-            {
-                if(!string.IsNullOrEmpty(this.Header))
-                    view.Header = this.ParseHF(this, new ParseCommandEventArgs(currentPage, this.maxPreviePageCount, this.Header));
-                if (!string.IsNullOrEmpty(this.Fotter))
-                    view.Footer = this.ParseHF(this, new ParseCommandEventArgs(currentPage, this.maxPreviePageCount, this.Fotter));
-
-                render.DrawContent(view);
-
-                result = view.TryPageDown();
-                currentPage++;
-            }
-
-            render.Dispose();
-            view.Dispose();
-        }
-
-        public void Paginate(uint currentJobPage, object printTaskOptions)
-        {
-            PrintTaskOptions options = (PrintTaskOptions)printTaskOptions;
-            PrintPageDescription pagedesc = options.GetPageDescription(currentJobPage);
-
-            this.imageRect = new Size(pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height);
-
-            this.previewRender = this.factory.CreateRender(pagedesc);
-            this.previewView = this.factory.CreateView(pagedesc, this.previewRender, this.Header, this.Fotter);
-
-            int maxPage = 1;
-            while (!this.previewView.TryPageDown())
-                maxPage++;
-
-            this.dxgiPreviewTarget.SetJobPageCount(PageCountType.FinalPageCount, (uint)maxPage);
-
-            this.dxgiPreviewTarget.InvalidatePreview();
-
-            this.maxPreviePageCount = maxPage;
-
-            this.paginateCalled = true;
-        }
-
-        public void InvalidatePreview()
-        {
-            this.dxgiPreviewTarget.InvalidatePreview();
-        }
-
-        public void MakePage(uint desiredJobPage, float width, float height)
-        {
-            if (width <= 0 || height <= 0)
-                throw new COMException("", 0x70057/*E_INVALIDARG*/);
-            if (!this.paginateCalled)
-                return;
-            if (desiredJobPage == 0xFFFFFFFF)
-                desiredJobPage = 1;
-
-            this.previewView.TryScroll(0, 0);   //元に戻さないとページ番号が変わった時に正しく動作しない
-
-            for (int i = 1; i < desiredJobPage; i++)
-                this.previewView.TryPageDown();
-
-            if (!string.IsNullOrEmpty(this.Header))
-                this.previewView.Header = this.ParseHF(this, new ParseCommandEventArgs((int)desiredJobPage, this.maxPreviePageCount, this.Header));
-            if (!string.IsNullOrEmpty(this.Fotter))
-                this.previewView.Footer = this.ParseHF(this, new ParseCommandEventArgs((int)desiredJobPage, this.maxPreviePageCount, this.Fotter));
-
-            this.previewRender.Resize(width, height);
-            this.previewRender.SetScale((float)(this.previewView.PageBound.Width / width)); //BeginDraw()で倍率が1に戻る
-
-            this.previewRender.DrawContent(this.previewView, this.dxgiPreviewTarget, desiredJobPage);
-        }
-
-        public void Dispose()
-        {
-            if (this.previewView != null)
-                this.previewView.Dispose();
-            if (this.previewRender != null)
-                this.previewRender.Dispose();
-        }
-    }
-}