OSDN Git Service

印刷オプションにシンタックスハイライトと行番号に関する項目を追加した
[fooeditengine/FooEditEngine.git] / Metro / FooEditEngine / Print / DocumentSource.cs
index b0ea785..8d24c7e 100644 (file)
@@ -56,6 +56,7 @@ namespace FooEditEngine
     /// <returns>処理後の文字列</returns>\r
     public delegate string ParseCommandHandler(object sender, ParseCommandEventArgs e);\r
 \r
+\r
     sealed class PrintableViewFactory\r
     {\r
         Windows.UI.Color foreground, comment, keyword1, keyword2, literal, url;\r
@@ -64,7 +65,7 @@ namespace FooEditEngine
         Document document;\r
         LineBreakMethod lineBreakMethod;\r
         int lineBreakCharCount, tabCount;\r
-        bool drawLineNumber, urlMark;\r
+        bool urlMark;\r
         IHilighter hilighter;\r
         float displayDpi;\r
         Padding padding;\r
@@ -87,6 +88,7 @@ namespace FooEditEngine
             this.hilighter = textbox.Hilighter;\r
             this.displayDpi = DisplayInformation.GetForCurrentView().LogicalDpi;\r
             this.padding = padding;\r
+            this.EnableHilight = true;\r
         }\r
         public D2DRenderBase CreateRender(PrintPageDescription pagedesc, IPrintDocumentPackageTarget docPackageTarget)\r
         {\r
@@ -125,14 +127,26 @@ namespace FooEditEngine
             view.Footer = footer;\r
             view.UrlMark = this.urlMark;\r
             view.PageBound = new Rectangle(pagedesc.ImageableRect.X, pagedesc.ImageableRect.Y, pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height);\r
-            view.Hilighter = this.hilighter;\r
+            view.Hilighter = this.EnableHilight ? this.hilighter : null;\r
             view.PerfomLayouts();\r
 \r
             return view;\r
         }\r
+\r
+        public bool drawLineNumber\r
+        {\r
+            get;\r
+            set;\r
+        }\r
+\r
+        public bool EnableHilight\r
+        {\r
+            get;\r
+            set;\r
+        }\r
     }\r
 \r
-    sealed class DocumentSource : IPrintDocumentPageSource, IPrintPreviewPageCollection, IPrintDocumentSource\r
+    sealed class DocumentSource : IPrintDocumentPageSource, IPrintPreviewPageCollection, IPrintDocumentSource,IPrintPreviewSource\r
     {\r
         IPrintPreviewDxgiPackageTarget dxgiPreviewTarget;\r
         bool paginateCalled = false;\r
@@ -151,7 +165,45 @@ namespace FooEditEngine
             this.factory = new PrintableViewFactory(textbox, padding);\r
         }\r
 \r
-        public void GetPreviewPageCollection(IPrintDocumentPackageTarget docPackageTarget,out IPrintPreviewPageCollection docPageCollection)\r
+        internal enum SyntaxHilightApplibility\r
+        {\r
+            Apply,\r
+            NoApply,\r
+        }\r
+\r
+        [DisplayPrintOptionResourceID("SyntaxHilight")]\r
+        internal SyntaxHilightApplibility EnableHilight\r
+        {\r
+            get\r
+            {\r
+                return this.factory.EnableHilight ? SyntaxHilightApplibility.Apply : SyntaxHilightApplibility.NoApply;\r
+            }\r
+            set\r
+            {\r
+                this.factory.EnableHilight = value == SyntaxHilightApplibility.Apply;\r
+            }\r
+        }\r
+\r
+        internal enum LineNumberVisiblity\r
+        {\r
+            Visible,\r
+            Hidden\r
+        }\r
+\r
+        [DisplayPrintOptionResourceID("ShowLineNumber")]\r
+        internal LineNumberVisiblity ShowLineNumber\r
+        {\r
+            get\r
+            {\r
+                return this.factory.drawLineNumber ? LineNumberVisiblity.Visible : LineNumberVisiblity.Hidden;\r
+            }\r
+            set\r
+            {\r
+                this.factory.drawLineNumber = value == LineNumberVisiblity.Visible;\r
+            }\r
+        }\r
+\r
+        public void GetPreviewPageCollection(IPrintDocumentPackageTarget docPackageTarget, out IPrintPreviewPageCollection docPageCollection)\r
         {\r
             Guid guid = new Guid(PreviewPackageIds.IID_PREVIEWPACKAGETARGET_DXGI);\r
             IntPtr target;\r
@@ -212,6 +264,11 @@ namespace FooEditEngine
             this.paginateCalled = true;\r
         }\r
 \r
+        public void InvalidatePreview()\r
+        {\r
+            this.dxgiPreviewTarget.InvalidatePreview();\r
+        }\r
+\r
         public void MakePage(uint desiredJobPage, float width, float height)\r
         {\r
             if (width <= 0 || height <= 0)\r