/*
http://www.cgsoso.com/forum-211-1.html
CG搜搜 Unity3d 每日Unity3d插件免费更新 更有VIP资源!
CGSOSO 主打游戏开发,影视设计等CG资源素材。
插件如若商用,请务必官网购买!
daily assets update for try.
U should buy the asset from home store if u use it in your project!
*/
using System;
using System.Runtime.InteropServices;
namespace Paroxe.PdfRenderer
{
#if !UNITY_WEBGL
///
/// Represents a destination into a PDF document.
///
public class PDFDest : IDisposable
{
private bool m_Disposed;
private IntPtr m_NativePointer;
private IDisposable m_Source;
private PDFDocument m_Document;
private int m_PageIndex = -1;
public PDFDest(PDFAction action, IntPtr nativePointer)
{
if (action == null)
throw new NullReferenceException();
if (nativePointer == IntPtr.Zero)
throw new NullReferenceException();
PDFLibrary.AddRef("PDFDest");
m_Source = action;
m_Document = action.Document;
m_NativePointer = nativePointer;
}
public PDFDest(PDFLink link, IntPtr nativePointer)
{
if (link == null)
throw new NullReferenceException();
if (nativePointer == IntPtr.Zero)
throw new NullReferenceException();
PDFLibrary.AddRef("PDFDest");
m_Source = link;
m_Document = link.Page.Document;
m_NativePointer = nativePointer;
}
public PDFDest(PDFBookmark bookmark, IntPtr nativePointer)
{
if (bookmark == null)
throw new NullReferenceException();
if (nativePointer == IntPtr.Zero)
throw new NullReferenceException();
PDFLibrary.AddRef("PDFDest");
m_Source = bookmark;
m_Document = bookmark.Document;
m_NativePointer = nativePointer;
}
~PDFDest()
{
Dispose(false);
}
public void Dispose()
{
Dispose(true);
GC.SuppressFinalize(this);
}
protected virtual void Dispose(bool disposing)
{
if (!m_Disposed)
{
m_NativePointer = IntPtr.Zero;
PDFLibrary.RemoveRef("PDFDest");
m_Disposed = true;
}
}
public PDFDocument Document
{
get { return m_Document; }
}
public IDisposable Source
{
get { return m_Source; }
}
public IntPtr NativePointer
{
get { return m_NativePointer; }
}
public int PageIndex
{
get
{
if (m_PageIndex < 0)
m_PageIndex = (int)FPDFDest_GetPageIndex(m_Document.NativePointer, m_NativePointer);
return m_PageIndex;
}
}
#region NATIVE
[DllImport(PDFLibrary.PLUGIN_ASSEMBLY)]
private static extern uint FPDFDest_GetPageIndex(IntPtr document, IntPtr dest);
#endregion
}
#endif
}