The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#include "EXTERN.h"
#include "perl.h"
#include "XSUB.h"

#include "hpdf.h"

void
error_handler  (HPDF_STATUS   error_no,
                HPDF_STATUS   detail_no,
                void         *user_data)
{
	dSP;

	ENTER;
	SAVETMPS;

	PUSHMARK(SP);
	XPUSHs(sv_2mortal(newSVuv((HPDF_UINT)error_no)));
	XPUSHs(sv_2mortal(newSVuv((HPDF_UINT)detail_no)));
	PUTBACK;

	call_pv("PDF::Haru::_ErrorHandler", G_DISCARD);

	FREETMPS;
	LEAVE;
}

typedef HPDF_Doc	PDF__Haru;
typedef HPDF_Page	PDF__Haru__Page;
typedef HPDF_Font	PDF__Haru__Font;
typedef HPDF_ExtGState PDF__Haru__ExtGState;
typedef HPDF_Encoder	PDF__Haru__Encoder;
typedef HPDF_Outline	PDF__Haru__Outline;
typedef HPDF_Image	PDF__Haru__Image;
typedef HPDF_Destination	PDF__Haru__Destination;
typedef HPDF_Annotation	PDF__Haru__Annotation;

MODULE = PDF::Haru		PACKAGE = PDF::Haru		

PROTOTYPES: DISABLE

PDF::Haru
New()
	CODE:
	RETVAL = HPDF_New(error_handler,NULL);
	OUTPUT:
	RETVAL

void
Free(pdf)
	PDF::Haru pdf
	CODE:
	HPDF_Free(pdf);

HPDF_STATUS
NewDoc  (pdf)
	PDF::Haru  pdf
	CODE:
	RETVAL = HPDF_NewDoc(pdf);
	OUTPUT:
	RETVAL	

void
FreeDoc  (pdf)
	PDF::Haru pdf
	CODE:
	HPDF_FreeDoc  (pdf);
	
void
FreeDocAll  (pdf)
	PDF::Haru pdf
	CODE:
	HPDF_FreeDocAll  (pdf);
	
HPDF_STATUS
SaveToFile(pdf,filename)
	PDF::Haru pdf
	char* filename	
	CODE:
	RETVAL = HPDF_SaveToFile(pdf,filename);
    OUTPUT:
    RETVAL
	
void
SaveAsString(pdf)
	PDF::Haru pdf
	PREINIT:
	unsigned char * buf;
	unsigned int siz;
	PPCODE:
	HPDF_SaveToStream (pdf);
	HPDF_ResetStream (pdf);
	siz = HPDF_GetStreamSize  (pdf);
	buf = (unsigned char*)malloc(siz);
	HPDF_ReadFromStream (pdf, buf, &siz);
	XPUSHs(sv_2mortal(newSVpvn((const char*)buf,siz)));
	free(buf);
	
HPDF_STATUS
SetPagesConfiguration  (pdf, page_per_pages)
	PDF::Haru    pdf
	HPDF_UINT   page_per_pages
	CODE:
	RETVAL = HPDF_SetPagesConfiguration  (pdf, page_per_pages);
	OUTPUT:
	RETVAL	

HPDF_STATUS
SetPageLayout (pdf, layout)
	PDF::Haru pdf
	HPDF_PageLayout layout
	CODE:
	RETVAL = HPDF_SetPageLayout(pdf,layout);
	OUTPUT:
	RETVAL	

HPDF_PageLayout
GetPageLayout  (pdf);
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_GetPageLayout(pdf);
	OUTPUT:
	RETVAL	
	
HPDF_STATUS
SetPageMode  (pdf, mode)
	PDF::Haru pdf
	HPDF_PageMode mode
	CODE:
	RETVAL = HPDF_SetPageMode  (pdf, mode);   
	OUTPUT:
	RETVAL	

HPDF_PageMode
GetPageMode  (pdf);
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_GetPageMode(pdf);
	OUTPUT:
	RETVAL	

HPDF_STATUS
SetOpenAction  (pdf, open_action);
	PDF::Haru           pdf
	PDF::Haru::Destination   open_action
	CODE:
	RETVAL = HPDF_SetOpenAction  (pdf, open_action);
	OUTPUT:
	RETVAL	

PDF::Haru::Page
GetCurrentPage  (pdf)
	PDF::Haru pdf
	CODE:
	RETVAL = HPDF_GetCurrentPage  (pdf);
	OUTPUT:
	RETVAL	

PDF::Haru::Page
AddPage  (pdf)
	PDF::Haru pdf
	CODE:
	RETVAL = HPDF_AddPage  (pdf);
	OUTPUT:
	RETVAL	

PDF::Haru::Page
InsertPage  (pdf, target)
	PDF::Haru pdf
	PDF::Haru::Page target
	CODE:
	RETVAL = HPDF_InsertPage  (pdf,target);
	OUTPUT:
	RETVAL	

const char*
LoadType1FontFromFile  (pdf, afmfilename,  pfmfilename)
	PDF::Haru     pdf
	const char  *afmfilename
	const char  *pfmfilename
	CODE:
	RETVAL = HPDF_LoadType1FontFromFile  (pdf, afmfilename,  pfmfilename);
	OUTPUT:
	RETVAL	

const char*
LoadTTFontFromFile ( pdf, file_name, embedding)
	PDF::Haru         pdf
	const char      *file_name
	int        embedding
	CODE:
	RETVAL = HPDF_LoadTTFontFromFile ( pdf, file_name, embedding);
	OUTPUT:
	RETVAL	

const char*
LoadTTFontFromFile2 (pdf, file_name, index, embedding)
	PDF::Haru     pdf
	const char  *file_name
	unsigned int    index
	int    embedding
	CODE:
	RETVAL = HPDF_LoadTTFontFromFile2 (pdf, file_name, index, embedding);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
