FreeRDP
gdi/region.c File Reference
#include <freerdp/config.h>
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <freerdp/api.h>
#include <freerdp/freerdp.h>
#include <freerdp/gdi/gdi.h>
#include <freerdp/gdi/region.h>
#include <freerdp/log.h>

Macros

#define TAG   FREERDP_TAG("gdi.region")
 

Functions

static char * gdi_rect_str (char *buffer, size_t size, const HGDI_RECT rect)
 
static char * gdi_regn_str (char *buffer, size_t size, const HGDI_RGN rgn)
 
HGDI_RGN gdi_CreateRectRgn (INT32 nLeftRect, INT32 nTopRect, INT32 nRightRect, INT32 nBottomRect)
 
HGDI_RECT gdi_CreateRect (INT32 xLeft, INT32 yTop, INT32 xRight, INT32 yBottom)
 
BOOL gdi_RectToRgn (const HGDI_RECT rect, HGDI_RGN rgn)
 
BOOL gdi_CRectToRgn (INT32 left, INT32 top, INT32 right, INT32 bottom, HGDI_RGN rgn)
 
BOOL gdi_RectToCRgn (const HGDI_RECT rect, INT32 *x, INT32 *y, INT32 *w, INT32 *h)
 
BOOL gdi_CRectToCRgn (INT32 left, INT32 top, INT32 right, INT32 bottom, INT32 *x, INT32 *y, INT32 *w, INT32 *h)
 
BOOL gdi_RgnToRect (const HGDI_RGN rgn, HGDI_RECT rect)
 
INLINE BOOL gdi_CRgnToRect (INT64 x, INT64 y, INT32 w, INT32 h, HGDI_RECT rect)
 
BOOL gdi_RgnToCRect (const HGDI_RGN rgn, INT32 *left, INT32 *top, INT32 *right, INT32 *bottom)
 
INLINE BOOL gdi_CRgnToCRect (INT32 x, INT32 y, INT32 w, INT32 h, INT32 *left, INT32 *top, INT32 *right, INT32 *bottom)
 
INLINE BOOL gdi_CopyOverlap (INT32 x, INT32 y, INT32 width, INT32 height, INT32 srcx, INT32 srcy)
 
INLINE BOOL gdi_SetRect (HGDI_RECT rc, INT32 xLeft, INT32 yTop, INT32 xRight, INT32 yBottom)
 
INLINE BOOL gdi_SetRgn (HGDI_RGN hRgn, INT32 nXLeft, INT32 nYLeft, INT32 nWidth, INT32 nHeight)
 
INLINE BOOL gdi_SetRectRgn (HGDI_RGN hRgn, INT32 nLeftRect, INT32 nTopRect, INT32 nRightRect, INT32 nBottomRect)
 
INLINE BOOL gdi_EqualRgn (const HGDI_RGN hSrcRgn1, const HGDI_RGN hSrcRgn2)
 Compare two regions for equality. msdn{dd162700}. More...
 
INLINE BOOL gdi_CopyRect (HGDI_RECT dst, const HGDI_RECT src)
 Copy coordinates from a rectangle to another rectangle msdn{dd183481}. More...
 
INLINE BOOL gdi_PtInRect (const HGDI_RECT rc, INT32 x, INT32 y)
 
INLINE BOOL gdi_InvalidateRegion (HGDI_DC hdc, INT32 x, INT32 y, INT32 w, INT32 h)
 

Macro Definition Documentation

◆ TAG

#define TAG   FREERDP_TAG("gdi.region")

FreeRDP: A Remote Desktop Protocol Implementation GDI Region Functions

Copyright 2010-2011 Marc-Andre Moreau marca.nosp@m.ndre.nosp@m..more.nosp@m.au@g.nosp@m.mail..nosp@m.com Copyright 2016 Armin Novak armin.nosp@m..nov.nosp@m.ak@th.nosp@m.inca.nosp@m.st.co.nosp@m.m Copyright 2016 Thincast Technologies GmbH

Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at

http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.

Function Documentation

◆ gdi_CopyOverlap()

INLINE BOOL gdi_CopyOverlap ( INT32  x,
INT32  y,
INT32  width,
INT32  height,
INT32  srcx,
INT32  srcy 
)

Check if copying would involve overlapping regions

Parameters
xx1
yy1
widthwidth
heightheight
srcxsource x1
srcysource y1
Returns
nonzero if there is an overlap, 0 otherwise
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_CopyRect()

INLINE BOOL gdi_CopyRect ( HGDI_RECT  dst,
const HGDI_RECT  src 
)

Copy coordinates from a rectangle to another rectangle msdn{dd183481}.

Parameters
dstdestination rectangle
srcsource rectangle
Returns
nonzero if successful, 0 otherwise
Here is the caller graph for this function:

◆ gdi_CreateRect()

HGDI_RECT gdi_CreateRect ( INT32  xLeft,
INT32  yTop,
INT32  xRight,
INT32  yBottom 
)

Create a new rectangle.

Parameters
xLeftx1
yTopy1
xRightx2
yBottomy2
Returns
new rectangle
Here is the caller graph for this function:

◆ gdi_CreateRectRgn()

HGDI_RGN gdi_CreateRectRgn ( INT32  nLeftRect,
INT32  nTopRect,
INT32  nRightRect,
INT32  nBottomRect 
)

Create a region from rectangular coordinates. msdn{dd183514}

Parameters
nLeftRectx1
nTopRecty1
nRightRectx2
nBottomRecty2
Returns
new region
Here is the caller graph for this function:

◆ gdi_CRectToCRgn()

