code_app/imgfmt/HGPdf.cpp

140 lines
3.0 KiB
C++
Raw Normal View History

2022-05-03 10:25:52 +00:00
#include "HGPdf.h"
2022-05-12 08:55:22 +00:00
#include "HGPdfImpl.hpp"
2022-05-03 10:25:52 +00:00
HGResult HGAPI HGImgFmt_CheckPdfFile(const HGChar* fileName, HGBool* isPdf)
{
if (NULL == fileName || NULL == isPdf)
{
return HGBASE_ERR_INVALIDARG;
}
*isPdf = HGFALSE;
HGPdfReader reader = NULL;
HGImgFmt_OpenPdfReader(fileName, &reader);
if (NULL != reader)
{
*isPdf = HGTRUE;
HGImgFmt_ClosePdfReader(reader);
}
return HGBASE_ERR_OK;
}
HGResult HGAPI HGImgFmt_OpenPdfReader(const HGChar* fileName, HGPdfReader* reader)
{
2022-05-12 08:55:22 +00:00
if (NULL == reader)
2022-05-03 10:25:52 +00:00
{
return HGBASE_ERR_INVALIDARG;
}
2022-05-12 08:55:22 +00:00
HGPdfReaderImpl* pdfReaderImpl = new HGPdfReaderImpl;
HGResult ret = pdfReaderImpl->Open(fileName);
if (HGBASE_ERR_OK != ret)
2022-05-03 10:25:52 +00:00
{
2022-05-12 08:55:22 +00:00
delete pdfReaderImpl;
return ret;
2022-05-03 10:25:52 +00:00
}
2022-05-12 08:55:22 +00:00
*reader = (HGPdfReader)pdfReaderImpl;
return HGBASE_ERR_OK;
2022-05-03 10:25:52 +00:00
}
HGResult HGAPI HGImgFmt_ClosePdfReader(HGPdfReader reader)
{
if (NULL == reader)
{
return HGBASE_ERR_INVALIDARG;
}
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
2022-05-12 08:55:22 +00:00
HGResult ret = pdfReaderImpl->Close();
if (HGBASE_ERR_OK != ret)
{
return ret;
}
2022-05-03 10:25:52 +00:00
delete pdfReaderImpl;
return HGBASE_ERR_OK;
}
HGResult HGAPI HGImgFmt_GetPdfPageCount(HGPdfReader reader, HGUInt* count)
{
2022-05-12 08:55:22 +00:00
if (NULL == reader)
2022-05-03 10:25:52 +00:00
{
return HGBASE_ERR_INVALIDARG;
}
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
2022-05-12 08:55:22 +00:00
return pdfReaderImpl->GetPageCount(count);
2022-05-03 10:25:52 +00:00
}
HGResult HGAPI HGImgFmt_GetPdfPageInfo(HGPdfReader reader, HGUInt page, HGPdfPageInfo* info)
{
2022-05-12 08:55:22 +00:00
if (NULL == reader)
2022-05-03 10:25:52 +00:00
{
return HGBASE_ERR_INVALIDARG;
}
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
2022-05-12 08:55:22 +00:00
return pdfReaderImpl->GetPageInfo(page, info);
2022-05-03 10:25:52 +00:00
}
HGResult HGAPI HGImgFmt_LoadImageFromPdfReader(HGPdfReader reader, HGUInt page, HGFloat xScale, HGFloat yScale,
HGUInt imgType, HGUInt imgOrigin, HGImage* image)
{
2022-05-12 08:55:22 +00:00
if (NULL == reader)
2022-05-03 10:25:52 +00:00
{
return HGBASE_ERR_INVALIDARG;
}
HGPdfReaderImpl* pdfReaderImpl = (HGPdfReaderImpl*)reader;
2022-05-12 08:55:22 +00:00
return pdfReaderImpl->LoadImage(page, xScale, yScale, imgType, imgOrigin, image);
2022-05-03 10:25:52 +00:00
}
HGResult HGAPI HGImgFmt_OpenPdfImageWriter(const HGChar* fileName, HGPdfImageWriter* writer)
{
2022-05-12 08:55:22 +00:00
if (NULL == writer)
2022-05-03 10:25:52 +00:00
{
return HGBASE_ERR_INVALIDARG;
}
2022-05-12 08:55:22 +00:00
HGPdfImageWriterImpl* pdfImageWriterImpl = new HGPdfImageWriterImpl;
HGResult ret = pdfImageWriterImpl->Open(fileName);
if (HGBASE_ERR_OK != ret)
2022-05-03 10:25:52 +00:00
{
2022-05-12 08:55:22 +00:00
delete pdfImageWriterImpl;
return ret;
2022-05-03 10:25:52 +00:00
}
*writer = (HGPdfImageWriter)pdfImageWriterImpl;
return HGBASE_ERR_OK;
}
HGResult HGAPI HGImgFmt_ClosePdfImageWriter(HGPdfImageWriter writer)
{
if (NULL == writer)
{
return HGBASE_ERR_INVALIDARG;
}
HGPdfImageWriterImpl* pdfImageWriterImpl = (HGPdfImageWriterImpl*)writer;
2022-05-12 08:55:22 +00:00
HGResult ret = pdfImageWriterImpl->Close();
if (HGBASE_ERR_OK != ret)
{
return ret;
}
2022-05-03 10:25:52 +00:00
delete pdfImageWriterImpl;
return HGBASE_ERR_OK;
}
HGResult HGAPI HGImgFmt_SaveJpegImageToPdfImageWriter(HGPdfImageWriter writer, HGImage image, const HGJpegSaveInfo* info, HGUInt quality)
{
2022-05-12 08:55:22 +00:00
if (NULL == writer)
2022-05-03 10:25:52 +00:00
{
return HGBASE_ERR_INVALIDARG;
}
HGPdfImageWriterImpl* pdfImageWriterImpl = (HGPdfImageWriterImpl*)writer;
2022-05-12 08:55:22 +00:00
return pdfImageWriterImpl->SaveJpegImage(image, info, quality);
2022-05-03 10:25:52 +00:00
}