protected override void Dispose(bool disposing) { if (disposing) { if (this.m_firstImage != null) { this.m_firstImage.Dispose(); this.m_firstImage = null; } if (this.m_encoderParameters != null) { this.m_encoderParameters.Dispose(); this.m_encoderParameters = null; } } if (this.m_hdcBitmap != null) { this.m_hdcBitmap.Close(); this.m_hdcBitmap = null; } if (this.m_hBitmap != null) { this.m_hBitmap.Close(); this.m_hBitmap = null; } base.Dispose(disposing); }
private void HandleError(Win32ObjectSafeHandle handle) { if (handle.IsInvalid) { throw new ReportRenderingException(Marshal.GetExceptionForHR(Marshal.GetLastWin32Error())); } }
public void NewPage(float pageWidth, float pageHeight, int dpiX, int dpiY) { if (base.m_graphicsBase != null) { this.ReleaseCachedHdc(true); base.m_graphicsBase.Dispose(); base.m_graphicsBase = null; } if (this.m_hdcBitmap != null) { this.m_hdcBitmap.Close(); this.m_hdcBitmap = null; } if (this.m_hBitmap != null) { this.m_hBitmap.Close(); this.m_hBitmap = null; } IntPtr intPtr = IntPtr.Zero; try { intPtr = AspNetCore.ReportingServices.Rendering.RichText.Win32.GetDC(IntPtr.Zero); this.HandleError(intPtr); this.m_hdcBitmap = AspNetCore.ReportingServices.Rendering.RichText.Win32.CreateCompatibleDC(intPtr); this.HandleError(this.m_hdcBitmap); AspNetCore.ReportingServices.Rendering.RichText.Win32.BITMAPINFOHEADER bITMAPINFOHEADER = new AspNetCore.ReportingServices.Rendering.RichText.Win32.BITMAPINFOHEADER(base.ConvertToPixels(pageWidth), base.ConvertToPixels(pageHeight), base.DpiX, base.DpiY); IntPtr zero = IntPtr.Zero; this.m_hBitmap = AspNetCore.ReportingServices.Rendering.RichText.Win32.CreateDIBSection(this.m_hdcBitmap, ref bITMAPINFOHEADER, 0u, ref zero, IntPtr.Zero, 0u); this.HandleError(this.m_hBitmap); AspNetCore.ReportingServices.Rendering.RichText.Win32.SelectObject(this.m_hdcBitmap, this.m_hBitmap); base.m_graphicsBase = System.Drawing.Graphics.FromHdc(this.m_hdcBitmap.Handle); Graphics.SetGraphicsProperties(base.m_graphicsBase); base.m_graphicsBase.Clear(Color.White); } catch (Exception) { if (this.m_hdcBitmap != null) { this.m_hdcBitmap.Close(); this.m_hdcBitmap = null; } if (this.m_hBitmap != null) { this.m_hBitmap.Close(); this.m_hBitmap = null; } throw; } finally { if (IntPtr.Zero != intPtr) { AspNetCore.ReportingServices.Rendering.RichText.Win32.ReleaseDC(IntPtr.Zero, intPtr); } } }
public override void ClipTextboxRectangle(Win32DCSafeHandle hdc, RectangleF position) { if (this.m_bodyRect.X != 0 || this.m_bodyRect.Y != 0) { if (!AspNetCore.ReportingServices.Rendering.RichText.Win32.GetViewportOrgEx(hdc, out this.m_prevViewportOrg)) { int lastWin32Error = Marshal.GetLastWin32Error(); string message = string.Format(CultureInfo.InvariantCulture, ImageRendererRes.Win32ErrorInfo, "GetViewportOrgEx", lastWin32Error); throw new Exception(message); } if (!AspNetCore.ReportingServices.Rendering.RichText.Win32.SetViewportOrgEx(hdc, this.m_bodyRect.X, this.m_bodyRect.Y, Win32ObjectSafeHandle.Zero)) { int lastWin32Error2 = Marshal.GetLastWin32Error(); string message2 = string.Format(CultureInfo.InvariantCulture, ImageRendererRes.Win32ErrorInfo, "SetViewportOrgEx", lastWin32Error2); throw new Exception(message2); } } System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(SharedRenderer.ConvertToPixels(position.X, (float)base.m_commonGraphics.DpiX), SharedRenderer.ConvertToPixels(position.Y, (float)base.m_commonGraphics.DpiY), SharedRenderer.ConvertToPixels(position.Width, (float)base.m_commonGraphics.DpiX), SharedRenderer.ConvertToPixels(position.Height, (float)base.m_commonGraphics.DpiY)); if (position.X < 0.0) { rectangle.Width += rectangle.X; rectangle.X = 0; } if (position.Y < 0.0) { rectangle.Height += rectangle.Y; rectangle.Y = 0; } rectangle.X += this.m_bodyRect.X; rectangle.Y += this.m_bodyRect.Y; if (rectangle.Right > this.m_bodyRect.Right) { rectangle.Width = this.m_bodyRect.Right - rectangle.Left; } if (rectangle.Bottom > this.m_bodyRect.Bottom) { rectangle.Height = this.m_bodyRect.Bottom - rectangle.Top; } Win32ObjectSafeHandle win32ObjectSafeHandle = AspNetCore.ReportingServices.Rendering.RichText.Win32.CreateRectRgn(rectangle.X, rectangle.Y, rectangle.Right, rectangle.Bottom); if (!win32ObjectSafeHandle.IsInvalid) { try { if (AspNetCore.ReportingServices.Rendering.RichText.Win32.SelectClipRgn(hdc, win32ObjectSafeHandle) == 0) { int lastWin32Error3 = Marshal.GetLastWin32Error(); string message3 = string.Format(CultureInfo.InvariantCulture, ImageRendererRes.Win32ErrorInfo, "SelectClipRgn", lastWin32Error3); throw new Exception(message3); } } finally { win32ObjectSafeHandle.Close(); } } }
internal void NewPage(float pageWidth, float pageHeight, int dpiX, int dpiY) { if (m_graphicsBase != null) { ReleaseCachedHdc(releaseHdc: true); m_graphicsBase.Dispose(); m_graphicsBase = null; } if (m_hdcBitmap != null) { m_hdcBitmap.Close(); m_hdcBitmap = null; } if (m_hBitmap != null) { m_hBitmap.Close(); m_hBitmap = null; } IntPtr intPtr = IntPtr.Zero; try { intPtr = Microsoft.ReportingServices.Rendering.RichText.Win32.GetDC(IntPtr.Zero); HandleError(intPtr); m_hdcBitmap = Microsoft.ReportingServices.Rendering.RichText.Win32.CreateCompatibleDC(intPtr); HandleError(m_hdcBitmap); Microsoft.ReportingServices.Rendering.RichText.Win32.BITMAPINFOHEADER pbmi = new Microsoft.ReportingServices.Rendering.RichText.Win32.BITMAPINFOHEADER(ConvertToPixels(pageWidth), ConvertToPixels(pageHeight), base.DpiX, base.DpiY); IntPtr ppvBits = IntPtr.Zero; m_hBitmap = Microsoft.ReportingServices.Rendering.RichText.Win32.CreateDIBSection(m_hdcBitmap, ref pbmi, 0u, ref ppvBits, IntPtr.Zero, 0u); HandleError(m_hBitmap); Microsoft.ReportingServices.Rendering.RichText.Win32.SelectObject(m_hdcBitmap, m_hBitmap); m_graphicsBase = System.Drawing.Graphics.FromHdc(m_hdcBitmap.Handle); SetGraphicsProperties(m_graphicsBase); m_graphicsBase.Clear(Color.White); } catch (Exception) { if (m_hdcBitmap != null) { m_hdcBitmap.Close(); m_hdcBitmap = null; } if (m_hBitmap != null) { m_hBitmap.Close(); m_hBitmap = null; } throw; } finally { if (IntPtr.Zero != intPtr) { Microsoft.ReportingServices.Rendering.RichText.Win32.ReleaseDC(IntPtr.Zero, intPtr); } } }
internal override void ClipTextboxRectangle(Win32DCSafeHandle hdc, RectangleF position) { if (m_bodyRect.X != 0 || m_bodyRect.Y != 0) { if (!Microsoft.ReportingServices.Rendering.RichText.Win32.GetViewportOrgEx(hdc, out m_prevViewportOrg)) { int lastWin32Error = Marshal.GetLastWin32Error(); throw new Exception(string.Format(CultureInfo.InvariantCulture, ImageRendererRes.Win32ErrorInfo, "GetViewportOrgEx", lastWin32Error)); } if (!Microsoft.ReportingServices.Rendering.RichText.Win32.SetViewportOrgEx(hdc, m_bodyRect.X, m_bodyRect.Y, Win32ObjectSafeHandle.Zero)) { int lastWin32Error2 = Marshal.GetLastWin32Error(); throw new Exception(string.Format(CultureInfo.InvariantCulture, ImageRendererRes.Win32ErrorInfo, "SetViewportOrgEx", lastWin32Error2)); } } System.Drawing.Rectangle rectangle = new System.Drawing.Rectangle(SharedRenderer.ConvertToPixels(position.X, m_commonGraphics.DpiX), SharedRenderer.ConvertToPixels(position.Y, m_commonGraphics.DpiY), SharedRenderer.ConvertToPixels(position.Width, m_commonGraphics.DpiX), SharedRenderer.ConvertToPixels(position.Height, m_commonGraphics.DpiY)); if (position.X < 0f) { rectangle.Width += rectangle.X; rectangle.X = 0; } if (position.Y < 0f) { rectangle.Height += rectangle.Y; rectangle.Y = 0; } rectangle.X += m_bodyRect.X; rectangle.Y += m_bodyRect.Y; if (rectangle.Right > m_bodyRect.Right) { rectangle.Width = m_bodyRect.Right - rectangle.Left; } if (rectangle.Bottom > m_bodyRect.Bottom) { rectangle.Height = m_bodyRect.Bottom - rectangle.Top; } Win32ObjectSafeHandle win32ObjectSafeHandle = Microsoft.ReportingServices.Rendering.RichText.Win32.CreateRectRgn(rectangle.X, rectangle.Y, rectangle.Right, rectangle.Bottom); if (win32ObjectSafeHandle.IsInvalid) { return; } try { if (Microsoft.ReportingServices.Rendering.RichText.Win32.SelectClipRgn(hdc, win32ObjectSafeHandle) == 0) { int lastWin32Error3 = Marshal.GetLastWin32Error(); throw new Exception(string.Format(CultureInfo.InvariantCulture, ImageRendererRes.Win32ErrorInfo, "SelectClipRgn", lastWin32Error3)); } } finally { win32ObjectSafeHandle.Close(); } }