BOOL gdi_CRectToCRgn ( INT32  left,
INT32  top,
INT32  right,
INT32  bottom,
INT32 *  x,
INT32 *  y,
INT32 *  w,
INT32 *  h 
)

Convert rectangular coordinates to region coordinates.

Parameters
leftx1
topy1
rightx2
bottomy2
xx1
yy1
wwidth
hheight
Here is the caller graph for this function:

◆ gdi_CRectToRgn()

BOOL gdi_CRectToRgn ( INT32  left,
INT32  top,
INT32  right,
INT32  bottom,
HGDI_RGN  rgn 
)

Convert rectangular coordinates to a region.

Parameters
leftx1
topy1
rightx2
bottomy2
rgndestination region
Here is the caller graph for this function:

◆ gdi_CRgnToCRect()

INLINE BOOL gdi_CRgnToCRect ( INT32  x,
INT32  y,
INT32  w,
INT32  h,
INT32 *  left,
INT32 *  top,
INT32 *  right,
INT32 *  bottom 
)

Convert region coordinates to rectangular coordinates.

Parameters
xx1
yy1
wwidth
hheight
leftx1
topy1
rightx2
bottomy2
Here is the caller graph for this function:

◆ gdi_CRgnToRect()

INLINE BOOL gdi_CRgnToRect ( INT64  x,
INT64  y,
INT32  w,
INT32  h,
HGDI_RECT  rect 
)

Convert region coordinates to a rectangle.

Parameters
xx1
yy1
wwidth
hheight
rectdestination rectangle
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_EqualRgn()

INLINE BOOL gdi_EqualRgn ( const HGDI_RGN  hSrcRgn1,
const HGDI_RGN  hSrcRgn2 
)

Compare two regions for equality. msdn{dd162700}.

Parameters
hSrcRgn1first region
hSrcRgn2second region
Returns
nonzero if both regions are equal, 0 otherwise
Here is the caller graph for this function:

◆ gdi_InvalidateRegion()

INLINE BOOL gdi_InvalidateRegion ( HGDI_DC  hdc,
INT32  x,
INT32  y,
INT32  w,
INT32  h 
)

Invalidate a given region, such that it is redrawn on the next region update. msdn{dd145003}

Parameters
hdcdevice context
xx1
yy1
wwidth
hheight
Returns
nonzero on success, 0 otherwise
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_PtInRect()

INLINE BOOL gdi_PtInRect ( const HGDI_RECT  rc,
INT32  x,
INT32  y 
)

Check if a point is inside a rectangle. msdn{dd162882}

Parameters
rcrectangle
xpoint x position
ypoint y position
Returns
nonzero if the point is inside, 0 otherwise
Here is the caller graph for this function:

◆ gdi_rect_str()

static char* gdi_rect_str ( char *  buffer,
size_t  size,
const HGDI_RECT  rect 
)
static
Here is the caller graph for this function:

◆ gdi_RectToCRgn()

BOOL gdi_RectToCRgn ( const HGDI_RECT  rect,
INT32 *  x,
INT32 *  y,
INT32 *  w,
INT32 *  h 
)

Convert a rectangle to region coordinates.

Parameters
rectsource rectangle
xx1
yy1
wwidth
hheight
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_RectToRgn()

BOOL gdi_RectToRgn ( const HGDI_RECT  rect,
HGDI_RGN  rgn 
)

Convert a rectangle to a region.

Parameters
rectsource rectangle
rgndestination region
Here is the caller graph for this function:

◆ gdi_regn_str()

static char* gdi_regn_str ( char *  buffer,
size_t  size,
const HGDI_RGN  rgn 
)
static
Here is the caller graph for this function:

◆ gdi_RgnToCRect()

BOOL gdi_RgnToCRect ( const HGDI_RGN  rgn,
INT32 *  left,
INT32 *  top,
INT32 *  right,
INT32 *  bottom 
)

Convert a region to rectangular coordinates.

Parameters
rgnsource region
leftx1
topy1
rightx2
bottomy2
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_RgnToRect()

BOOL gdi_RgnToRect ( const HGDI_RGN  rgn,
HGDI_RECT  rect 
)

Convert a region to a rectangle.

Parameters
rgnsource region
rectdestination rectangle
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_SetRect()

INLINE BOOL gdi_SetRect ( HGDI_RECT  rc,
INT32  xLeft,
INT32  yTop,
INT32  xRight,
INT32  yBottom 
)

Set the coordinates of a given rectangle. msdn{dd145085}

Parameters
rcrectangle
xLeftx1
yTopy1
xRightx2
yBottomy2
Returns
nonzero if successful, 0 otherwise
Here is the caller graph for this function:

◆ gdi_SetRectRgn()

INLINE BOOL gdi_SetRectRgn ( HGDI_RGN  hRgn,
INT32  nLeftRect,
INT32  nTopRect,
INT32  nRightRect,
INT32  nBottomRect 
)

Convert rectangular coordinates to a region

Parameters
hRgndestination region
nLeftRectx1
nTopRecty1
nRightRectx2
nBottomRecty2
Returns
nonzero if successful, 0 otherwise
Here is the call graph for this function:
Here is the caller graph for this function:

◆ gdi_SetRgn()

INLINE BOOL gdi_SetRgn ( HGDI_RGN  hRgn,
INT32  nXLeft,
INT32  nYLeft,
INT32  nWidth,
INT32  nHeight 
)

Set the coordinates of a given region.

Parameters
hRgnregion
nXLeftx1
nYLefty1
nWidthwidth
nHeightheight
Returns
nonzero if successful, 0 otherwise
Here is the caller graph for this function: