• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

C++ region16_union_rect函数代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

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



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


示例16: computeRegion

static BOOL computeRegion(const RFX_RECT* rects, int numRects, REGION16 *region, int width, int height)
{
	int i;
	const RFX_RECT *rect = rects;
	const RECTANGLE_16 mainRect = { 0, 0, width, height };

	for(i = 0; i < numRects; i++, rect++) {
		RECTANGLE_16 rect16;

		rect16.left = rect->x;
		rect16.top = rect->y;
		rect16.right = rect->x + rect->width;
		rect16.bottom = rect->y + rect->height;

		if (!region16_union_rect(region, region, &rect16))
			return FALSE;
	}

	return region16_intersect_rect(region, region, &mainRect);
}
开发者ID:C4rt,项目名称:FreeRDP,代码行数:20,代码来源:rfx.c


示例17: shadow_client_init_lobby

int shadow_client_init_lobby(rdpShadowClient* client)
{
    int width;
    int height;
    rdtkEngine* engine;
    rdtkSurface* surface;
    RECTANGLE_16 invalidRect;
    rdpShadowSurface* lobby;
    rdpContext* context = (rdpContext*) client;
    rdpSettings* settings = context->settings;

    width = settings->DesktopWidth;
    height = settings->DesktopHeight;

    lobby = client->lobby = shadow_surface_new(client->server, 0, 0, width, height);

    if (!client->lobby)
        return -1;

    engine = rdtk_engine_new();

    surface = rdtk_surface_new(engine, lobby->data, lobby->width, lobby->height, lobby->scanline);

    rdtk_surface_fill(surface, 0, 0, width, height, 0x3BB9FF);
    //rdtk_label_draw(surface, 16, 16, 128, 32, NULL, "label", 0, 0);
    //rdtk_button_draw(surface, 16, 64, 128, 32, NULL, "button");
    //rdtk_text_field_draw(surface, 16, 128, 128, 32, NULL, "text field");

    rdtk_surface_free(surface);

    rdtk_engine_free(engine);

    invalidRect.left = 0;
    invalidRect.top = 0;
    invalidRect.right = width;
    invalidRect.bottom = height;

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

    return 1;
}
开发者ID:Rorymon,项目名称:cameyo,代码行数:41,代码来源:shadow_lobby.c


示例18: UwacWindowAddDamage

UwacReturnCode UwacWindowAddDamage(UwacWindow* window, uint32_t x, uint32_t y, uint32_t width,
                                   uint32_t height)
{
#ifdef HAVE_PIXMAN_REGION

	if (!pixman_region32_union_rect(&window->drawingBuffer->damage, &window->drawingBuffer->damage, x,
	                                y, width, height))
#else
	RECTANGLE_16 box;

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

	if (!region16_union_rect(&window->drawingBuffer->damage, &window->drawingBuffer->damage, &box))
#endif
		return UWAC_ERROR_INTERNAL;

	return UWAC_SUCCESS;
}
开发者ID:JunaidLoonat,项目名称:FreeRDP,代码行数:21,代码来源:uwac-window.c


示例19: gdi_SurfaceCommand_Alpha

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT gdi_SurfaceCommand_Alpha(rdpGdi* gdi, RdpgfxClientContext* context,
                                     const RDPGFX_SURFACE_COMMAND* cmd)
{
	UINT status = CHANNEL_RC_OK;
	UINT32 color;
	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;
	}

	WLog_WARN(TAG, "TODO gdi_SurfaceCommand_Alpha: status: %"PRIu32"", status);
	/* fill with green for now to distinguish from the rest */
	color = GetColor(surface->format, 0x00, 0xFF, 0x00, 0xFF);

	if (!freerdp_image_fill(surface->data, surface->format, surface->scanline,
	                        cmd->left, cmd->top, cmd->width, cmd->height, color))
		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,代码行数:45,代码来源:gfx.c


示例20: xf_SurfaceCommand_ClearCodec

/**
 * Function description
 *
 * @return 0 on success, otherwise a Win32 error code
 */
static UINT xf_SurfaceCommand_ClearCodec(xfContext* xfc, RdpgfxClientContext* context, RDPGFX_SURFACE_COMMAND* cmd)
{
	int status;
	BYTE* DstData = NULL;
	xfGfxSurface* surface;
	RECTANGLE_16 invalidRect;

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

	if (!surface)
		return ERROR_INTERNAL_ERROR;

	if (!freerdp_client_codecs_prepare(xfc->codecs, FREERDP_CODEC_CLEARCODEC,
									   xfc->settings->DesktopWidth,
									   xfc->settings->DesktopHeight))
		return ERROR_INTERNAL_ERROR;

	DstData = surface->data;

	status = clear_decompress(xfc->codecs->clear, cmd->data, cmd->length, &DstData,
			surface->format, surface->scanline, cmd->left, cmd->top, cmd->width, cmd->height);

	if (status < 0)
	{
		WLog_ERR(TAG, "clear_decompress failure: %d", status);
		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);

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

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



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


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
C++ region_alloc函数代码示例发布时间:2022-05-30
下一篇:
C++ region函数代码示例发布时间:2022-05-30
热门推荐
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap