当前位置: 首页>>代码示例>>C++>>正文


C++ StreamBuffer::Append方法代码示例

本文整理汇总了C++中StreamBuffer::Append方法的典型用法代码示例。如果您正苦于以下问题:C++ StreamBuffer::Append方法的具体用法?C++ StreamBuffer::Append怎么用?C++ StreamBuffer::Append使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在StreamBuffer的用法示例。


在下文中一共展示了StreamBuffer::Append方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: WriteBitmapToPNGBuffer

OP_STATUS IconUtils::WriteBitmapToPNGBuffer(OpBitmap* bitmap, StreamBuffer<UINT8>& buffer)
{
	PngEncFeeder feeder;
	PngEncRes res;

	minpng_init_encoder_feeder(&feeder);

	feeder.has_alpha = 1;
	feeder.scanline = 0;
	feeder.xsize = bitmap->Width();
	feeder.ysize = bitmap->Height();

	feeder.scanline_data = OP_NEWA(UINT32, bitmap->Width());
	if (!feeder.scanline_data)
	{
		return OpStatus::ERR_NO_MEMORY;
	}

	if (!bitmap->GetLineData(feeder.scanline_data, feeder.scanline))
	{
		OP_DELETEA(feeder.scanline_data);
		minpng_clear_encoder_feeder(&feeder);
		return OpStatus::ERR;
	}

	OP_STATUS result = OpStatus::OK;
	BOOL again = TRUE;
	while (again)
	{
		switch (minpng_encode(&feeder, &res))
		{
		case PngEncRes::AGAIN:
			break;
		case PngEncRes::ILLEGAL_DATA:
			result = OpStatus::ERR;
			again = FALSE;
			break;
		case PngEncRes::OOM_ERROR:
			result = OpStatus::ERR_NO_MEMORY;
			again = FALSE;
			break;
		case PngEncRes::OK:
			again = FALSE;
			break;
		case PngEncRes::NEED_MORE:
			++feeder.scanline;
			if (feeder.scanline >= bitmap->Height() ||
				!bitmap->GetLineData(feeder.scanline_data, feeder.scanline))
			{
				OP_DELETEA(feeder.scanline_data);
				minpng_clear_encoder_feeder(&feeder);
				return OpStatus::ERR;
			}
			break;
		}

		if (res.data_size)
		{
			if (OpStatus::IsError(buffer.Append(res.data, res.data_size)))
			{
				OP_DELETEA(feeder.scanline_data);
				minpng_clear_encoder_feeder(&feeder);
				return OpStatus::ERR_NO_MEMORY;
			}
		}

		minpng_clear_encoder_result(&res);
	}

	OP_DELETEA(feeder.scanline_data);

	minpng_clear_encoder_feeder(&feeder);

	return result;
}
开发者ID:prestocore,项目名称:browser,代码行数:75,代码来源:iconutils.cpp


注:本文中的StreamBuffer::Append方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。