L_RotateBitmap

Summary

Rotates a bitmap by the number of degrees specified.

Syntax

#include "l_bitmap.h"

L_LTKRN_API L_INT L_RotateBitmap(pBitmap, nAngle, uFlags, crFill)

Parameters

pBITMAPHANDLE pBitmap

Pointer to the bitmap handle referencing the bitmap to be changed.

L_INT nAngle

Hundredths of degrees to rotate (+/-). This can be a number from 0 to 36,000. A positive value will rotate the image in a clockwise rotation, while a negative value will rotate the image in a counter-clockwise rotation.

L_UINT uFlags

Flag to keep the resulting image the same size as the original image or to resize according to the rotation direction specified. Valid values are:

Value Meaning
ROTATE_RESIZE [0x0001] Size resulting image as needed.
ROTATE_RESAMPLE [0x0002] Perform bilinear interpolation when rotating.
ROTATE_BICUBIC [0x0004] Perform bicubic interpolation when rotating.
ROTATE_USE_FILL_COLOR_ALPHA [0x0010] Use crFill parameter value to set the alpha value of the background color.
If this flag is not set, use the default alpha value.
0 Do not resize the image. Crop it.

L_COLORREF crFill

The background fill color. You can specify a COLORREF value, such as the return value of the Windows RGB macro, or you can use the PALETTEINDEX macro to specify a palette color.

Returns

Value Meaning
SUCCESS The function was successful.
< 1 An error occurred. Refer to Return Codes.

Comments

This function has the following features:

To update a status bar or detect a user interrupt during execution of this function, refer to L_SetStatusCallback.

ROTATE_RESAMPLE and ROTATE_BICUBIC can be combined with ROTATE_RESIZE, but they can not be combined with each other. Therefore, you can pass ROTATE_RESAMPLE|ROTATE_RESIZE, but not ROTATE_RESAMPLE|ROTATE_BICUBIC.

If ROTATE_RESIZE is set, then the image is resized. Otherwise, the image is cropped.

Interpolation can be done while rotating certain images. This produces superior output, eliminating the jaggedness occurring when rotating images at angles that are not multiple of 90. (ie when nAngle is not a multiple of 9000).

The only images that are interpolated are:

For the other images, L_RotateBitmap ignores the resampling flags and the rotation is performed without interpolation.

Required DLLs and Libraries

Platforms

Win32, x64, Linux.

See Also

Functions

Topics

Example

For complete sample code, refer to the FEATURE1
example.
This example loads a bitmap and rotates it.

L_INT RotateBitmapExample(L_VOID) 
{ 
   L_INT nRet; 
   BITMAPHANDLE LeadBitmap;   /* Bitmap handle to hold the loaded image. */ 
 
   /* Load the bitmap, keeping the bits per pixel of the file */ 
   nRet = L_LoadBitmap (MAKE_IMAGE_PATH(TEXT("IMAGE1.CMP")), &LeadBitmap, sizeof(BITMAPHANDLE), 0, ORDER_BGR, NULL, NULL); 
   if(nRet != SUCCESS) 
      return nRet; 
   /* Rotate the bitmap 45 degrees counterclockwise, increasing the size as necessary */ 
   nRet = L_RotateBitmap(&LeadBitmap, -4500, ROTATE_RESIZE, RGB(255, 0, 0) ); 
   if(nRet != SUCCESS) 
      return nRet; 
 
   nRet = L_SaveBitmap(MAKE_IMAGE_PATH(TEXT("Result.BMP")), &LeadBitmap, FILE_BMP, 24, 0, NULL); 
   if(nRet != SUCCESS) 
      return nRet; 
   if(LeadBitmap.Flags.Allocated) 
      L_FreeBitmap(&LeadBitmap);   
   return SUCCESS; 
} 

Help Version 23.0.2024.2.29
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2024 LEAD Technologies, Inc. All Rights Reserved.

LEADTOOLS Raster Imaging C API Help

Products | Support | Contact Us | Intellectual Property Notices
© 1991-2023 LEAD Technologies, Inc. All Rights Reserved.