finish CKBitmapData writer.

- finish spec fmt image writer and raw bitmap writer.
- fix a possible fatal issue in ReadBuffer(). return nullptr simply rather than allocate a blank buf. otherwise the process of use nullptr to check result will be broken.
- add CanSaveAlpha() method in CKBitmapHandler.
This commit is contained in:
2023-09-29 23:09:01 +08:00
parent 1575186c69
commit 3195a9682f
5 changed files with 195 additions and 9 deletions

View File

@ -256,6 +256,10 @@ namespace LibCmo::CK2::DataHandlers {
});
}
bool CKBitmapBMPHandler::CanSaveAlpha() {
return false;
}
#pragma endregion
#pragma region CKBitmapTGAHandler
@ -293,6 +297,10 @@ namespace LibCmo::CK2::DataHandlers {
});
}
bool CKBitmapTGAHandler::CanSaveAlpha() {
return true;
}
#pragma endregion
#pragma region General Getter Freer

View File

@ -91,7 +91,11 @@ namespace LibCmo::CK2::DataHandlers {
@see SaveFile
*/
virtual CKDWORD SaveMemory(void* memory, const VxMath::VxImageDescEx* write_image, const CKBitmapProperties& codec_param) = 0;
/**
* @brief Check whether this bitmap handler can save alpha data.
* @return True if this bitmap handler can save alpha data.
*/
virtual bool CanSaveAlpha() = 0;
};
class CKBitmapBMPHandler : public CKBitmapHandler {
@ -106,6 +110,7 @@ namespace LibCmo::CK2::DataHandlers {
virtual bool ReadMemory(const void* memory, CKDWORD size, VxMath::VxImageDescEx* read_image) override;
virtual bool SaveFile(CKSTRING u8filename, const VxMath::VxImageDescEx* write_image, const CKBitmapProperties& codec_param) override;
virtual CKDWORD SaveMemory(void* memory, const VxMath::VxImageDescEx* write_image, const CKBitmapProperties& codec_param) override;
virtual bool CanSaveAlpha() override;
};
@ -121,6 +126,7 @@ namespace LibCmo::CK2::DataHandlers {
virtual bool ReadMemory(const void* memory, CKDWORD size, VxMath::VxImageDescEx* read_image) override;
virtual bool SaveFile(CKSTRING u8filename, const VxMath::VxImageDescEx* write_image, const CKBitmapProperties& codec_param) override;
virtual CKDWORD SaveMemory(void* memory, const VxMath::VxImageDescEx* write_image, const CKBitmapProperties& codec_param) override;
virtual bool CanSaveAlpha() override;
};