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


C++ region16_union_rect函数代码示例

本文整理汇总了C++中region16_union_rect函数的典型用法代码示例。如果您正苦于以下问题:C++ region16_union_rect函数的具体用法?C++ region16_union_rect怎么用?C++ region16_union_rect使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


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

示例1: xf_OutputExpose

int xf_OutputExpose(xfContext* xfc, int x, int y, int width, int height)
{
	RECTANGLE_16 invalidRect;

	invalidRect.left = x;
	invalidRect.top = y;
	invalidRect.right = x + width;
	invalidRect.bottom = y + height;

	region16_union_rect(&(xfc->invalidRegion), &(xfc->invalidRegion), &invalidRect);

	xf_OutputUpdate(xfc);

	return 1;
}
开发者ID:BenoitDevolutions,项目名称:FreeRDP,代码行数:15,代码来源:xf_gfx.c

示例2: test_r1_r6

static int test_r1_r6() {
	REGION16 region;
	int retCode = -1;
	const RECTANGLE_16 *rects;
	int nbRects;

	RECTANGLE_16 r1 = {  0, 101, 200, 201};
	RECTANGLE_16 r6 = {150, 121, 170, 131};

	region16_init(&region);
	/*
	 * +===============================================================
	 * |
	 * |+--------+           +--------+
	 * || r1     |           |        |
	 * ||   +--+ |           |        |
	 * ||   |r6| |  =====>   |        |
	 * ||   +--+ |           |        |
	 * ||        |           |        |
 	 * |+--------+           +--------+
 	 * |
	 */
	region16_clear(&region);
	if (!region16_union_rect(&region, &region, &r1))
		goto out;
	if (!region16_union_rect(&region, &region, &r6))
		goto out;
	rects = region16_rects(&region, &nbRects);
	if (!rects || nbRects != 1 || !compareRectangles(rects, &r1, nbRects))
		goto out;

	retCode = 0;
out:
	region16_uninit(&region);
	return retCode;
}
开发者ID:10084462,项目名称:FreeRDP,代码行数:36,代码来源:TestFreeRDPRegion.c

示例3: xf_SurfaceCommand_AVC420

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT xf_SurfaceCommand_AVC420(xfContext* xfc, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd)
{
	int status;
	UINT32 i;
	xfGfxSurface* surface;
	RDPGFX_H264_METABLOCK* meta;
	RDPGFX_AVC420_BITMAP_STREAM* bs;

	surface = (xfGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId);

	if (!surface)
		return ERROR_INTERNAL_ERROR;

	if (!freerdp_client_codecs_prepare(surface->codecs, FREERDP_CODEC_AVC420,
									   surface->width, surface->height))
		return ERROR_INTERNAL_ERROR;

	bs = (RDPGFX_AVC420_BITMAP_STREAM*) cmd->extra;

	if (!bs)
		return ERROR_INTERNAL_ERROR;

	meta = &(bs->meta);

	status = avc420_decompress(surface->codecs->h264, bs->data, bs->length,
				   surface->data, surface->format,
				   surface->scanline , surface->width,
				   surface->height, meta->regionRects,
				   meta->numRegionRects);

	if (status < 0)
	{
		WLog_WARN(TAG, "avc420_decompress failure: %d, ignoring update.", status);
		return CHANNEL_RC_OK;
	}

	for (i = 0; i < meta->numRegionRects; i++)
	{
		region16_union_rect(&surface->invalidRegion,
				    &surface->invalidRegion,
				    &(meta->regionRects[i]));
	}

	if (!xfc->inGfxFrame)
		xf_UpdateSurfaces(xfc);

	return CHANNEL_RC_OK;
}
开发者ID:DavBfr,项目名称:FreeRDP,代码行数:53,代码来源:xf_gfx.c

示例4: x11_shadow_invalidate_region

