Blender
V3.3
|
#include <limits.h>
#include "MEM_guardedalloc.h"
#include "BLI_bitmap_draw_2d.h"
#include "BLI_math_base.h"
#include "BLI_sort.h"
#include "BLI_utildefines.h"
#include "BLI_strict_flags.h"
Go to the source code of this file.
Functions | |
Draw Line | |
void | BLI_bitmap_draw_2d_line_v2v2i (const int p1[2], const int p2[2], bool(*callback)(int, int, void *), void *user_data) |
Draw Filled Polygon | |
static int | draw_poly_v2i_n__span_y_sort (const void *a_p, const void *b_p, void *verts_p) |
void | BLI_bitmap_draw_2d_poly_v2i_n (const int xmin, const int ymin, const int xmax, const int ymax, const int verts[][2], const int verts_len, void(*callback)(int x, int x_end, int y, void *), void *user_data) |
Draw Filled Triangle | |
#define | ORDERED_SWAP(ty, a, b) |
#define | ORDERED_SWAP_BY(ty, a, b, by) |
#define | ORDER_VARS2(ty, a, b) |
#define | ORDER_VARS3_BY(ty, a, b, c, by) |
static float | inv_slope (const int a[2], const int b[2]) |
static void | draw_tri_flat_max (const int p[2], const int max_y, const float inv_slope1, const float inv_slope2, void(*callback)(int x, int x_end, int y, void *), void *user_data) |
static void | draw_tri_flat_min (const int p[2], const int min_y, const float inv_slope1, const float inv_slope2, void(*callback)(int x, int x_end, int y, void *), void *user_data) |
void | BLI_bitmap_draw_2d_tri_v2i (const int p1[2], const int p2[2], const int p3[2], void(*callback)(int x, int x_end, int y, void *), void *user_data) |
Utility functions for primitive drawing operations.
Definition in file bitmap_draw_2d.c.
#define ORDER_VARS2 | ( | ty, | |
a, | |||
b | |||
) |
Definition at line 132 of file bitmap_draw_2d.c.
#define ORDER_VARS3_BY | ( | ty, | |
a, | |||
b, | |||
c, | |||
by | |||
) |
Definition at line 138 of file bitmap_draw_2d.c.
#define ORDERED_SWAP | ( | ty, | |
a, | |||
b | |||
) |
Fill a triangle
Standard algorithm, See: http://www.sunshine2k.de/coding/java/TriangleRasterization/TriangleRasterization.html
Changes to the basic implementation:
This is not clipped, a clipped version can be added if needed.
Definition at line 120 of file bitmap_draw_2d.c.
#define ORDERED_SWAP_BY | ( | ty, | |
a, | |||
b, | |||
by | |||
) |
void BLI_bitmap_draw_2d_line_v2v2i | ( | const int | p1[2], |
const int | p2[2], | ||
bool(*)(int, int, void *) | callback, | ||
void * | user_data | ||
) |
Plot a line from p1 to p2 (inclusive).
Definition at line 26 of file bitmap_draw_2d.c.
References callback, error(), user_data, x2, and y1.
Referenced by ED_view3d_depth_read_cached_seg(), and eyedropper_colorband_sample_segment().
void BLI_bitmap_draw_2d_poly_v2i_n | ( | int | xmin, |
int | ymin, | ||
int | xmax, | ||
int | ymax, | ||
const int | verts[][2], | ||
int | verts_len, | ||
void(*)(int x, int x_end, int y, void *) | callback, | ||
void * | user_data | ||
) |
Draws a filled polygon with support for self intersections.
callback | Takes the x, y coords and x-span (x_end is not inclusive), note that x_end will always be greater than x, so we can use: |
Definition at line 315 of file bitmap_draw_2d.c.
References BLI_assert, BLI_qsort_r(), callback, draw_poly_v2i_n__span_y_sort(), max_ii(), MEM_freeN, MEM_mallocN, min_ii(), SWAP, user_data, verts, x, and y.
Referenced by draw_filled_lasso(), DRW_select_buffer_bitmap_from_poly(), sculpt_gesture_init_from_lasso(), and track_mask_gpencil_layer_rasterize().
void BLI_bitmap_draw_2d_tri_v2i | ( | const int | p1[2], |
const int | p2[2], | ||
const int | p3[2], | ||
void(*)(int x, int x_end, int y, void *) | callback, | ||
void * | user_data | ||
) |
Definition at line 203 of file bitmap_draw_2d.c.
References BLI_assert, callback, draw_tri_flat_max(), draw_tri_flat_min(), inv_slope(), ORDER_VARS2, ORDER_VARS3_BY, and user_data.
|
static |
Definition at line 281 of file bitmap_draw_2d.c.
References Freestyle::a, usdtokens::b(), and verts.
Referenced by BLI_bitmap_draw_2d_poly_v2i_n().
|
static |
*---* \ / *
Definition at line 158 of file bitmap_draw_2d.c.
References callback, float(), and user_data.
Referenced by BLI_bitmap_draw_2d_tri_v2i().
|
static |
* / \ *---*
Definition at line 184 of file bitmap_draw_2d.c.
References callback, float(), and user_data.
Referenced by BLI_bitmap_draw_2d_tri_v2i().
|
static |
Definition at line 146 of file bitmap_draw_2d.c.
References Freestyle::a, and usdtokens::b().
Referenced by BLI_bitmap_draw_2d_tri_v2i().