OSDN Git Service

印刷プレビューに失敗するバグを修正した
authorgdkhd812 <jbh03215@htmil.co.jp>
Sun, 3 Nov 2013 11:30:22 +0000 (20:30 +0900)
committergdkhd812 <jbh03215@htmil.co.jp>
Sun, 3 Nov 2013 11:30:22 +0000 (20:30 +0900)
Metro/FooEditEngine/Direct2D/D2DRender.cs
Metro/FooEditEngine/Print/D2DPrintPreviewRender.cs
Metro/FooEditEngine/Print/DocumentSource.cs

index c1f7684..960bb8a 100644 (file)
@@ -118,8 +118,8 @@ namespace FooEditEngine
 
         void GetDpiHandler(out float dpix, out float dpiy)
         {
-            dpix = (int)DisplayInformation.GetForCurrentView().LogicalDpi;
-            dpiy = (int)DisplayInformation.GetForCurrentView().LogicalDpi;
+            dpix = DisplayInformation.GetForCurrentView().LogicalDpi;
+            dpiy = DisplayInformation.GetForCurrentView().LogicalDpi;
         }
 
         public bool Resize(Windows.UI.Xaml.Shapes.Rectangle rect, double width, double height)
index 54dcccf..46dc114 100644 (file)
@@ -34,11 +34,13 @@ namespace FooEditEngine
         D2D.DeviceContext D2DContext;
         D2D.Bitmap1 Bitmap;
         Size Size;
+        float dpi;
 
-        public D2DPrintPreviewRender(string fontName, double fontSize, Size size)
+        public D2DPrintPreviewRender(string fontName, double fontSize, Size size,float dpi)
             : base()
         {
             this.Size = size;
+            this.dpi = dpi;
 
             base.ConstructRender = this.ConstructRenderHandler;
             base.ConstrctedResource = this.ConstructedResourceHandler;
@@ -51,8 +53,8 @@ namespace FooEditEngine
 
         new void GetDpi(out float dpix, out float dpiy)
         {
-            dpix = (int)DisplayInformation.GetForCurrentView().LogicalDpi;
-            dpiy = (int)DisplayInformation.GetForCurrentView().LogicalDpi;
+            dpix = this.dpi;
+            dpiy = this.dpi;
         }
 
         public override void BeginDraw()
@@ -73,10 +75,7 @@ namespace FooEditEngine
         public void EndDraw(IPrintPreviewDxgiPackageTarget target,uint page)
         {
             base.EndDraw();
-            float dpix, dpiy;
-            this.GetDpi(out dpix, out dpiy);
-
-            target.DrawPage(page, this.Surface.NativePointer, (float)dpix, (float)dpiy);
+            target.DrawPage(page, this.Surface.NativePointer, this.dpi, this.dpi);
         }
 
         public void SetScale(float scale)
@@ -86,12 +85,9 @@ namespace FooEditEngine
 
         D2D.RenderTarget ConstructRenderHandler(D2D.Factory1 factory, D2D.RenderTargetProperties prop, double width, double height)
         {
-            float dpix, dpiy;
-            this.GetDpi(out dpix, out dpiy);
-
             D3D11.Texture2DDescription desc = new D3D11.Texture2DDescription();
-            desc.Width = (int)(width * dpix / 96);
-            desc.Height = (int)(height * dpix / 96);
+            desc.Width = (int)(width * this.dpi / 96);
+            desc.Height = (int)(height * this.dpi / 96);
             desc.Format = DXGI.Format.B8G8R8A8_UNorm;
             desc.BindFlags = D3D11.BindFlags.RenderTarget | D3D11.BindFlags.ShaderResource;
             desc.ArraySize = 1;
@@ -107,7 +103,7 @@ namespace FooEditEngine
             
             this.D2DContext = new D2D.DeviceContext(this.D2DDevice, D2D.DeviceContextOptions.None);
 
-            this.D2DContext.DotsPerInch = new Size2F(dpix, dpix);
+            this.D2DContext.DotsPerInch = new Size2F(this.dpi, this.dpi);
 
             D2D.BitmapProperties1 bmpProp = new D2D.BitmapProperties1();
             bmpProp.BitmapOptions = D2D.BitmapOptions.Target | D2D.BitmapOptions.CannotDraw;
index 5072ba9..b0b7a1e 100644 (file)
@@ -9,6 +9,7 @@
 You should have received a copy of the GNU General Public License along with this program. If not, see <http://www.gnu.org/licenses/>.\r
  */\r
 using System;\r
+using Windows.Graphics.Display;\r
 using Windows.Graphics.Printing;\r
 using System.Runtime.InteropServices;\r
 using Windows.UI;\r
@@ -65,6 +66,7 @@ namespace FooEditEngine
         int lineBreakCharCount, tabCount;\r
         bool drawLineNumber, urlMark;\r
         IHilighter hilighter;\r
+        float displayDpi;\r
         public PrintableViewFactory(FooTextBox textbox)\r
         {\r
             this.foreground = textbox.Foreground;\r
@@ -82,6 +84,7 @@ namespace FooEditEngine
             this.drawLineNumber = textbox.DrawLineNumber;\r
             this.urlMark = textbox.MarkURL;\r
             this.hilighter = textbox.Hilighter;\r
+            this.displayDpi = DisplayInformation.GetForCurrentView().LogicalDpi;\r
         }\r
         public D2DRenderBase CreateRender(PrintPageDescription pagedesc, IPrintDocumentPackageTarget docPackageTarget)\r
         {\r
@@ -100,7 +103,7 @@ namespace FooEditEngine
         {\r
             D2DPrintPreviewRender render;\r
             Size size = new Size(pagedesc.ImageableRect.Width, pagedesc.ImageableRect.Height);\r
-            render = new D2DPrintPreviewRender(this.fontName, this.fontSize, size);\r
+            render = new D2DPrintPreviewRender(this.fontName, this.fontSize, size, this.displayDpi);\r
             render.Foreground = this.foreground;\r
             render.Comment = this.comment;\r
             render.Keyword1 = this.keyword1;\r