int x11_shadow_invalidate_region(x11ShadowSubsystem* subsystem, int x, int y, int width, int height)
{
	rdpShadowServer* server;
	RECTANGLE_16 invalidRect;

	server = subsystem->server;

	invalidRect.left = x;
	invalidRect.top = y;
	invalidRect.right = x + width;
	invalidRect.bottom = y + height;

	region16_union_rect(&(subsystem->invalidRegion), &(subsystem->invalidRegion), &invalidRect);

	return 1;
}
开发者ID:apprisi,项目名称:FreeRDP,代码行数:16,代码来源:x11_shadow.c

示例5: xf_SurfaceCommand_H264

int xf_SurfaceCommand_H264(xfContext* xfc, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd)
{
	int status;
	UINT32 i;
	BYTE* DstData = NULL;
	H264_CONTEXT* h264;
	xfGfxSurface* surface;
	RDPGFX_H264_METABLOCK* meta;
	RDPGFX_H264_BITMAP_STREAM* bs;

	freerdp_client_codecs_prepare(xfc->codecs, FREERDP_CODEC_H264);

	h264 = xfc->codecs->h264;

	bs = (RDPGFX_H264_BITMAP_STREAM*) cmd->extra;

	if (!bs)
		return -1;

	meta = &(bs->meta);

	surface = (xfGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId);

	if (!surface)
		return -1;

	DstData = surface->data;

	status = h264_decompress(xfc->codecs->h264, bs->data, bs->length, &DstData,
			PIXEL_FORMAT_XRGB32, surface->scanline , surface->height, meta->regionRects, meta->numRegionRects);

	if (status < 0)
	{
		printf("h264_decompress failure: %d\n",status);
		return -1;
	}

	for (i = 0; i < meta->numRegionRects; i++)
	{
		region16_union_rect(&(xfc->invalidRegion), &(xfc->invalidRegion), (RECTANGLE_16*) &(meta->regionRects[i]));
	}

	if (!xfc->inGfxFrame)
		xf_OutputUpdate(xfc);

	return 1;
}
开发者ID:davidleake,项目名称:FreeRDP,代码行数:47,代码来源:xf_gfx.c

示例6: gdi_SurfaceCommand_H264

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
UINT gdi_SurfaceCommand_H264(rdpGdi* gdi, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd)
{
	int status;
	UINT32 i;
	BYTE* DstData = NULL;
	gdiGfxSurface* surface;
	RDPGFX_H264_METABLOCK* meta;
	RDPGFX_H264_BITMAP_STREAM* bs;

	surface = (gdiGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId);

	if (!surface)
		return ERROR_INTERNAL_ERROR;

	if (!freerdp_client_codecs_prepare(surface->codecs, FREERDP_CODEC_H264))
		return ERROR_INTERNAL_ERROR;

	bs = (RDPGFX_H264_BITMAP_STREAM*) cmd->extra;

	if (!bs)
		return ERROR_INTERNAL_ERROR;

	meta = &(bs->meta);

	DstData = surface->data;

	status = h264_decompress(surface->codecs->h264, bs->data, bs->length, &DstData,
			PIXEL_FORMAT_XRGB32, surface->scanline, surface->width, surface->height,
			meta->regionRects, meta->numRegionRects);

	if (status < 0)
	{
		WLog_WARN(TAG, "h264_decompress failure: %d, ignoring update.", status);
		return CHANNEL_RC_OK;
	}

	for (i = 0; i < meta->numRegionRects; i++)
	{
		region16_union_rect(&(surface->invalidRegion), &(surface->invalidRegion), (RECTANGLE_16*) &(meta->regionRects[i]));
	}

	if (!gdi->inGfxFrame)
		gdi_UpdateSurfaces(gdi);

	return CHANNEL_RC_OK;
}
开发者ID:Graf3x,项目名称:FreeRDP,代码行数:51,代码来源:gfx.c

