mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-11-18 16:59:09 +08:00
初始化
This commit is contained in:
149
CPF.Mac/Mac/CoreGraphics/CGContextPDF.cs
Normal file
149
CPF.Mac/Mac/CoreGraphics/CGContextPDF.cs
Normal file
@@ -0,0 +1,149 @@
|
||||
using CPF.Mac.Foundation;
|
||||
using System;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace CPF.Mac.CoreGraphics
|
||||
{
|
||||
public class CGContextPDF : CGContext
|
||||
{
|
||||
private bool closed;
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern IntPtr CGPDFContextCreateWithURL(IntPtr url, ref CGRect rect, IntPtr dictionary);
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern IntPtr CGPDFContextCreateWithURL(IntPtr url, IntPtr rect, IntPtr dictionary);
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern IntPtr CGPDFContextCreate(IntPtr dataConsumer, ref CGRect rect, IntPtr dictionary);
|
||||
|
||||
public CGContextPDF(CGDataConsumer dataConsumer, CGRect mediaBox, CGPDFInfo info)
|
||||
{
|
||||
if (dataConsumer == null)
|
||||
{
|
||||
throw new ArgumentNullException("dataConsumer");
|
||||
}
|
||||
handle = CGPDFContextCreate(dataConsumer.Handle, ref mediaBox, info?.ToDictionary().Handle ?? IntPtr.Zero);
|
||||
}
|
||||
|
||||
public CGContextPDF(NSUrl url, CGRect mediaBox, CGPDFInfo info)
|
||||
{
|
||||
if (url == null)
|
||||
{
|
||||
throw new ArgumentNullException("url");
|
||||
}
|
||||
handle = CGPDFContextCreateWithURL(url.Handle, ref mediaBox, info?.ToDictionary().Handle ?? IntPtr.Zero);
|
||||
}
|
||||
|
||||
public CGContextPDF(NSUrl url, CGRect mediaBox)
|
||||
{
|
||||
if (url == null)
|
||||
{
|
||||
throw new ArgumentNullException("url");
|
||||
}
|
||||
handle = CGPDFContextCreateWithURL(url.Handle, ref mediaBox, IntPtr.Zero);
|
||||
}
|
||||
|
||||
public CGContextPDF(NSUrl url, CGPDFInfo info)
|
||||
{
|
||||
if (url == null)
|
||||
{
|
||||
throw new ArgumentNullException("url");
|
||||
}
|
||||
handle = CGPDFContextCreateWithURL(url.Handle, IntPtr.Zero, info?.ToDictionary().Handle ?? IntPtr.Zero);
|
||||
}
|
||||
|
||||
public CGContextPDF(NSUrl url)
|
||||
{
|
||||
if (url == null)
|
||||
{
|
||||
throw new ArgumentNullException("url");
|
||||
}
|
||||
handle = CGPDFContextCreateWithURL(url.Handle, IntPtr.Zero, IntPtr.Zero);
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextClose(IntPtr handle);
|
||||
|
||||
public void Close()
|
||||
{
|
||||
if (!closed)
|
||||
{
|
||||
CGPDFContextClose(handle);
|
||||
closed = true;
|
||||
}
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextBeginPage(IntPtr handle, IntPtr dict);
|
||||
|
||||
public void BeginPage(CGPDFPageInfo info)
|
||||
{
|
||||
CGPDFContextBeginPage(handle, info?.ToDictionary().Handle ?? IntPtr.Zero);
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextEndPage(IntPtr handle);
|
||||
|
||||
public new void EndPage()
|
||||
{
|
||||
CGPDFContextEndPage(handle);
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextAddDocumentMetadata(IntPtr handle, IntPtr nsDataHandle);
|
||||
|
||||
public void AddDocumentMetadata(NSData data)
|
||||
{
|
||||
if (data != null)
|
||||
{
|
||||
CGPDFContextAddDocumentMetadata(handle, data.Handle);
|
||||
}
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextSetURLForRect(IntPtr handle, IntPtr urlh, CGRect rect);
|
||||
|
||||
public void SetUrl(NSUrl url, CGRect region)
|
||||
{
|
||||
if (url == null)
|
||||
{
|
||||
throw new ArgumentNullException("url");
|
||||
}
|
||||
CGPDFContextSetURLForRect(handle, url.Handle, region);
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextAddDestinationAtPoint(IntPtr handle, IntPtr cfstring, CGPoint point);
|
||||
|
||||
public void AddDestination(string name, CGPoint point)
|
||||
{
|
||||
if (name == null)
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
}
|
||||
CGPDFContextAddDestinationAtPoint(handle, new NSString(name).Handle, point);
|
||||
}
|
||||
|
||||
[DllImport("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics")]
|
||||
private static extern void CGPDFContextSetDestinationForRect(IntPtr handle, IntPtr cfstr, CGRect rect);
|
||||
|
||||
public void SetDestination(string name, CGRect rect)
|
||||
{
|
||||
if (name == null)
|
||||
{
|
||||
throw new ArgumentNullException("name");
|
||||
}
|
||||
CGPDFContextSetDestinationForRect(handle, new NSString(name).Handle, rect);
|
||||
}
|
||||
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing)
|
||||
{
|
||||
Close();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user