【笔记】灰度文字宽度计算

灰度文字宽度计算

/**
 * @brief 得到灰度文字的宽度 
 * 
 * @param data 文字数据
 * @param dot_w 文字宽度     例如:48x48大小的文字 dot_w = 48
 * @param dot_h 文字高度 	例如:48x48大小的文字 dot_h = 48
 * @param gray 取值: 1 / 2 / 4
 * @return int 实际文字宽度
 */
int _get_font_width(uint8_t *data ,uint16_t dot_w , uint16_t dot_h , uint16_t gray)
{
	uint16_t byte_w , i ;
	int j  ,len ;
	uint8_t tmp = 0;

	byte_w = ((dot_w + 7) >> 3) * gray;
	
	for(j = byte_w-1;j >= 0 ; j--)
	{
		tmp = 0;
		for(i = 0 ; i < dot_h ; i++)
		{
			tmp |= data[i*byte_w + j];
		}
		if(0 != tmp)
		{
			for(i = 0 ; i < 8 ;i++){
				if((tmp >> i)&0x01){
					break;
				}
			}

            len = ((j / gray) * 8) + ((j%gray)*8+(8-i))/gray;       
            // 
            if(len >= dot_h){
                continue;
            }

			return len ;
		}
	}

	return dot_w;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值