示例7: xf_SolidFill

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT xf_SolidFill(RdpgfxClientContext* context, RDPGFX_SOLID_FILL_PDU* solidFill)
{
	UINT16 index;
	UINT32 color;
	BYTE a, r, g, b;
	int nWidth, nHeight;
	RECTANGLE_16* rect;
	xfGfxSurface* surface;
	RECTANGLE_16 invalidRect;
	xfContext* xfc = (xfContext*) context->custom;

	surface = (xfGfxSurface*) context->GetSurfaceData(context, solidFill->surfaceId);

	if (!surface)
		return ERROR_INTERNAL_ERROR;

	b = solidFill->fillPixel.B;
	g = solidFill->fillPixel.G;
	r = solidFill->fillPixel.R;
	a = solidFill->fillPixel.XA;

	color = ARGB32(a, r, g, b);

	for (index = 0; index < solidFill->fillRectCount; index++)
	{
		rect = &(solidFill->fillRects[index]);

		nWidth = rect->right - rect->left;
		nHeight = rect->bottom - rect->top;

		invalidRect.left = rect->left;
		invalidRect.top = rect->top;
		invalidRect.right = rect->right;
		invalidRect.bottom = rect->bottom;

		freerdp_image_fill(surface->data, surface->format, surface->scanline,
				rect->left, rect->top, nWidth, nHeight, color);

		region16_union_rect(&surface->invalidRegion, &surface->invalidRegion, &invalidRect);
	}

	if (!xfc->inGfxFrame)
		xf_UpdateSurfaces(xfc);

	return CHANNEL_RC_OK;
}
开发者ID:DavBfr,项目名称:FreeRDP,代码行数:51,代码来源:xf_gfx.c

示例8: xf_rail_paint

void xf_rail_paint(xfContext* xfc, INT32 uleft, INT32 utop, UINT32 uright, UINT32 ubottom)
{
	REGION16 invalidRegion;
	RECTANGLE_16 invalidRect;

	invalidRect.left = uleft;
	invalidRect.top = utop;
	invalidRect.right = uright;
	invalidRect.bottom = ubottom;

	region16_init(&invalidRegion);
	region16_union_rect(&invalidRegion, &invalidRegion, &invalidRect);

	xf_rail_invalidate_region(xfc, &invalidRegion);

	region16_uninit(&invalidRegion);
}
开发者ID:bceverly,项目名称:FreeRDP,代码行数:17,代码来源:xf_rail.c

示例9: test_r1_inter_r3

static int test_r1_inter_r3(void)
{
	REGION16 region, intersection;
	int retCode = -1;
	const RECTANGLE_16* rects;
	UINT32 nbRects;
	RECTANGLE_16 r1 = {  0, 101, 200, 201};
	RECTANGLE_16 r3 = {150, 151, 250, 251};
	RECTANGLE_16 r1_inter_r3[] =
	{
		{150, 151, 200, 201},
	};
	region16_init(&region);
	region16_init(&intersection);

	/*
	 * +===============================================================
	 * |
	 * |+-----+
	 * || r1  |
	 * ||   +-+------+             +-+
	 * ||   |    r3  | r1&r3       | |
	 * |+---+        | ====>       +-+
	 * |    |        |
	 * |    +--------+
	 */
	if (!region16_union_rect(&region, &region, &r1))
		goto out;

	if (!region16_intersects_rect(&region, &r3))
		goto out;

	if (!region16_intersect_rect(&intersection, &region, &r3))
		goto out;

	rects = region16_rects(&intersection, &nbRects);

	if (!rects || nbRects != 1 || !compareRectangles(rects, r1_inter_r3, nbRects))
		goto out;

	retCode = 0;
out:
	region16_uninit(&region);
	region16_uninit(&intersection);
	return retCode;
}
开发者ID:FreeRDP,项目名称:FreeRDP,代码行数:46,代码来源:TestFreeRDPRegion.c

示例10: test_norbert_case

