#include "HGOfd.h" #include "HGOfdImpl.hpp" HGResult HGAPI HGImgFmt_CheckOfdFile(const HGChar* fileName, HGBool* isOfd) { if (NULL == fileName || NULL == isOfd) { return HGBASE_ERR_INVALIDARG; } *isOfd = HGFALSE; HGOfdReader reader = NULL; HGImgFmt_OpenOfdReader(fileName, &reader); if (NULL != reader) { *isOfd = HGTRUE; HGImgFmt_CloseOfdReader(reader); } return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_OpenOfdReader(const HGChar* fileName, HGOfdReader* reader) { if (NULL == fileName || NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGOfdReaderImpl* ofdReaderImpl = new HGOfdReaderImpl; HGResult ret = ofdReaderImpl->Open(fileName); if (HGBASE_ERR_OK != ret) { delete ofdReaderImpl; return ret; } *reader = (HGOfdReader)ofdReaderImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_CloseOfdReader(HGOfdReader reader) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGOfdReaderImpl* ofdReaderImpl = (HGOfdReaderImpl *)reader; HGResult ret = ofdReaderImpl->Close(); if (HGBASE_ERR_OK != ret) { return ret; } delete ofdReaderImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_GetOfdPageCount(HGOfdReader reader, HGUInt* count) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGOfdReaderImpl* ofdReaderImpl = (HGOfdReaderImpl*)reader; return ofdReaderImpl->GetPageCount(count); } HGResult HGAPI HGImgFmt_GetOfdPageInfo(HGOfdReader reader, HGUInt page, HGOfdPageInfo* info) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGOfdReaderImpl* ofdReaderImpl = (HGOfdReaderImpl*)reader; return ofdReaderImpl->GetPageInfo(page, info); } HGResult HGAPI HGImgFmt_LoadImageFromOfdReader(HGOfdReader reader, HGUInt page, HGFloat xScale, HGFloat yScale, HGUInt imgType, HGUInt imgOrigin, HGImage* image) { if (NULL == reader) { return HGBASE_ERR_INVALIDARG; } HGOfdReaderImpl* ofdReaderImpl = (HGOfdReaderImpl*)reader; return ofdReaderImpl->LoadImage(page, xScale, yScale, imgType, imgOrigin, image); } HGResult HGAPI HGImgFmt_LoadOfdImage(const HGChar* fileName, HGOfdPageInfo* info, HGUInt imgType, HGUInt imgOrigin, HGImage* image) { HGOfdReader reader = NULL; HGResult ret = HGImgFmt_OpenOfdReader(fileName, &reader); if (HGBASE_ERR_OK != ret) { return ret; } if (HGBASE_ERR_OK == ret && NULL != info) ret = HGImgFmt_GetOfdPageInfo(reader, 0, info); if (HGBASE_ERR_OK == ret && NULL != image) ret = HGImgFmt_LoadImageFromOfdReader(reader, 0, 1.0f, 1.0f, imgType, imgOrigin, image); HGImgFmt_CloseOfdReader(reader); return ret; } HGResult HGAPI HGImgFmt_OpenOfdImageWriter(const HGChar* fileName, HGOfdImageWriter* writer) { if (NULL == fileName || NULL == writer) { return HGBASE_ERR_INVALIDARG; } HGOfdImageWriterImpl* ofdImageWriterImpl = new HGOfdImageWriterImpl; HGResult ret = ofdImageWriterImpl->Open(fileName); if (HGBASE_ERR_OK != ret) { delete ofdImageWriterImpl; return ret; } *writer = (HGOfdImageWriter)ofdImageWriterImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_CloseOfdImageWriter(HGOfdImageWriter writer) { if (NULL == writer) { return HGBASE_ERR_INVALIDARG; } HGOfdImageWriterImpl* ofdImageWriterImpl = (HGOfdImageWriterImpl*)writer; HGResult ret = ofdImageWriterImpl->Close(); if (HGBASE_ERR_OK != ret) { return ret; } delete ofdImageWriterImpl; return HGBASE_ERR_OK; } HGResult HGAPI HGImgFmt_SaveJpegImageToOfdImageWriter(HGOfdImageWriter writer, HGImage image, const HGJpegSaveInfo* info) { if (NULL == writer) { return HGBASE_ERR_INVALIDARG; } HGOfdImageWriterImpl* ofdImageWriterImpl = (HGOfdImageWriterImpl*)writer; return ofdImageWriterImpl->SaveJpegImage(image, info); } HGResult HGAPI HGImgFmt_SaveOfdJpegImage(HGImage image, const HGJpegSaveInfo* info, const HGChar* fileName) { HGOfdImageWriter writer = NULL; HGResult ret = HGImgFmt_OpenOfdImageWriter(fileName, &writer); if (HGBASE_ERR_OK != ret) { return ret; } ret = HGImgFmt_SaveJpegImageToOfdImageWriter(writer, image, info); HGImgFmt_CloseOfdImageWriter(writer); return ret; }