From d7f0b1b5ec5291387851bf3a8af2f5cfdd42396b Mon Sep 17 00:00:00 2001 From: "HuYingzhuo(hugo/hyzboy)" Date: Wed, 22 Jun 2022 11:36:20 +0800 Subject: [PATCH] fixed a bug that The number of pixels in a line of a character bitmap is incorrectly calculated --- src/SceneGraph/font/FontSourceWin.cpp | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/SceneGraph/font/FontSourceWin.cpp b/src/SceneGraph/font/FontSourceWin.cpp index e438b9d7..22891e41 100644 --- a/src/SceneGraph/font/FontSourceWin.cpp +++ b/src/SceneGraph/font/FontSourceWin.cpp @@ -7,12 +7,14 @@ namespace hgl { namespace { - void Convert8BitGrey(uint8 *dst,int dst_w,uint8 *src,int src_w,int src_h,int src_line_bytes) + void Convert8BitGrey(uint8 *dst,int dst_w,uint8 *src,int src_w,int src_h) { int pos; uint8 *sp=src,*p; uint8 *tp; + const uint src_line_bytes=hgl_align(src_w,4); //每行字节是32位对齐,这个已测试正常 + while(src_h--) { pos=src_w; @@ -32,12 +34,14 @@ namespace hgl } } - void ConvertBitmap(uint8 *dst,int dst_w,uint8 *src,int src_w,int src_h,int src_line_bytes) + void ConvertBitmap(uint8 *dst,int dst_w,uint8 *src,int src_w,int src_h) { uint8 *sp=src,*p; uint8 *tp; uint8 bit; + const uint src_line_bytes=hgl_align(src_w>>3,4); //每行字节是32位对齐,这个未测试 + while(src_h--) { p=sp; @@ -130,9 +134,9 @@ namespace hgl bmp->data=hgl_zero_new(bmp->metrics_info.w*bmp->metrics_info.h); if(ggo==GGO_GRAY8_BITMAP) - Convert8BitGrey (bmp->data,bmp->metrics_info.w,buffer,gm.gmBlackBoxX,gm.gmBlackBoxY,size/gm.gmBlackBoxY); + Convert8BitGrey (bmp->data,bmp->metrics_info.w,buffer,gm.gmBlackBoxX,gm.gmBlackBoxY); else - ConvertBitmap (bmp->data,bmp->metrics_info.w,buffer,gm.gmBlackBoxX,gm.gmBlackBoxY,size/gm.gmBlackBoxY); + ConvertBitmap (bmp->data,bmp->metrics_info.w,buffer,gm.gmBlackBoxX,gm.gmBlackBoxY); return(true); }