static int test_norbert_case() {
	REGION16 region, intersection;
	int retCode = -1;
	const RECTANGLE_16 *rects;
	int nbRects, i;

	RECTANGLE_16 inRectangles[5] = {
			{1680,    0, 1920,  242},
			{ 294,  242,  971,  776},
			{1680,  242, 1920,  776},
			{1680,  776, 1920, 1036},
			{   2, 1040,   53, 1078}
	};

	RECTANGLE_16 screenRect = {
		0, 0, 1920, 1080
	};
	RECTANGLE_16 expected_inter_extents = {
		0, 0, 1920, 1078
	};

	region16_init(&region);
	region16_init(&intersection);

	for (i = 0; i < 5; i++)
	{
		if (!region16_union_rect(&region, &region, &inRectangles[i]))
			goto out;
	}

	if (!region16_intersect_rect(&intersection, &region, &screenRect))
		goto out;
	rects = region16_rects(&intersection, &nbRects);
	if (!rects || nbRects != 5 || !compareRectangles(rects, inRectangles, nbRects))
		goto out;

	if (!compareRectangles(region16_extents(&intersection), &expected_inter_extents, 1) )
		goto out;

	retCode = 0;
out:
	region16_uninit(&intersection);
	region16_uninit(&region);
	return retCode;
}
开发者ID:10084462,项目名称:FreeRDP,代码行数:45,代码来源:TestFreeRDPRegion.c

示例11: gdi_SurfaceCommand_ClearCodec

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT gdi_SurfaceCommand_ClearCodec(rdpGdi* gdi,
        RdpgfxClientContext* context,
        const RDPGFX_SURFACE_COMMAND* cmd)
{
	INT32 rc;
	UINT status = CHANNEL_RC_OK;
	gdiGfxSurface* surface;
	RECTANGLE_16 invalidRect;

	surface = (gdiGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId);
	if (!surface)
	{
		WLog_ERR(TAG, "%s: unable to retrieve surfaceData for surfaceId=%"PRIu32"", __FUNCTION__, cmd->surfaceId);
		return ERROR_NOT_FOUND;
	}

	rc = clear_decompress(surface->codecs->clear, cmd->data, cmd->length,
	                      cmd->width, cmd->height,
	                      surface->data, surface->format,
	                      surface->scanline, cmd->left, cmd->top,
	                      surface->width, surface->height, &gdi->palette);

	if (rc < 0)
	{
		WLog_ERR(TAG, "clear_decompress failure: %"PRId32"", rc);
		return ERROR_INTERNAL_ERROR;
	}

	invalidRect.left = cmd->left;
	invalidRect.top = cmd->top;
	invalidRect.right = cmd->right;
	invalidRect.bottom = cmd->bottom;
	region16_union_rect(&(surface->invalidRegion), &(surface->invalidRegion),
	                    &invalidRect);

	IFCALL(context->UpdateSurfaceArea, context, surface->surfaceId, 1, &invalidRect);

	if (!gdi->inGfxFrame)
	{
		status = CHANNEL_RC_NOT_INITIALIZED;
		IFCALLRET(context->UpdateSurfaces, status, context);
	}

	return status;
}
开发者ID:99455125,项目名称:FreeRDP,代码行数:50,代码来源:gfx.c

示例12: gdi_SurfaceCommand_RemoteFX

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT gdi_SurfaceCommand_RemoteFX(rdpGdi* gdi,
                                        RdpgfxClientContext* context,
                                        const RDPGFX_SURFACE_COMMAND* cmd)
{
	UINT status = CHANNEL_RC_OK;
	gdiGfxSurface* surface;
	REGION16 invalidRegion;
	const RECTANGLE_16* rects;
	UINT32 nrRects, x;

	surface = (gdiGfxSurface*) context->GetSurfaceData(context, cmd->surfaceId);
	if (!surface)
	{
		WLog_ERR(TAG, "%s: unable to retrieve surfaceData for surfaceId=%"PRIu32"", __FUNCTION__, cmd->surfaceId);
		return ERROR_NOT_FOUND;
	}

	rfx_context_set_pixel_format(surface->codecs->rfx, cmd->format);

	region16_init(&invalidRegion);
	if (!rfx_process_message(surface->codecs->rfx, cmd->data, cmd->length,
	                         cmd->left, cmd->top,
	                         surface->data, surface->format, surface->scanline,
	                         surface->height, &invalidRegion))
	{
		WLog_ERR(TAG, "Failed to process RemoteFX message");
		region16_uninit(&invalidRegion);
		return ERROR_INTERNAL_ERROR;
	}

	rects = region16_rects(&invalidRegion, &nrRects);
	IFCALL(context->UpdateSurfaceArea, context, surface->surfaceId, nrRects, rects);

	for (x=0; x<nrRects; x++)
		region16_union_rect(&surface->invalidRegion, &surface->invalidRegion, &rects[x]);

	region16_uninit(&invalidRegion);
	if (!gdi->inGfxFrame)
	{
		status = CHANNEL_RC_NOT_INITIALIZED;
		IFCALLRET(context->UpdateSurfaces, status, context);
	}

	return status;
}
开发者ID:99455125,项目名称:FreeRDP,代码行数:50,代码来源:gfx.c

