SMOOTH
typedef struct tagSMOOTH
{
L_UINT uStructSize;
L_UINT32 uFlags;
L_INT32 iLength;
pBITMAPHANDLE pBitmapRegion;
L_UINT uBitmapStructSize;
HRGN hRgn;
} SMOOTH, L_FAR *LPSMOOTH;
The SMOOTH structure provides smoothing information for the L_SmoothBitmap function.
Member |
Description |
|
uStructSize |
Size of this structure in bytes, for versioning. Use the sizeof() macro to calculate this value. |
|
uFlags |
Flags that determine the behavior of the smoothing process. Flags may be combined using a bitwise OR (|). Possible values are: |
|
|
Value |
Meaning |
|
SMOOTH_SINGLE_REGION |
For each bump or nick found by L_SmoothBitmap, if the SMOOTHCALLBACK function returns SUCCESS_REMOVE, the removed bump or nick is added to an internal single region. If the callback returns SUCCESS_NOREMOVE, the bump or nick is not added to the single region. When L_SmoothBitmap returns, either pBitmapRegion or hRgn will reference a region that contains all the removed bumps or nicks. If SMOOTH_LEAD_REGION is also set, pBitmapRegion will be updated with a shallow copy of pBitmap that has a LEAD region that contains all the removed bumps or nicks. If SMOOTH_LEAD_REGION is not set, hRgn is updated with a Windows region that contains all the removed nicks or bumps. When the region (either LEAD or Windows) is no longer needed, it must be destroyed (either pBitmapRegion->pRgnInfo or hRgn). |
|
SMOOTH_LEAD_REGION |
When L_SmoothBitmap returns, pBitmapRegion is updated with a shallow copy of pBitmap that also contains a region with all the removed bumps or nicks. This flag must be used in conjunction with SMOOTH_SINGLE_REGION. To use this flag declare a variable of type BITMAPHANDLE and point pBitmapRegion to this variable. Then set uFlags to SMOOTH_SINGLE_REGION | SMOOTH_LEAD_REGION. This variable will be updated when L_SmoothBitmap returns. |
|
SMOOTH_IMAGE_UNCHANGED |
The original image is unchanged. |
|
SMOOTH_FAVOR_LONG |
Processes long bumps or nicks before short bumps or nicks. If this flag is not passed, short is favored over long. For example: |
|
|
Smooth the following image with iLength == 3 |
|
|
X X |
|
|
XXXXXXXXXX |
|
|
Favoring short would remove the two "bumps" giving: |
|
|
XXXXXXXXXX |
|
|
Favoring long would fill in the "gap" giving: |
|
|
XXXXX |
|
|
XXXXXXXXXX |
iLength |
Length of the bump (or nick) to remove (or fill). All bumps and nicks less than or equal to this size are processed. This value is in pixels. |
|
pBitmapRegion |
Pointer to a variable of type BITMAPHANDLE. If SMOOTH_SINGLE_REGION | SMOOTH_LEAD_REGION have been set in uFlags, then when L_SmoothBitmap returns, this is updated with a shallow copy of pBitmap that also has a region that contains the removed bumps and nicks. To use this, declare a variable of type BITMAPHANDLE and point pBitmapRegion to this variable. Set uFlags to (SMOOTH_SINGLE_REGION | SMOOTH_LEAD_REGION). It is the programmer's responsibility to free the region using L_FreeBitmapRgn() when it is no longer needed. |
|
uBitmapStructSize |
Size of the structure pointed to by pBitmapRegion, for versioning. Use sizeof(BITMAPHANDLE). |
|
hRgn |
Handle to a windows region. When L_SmoothBitmap returns this is updated with a single windows region corresponding to all changes, only if SMOOTH_SINGLE_REGION has been set in uFlags and SMOOTH_LEAD_REGION has not been set. To use this, set the flags field to (SMOOTH_SINGLE_REGION). It is the programmer's responsibility to delete this region using the windows API DeleteObject() when the region is no longer needed. |