AddPageLabel  (pdf, page_num, style, first_page, prefix)
	PDF::Haru            pdf
	HPDF_UINT           page_num
	HPDF_PageNumStyle   style
	HPDF_UINT           first_page
	const char         *prefix
	CODE:
	RETVAL = HPDF_AddPageLabel  (pdf, page_num, style, first_page, prefix);
	OUTPUT:
	RETVAL

PDF::Haru::Font
GetFont  (pdf, font_name, encoding_name)
	PDF::Haru     pdf
	const char  *font_name
	const char  *encoding_name
	CODE:
	RETVAL = HPDF_GetFont(pdf, font_name, encoding_name);
	OUTPUT:
	RETVAL

HPDF_STATUS
UseJPFonts   (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseJPFonts   (pdf);
	OUTPUT:
	RETVAL

HPDF_STATUS
UseKRFonts   (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseKRFonts   (pdf);
	OUTPUT:
	RETVAL

HPDF_STATUS
UseCNSFonts   (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseCNSFonts   (pdf);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
UseCNTFonts   (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseCNTFonts   (pdf);
	OUTPUT:
	RETVAL

PDF::Haru::ExtGState
HPDF_CreateExtGState  (pdf);
	PDF::Haru  pdf
	CODE:
	RETVAL = HPDF_CreateExtGState   (pdf);
	OUTPUT:
	RETVAL
	
PDF::Haru::Encoder
GetEncoder (pdf, encoding_name);
	PDF::Haru pdf
	const char *encoding_name
	CODE:
	RETVAL = HPDF_GetEncoder   (pdf, encoding_name);
	OUTPUT:
	RETVAL
	
PDF::Haru::Encoder
GetCurrentEncoder (pdf);
	PDF::Haru pdf
	CODE:
	RETVAL = HPDF_GetCurrentEncoder   (pdf);
	OUTPUT:
	RETVAL
		
HPDF_STATUS
SetCurrentEncoder  (pdf, encoding_name)
	PDF::Haru     pdf
	const char  *encoding_name
	CODE:
	RETVAL = HPDF_SetCurrentEncoder (pdf, encoding_name);
	OUTPUT:
	RETVAL

HPDF_STATUS
UseJPEncodings  (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseJPEncodings   (pdf);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
UseKREncodings  (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseKREncodings   (pdf);
	OUTPUT:
	RETVAL

HPDF_STATUS
UseCNSEncodings  (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseCNSEncodings   (pdf);
	OUTPUT:
	RETVAL

HPDF_STATUS
UseCNTEncodings  (pdf)
	PDF::Haru   pdf
	CODE:
	RETVAL = HPDF_UseCNTEncodings   (pdf);
	OUTPUT:
	RETVAL
	 
PDF::Haru::Outline
CreateOutline (pdf, parent, title, encoder);
	PDF::Haru pdf
	PDF::Haru::Outline parent
	const char *title
	PDF::Haru::Encoder encoder
	CODE:
	RETVAL = HPDF_CreateOutline   (pdf, parent, title, encoder);
	OUTPUT:
	RETVAL
	
PDF::Haru::Image
LoadPngImageFromFile (pdf, filename)
	PDF::Haru pdf
	const char *filename
	CODE:
	RETVAL = HPDF_LoadPngImageFromFile (pdf, filename);
	OUTPUT:
	RETVAL

PDF::Haru::Image
LoadPngImageFromFile2 (pdf, filename)
	PDF::Haru pdf
	const char *filename
	CODE:
	RETVAL = HPDF_LoadPngImageFromFile2 (pdf, filename);
	OUTPUT:
	RETVAL

PDF::Haru::Image
LoadJpegImageFromFile (pdf, filename)
	PDF::Haru pdf
	const char *filename
	CODE:
	RETVAL = HPDF_LoadJpegImageFromFile (pdf, filename);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetInfoAttr (pdf, type, value)
	PDF::Haru pdf
	HPDF_InfoType type
	const char  *value
	CODE:
	RETVAL = HPDF_SetInfoAttr (pdf, type, value);
	OUTPUT:
	RETVAL

const char*
GetInfoAttr (pdf,type);
	PDF::Haru  pdf
	HPDF_InfoType  type
	CODE:
	RETVAL = HPDF_GetInfoAttr (pdf, type);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetInfoDateAttr (pdf,type,year,month,day,hour,minutes,seconds,ind,off_hour,off_minutes)
	PDF::Haru       pdf
	HPDF_InfoType  type
	int year
	int month
	int day
	int hour
	int minutes
	int seconds
	char ind
	int off_hour
	int off_minutes 
	PREINIT:
	HPDF_Date date;
	CODE:
	date.year = year;
	date.month = month;
	date.day = day;
	date.hour = hour;
	date.minutes = minutes;
	date.seconds = seconds;
	date.ind = ind;
	date.off_hour = off_hour;
	date.off_minutes = off_minutes;
	RETVAL = HPDF_SetInfoDateAttr (pdf, type,date);
 	OUTPUT:
	RETVAL                                      

HPDF_STATUS
SetPassword  (pdf, owner_passwd, user_passwd)
	PDF::Haru      pdf
	const char   *owner_passwd
	const char   *user_passwd
	CODE:
	RETVAL = HPDF_SetPassword  (pdf, owner_passwd, user_passwd);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetPermission  (pdf, permission)
	PDF::Haru    pdf
	HPDF_UINT   permission
	CODE:
	RETVAL = HPDF_SetPermission  (pdf, permission);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetEncryptionMode  (pdf, mode, key_len)
	PDF::Haru           pdf
	HPDF_EncryptMode   mode
	HPDF_UINT          key_len
	CODE:
	RETVAL = HPDF_SetEncryptionMode  (pdf, mode, key_len);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetCompressionMode  (pdf, mode)
	PDF::Haru    pdf
	HPDF_UINT   mode
	CODE:
	RETVAL = HPDF_SetCompressionMode  (pdf, mode);
	OUTPUT:
	RETVAL

MODULE = PDF::Haru		PACKAGE = PDF::Haru::Page

HPDF_STATUS
SetWidth  (page, value)
	PDF::Haru::Page   page
	HPDF_REAL   value
	CODE:
	RETVAL = HPDF_Page_SetWidth  (page, value);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetHeight  (page, value)
	PDF::Haru::Page   page
	HPDF_REAL   value
	CODE:
	RETVAL = HPDF_Page_SetHeight  (page, value);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetSize  (page, size, direction)
	PDF::Haru::Page            page
	HPDF_PageSizes       size
	HPDF_PageDirection   direction
	CODE:
	RETVAL = HPDF_Page_SetSize  (page, size, direction);
	OUTPUT:
	RETVAL

void
SetRotate  (page,  angle)
	PDF::Haru::Page     page
	HPDF_UINT16   angle
	CODE:
	HPDF_Page_SetRotate  (page,  angle);

HPDF_REAL
GetWidth  (page)
	PDF::Haru::Page   page
	CODE:
	RETVAL = HPDF_Page_GetWidth  (page);
	OUTPUT:
	RETVAL

HPDF_REAL
GetHeight  (page)
	PDF::Haru::Page   page
	CODE:
	RETVAL = HPDF_Page_GetHeight  (page);
	OUTPUT:
	RETVAL

PDF::Haru::Destination
CreateDestination  (page)
	PDF::Haru::Page   page
	CODE:
	RETVAL = HPDF_Page_CreateDestination  (page);
	OUTPUT:
	RETVAL

PDF::Haru::Annotation
CreateTextAnnot (page,text,encoder,left,bottom,right,top);
	PDF::Haru::Page       page
	const char     *text
	PDF::Haru::Encoder    encoder
	float left
	float bottom
	float right
	float top
	PREINIT:
	HPDF_Rect rect;
	CODE:
	rect.left = left;
	rect.bottom = bottom;
	rect.right = right;
	rect.top = top;
	RETVAL = HPDF_Page_CreateTextAnnot  (page,rect,text,encoder);
	OUTPUT:
	RETVAL

PDF::Haru::Annotation
CreateLinkAnnot (page,dst,left,bottom,right,top);
	PDF::Haru::Page       page
	PDF::Haru::Destination   dst
	float left
	float bottom
	float right
	float top
	PREINIT:
	HPDF_Rect       rect;
	CODE:
	rect.left = left;
	rect.bottom = bottom;
	rect.right = right;
	rect.top = top;
	RETVAL = HPDF_Page_CreateLinkAnnot  (page,rect,dst);
	OUTPUT:
	RETVAL

PDF::Haru::Annotation
CreateURILinkAnnot (page,uri,left,bottom,right,top);
	PDF::Haru::Page       page
	const char   *uri
	float left
	float bottom
	float right
	float top
	PREINIT:
	HPDF_Rect       rect;
	CODE:
	rect.left = left;
	rect.bottom = bottom;
	rect.right = right;
	rect.top = top;
	RETVAL = HPDF_Page_CreateURILinkAnnot  (page,rect,uri);
	OUTPUT:
	RETVAL

HPDF_REAL
TextWidth  (page, text)
	PDF::Haru::Page    page
	const char  *text
	CODE:
	RETVAL = HPDF_Page_TextWidth  (page, text);
	OUTPUT:
	RETVAL

HPDF_UINT
MeasureText  (page, text, width, wordwrap)
	PDF::Haru::Page    page
	const char  *text
	HPDF_REAL    width
	int    wordwrap
	CODE:
	RETVAL = HPDF_Page_MeasureText  (page, text, width, wordwrap,NULL);
	OUTPUT:
	RETVAL

unsigned short
GetGMode (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetGMode  (page);
	OUTPUT:
	RETVAL
	
void
GetCurrentPos  (page)
	PDF::Haru::Page   page
	PREINIT:
	HPDF_Point point;
	PPCODE:
	point = HPDF_Page_GetCurrentPos  (page);
	XPUSHs(sv_2mortal(newSVnv(point.x)));
	XPUSHs(sv_2mortal(newSVnv(point.y)));

void
GetCurrentTextPos  (page)
	PDF::Haru::Page   page
	PREINIT:
	HPDF_Point point;
	PPCODE:
	point = HPDF_Page_GetCurrentTextPos  (page);
	XPUSHs(sv_2mortal(newSVnv(point.x)));
	XPUSHs(sv_2mortal(newSVnv(point.y)));

PDF::Haru::Font
GetCurrentFont  (page)
	PDF::Haru::Page   page
	CODE:
	RETVAL = HPDF_Page_GetCurrentFont  (page);
	OUTPUT:
	RETVAL

HPDF_REAL
GetCurrentFontSize  (page)
	PDF::Haru::Page   page
	CODE:
	RETVAL = HPDF_Page_GetCurrentFontSize  (page);
	OUTPUT:
	RETVAL

void 
GetTransMatrix (page)
	PDF::Haru::Page   page
	PREINIT:
	HPDF_TransMatrix matrix;
	PPCODE:
	matrix = HPDF_Page_GetTransMatrix  (page);
	XPUSHs(sv_2mortal(newSVnv(matrix.a)));
	XPUSHs(sv_2mortal(newSVnv(matrix.b)));	
	XPUSHs(sv_2mortal(newSVnv(matrix.c)));
	XPUSHs(sv_2mortal(newSVnv(matrix.d)));	
	XPUSHs(sv_2mortal(newSVnv(matrix.x)));
	XPUSHs(sv_2mortal(newSVnv(matrix.y)));	

float
GetLineWidth (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_GetLineWidth  (page);
	OUTPUT:
	RETVAL

HPDF_LineCap
GetLineCap  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_GetLineCap  (page);
	OUTPUT:
	RETVAL

HPDF_LineJoin
GetLineJoin  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_GetLineJoin  (page);
	OUTPUT:
	RETVAL

float
GetMiterLimit (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_GetMiterLimit(page);
	OUTPUT:
	RETVAL

void
GetDash (page)
	PDF::Haru::Page  page
	PREINIT:
	AV * ptn;
	int n;
	HPDF_DashMode mode;
	PPCODE:
	mode = HPDF_Page_GetDash (page);
	ptn = (AV *)sv_2mortal((SV *)newAV());
	for (n = 0; n < mode.num_ptn; n++) {
		av_push(ptn, newSViv(mode.ptn[n]));
	}
	XPUSHs(newRV((SV *)ptn));	
	XPUSHs(sv_2mortal(newSViv(mode.phase)));	

float
GetFlat (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetFlat (page);
	OUTPUT:
	RETVAL

float
GetCharSpace (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetCharSpace (page);
	OUTPUT:
	RETVAL

float
GetWordSpace (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetWordSpace (page);
	OUTPUT:
	RETVAL

float
GetHorizontalScalling (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetHorizontalScalling (page);
	OUTPUT:
	RETVAL

float
GetTextLeading (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetTextLeading (page);
	OUTPUT:
	RETVAL

float
GetTextRenderingMode (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetTextRenderingMode (page);
	OUTPUT:
	RETVAL

float
GetTextRise (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetTextRise (page);
	OUTPUT:
	RETVAL

void
GetRGBFill (page)
	PDF::Haru::Page page
	PREINIT:
	HPDF_RGBColor color;
	PPCODE:
	color = HPDF_Page_GetRGBFill (page);
	XPUSHs(sv_2mortal(newSVnv(color.r)));
	XPUSHs(sv_2mortal(newSVnv(color.g)));
	XPUSHs(sv_2mortal(newSVnv(color.b)));

void
GetRGBStroke (page)
	PDF::Haru::Page page
	PREINIT:
	HPDF_RGBColor color;
	PPCODE:
	color = HPDF_Page_GetRGBStroke (page);
	XPUSHs(sv_2mortal(newSVnv(color.r)));
	XPUSHs(sv_2mortal(newSVnv(color.g)));
	XPUSHs(sv_2mortal(newSVnv(color.b)));

void
GetCMYKFill (page)
	PDF::Haru::Page page
	PREINIT:
	HPDF_CMYKColor color;
	PPCODE:
	color = HPDF_Page_GetCMYKFill (page);
	XPUSHs(sv_2mortal(newSVnv(color.c)));
	XPUSHs(sv_2mortal(newSVnv(color.m)));
	XPUSHs(sv_2mortal(newSVnv(color.y)));
	XPUSHs(sv_2mortal(newSVnv(color.k)));

void
GetCMYKStroke (page)
	PDF::Haru::Page page
	PREINIT:
	HPDF_CMYKColor color;
	PPCODE:
	color = HPDF_Page_GetCMYKStroke (page);
	XPUSHs(sv_2mortal(newSVnv(color.c)));
	XPUSHs(sv_2mortal(newSVnv(color.m)));
	XPUSHs(sv_2mortal(newSVnv(color.y)));
	XPUSHs(sv_2mortal(newSVnv(color.k)));

float
GetGrayFill (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetGrayFill (page);
	OUTPUT:
	RETVAL
	
float
GetGrayStroke (page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetGrayStroke (page);
	OUTPUT:
	RETVAL

HPDF_ColorSpace
GetStrokingColorSpace(page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetStrokingColorSpace (page);
	OUTPUT:
	RETVAL

HPDF_ColorSpace
GetFillingColorSpace(page)
	PDF::Haru::Page page
	CODE:
	RETVAL = HPDF_Page_GetFillingColorSpace (page);
	OUTPUT:
	RETVAL

void 
GetTextMatrix (page)
	PDF::Haru::Page   page
	PREINIT:
	HPDF_TransMatrix matrix;
	PPCODE:
	matrix = HPDF_Page_GetTextMatrix  (page);
	XPUSHs(sv_2mortal(newSVnv(matrix.a)));
	XPUSHs(sv_2mortal(newSVnv(matrix.b)));	
	XPUSHs(sv_2mortal(newSVnv(matrix.c)));
	XPUSHs(sv_2mortal(newSVnv(matrix.d)));	
	XPUSHs(sv_2mortal(newSVnv(matrix.x)));
	XPUSHs(sv_2mortal(newSVnv(matrix.y)));	

HPDF_UINT
GetGStateDepth (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_GetGStateDepth  (page);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetSlideShow  (page,type,disp_time,trans_time)
	PDF::Haru::Page            page
	HPDF_TransitionStyle   type
	HPDF_REAL            disp_time
	HPDF_REAL            trans_time
	CODE:
	RETVAL = HPDF_Page_SetSlideShow  (page,type,disp_time,trans_time);
	OUTPUT:
	RETVAL	

HPDF_STATUS
Arc  (page, x, y, ray, ang1, ang2)
	PDF::Haru::Page    page
	HPDF_REAL    x
	HPDF_REAL    y
	HPDF_REAL    ray
	HPDF_REAL    ang1
	HPDF_REAL    ang2
	CODE:
	RETVAL = HPDF_Page_Arc  (page, x, y, ray, ang1, ang2);
	OUTPUT:
	RETVAL

HPDF_STATUS
BeginText(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_BeginText(page);
	OUTPUT:
	RETVAL

HPDF_STATUS
Circle  (page, x, y, ray)
	PDF::Haru::Page     page
	HPDF_REAL     x
	HPDF_REAL     y
	HPDF_REAL     ray
	CODE:
	RETVAL = HPDF_Page_Circle  (page, x, y, ray);
	OUTPUT:
	RETVAL

HPDF_STATUS
Clip  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_Clip  (page);
	OUTPUT:
	RETVAL

HPDF_STATUS
ClosePath  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_ClosePath  (page);
	OUTPUT:
	RETVAL

HPDF_STATUS
ClosePathStroke  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_ClosePathStroke  (page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
ClosePathEofillStroke(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_ClosePathEofillStroke(page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
ClosePathFillStroke(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_ClosePathFillStroke(page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
Concat  (page, a, b, c, d, x, y)
	PDF::Haru::Page    page
	HPDF_REAL    a
	HPDF_REAL    b
	HPDF_REAL    c
	HPDF_REAL    d
	HPDF_REAL    x
	HPDF_REAL    y
	CODE:
	RETVAL = HPDF_Page_Concat  (page, a, b, c, d, x, y);
	OUTPUT:
	RETVAL
			
HPDF_STATUS
CurveTo  (page,  x1, y1, x2, y2, x3, y3)
	PDF::Haru::Page    page
	HPDF_REAL    x1
	HPDF_REAL    y1
	HPDF_REAL    x2
	HPDF_REAL    y2
	HPDF_REAL    x3
	HPDF_REAL    y3
	CODE:
	RETVAL = HPDF_Page_CurveTo  (page,  x1, y1, x2, y2, x3, y3);
	OUTPUT:
	RETVAL

HPDF_STATUS
CurveTo2  (page,  x2, y2, x3, y3)
	PDF::Haru::Page    page
	HPDF_REAL    x2
	HPDF_REAL    y2
	HPDF_REAL    x3
	HPDF_REAL    y3
	CODE:
	RETVAL = HPDF_Page_CurveTo2 (page, x2, y2, x3, y3);
	OUTPUT:
	RETVAL

HPDF_STATUS
CurveTo3  (page,  x1, y1, x3, y3)
	PDF::Haru::Page    page
	HPDF_REAL    x1
	HPDF_REAL    y1
	HPDF_REAL    x3
	HPDF_REAL    y3
	CODE:
	RETVAL = HPDF_Page_CurveTo3  (page,  x1, y1, x3, y3);
	OUTPUT:
	RETVAL

HPDF_STATUS
DrawImage  (page, image, x, y, width, height)
	PDF::Haru::Page    page
	PDF::Haru::Image   image
	HPDF_REAL    x
	HPDF_REAL    y
	HPDF_REAL    width
	HPDF_REAL    height
	CODE:
	RETVAL = HPDF_Page_DrawImage  (page, image, x, y, width, height);
	OUTPUT:
	RETVAL

HPDF_STATUS
Ellipse  (page, x, y, xray, yray)
	PDF::Haru::Page     page
	HPDF_REAL     x
	HPDF_REAL     y
	HPDF_REAL     xray
	HPDF_REAL     yray
	CODE:
	RETVAL = HPDF_Page_Ellipse  (page, x, y, xray, yray);
	OUTPUT:
	RETVAL

HPDF_STATUS
EndPath(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_EndPath(page);
	OUTPUT:
	RETVAL

HPDF_STATUS
EndText(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_EndText(page);
	OUTPUT:
	RETVAL

HPDF_STATUS
Eoclip  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_Eoclip  (page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
Eofill(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_Eofill(page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
EofillStroke(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_EofillStroke(page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
Fill(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_Fill(page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
FillStroke(page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_FillStroke(page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
GRestore  (page)
	PDF::Haru::Page    page
	CODE:
	RETVAL = HPDF_Page_GRestore  (page);
	OUTPUT:
	RETVAL
		
HPDF_STATUS
GSave  (page)
	PDF::Haru::Page    page
	CODE:
	RETVAL = HPDF_Page_GSave  (page);
	OUTPUT:
	RETVAL

HPDF_STATUS
LineTo  (page, x, y)
	PDF::Haru::Page  page
	HPDF_REAL  x
	HPDF_REAL  y
	CODE:
	RETVAL = HPDF_Page_LineTo  (page, x, y);
	OUTPUT:
	RETVAL

HPDF_STATUS
MoveTextPos  (page, x, y)
	PDF::Haru::Page  page
	HPDF_REAL  x
	HPDF_REAL  y
	CODE:
	RETVAL = HPDF_Page_MoveTextPos  (page, x, y);
	OUTPUT:
	RETVAL

HPDF_STATUS
MoveTextPos2  (page, x, y)
	PDF::Haru::Page  page
	HPDF_REAL  x
	HPDF_REAL  y
	CODE:
	RETVAL = HPDF_Page_MoveTextPos2  (page, x, y);
	OUTPUT:
	RETVAL

HPDF_STATUS
MoveTo  (page, x, y)
	PDF::Haru::Page  page
	HPDF_REAL  x
	HPDF_REAL  y
	CODE:
	RETVAL = HPDF_Page_MoveTo  (page, x, y);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
MoveToNextLine  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_MoveToNextLine  (page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
Rectangle  (page, x, y, width, height)
	PDF::Haru::Page  page
	HPDF_REAL  x
	HPDF_REAL  y
	HPDF_REAL  width
	HPDF_REAL  height
	CODE:
	RETVAL = HPDF_Page_Rectangle  (page, x, y, width, height);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetCharSpace  (page, value)
	PDF::Haru::Page  page
	HPDF_REAL  value
	CODE:
	RETVAL = HPDF_Page_SetCharSpace  (page, value);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetCMYKFill  (page, c, m, y, k)
	PDF::Haru::Page  page
	HPDF_REAL  c
	HPDF_REAL  m
	HPDF_REAL  y
	HPDF_REAL  k
	CODE:
	RETVAL = HPDF_Page_SetCMYKFill  (page, c, m, y, k);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetCMYKStroke  (page, c, m, y, k)
	PDF::Haru::Page  page
	HPDF_REAL  c
	HPDF_REAL  m
	HPDF_REAL  y
	HPDF_REAL  k
	CODE:
	RETVAL = HPDF_Page_SetCMYKStroke (page, c, m, y, k);
	OUTPUT:
	RETVAL
				
HPDF_STATUS
SetDash  (page,dash_ptn,phase)
	PDF::Haru::Page page
	SV * dash_ptn
	HPDF_UINT  phase
	PREINIT:
	HPDF_UINT16  ptn[8];
	int num_elem;
	int n;
	CODE:
	if ((!SvROK(dash_ptn)) || (SvTYPE(SvRV(dash_ptn)) != SVt_PVAV)) {
	   croak("not an array reference");
	}
    num_elem = av_len((AV *)SvRV(dash_ptn));
    if(num_elem > 7) { num_elem = 7; }
	for (n = 0; n <= num_elem; n++) {
		ptn[n] = SvIV(*av_fetch((AV *)SvRV(dash_ptn), n, 0));
	}
	RETVAL = HPDF_Page_SetDash  (page, ptn, num_elem + 1, phase);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetExtGState  (page, ext_gstate);
	PDF::Haru::Page        page
	PDF::Haru::ExtGState   ext_gstate
	CODE:
	RETVAL = HPDF_Page_SetExtGState  (page, ext_gstate);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetGrayFill  (page, gray)
	PDF::Haru::Page   page
	HPDF_REAL   gray
	CODE:
	RETVAL = HPDF_Page_SetGrayFill  (page, gray);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetGrayStroke  (page, gray)
	PDF::Haru::Page   page
	HPDF_REAL   gray
	CODE:
	RETVAL = HPDF_Page_SetGrayStroke  (page, gray);
	OUTPUT:
	RETVAL	

HPDF_STATUS
SetFontAndSize  (page, font, size)
	PDF::Haru::Page  page
	PDF::Haru::Font  font
	HPDF_REAL  size
	CODE:
	RETVAL = HPDF_Page_SetFontAndSize  (page, font, size);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetHorizontalScalling  (page, value)
	PDF::Haru::Page  page
	HPDF_REAL  value
	CODE:
	RETVAL = HPDF_Page_SetHorizontalScalling (page, value);
	OUTPUT:
	RETVAL	

HPDF_STATUS
SetLineCap  (page,line_cap)
	PDF::Haru::Page     page
	HPDF_LineCap  line_cap
	CODE:
	RETVAL = HPDF_Page_SetLineCap  (page,line_cap);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetLineJoin  (page, line_join)
	PDF::Haru::Page      page
	HPDF_LineJoin  line_join
	CODE:
	RETVAL = HPDF_Page_SetLineJoin  (page, line_join);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetLineWidth  (page, line_width)
	PDF::Haru::Page  page
	HPDF_REAL  line_width
	CODE:
	RETVAL = HPDF_Page_SetLineWidth  (page, line_width);
	OUTPUT:
	RETVAL		

HPDF_STATUS
SetMiterLimit  (page,miter_limit)
	PDF::Haru::Page  page
	HPDF_REAL  miter_limit
	CODE:
	RETVAL = HPDF_Page_SetMiterLimit  (page,miter_limit);
	OUTPUT:
	RETVAL	
	
HPDF_STATUS
SetRGBFill  (page, r, g, b)
	PDF::Haru::Page  page
	HPDF_REAL  r
	HPDF_REAL  g
	HPDF_REAL  b
	CODE:
	RETVAL = HPDF_Page_SetRGBFill  (page, r, g, b);
	OUTPUT:
	RETVAL						

HPDF_STATUS
SetRGBStroke  (page, r, g, b)
	PDF::Haru::Page  page
	HPDF_REAL  r
	HPDF_REAL  g
	HPDF_REAL  b
	CODE:
	RETVAL = HPDF_Page_SetRGBStroke  (page, r, g, b);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetTextLeading  (page, value)
	PDF::Haru::Page  page
	HPDF_REAL  value
	CODE:
	RETVAL = HPDF_Page_SetTextLeading (page, value);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetTextMatrix  (page,a,b,c,d,x,y)
	PDF::Haru::Page         page
	HPDF_REAL    a
	HPDF_REAL    b
	HPDF_REAL    c
	HPDF_REAL    d
	HPDF_REAL    x
	HPDF_REAL    y
	CODE:
	RETVAL = HPDF_Page_SetTextMatrix  (page,a,b,c,d,x,y);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetTextRenderingMode  (page, mode)
	PDF::Haru::Page               page
	HPDF_TextRenderingMode  mode
	CODE:
	RETVAL = HPDF_Page_SetTextRenderingMode  (page, mode);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetTextRise  (page, value)
	PDF::Haru::Page page
	float  value
	CODE:
	RETVAL = HPDF_Page_SetTextRise(page,value);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
SetWordSpace  (page, value)
	PDF::Haru::Page  page
	HPDF_REAL  value
	CODE:
	RETVAL = HPDF_Page_SetWordSpace  (page, value);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
ShowText  (page, text)
	PDF::Haru::Page    page
	char  *text
	CODE:
	RETVAL = HPDF_Page_ShowText  (page, text);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
ShowTextNextLine  (page, text)
	PDF::Haru::Page    page
	char  *text
	CODE:
	RETVAL = HPDF_Page_ShowTextNextLine  (page, text);
	OUTPUT:
	RETVAL				

HPDF_STATUS
ShowTextNextLineEx  (page,  word_space, char_space, text)
	PDF::Haru::Page    page
	HPDF_REAL    word_space
	HPDF_REAL    char_space
	char  *text
	CODE:
	RETVAL = HPDF_Page_ShowTextNextLineEx  (page,  word_space, char_space, text);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
Stroke  (page)
	PDF::Haru::Page  page
	CODE:
	RETVAL = HPDF_Page_Stroke  (page);
	OUTPUT:
	RETVAL
	
HPDF_STATUS
TextOut  (page, xpos, ypos, text)
	PDF::Haru::Page    page
	HPDF_REAL    xpos
	HPDF_REAL    ypos
	char  *text
	CODE:
	RETVAL = HPDF_Page_TextOut  (page, xpos, ypos, text);
	OUTPUT:
	RETVAL

HPDF_STATUS
TextRect  (page, left, top, right, bottom, text, align)
	PDF::Haru::Page            page
	HPDF_REAL            left
	HPDF_REAL            top
	HPDF_REAL            right
	HPDF_REAL            bottom
	char          *text
	HPDF_TextAlignment   align
	CODE:
	RETVAL = HPDF_Page_TextRect  (page, left,  top, right, bottom, text, align, NULL);
	OUTPUT:
	RETVAL	

MODULE = PDF::Haru		PACKAGE = PDF::Haru::Font

const char * 
GetFontName (font)
	PDF::Haru::Font font
	CODE:
	RETVAL = HPDF_Font_GetFontName (font);
	OUTPUT:
	RETVAL	

const char * 
GetEncodingName (font)
	PDF::Haru::Font font
	CODE:
	RETVAL = HPDF_Font_GetEncodingName (font);
	OUTPUT:
	RETVAL	

HPDF_INT 
GetUnicodeWidth (font, code)
	PDF::Haru::Font font
	HPDF_UINT16 code
	CODE:
	RETVAL = HPDF_Font_GetUnicodeWidth (font, code);
	OUTPUT:
	RETVAL	

void
GetBBox (font);
	PDF::Haru::Font font
	PREINIT:
	HPDF_Box box;
	PPCODE:
	box = HPDF_Font_GetBBox (font);
	XPUSHs(sv_2mortal(newSVnv(box.left)));
	XPUSHs(sv_2mortal(newSVnv(box.bottom)));
	XPUSHs(sv_2mortal(newSVnv(box.right)));
	XPUSHs(sv_2mortal(newSVnv(box.top)));
	
HPDF_INT 
GetAscent (font)
	PDF::Haru::Font font
	CODE:
	RETVAL = HPDF_Font_GetAscent (font);
	OUTPUT:
	RETVAL	

HPDF_INT 
GetDescent (font)
	PDF::Haru::Font font
	CODE:
	RETVAL = HPDF_Font_GetDescent (font);
	OUTPUT:
	RETVAL	
	
HPDF_UINT 
GetXHeight (font)
	PDF::Haru::Font font
	CODE:
	RETVAL = HPDF_Font_GetXHeight (font);
	OUTPUT:
	RETVAL

HPDF_UINT 
GetCapHeight (font)
	PDF::Haru::Font font
	CODE:
	RETVAL = HPDF_Font_GetCapHeight (font);
	OUTPUT:
	RETVAL

void 
TextWidth  (font,text,len);
	PDF::Haru::Font          font
	const char   *text
	HPDF_UINT          len
	PREINIT:
	HPDF_TextWidth textwidth;
	PPCODE:
	textwidth = HPDF_Font_TextWidth  (font,(const unsigned char*)text,len);
	XPUSHs(sv_2mortal(newSViv(textwidth.numchars)));
	XPUSHs(sv_2mortal(newSViv(textwidth.numwords)));
	XPUSHs(sv_2mortal(newSViv(textwidth.width)));
	XPUSHs(sv_2mortal(newSViv(textwidth.numspace)));	

HPDF_UINT 
MeasureText (font,text,len,width,font_size,char_space,word_space,wordwrap);
	PDF::Haru::Font          font
	const char   *text
	HPDF_UINT          len
	HPDF_REAL          width
	HPDF_REAL          font_size
	HPDF_REAL          char_space
	HPDF_REAL          word_space
	HPDF_BOOL          wordwrap
	CODE:
	RETVAL = HPDF_Font_MeasureText (font,(const unsigned char*)text,len,width,font_size,char_space,word_space,wordwrap,NULL);
	OUTPUT:
	RETVAL	

MODULE = PDF::Haru		PACKAGE = PDF::Haru::Annotation

HPDF_STATUS
LinkAnnot_SetHighlightMode (annot,mode)
	PDF::Haru::Annotation         annot
	HPDF_AnnotHighlightMode mode
	CODE:
	RETVAL = HPDF_LinkAnnot_SetHighlightMode (annot,mode);
	OUTPUT:
	RETVAL

HPDF_STATUS
LinkAnnot_SetBorderStyle  (annot,width,dash_on,dash_off)
	PDF::Haru::Annotation  annot
	HPDF_REAL        width
	HPDF_UINT16      dash_on
	HPDF_UINT16      dash_off
	CODE:
	RETVAL = HPDF_LinkAnnot_SetBorderStyle (annot,width,dash_on,dash_off);
	OUTPUT:
	RETVAL

HPDF_STATUS 
TextAnnot_SetIcon  (annot,icon)
	PDF::Haru::Annotation   annot
	HPDF_AnnotIcon    icon
	CODE:
	RETVAL = HPDF_TextAnnot_SetIcon  (annot,icon);
	OUTPUT:
	RETVAL

HPDF_STATUS
TextAnnot_SetOpened (annot,open)
	PDF::Haru::Annotation annot
	HPDF_BOOL       open
	CODE:
	RETVAL = HPDF_TextAnnot_SetOpened (annot,open);
	OUTPUT:
	RETVAL

MODULE = PDF::Haru		PACKAGE = PDF::Haru::Outline

HPDF_STATUS 
SetOpened  (outline,opened);
	PDF::Haru::Outline  outline
	HPDF_BOOL     opened
	CODE:
	RETVAL = HPDF_Outline_SetOpened (outline,opened);
	OUTPUT:
	RETVAL
	
HPDF_STATUS 
SetDestination  (outline,dst);
	PDF::Haru::Outline  outline
	PDF::Haru::Destination     dst
	CODE:
	RETVAL = HPDF_Outline_SetDestination (outline,dst);
	OUTPUT:
	RETVAL
	
MODULE = PDF::Haru		PACKAGE = PDF::Haru::Destination

HPDF_STATUS 
SetXYZ (dst,left,top,zoom)
	PDF::Haru::Destination  dst
	HPDF_REAL         left
	HPDF_REAL         top
	HPDF_REAL         zoom
	CODE:
	RETVAL = HPDF_Destination_SetXYZ (dst,left,top,zoom);
	OUTPUT:
	RETVAL	

HPDF_STATUS 
SetFit (dst)
	PDF::Haru::Destination  dst
	CODE:
	RETVAL = HPDF_Destination_SetFit (dst);
	OUTPUT:
	RETVAL	

HPDF_STATUS 
SetFitH (dst,top)
	PDF::Haru::Destination  dst
	HPDF_REAL         top
	CODE:
	RETVAL = HPDF_Destination_SetFitH (dst,top);
	OUTPUT:
	RETVAL	

HPDF_STATUS 
SetFitV  (dst,left)
	PDF::Haru::Destination  dst
	HPDF_REAL         left
	CODE:
	RETVAL = HPDF_Destination_SetFitV  (dst,left);
	OUTPUT:
	RETVAL	
	
HPDF_STATUS 
SetFitR  (dst,left,bottom,right,top)
	PDF::Haru::Destination  dst
	HPDF_REAL         left
	HPDF_REAL         bottom
	HPDF_REAL         right
	HPDF_REAL         top
	CODE:
	RETVAL = HPDF_Destination_SetFitR  (dst,left,bottom,right,top);
	OUTPUT:
	RETVAL		

HPDF_STATUS 
SetFitB (dst)
	PDF::Haru::Destination  dst
	CODE:
	RETVAL = HPDF_Destination_SetFitB (dst);
	OUTPUT:
	RETVAL		

HPDF_STATUS 
SetFitBH  (dst,top);
	PDF::Haru::Destination  dst
	HPDF_REAL         top
	CODE:
	RETVAL = HPDF_Destination_SetFitBH  (dst,top);
	OUTPUT:
	RETVAL	

HPDF_STATUS 
SetFitBV  (dst, top)
	PDF::Haru::Destination  dst
	HPDF_REAL         top
	CODE:
	RETVAL = HPDF_Destination_SetFitBV  (dst, top);
	OUTPUT:
	RETVAL	

MODULE = PDF::Haru		PACKAGE = PDF::Haru::Image

void
HPDF_Image_GetSize (image)
	PDF::Haru::Image image
	PREINIT:
	HPDF_Point point;
	PPCODE:
	point = HPDF_Image_GetSize (image);
	XPUSHs(sv_2mortal(newSVnv(point.x)));
	XPUSHs(sv_2mortal(newSVnv(point.y)));	

HPDF_UINT
GetWidth (image)
	PDF::Haru::Image  image
	CODE:
	RETVAL = HPDF_Image_GetWidth (image);
	OUTPUT:
	RETVAL

HPDF_UINT
GetHeight (image)
	PDF::Haru::Image  image
	CODE:
	RETVAL = HPDF_Image_GetHeight (image);
	OUTPUT:
	RETVAL

HPDF_UINT
GetBitsPerComponent (image)
	PDF::Haru::Image  image
	CODE:
	RETVAL = HPDF_Image_GetBitsPerComponent (image);
	OUTPUT:
	RETVAL

const char*
GetColorSpace(image)
	PDF::Haru::Image  image
	CODE:
	RETVAL = HPDF_Image_GetColorSpace(image);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetColorMask (image, rmin, rmax, gmin, gmax, bmin, bmax)
	PDF::Haru::Image   image
	HPDF_UINT    rmin
	HPDF_UINT    rmax
	HPDF_UINT    gmin
	HPDF_UINT    gmax
	HPDF_UINT    bmin
	HPDF_UINT    bmax
	CODE:
	RETVAL = HPDF_Image_SetColorMask (image, rmin, rmax, gmin, gmax, bmin, bmax);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetMaskImage  (image, mask_image)
	PDF::Haru::Image   image
	PDF::Haru::Image   mask_image
	CODE:
	RETVAL = HPDF_Image_SetMaskImage  (image, mask_image);
	OUTPUT:
	RETVAL

MODULE = PDF::Haru		PACKAGE = PDF::Haru::ExtGState

HPDF_STATUS
SetAlphaStroke  (ext_gstate, value)
	PDF::Haru::ExtGState   ext_gstate
	HPDF_REAL        value
	CODE:
	RETVAL = HPDF_ExtGState_SetAlphaStroke  (ext_gstate, value);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetAlphaFill  (ext_gstate, value)
	PDF::Haru::ExtGState   ext_gstate
	HPDF_REAL        value
	CODE:
	RETVAL = HPDF_ExtGState_SetAlphaFill  (ext_gstate, value);
	OUTPUT:
	RETVAL

HPDF_STATUS
SetBlendMode  (ext_gstate, bmode)
	PDF::Haru::ExtGState   ext_gstate
	HPDF_BlendMode   bmode
	CODE:
	RETVAL = HPDF_ExtGState_SetBlendMode  (ext_gstate, bmode);
	OUTPUT:
	RETVAL