示例13: win_shadow_invalidate_region

int win_shadow_invalidate_region(winShadowSubsystem* subsystem, int x, int y,
                                 int width, int height)
{
	rdpShadowServer* server;
	rdpShadowSurface* surface;
	RECTANGLE_16 invalidRect;
	server = subsystem->server;
	surface = server->surface;
	invalidRect.left = x;
	invalidRect.top = y;
	invalidRect.right = x + width;
	invalidRect.bottom = y + height;
	EnterCriticalSection(&(surface->lock));
	region16_union_rect(&(surface->invalidRegion), &(surface->invalidRegion),
	                    &invalidRect);
	LeaveCriticalSection(&(surface->lock));
	return 1;
}
开发者ID:jat255,项目名称:FreeRDP,代码行数:18,代码来源:win_shadow.c

示例14: gdi_CacheToSurface

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT gdi_CacheToSurface(RdpgfxClientContext* context,
                               const RDPGFX_CACHE_TO_SURFACE_PDU* cacheToSurface)
{
	UINT status = CHANNEL_RC_OK;
	UINT16 index;
	RDPGFX_POINT16* destPt;
	gdiGfxSurface* surface;
	gdiGfxCacheEntry* cacheEntry;
	RECTANGLE_16 invalidRect;
	rdpGdi* gdi = (rdpGdi*) context->custom;

	surface = (gdiGfxSurface*) context->GetSurfaceData(context, cacheToSurface->surfaceId);
	cacheEntry = (gdiGfxCacheEntry*) context->GetCacheSlotData(context, cacheToSurface->cacheSlot);

	if (!surface || !cacheEntry)
		return ERROR_INTERNAL_ERROR;

	for (index = 0; index < cacheToSurface->destPtsCount; index++)
	{
		destPt = &cacheToSurface->destPts[index];

		if (!freerdp_image_copy(surface->data, surface->format, surface->scanline,
		                        destPt->x, destPt->y, cacheEntry->width, cacheEntry->height,
		                        cacheEntry->data, cacheEntry->format, cacheEntry->scanline,
		                        0, 0, NULL, FREERDP_FLIP_NONE))
			return ERROR_INTERNAL_ERROR;

		invalidRect.left = destPt->x;
		invalidRect.top = destPt->y;
		invalidRect.right = destPt->x + cacheEntry->width;
		invalidRect.bottom = destPt->y + cacheEntry->height;
		region16_union_rect(&surface->invalidRegion, &surface->invalidRegion,
		                    &invalidRect);
		IFCALL(context->UpdateSurfaceArea, context, surface->surfaceId, 1, &invalidRect);
	}

	if (!gdi->inGfxFrame)
	{
		status = CHANNEL_RC_NOT_INITIALIZED;
		IFCALLRET(context->UpdateSurfaces, status, context);
	}

	return status;
}
开发者ID:99455125,项目名称:FreeRDP,代码行数:49,代码来源:gfx.c

示例15: shadow_client_surface_update

int shadow_client_surface_update(rdpShadowClient* client, REGION16* region)
{
	int index;
	int numRects = 0;
	const RECTANGLE_16* rects;

	EnterCriticalSection(&(client->lock));

	rects = region16_rects(region, &numRects);

	for (index = 0; index < numRects; index++)
	{
		region16_union_rect(&(client->invalidRegion), &(client->invalidRegion), &rects[index]);
	}

	LeaveCriticalSection(&(client->lock));

	return 1;
}
开发者ID:Graf3x,项目名称:FreeRDP,代码行数:19,代码来源:shadow_client.c


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