Pebble Foundation Classes
0.2.0
C++ for Pebble
|
Layer that displays a rotated bitmap image. More...
Typedefs | |
typedef struct RotBitmapLayer | RotBitmapLayer |
Functions | |
RotBitmapLayer * | rot_bitmap_layer_create (GBitmap *bitmap) |
void | rot_bitmap_layer_destroy (RotBitmapLayer *bitmap) |
void | rot_bitmap_layer_set_corner_clip_color (RotBitmapLayer *bitmap, GColor color) |
void | rot_bitmap_layer_set_angle (RotBitmapLayer *bitmap, int32_t angle) |
void | rot_bitmap_layer_increment_angle (RotBitmapLayer *bitmap, int32_t angle_change) |
void | rot_bitmap_set_src_ic (RotBitmapLayer *bitmap, GPoint ic) |
void | rot_bitmap_set_compositing_mode (RotBitmapLayer *bitmap, GCompOp mode) |
Layer that displays a rotated bitmap image.
A RotBitmapLayer is like a BitmapLayer but has the ability to be rotated (by default, around its center). The amount of rotation is specified using rot_bitmap_layer_set_angle() or rot_bitmap_layer_increment_angle(). The rotation argument to those functions is specified as an amount of clockwise rotation, where the value 0x10000 represents a full 360 degree rotation and 0 represent no rotation, and it scales linearly between those values, just like sin_lookup.
The center of rotation in the source bitmap is always placed at the center of the RotBitmapLayer and the size of the RotBitmapLayer is automatically calculated so that the entire Bitmap can fit in at all rotation angles.
For example, if the image is 10px wide and high, the RotBitmapLayer will be 14px wide ( sqrt(10^2+10^2) ).
By default, the center of rotation in the source bitmap is the center of the bitmap but you can call rot_bitmap_set_src_ic() to change the center of rotation.
RotBitmapLayer* rot_bitmap_layer_create | ( | GBitmap * | bitmap | ) |
Creates a new RotBitmapLayer on the heap and initializes it with the default values:
bitmap | The bitmap to display in this RotBitmapLayer |
NULL
if the RotBitmapLayer could not be created void rot_bitmap_layer_destroy | ( | RotBitmapLayer * | bitmap | ) |
Destroys a RotBitmapLayer and frees all associated memory.
bitmap | The RotBitmapLayer to destroy. |
void rot_bitmap_layer_increment_angle | ( | RotBitmapLayer * | bitmap, |
int32_t | angle_change | ||
) |
Change the rotation angle of this RotBitmapLayer
bitmap | The RotBitmapLayer on which to change the rotation |
angle_change | The rotation angle change |
void rot_bitmap_layer_set_angle | ( | RotBitmapLayer * | bitmap, |
int32_t | angle | ||
) |
Sets the rotation angle of this RotBitmapLayer
bitmap | The RotBitmapLayer on which to change the rotation |
angle | Rotation is an integer between 0 (no rotation) and 0x10000 (360 degree rotation). |
void rot_bitmap_layer_set_corner_clip_color | ( | RotBitmapLayer * | bitmap, |
GColor | color | ||
) |
Defines what color to use in areas that are not covered by the source bitmap. By default this is GColorClear.
bitmap | The RotBitmapLayer on which to change the corner clip color |
color | The corner clip color |
void rot_bitmap_set_compositing_mode | ( | RotBitmapLayer * | bitmap, |
GCompOp | mode | ||
) |
Sets the compositing mode of how the bitmap image is composited onto what has been drawn beneath the RotBitmapLayer. By default this is GCompOpAssign. The RotBitmapLayer is automatically marked dirty after this operation.
bitmap | The RotBitmapLayer on which to change the rotation |
mode | The compositing mode to set |
void rot_bitmap_set_src_ic | ( | RotBitmapLayer * | bitmap, |
GPoint | ic | ||
) |
Defines the only point that will not be affected by the rotation in the source bitmap.
For example, if you pass GPoint(0, 0), the image will rotate around the top-left corner.
This point is always projected at the center of the RotBitmapLayer. Calling this function automatically adjusts the width and height of the RotBitmapLayer so that the entire bitmap can fit inside the layer at all rotation angles.
bitmap | The RotBitmapLayer on which to change the rotation |
ic | The only point in the original image that will not be affected by the rotation. |