mirror of
https://gitee.com/csharpui/CPF.git
synced 2025-04-05 17:37:51 +08:00
88 lines
1.9 KiB
C#
88 lines
1.9 KiB
C#
using CPF.Mac.Foundation;
|
|
using CPF.Mac.ObjCRuntime;
|
|
using System;
|
|
|
|
namespace CPF.Mac.CoreGraphics
|
|
{
|
|
public class CGPDFPageInfo
|
|
{
|
|
private static IntPtr kCGPDFContextMediaBox;
|
|
|
|
private static IntPtr kCGPDFContextCropBox;
|
|
|
|
private static IntPtr kCGPDFContextBleedBox;
|
|
|
|
private static IntPtr kCGPDFContextTrimBox;
|
|
|
|
private static IntPtr kCGPDFContextArtBox;
|
|
|
|
public CGRect? MediaBox
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public CGRect? CropBox
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public CGRect? BleedBox
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public CGRect? TrimBox
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
public CGRect? ArtBox
|
|
{
|
|
get;
|
|
set;
|
|
}
|
|
|
|
static CGPDFPageInfo()
|
|
{
|
|
IntPtr handle = Dlfcn.dlopen("/System/Library/Frameworks/ApplicationServices.framework/Versions/A/Frameworks/CoreGraphics.framework/CoreGraphics", 0);
|
|
try
|
|
{
|
|
kCGPDFContextMediaBox = Dlfcn.GetIndirect(handle, "kCGPDFContextMediaBox");
|
|
kCGPDFContextCropBox = Dlfcn.GetIndirect(handle, "kCGPDFContextCropBox");
|
|
kCGPDFContextBleedBox = Dlfcn.GetIndirect(handle, "kCGPDFContextBleedBox");
|
|
kCGPDFContextTrimBox = Dlfcn.GetIndirect(handle, "kCGPDFContextTrimBox");
|
|
kCGPDFContextArtBox = Dlfcn.GetIndirect(handle, "kCGPDFContextArtBox");
|
|
}
|
|
finally
|
|
{
|
|
Dlfcn.dlclose(handle);
|
|
}
|
|
}
|
|
|
|
private unsafe static void Add(NSMutableDictionary dict, IntPtr key, CGRect? val)
|
|
{
|
|
if (val.HasValue)
|
|
{
|
|
CGRect value = val.Value;
|
|
NSData obj = NSData.FromBytes((IntPtr)(void*)(&value), 16uL);
|
|
dict.LowlevelSetObject(obj, key);
|
|
}
|
|
}
|
|
|
|
internal virtual NSMutableDictionary ToDictionary()
|
|
{
|
|
NSMutableDictionary nSMutableDictionary = new NSMutableDictionary();
|
|
Add(nSMutableDictionary, kCGPDFContextMediaBox, MediaBox);
|
|
Add(nSMutableDictionary, kCGPDFContextCropBox, CropBox);
|
|
Add(nSMutableDictionary, kCGPDFContextBleedBox, BleedBox);
|
|
Add(nSMutableDictionary, kCGPDFContextTrimBox, TrimBox);
|
|
Add(nSMutableDictionary, kCGPDFContextArtBox, ArtBox);
|
|
return nSMutableDictionary;
|
|
}
|
|
}
|
|
}
|