mirror of
https://github.com/ONLYOFFICE/core.git
synced 2026-04-07 13:55:33 +08:00
Fix bug with hatch brush (support saving RGBA data in CBgraFrame)
This commit is contained in:
@ -443,7 +443,7 @@ void CxImage::Bitfield2RGB(uint8_t *src, uint32_t redmask, uint32_t greenmask, u
|
||||
* \param bFlipImage: tune this parameter if the image is upsidedown
|
||||
* \return true if everything is ok
|
||||
*/
|
||||
bool CxImage::CreateFromArray(uint8_t* pArray,uint32_t dwWidth,uint32_t dwHeight,uint32_t dwBitsperpixel, uint32_t dwBytesperline, bool bFlipImage)
|
||||
bool CxImage::CreateFromArray(uint8_t* pArray,uint32_t dwWidth,uint32_t dwHeight,uint32_t dwBitsperpixel, uint32_t dwBytesperline, bool bFlipImage, bool isBGRA)
|
||||
{
|
||||
if (pArray==NULL) return false;
|
||||
if (!((dwBitsperpixel==1)||(dwBitsperpixel==4)||(dwBitsperpixel==8)||
|
||||
@ -459,14 +459,18 @@ bool CxImage::CreateFromArray(uint8_t* pArray,uint32_t dwWidth,uint32_t dwHeight
|
||||
|
||||
uint8_t *dst,*src;
|
||||
|
||||
unsigned char ShiftR = isBGRA ? 2 : 0;
|
||||
unsigned char ShiftG = 1;
|
||||
unsigned char ShiftB = isBGRA ? 0 : 2;
|
||||
|
||||
for (uint32_t y = 0; y<dwHeight; y++) {
|
||||
dst = info.pImage + (bFlipImage?(dwHeight-1-y):y) * info.dwEffWidth;
|
||||
src = pArray + y * dwBytesperline;
|
||||
if (dwBitsperpixel==32){
|
||||
for(uint32_t x=0;x<dwWidth;x++){
|
||||
*dst++=src[0];
|
||||
*dst++=src[1];
|
||||
*dst++=src[2];
|
||||
*dst++=src[ShiftB];
|
||||
*dst++=src[ShiftG];
|
||||
*dst++=src[ShiftR];
|
||||
#if CXIMAGE_SUPPORT_ALPHA
|
||||
AlphaSet(x,(bFlipImage?(dwHeight-1-y):y),src[3]);
|
||||
#endif //CXIMAGE_SUPPORT_ALPHA
|
||||
|
||||
@ -278,7 +278,7 @@ public:
|
||||
void Clear(uint8_t bval=0);
|
||||
void Copy(const CxImage &src, bool copypixels = true, bool copyselection = true, bool copyalpha = true);
|
||||
bool Transfer(CxImage &from, bool bTransferFrames = true);
|
||||
bool CreateFromArray(uint8_t* pArray,uint32_t dwWidth,uint32_t dwHeight,uint32_t dwBitsperpixel, uint32_t dwBytesperline, bool bFlipImage);
|
||||
bool CreateFromArray(uint8_t* pArray,uint32_t dwWidth,uint32_t dwHeight,uint32_t dwBitsperpixel, uint32_t dwBytesperline, bool bFlipImage, bool isBGRA = true);
|
||||
bool CreateFromMatrix(uint8_t** ppMatrix,uint32_t dwWidth,uint32_t dwHeight,uint32_t dwBitsperpixel, uint32_t dwBytesperline, bool bFlipImage);
|
||||
void FreeMemory(void* memblock);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user