Blender
V3.3
|
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_math.h"
#include "BKE_gpencil.h"
#include "BKE_gpencil_geom.h"
#include "BKE_image.h"
#include "BKE_main.h"
#include "BKE_material.h"
#include "DNA_gpencil_types.h"
#include "DNA_image_types.h"
#include "DNA_material_types.h"
#include "DNA_object_types.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "gpencil_trace.h"
Go to the source code of this file.
Macros | |
#define | MAX_LENGTH 100.0f |
Functions | |
void | ED_gpencil_trace_bitmap_print (FILE *f, const potrace_bitmap_t *bm) |
potrace_bitmap_t * | ED_gpencil_trace_bitmap_new (int32_t w, int32_t h) |
void | ED_gpencil_trace_bitmap_free (const potrace_bitmap_t *bm) |
void | ED_gpencil_trace_bitmap_invert (const potrace_bitmap_t *bm) |
static void | pixel_at_index (const ImBuf *ibuf, const int32_t idx, float r_col[4]) |
void | ED_gpencil_trace_image_to_bitmap (ImBuf *ibuf, const potrace_bitmap_t *bm, const float threshold) |
static void | add_point (bGPDstroke *gps, float scale, const int32_t offset[2], float x, float y) |
static void | add_bezier (bGPDstroke *gps, float scale, int32_t offset[2], int32_t resolution, float bcp1[2], float bcp2[2], float bcp3[2], float bcp4[2], const bool skip) |
void | ED_gpencil_trace_data_to_strokes (Main *bmain, potrace_state_t *st, Object *ob, bGPDframe *gpf, int32_t offset[2], const float scale, const float sample, const int32_t resolution, const int32_t thickness) |
#define MAX_LENGTH 100.0f |
|
static |
Definition at line 171 of file gpencil_trace_utils.c.
References Freestyle::a, add_point(), float(), interp_v2_v2v2v2v2_cubic(), and offset.
Referenced by ED_gpencil_trace_data_to_strokes().
|
static |
Definition at line 151 of file gpencil_trace_utils.c.
References MEM_callocN, MEM_recallocN, offset, bGPDstroke::points, bGPDspoint::pressure, bGPDspoint::strength, bGPDstroke::totpoints, x, bGPDspoint::x, y, bGPDspoint::y, and bGPDspoint::z.
Referenced by add_bezier(), and ED_gpencil_trace_data_to_strokes().
void ED_gpencil_trace_bitmap_free | ( | const potrace_bitmap_t * | bm | ) |
Free a trace bitmap
bm | Trace bitmap |
Definition at line 80 of file gpencil_trace_utils.c.
References bm, free(), MEM_SAFE_FREE, and NULL.
Referenced by gpencil_trace_image().
void ED_gpencil_trace_bitmap_invert | ( | const potrace_bitmap_t * | bm | ) |
Invert the given bitmap (Black to White)
bm | Trace bitmap |
Definition at line 88 of file gpencil_trace_utils.c.
References bm, BM_ALLBITS, bm_scanline, and y.
Return new un-initialized trace bitmap
w | Width in pixels |
h | Height in pixels |
Definition at line 59 of file gpencil_trace_utils.c.
References bm, BM_WORDBITS, BM_WORDSIZE, free(), MEM_mallocN, NULL, and w().
Referenced by gpencil_trace_image().
void ED_gpencil_trace_bitmap_print | ( | FILE * | f, |
const potrace_bitmap_t * | bm | ||
) |
void ED_gpencil_trace_data_to_strokes | ( | struct Main * | bmain, |
potrace_state_t * | st, | ||
struct Object * | ob, | ||
struct bGPDframe * | gpf, | ||
int32_t | offset[2], | ||
float | scale, | ||
float | sample, | ||
int32_t | resolution, | ||
int32_t | thickness | ||
) |
Convert Potrace Bitmap to Grease Pencil strokes
st | Data with traced data |
ob | Target grease pencil object |
offset | Offset to center |
scale | Scale of the output |
sample | Sample distance to distribute points |
Definition at line 194 of file gpencil_trace_utils.c.
References add_bezier(), add_point(), BKE_gpencil_free_stroke(), BKE_gpencil_material_find_index_by_name_prefix(), BKE_gpencil_object_material_new(), BKE_gpencil_stroke_add(), BKE_gpencil_stroke_geometry_update(), BKE_gpencil_stroke_length(), BKE_gpencil_stroke_sample(), BLI_remlink(), Freestyle::c, copy_v2_v2(), copy_v4_v4(), Object::data, MaterialGPencilStyle::fill_rgba, MaterialGPencilStyle::flag, GP_MATERIAL_FILL_SHOW, GP_MATERIAL_IS_FILL_HOLDOUT, GP_MATERIAL_IS_STROKE_HOLDOUT, GP_MATERIAL_STROKE_SHOW, Material::gp_style, blender::math::length(), MAX_LENGTH, NULL, offset, sample, usdtokens::st(), MaterialGPencilStyle::stroke_rgba, bGPDframe::strokes, Object::totcol, bGPDstroke::totpoints, x, and y.
Referenced by gpencil_trace_image().
void ED_gpencil_trace_image_to_bitmap | ( | struct ImBuf * | ibuf, |
const potrace_bitmap_t * | bm, | ||
float | threshold | ||
) |
Convert image to BW bitmap for tracing
ibuf | ImBuf of the image |
bm | Trace bitmap |
Definition at line 130 of file gpencil_trace_utils.c.
References bm, BM_PUT, color, mul_v3_fl(), pixel_at_index(), usdtokens::rgba(), threshold, x, ImBuf::x, y, and ImBuf::y.
Referenced by gpencil_trace_image().
Return pixel data (rgba) at index
ibuf | ImBuf of the image |
idx | Index of the pixel |
Definition at line 113 of file gpencil_trace_utils.c.
References BLI_assert, copy_v4_v4(), float(), ImBuf::rect, ImBuf::rect_float, ImBuf::x, and ImBuf::y.
Referenced by ED_gpencil_trace_image_to_bitmap().