|
Blender
V3.3
|
#include <math.h>#include <stddef.h>#include <stdio.h>#include <stdlib.h>#include <string.h>#include "CLG_log.h"#include "MEM_guardedalloc.h"#include "BLI_blenlib.h"#include "BLI_math_vector.h"#include "BLI_string_utils.h"#include "BLT_translation.h"#include "IMB_imbuf.h"#include "IMB_imbuf_types.h"#include "DNA_gpencil_types.h"#include "DNA_material_types.h"#include "DNA_meshdata_types.h"#include "DNA_space_types.h"#include "BKE_action.h"#include "BKE_anim_data.h"#include "BKE_collection.h"#include "BKE_colortools.h"#include "BKE_deform.h"#include "BKE_gpencil.h"#include "BKE_gpencil_geom.h"#include "BKE_gpencil_update_cache.h"#include "BKE_icons.h"#include "BKE_idtype.h"#include "BKE_image.h"#include "BKE_lib_id.h"#include "BKE_lib_query.h"#include "BKE_main.h"#include "BKE_material.h"#include "BKE_paint.h"#include "BLI_math_color.h"#include "DEG_depsgraph_query.h"#include "BLO_read_write.h"Go to the source code of this file.
Classes | |
| struct | tGPencilUpdateOnWriteTraverseData |
Macros | |
| #define | DNA_DEPRECATED_ALLOW |
| #define | MAT_NR_REMAP(n) |
Variables | |
| static CLG_LogRef | LOG = {"bke.gpencil"} |
| IDTypeInfo | IDType_ID_GD |
| void(* | BKE_gpencil_batch_cache_dirty_tag_cb )(bGPdata *gpd) = NULL |
| void(* | BKE_gpencil_batch_cache_free_cb )(bGPdata *gpd) = NULL |
| #define MAT_NR_REMAP | ( | n | ) |
Definition at line 335 of file gpencil.c.
References BKE_gpencil_batch_cache_dirty_tag_cb, DEG_id_tag_update(), bGPdata::id, and ID_RECALC_GEOMETRY.
Referenced by BKE_object_data_batch_cache_dirty_tag(), and gpencil_convert_old_files_exec().
Definition at line 343 of file gpencil.c.
References BKE_gpencil_batch_cache_free_cb.
Referenced by BKE_gpencil_free_data().
| void BKE_gpencil_blend_read_data | ( | BlendDataReader * | reader, |
| bGPdata * | gpd | ||
| ) |
Definition at line 183 of file gpencil.c.
References bGPdata::adt, BKE_animdata_blend_read_data(), BKE_defvert_blend_read(), BLO_read_data_address, BLO_read_list(), BLO_read_pointer_array(), bGPdata::flag, GP_DATA_STROKE_EDITMODE, GP_DATA_STROKE_PAINTMODE, GP_DATA_STROKE_SCULPTMODE, GP_DATA_STROKE_VERTEXMODE, GP_DATA_STROKE_WEIGHTMODE, ID_IS_LINKED, bGPdata::layers, LISTBASE_FOREACH, bGPdata::mat, NULL, bGPdata::runtime, bGPdata_Runtime::sbuffer, bGPdata_Runtime::sbuffer_size, bGPdata_Runtime::sbuffer_used, bGPdata_Runtime::tot_cp_points, bGPdata_Runtime::update_cache, and bGPdata::vertex_group_names.
Referenced by direct_link_area(), and greasepencil_blend_read_data().
Get grease pencil material from brush.
| brush | Brush |
Definition at line 1675 of file gpencil.c.
References Brush::gpencil_settings, BrushGpencilSettings::material, and NULL.
Referenced by BKE_gpencil_object_material_ensure_from_brush(), and BKE_gpencil_object_material_from_brush_get().
Set grease pencil brush material.
Definition at line 1687 of file gpencil.c.
References BLI_assert, Brush::gpencil_settings, Material::id, id_us_min(), id_us_plus(), and BrushGpencilSettings::material.
Referenced by BKE_gpencil_brush_preset_set().
Definition at line 2890 of file gpencil.c.
References DEG_is_active(), depsgraph, GPencilUpdateCache::flag, GP_UPDATE_NODE_FULL_COPY, NULL, bGPdata::runtime, and bGPdata_Runtime::update_cache.
| void BKE_gpencil_curve_sync_selection | ( | bGPdata * | gpd, |
| bGPDstroke * | gps | ||
| ) |
Definition at line 1120 of file gpencil.c.
References bGPDcurve_point::bezt, BEZT_ISSEL_ANY, BKE_gpencil_stroke_select_index_reset(), BKE_gpencil_stroke_select_index_set(), bGPDcurve::curve_points, bGPDstroke::editcurve, bGPDcurve_point::flag, bGPDcurve::flag, bGPDstroke::flag, GP_CURVE_SELECT, GP_SPOINT_SELECT, GP_STROKE_SELECT, NULL, and bGPDcurve::tot_curve_points.
Referenced by gpencil_do_curve_circle_sel(), gpencil_generic_curve_select(), gpencil_select_alternate_exec(), gpencil_select_exec(), and gpencil_select_random_exec().
Add a new grease pencil data-block.
| bmain | Main pointer |
| name | Name of the datablock |
Definition at line 705 of file gpencil.c.
References ARRAY_SET_ITEMS, BKE_libblock_alloc(), bGPgrid::color, bGPdata::curve_edit_corner_angle, bGPdata::curve_edit_resolution, bGPdata::curve_edit_threshold, bGPdata::flag, bGPdata::gcolor_next, bGPdata::gcolor_prev, GP_DATA_CURVE_ADAPTIVE_RESOLUTION, GP_DATA_DISPINFO, GP_DATA_EXPAND, GP_DATA_SHOW_ONIONSKINS, GP_DATA_VIEWALIGN, GP_DEFAULT_CURVE_EDIT_CORNER_ANGLE, GP_DEFAULT_CURVE_ERROR, GP_DEFAULT_CURVE_RESOLUTION, GP_DEFAULT_GRID_LINES, GP_DEFAULT_PIX_FACTOR, GP_ONION_FADE, GP_ONION_GHOST_NEXTCOL, GP_ONION_GHOST_PREVCOL, GP_ONION_MODE_RELATIVE, bGPdata::grid, bGPdata::gstep, bGPdata::gstep_next, ID_GD, bGPdata::line_color, bGPgrid::lines, bGPdata::onion_factor, bGPdata::onion_flag, bGPdata::onion_keytype, bGPdata::onion_mode, bGPdata::pixfactor, bGPgrid::scale, and bGPdata::zdepth_offset.
Referenced by annotation_session_initdata(), BKE_object_obdata_add_from_type(), gpencil_data_add_exec(), gpencil_layer_add_exec(), gpencil_session_initdata(), gpencil_stroke_separate_exec(), and view3d_ruler_to_gpencil().
Definition at line 975 of file gpencil.c.
References bGPgrid::color, copy_v2_v2(), copy_v3_v3(), copy_v4_v4(), bGPdata::curve_edit_corner_angle, bGPdata::curve_edit_resolution, bGPdata::curve_edit_threshold, bGPdata::draw_mode, bGPdata::flag, bGPdata::gcolor_next, bGPdata::gcolor_prev, bGPdata::grid, bGPdata::gstep, bGPdata::gstep_next, bGPdata::line_color, bGPgrid::lines, bGPgrid::offset, bGPdata::onion_factor, bGPdata::onion_flag, bGPdata::onion_keytype, bGPdata::onion_mode, bGPdata::pixfactor, bGPgrid::scale, bGPdata::select_last_index, bGPdata::totframe, bGPdata::totlayer, bGPdata::totpoint, bGPdata::totstroke, bGPdata::vertex_group_active_index, and bGPdata::zdepth_offset.
Referenced by BKE_gpencil_update_on_write().
Definition at line 1060 of file gpencil.c.
References BKE_id_copy(), BLI_assert, greasepencil_copy_data(), bGPdata::id, MEM_dupallocN, and NULL.
Definition at line 2677 of file gpencil.c.
References BKE_gpencil_layer_original_pointers_update(), ListBase::first, bGPDlayer_Runtime::gpl_orig, bGPdata::layers, LISTBASE_FOREACH, bGPDlayer::next, NULL, and bGPDlayer::runtime.
Referenced by BKE_gpencil_update_orig_pointers().
| void BKE_gpencil_dvert_ensure | ( | struct bGPDstroke * | gps | ) |
Ensure stroke has vertex group.
| gps | Grease pencil stroke |
Definition at line 1891 of file gpencil.c.
References bGPDstroke::dvert, MEM_callocN, NULL, and bGPDstroke::totpoints.
Referenced by brush_draw_apply(), deformStroke(), ED_gpencil_vgroup_assign(), generate_geometry(), gpencil_add_verts_to_dgroups(), gpencil_deform_verts(), gpencil_primitive_interaction_end(), gpencil_stroke_from_buffer(), gpencil_stroke_newfrombuffer(), lineart_gpencil_generate(), and stroke_dash().
Delete grease pencil evaluated data
| gpd_eval | Grease pencil data-block |
Definition at line 498 of file gpencil.c.
References BKE_gpencil_free_data(), BKE_libblock_free_data(), BLI_assert, bGPdata::id, MEM_freeN, and ID::py_instance.
Referenced by BKE_gpencil_prepare_eval_data(), and BKE_object_free_derived_caches().
Add a copy of the active gp-frame to the given layer.
| gpl | Grease pencil layer |
| cframe | Frame number |
Definition at line 567 of file gpencil.c.
References bGPDlayer::actframe, BKE_gpencil_frame_addnew(), BKE_gpencil_frame_duplicate(), BKE_gpencil_free_strokes(), BLI_addtail(), BLI_insertlinkbefore(), bGPDframe::framenum, bGPDlayer::frames, LISTBASE_FOREACH, MEM_freeN, and NULL.
Referenced by BKE_gpencil_layer_frame_get(), createTransGPencil_curves(), createTransGPencil_strokes(), gpencil_frame_duplicate_exec(), and gpencil_sculpt_brush_init_stroke().
Add a new gp-frame to the given layer.
| gpl | Grease pencil layer |
| cframe | Frame number |
Definition at line 514 of file gpencil.c.
References BLI_addtail(), BLI_assert, BLI_insertlinkbefore(), CLOG_ERROR, ListBase::first, bGPDframe::framenum, bGPDlayer::frames, LOG, MEM_callocN, MEM_freeN, NULL, and state.
Referenced by BKE_gpencil_frame_addcopy(), BKE_gpencil_layer_frame_get(), BKE_gpencil_stroke_copy_to_keyframes(), ED_gpencil_create_blank(), ED_gpencil_create_lineart(), ED_gpencil_create_monkey(), ED_gpencil_create_stroke(), gpencil_layer_duplicate_object_exec(), image_to_gpencil_exec(), and lineart_gpencil_clear_strokes_exec_common().
Definition at line 1034 of file gpencil.c.
References bGPDframe::flag, bGPDframe::framenum, and bGPDframe::key_type.
Referenced by gpencil_update_on_write_frame_cb().
Make a copy of strokes between gpencil frames.
| gpf_src | Source grease pencil frame |
| gpf_dst | Destination grease pencil frame |
Definition at line 920 of file gpencil.c.
References BKE_gpencil_stroke_duplicate(), BLI_addtail(), BLI_listbase_clear(), LISTBASE_FOREACH, NULL, and bGPDframe::strokes.
Referenced by copy_frame_to_eval_ex().
Delete the last stroke of the given frame.
| gpl | Grease pencil layer |
| gpf | Grease pencil frame |
Definition at line 1169 of file gpencil.c.
References BKE_gpencil_free_stroke_weights(), BKE_gpencil_layer_frame_delete(), BKE_gpencil_layer_frame_get(), BLI_freelinkN(), BLI_listbase_is_empty(), bGPDstroke::dvert, ELEM, bGPDframe::framenum, GP_GETFRAME_USE_PREV, ListBase::last, MEM_freeN, NULL, bGPDstroke::points, bGPDframe::strokes, and bGPDstroke::triangles.
Definition at line 892 of file gpencil.c.
References BKE_gpencil_stroke_duplicate(), BLI_addtail(), BLI_listbase_clear(), LISTBASE_FOREACH, MEM_dupallocN, bGPDframe::next, NULL, bGPDframe::prev, and bGPDframe::strokes.
Referenced by BKE_gpencil_frame_addcopy(), BKE_gpencil_layer_duplicate(), and gpencil_update_on_write_frame_cb().
| void BKE_gpencil_frame_original_pointers_update | ( | const struct bGPDframe * | gpf_orig, |
| const struct bGPDframe * | gpf_eval | ||
| ) |
Update original pointers in evaluated frame.
| gpf_orig | Original grease-pencil frame. |
| gpf_eval | Evaluated grease pencil frame. |
Definition at line 2630 of file gpencil.c.
References ListBase::first, bGPDstroke_Runtime::gps_orig, bGPDspoint_Runtime::idx_orig, LISTBASE_FOREACH, bGPDstroke::next, NULL, bGPDstroke::points, bGPDspoint_Runtime::pt_orig, bGPDspoint::runtime, bGPDstroke::runtime, bGPDframe::strokes, and bGPDstroke::totpoints.
Referenced by BKE_gpencil_layer_original_pointers_update(), copy_frame_to_eval_ex(), and gpencil_update_on_write_frame_cb().
| void BKE_gpencil_frame_range_selected | ( | struct bGPDlayer * | gpl, |
| int * | r_initframe, | ||
| int * | r_endframe | ||
| ) |
Get range of selected frames in layer. Always the active frame is considered as selected, so if no more selected the range will be equal to the current active frame.
| gpl | Layer. |
| r_initframe | Number of first selected frame. |
| r_endframe | Number of last selected frame. |
Definition at line 1900 of file gpencil.c.
References bGPDlayer::actframe, bGPDframe::framenum, bGPDlayer::frames, GP_FRAME_SELECT, and LISTBASE_FOREACH.
Referenced by createTransGPencil_curves(), createTransGPencil_strokes(), gpencil_sculpt_brush_apply_standard(), gpencil_vertexpaint_brush_apply_to_layers(), and gpencil_weightpaint_brush_apply_to_layers().
Definition at line 2869 of file gpencil.c.
References bGPDlayer::actframe, BKE_gpencil_layer_active_get(), BLI_ghash_insert(), BLI_ghash_lookup(), bool, GP_FRAME_SELECT, GPENCIL_MULTIEDIT_SESSIONS_ON, bGPdata::layers, LISTBASE_FOREACH, NULL, and POINTER_FROM_INT.
Referenced by BKE_gpencil_stroke_copy_to_keyframes(), and gpencil_fill_modal().
Free (or release) any data used by this grease pencil (does not free the gpencil itself).
Definition at line 479 of file gpencil.c.
References BKE_gpencil_batch_cache_free(), BKE_gpencil_free_layers(), BKE_gpencil_free_update_cache(), BLI_freelistN(), bGPdata::layers, bGPdata::mat, MEM_SAFE_FREE, and bGPdata::vertex_group_names.
Referenced by animchannels_delete_exec(), BKE_gpencil_eval_delete(), gpencil_layer_remove_exec(), gpencil_undo_free_node(), and greasepencil_free_data().
Free all of a gp-layer's frames.
Definition at line 427 of file gpencil.c.
References bGPDlayer::actframe, BKE_gpencil_free_strokes(), BLI_freelinkN(), ListBase::first, bGPDlayer::frames, bGPDframe::next, and NULL.
Referenced by BKE_gpencil_free_layers(), BKE_gpencil_layer_delete(), and lineart_gpencil_clear_strokes_exec_common().
Definition at line 447 of file gpencil.c.
References BLI_freelinkN(), ListBase::first, mask(), bGPDlayer::mask_layers, and NULL.
Referenced by BKE_gpencil_free_layers(), and BKE_gpencil_layer_delete().
Free all of the gp-layers for a viewport (list should be &gpd->layers or so).
Definition at line 456 of file gpencil.c.
References BKE_gpencil_free_frames(), BKE_gpencil_free_layer_masks(), BLI_freelinkN(), ListBase::first, bGPDlayer::next, and NULL.
Referenced by BKE_gpencil_free_data(), ED_gpencil_anim_copybuf_free(), and ED_undo_gpencil_step().
| void BKE_gpencil_free_point_weights | ( | MDeformVert * | dvert | ) |
Definition at line 353 of file gpencil.c.
References MDeformVert::dw, MEM_SAFE_FREE, and NULL.
Referenced by BKE_gpencil_free_stroke_weights(), BKE_gpencil_stroke_simplify_adaptive(), BKE_gpencil_stroke_simplify_fixed(), and reduce_stroke_points().
| void BKE_gpencil_free_stroke | ( | struct bGPDstroke * | gps | ) |
Free stroke, doesn't unlink from any ListBase.
Definition at line 391 of file gpencil.c.
References BKE_gpencil_free_stroke_editcurve(), BKE_gpencil_free_stroke_weights(), bGPDstroke::dvert, bGPDstroke::editcurve, MEM_freeN, NULL, bGPDstroke::points, and bGPDstroke::triangles.
Referenced by apply_dash_for_frame(), BKE_gpencil_curve_delete_tagged_points(), BKE_gpencil_free_strokes(), BKE_gpencil_stroke_delete_tagged_points(), BKE_gpencil_stroke_perimeter_from_view(), clear_stroke(), ED_gpencil_stroke_join_and_trim(), ED_gpencil_trace_data_to_strokes(), generate_geometry(), gpencil_cutter_dissolve(), gpencil_delete_selected_strokes(), gpencil_delete_temp_stroke_extension(), gpencil_dissolve_selected_curve_points(), gpencil_dissolve_selected_stroke_points(), gpencil_fill_modal(), gpencil_interpolate_free_tagged_strokes(), gpencil_stroke_join_exec(), gpencil_stroke_join_islands(), gpencil_update_on_write_stroke_cb(), and blender::io::gpencil::GpencilIO::stroke_point_radius_get().
| void BKE_gpencil_free_stroke_editcurve | ( | bGPDstroke * | gps | ) |
Definition at line 377 of file gpencil.c.
References bGPDcurve::curve_points, bGPDstroke::editcurve, MEM_freeN, and NULL.
Referenced by BKE_gpencil_free_stroke(), and BKE_gpencil_stroke_editcurve_update().
| void BKE_gpencil_free_stroke_weights | ( | bGPDstroke * | gps | ) |
Definition at line 361 of file gpencil.c.
References BKE_gpencil_free_point_weights(), bGPDstroke::dvert, NULL, and bGPDstroke::totpoints.
Referenced by annotation_free_stroke(), BKE_gpencil_dissolve_points(), BKE_gpencil_frame_delete_laststroke(), BKE_gpencil_free_stroke(), BKE_gpencil_stroke_extra_points(), BKE_gpencil_stroke_sample(), BKE_gpencil_stroke_trim_points(), ED_gpencil_strokes_copybuf_free(), gpencil_dissolve_selected_stroke_points(), gpencil_frame_clean_fill_exec(), gpencil_frame_clean_loose_exec(), and gpencil_free_stroke().
Free strokes belonging to a gp-frame.
Definition at line 414 of file gpencil.c.
References BKE_gpencil_free_stroke(), BLI_listbase_clear(), BLI_listbase_is_empty(), LISTBASE_FOREACH_MUTABLE, and bGPDframe::strokes.
Referenced by BKE_gpencil_frame_addcopy(), BKE_gpencil_free_frames(), BKE_gpencil_layer_frame_delete(), copy_frame_to_eval_ex(), gpencil_interpolate_exit(), gpencil_interpolate_reverse_exec(), gpencil_interpolate_seq_exec(), gpencil_primitive_exit(), gpencil_update_on_write_frame_cb(), and view3d_ruler_to_gpencil().
| bool BKE_gpencil_from_image | ( | struct SpaceImage * | sima, |
| struct bGPdata * | gpd, | ||
| struct bGPDframe * | gpf, | ||
| float | size, | ||
| bool | mask | ||
| ) |
Create grease pencil strokes from image
Definition at line 2290 of file gpencil.c.
References BKE_gpencil_stroke_add(), BKE_gpencil_stroke_geometry_update(), BKE_gpencil_stroke_select_index_set(), BKE_image_acquire_ibuf(), BKE_image_release_ibuf(), col, color, copy_v3_v3(), bGPDspoint::flag, bGPDstroke::flag, GP_SPOINT_SELECT, GP_STROKE_SELECT, image(), SpaceImage::image, IMB_sampleImageAtLocation(), SpaceImage::iuser, lock, mask(), NULL, bGPDstroke::points, bGPDspoint::pressure, ImBuf::rect, size(), bGPDspoint::strength, bGPDspoint::vert_color, ImBuf::x, bGPDspoint::x, ImBuf::y, bGPDspoint::z, and zero_v3().
Referenced by image_to_gpencil_exec().
Get the active grease pencil layer for editing.
| gpd | Grease pencil data-block |
Definition at line 1558 of file gpencil.c.
References ELEM, ListBase::first, GP_LAYER_ACTIVE, bGPdata::layers, LISTBASE_FOREACH, and NULL.
Referenced by annotation_actframe_delete_poll(), annotation_paint_initstroke(), BKE_gpencil_convert_curve(), BKE_gpencil_frame_selected_hash(), BKE_gpencil_layer_addnew(), BKE_gpencil_layer_autolock_set(), ED_gpencil_drawing_reference_get(), ED_gpencil_has_keyframe_v3d(), ED_gpencil_set_active_channel(), get_automasking_strokes_list(), gpencil_actframe_delete_exec(), gpencil_actframe_delete_poll(), gpencil_active_layer_annotation_poll(), gpencil_active_layer_poll(), gpencil_blank_frame_add_exec(), GPENCIL_cache_init(), gpencil_convert_layer_exec(), gpencil_convert_poll(), gpencil_create_extensions(), gpencil_curve_edit_mode_poll(), gpencil_draw_datablock(), gpencil_fill_init(), gpencil_frame_duplicate_exec(), gpencil_hide_exec(), gpencil_interpolate_reverse_poll(), gpencil_isolate_layer_exec(), gpencil_layer_copy_exec(), gpencil_layer_duplicate_object_exec(), gpencil_layer_duplicate_object_poll(), gpencil_layer_mask_add_exec(), gpencil_layer_mask_move_exec(), gpencil_layer_mask_remove_exec(), gpencil_layer_move_exec(), gpencil_layer_remove_exec(), gpencil_merge_by_distance_poll(), gpencil_merge_layer_exec(), gpencil_paint_initstroke(), gpencil_primitive_add_poll(), gpencil_primitive_invoke(), gpencil_session_init_fill(), gpencil_stroke_apply_thickness_exec(), gpencil_stroke_arrange_exec(), gpencil_stroke_join_exec(), gpencil_stroke_normalize_poll(), gpencil_stroke_not_in_curve_edit_mode(), gpencil_stroke_separate_exec(), gpencil_strokes_paste_exec(), gpencil_transform_fill_poll(), gpencil_zoom_level_set(), OVERLAY_gpencil_cache_init(), screen_ctx_active_annotation_layer(), screen_ctx_active_gpencil_frame(), screen_ctx_active_gpencil_layer(), and trace_initialize_job_data().
Set active grease pencil layer.
| gpd | Grease pencil data-block |
| active | Grease pencil layer to set as active |
Definition at line 1601 of file gpencil.c.
References blender::compositor::active, ELEM, ListBase::first, bGPdata::flag, GP_DATA_AUTOLOCK_LAYERS, GP_LAYER_ACTIVE, GP_LAYER_LOCKED, bGPdata::layers, LISTBASE_FOREACH, and NULL.
Referenced by BKE_gpencil_layer_addnew(), click_select_channel_gplayer(), ED_gpencil_layer_merge(), ED_gpencil_set_active_channel(), gpencil_layer_active_exec(), gpencil_layer_change_exec(), gpencil_layer_copy_exec(), gpencil_layer_remove_exec(), gpencil_stroke_separate_exec(), namebutton_fn(), and tree_element_gplayer_activate().
| bGPDlayer* BKE_gpencil_layer_addnew | ( | struct bGPdata * | gpd, |
| const char * | name, | ||
| bool | setactive, | ||
| bool | add_to_header | ||
| ) |
Add a new gp-layer and make it the active layer.
| gpd | Grease pencil data-block |
| name | Name of the layer |
| setactive | Set as active |
| add_to_header | Used to force the layer added at header |
Definition at line 621 of file gpencil.c.
References ARRAY_SET_ITEMS, BKE_gpencil_layer_active_get(), BKE_gpencil_layer_active_set(), BLI_addhead(), BLI_addtail(), BLI_insertlinkafter(), BLI_strncpy(), BLI_uniquename(), bGPDlayer::color, copy_v3_fl(), copy_v4_v4(), DATA_, bGPDlayer::flag, bGPdata::flag, bGPDlayer::gcolor_next, bGPDlayer::gcolor_prev, GP_DATA_ANNOTATIONS, GP_LAYER_ONIONSKIN, GP_LAYER_USE_LIGHTS, bGPDlayer::info, invert_m4_m4(), bGPDlayer::layer_invmat, bGPDlayer::layer_mat, bGPdata::layers, loc_eul_size_to_mat4(), bGPDlayer::location, MEM_callocN, NULL, bGPDlayer::onion_flag, bGPDlayer::opacity, bGPDlayer::rotation, bGPDlayer::scale, bGPDlayer::thickness, bGPDlayer::vertex_paint_opacity, and zero_v3().
Referenced by annotation_paint_initstroke(), BKE_gpencil_convert_curve(), BKE_gpencil_convert_mesh(), ED_gpencil_create_blank(), ED_gpencil_create_lineart(), ED_gpencil_create_monkey(), ED_gpencil_create_stroke(), gpencil_bake_grease_pencil_animation_exec(), gpencil_data_add_exec(), gpencil_layer_add_exec(), gpencil_layer_change_exec(), gpencil_layer_duplicate_object_exec(), gpencil_paint_initstroke(), gpencil_primitive_set_initdata(), gpencil_session_init_fill(), gpencil_stroke_separate_exec(), gpencil_strokes_paste_exec(), image_to_gpencil_exec(), blender::io::gpencil::GpencilImporterSVG::read(), trace_initialize_job_data(), and view3d_ruler_to_gpencil().
Set locked layers for autolock mode.
| gpd | Grease pencil data-block |
| unlock | Unlock flag |
Definition at line 1623 of file gpencil.c.
References BKE_gpencil_layer_active_get(), BLI_assert, bGPdata::flag, GP_DATA_AUTOLOCK_LAYERS, GP_LAYER_LOCKED, bGPdata::layers, LISTBASE_FOREACH, and NULL.
Referenced by click_select_channel_gplayer(), and ED_gpencil_set_active_channel().
Definition at line 1012 of file gpencil.c.
References bGPDlayer::blend_mode, BLI_strncpy(), copy_m4_m4(), copy_v3_v3(), copy_v4_v4(), bGPDlayer::flag, bGPDlayer::inverse, bGPDlayer::layer_invmat, bGPDlayer::layer_mat, bGPDlayer::line_change, bGPDlayer::location, bGPDlayer::onion_flag, bGPDlayer::opacity, bGPDlayer::parent, bGPDlayer::parsubstr, bGPDlayer::partype, bGPDlayer::pass_index, bGPDlayer::rotation, bGPDlayer::scale, bGPDlayer::tintcolor, bGPDlayer::vertex_paint_opacity, and bGPDlayer::viewlayername.
Referenced by gpencil_update_on_write_layer_cb().
Delete grease pencil layer.
| gpd | Grease pencil data-block |
| gpl | Grease pencil layer |
Definition at line 1653 of file gpencil.c.
References BKE_gpencil_free_frames(), BKE_gpencil_free_layer_masks(), BKE_gpencil_layer_mask_remove_ref(), BKE_icon_delete(), BLI_freelinkN(), ELEM, bGPDlayer_Runtime::icon_id, bGPDlayer::info, bGPdata::layers, NULL, and bGPDlayer::runtime.
Referenced by animchannels_delete_exec(), ED_gpencil_layer_merge(), gpencil_layer_remove_exec(), and gpencil_update_on_write_layer_cb().
| bGPDlayer* BKE_gpencil_layer_duplicate | ( | const bGPDlayer * | gpl_src, |
| const bool | dup_frames, | ||
| const bool | dup_strokes | ||
| ) |
Definition at line 937 of file gpencil.c.
References bGPDlayer::actframe, BKE_gpencil_frame_duplicate(), BKE_gpencil_layer_mask_copy(), BLI_addtail(), BLI_listbase_clear(), bGPDlayer::frames, LISTBASE_FOREACH, MEM_dupallocN, bGPDlayer::next, NULL, and bGPDlayer::prev.
Referenced by gpencil_update_on_write_layer_cb(), and greasepencil_copy_data().
Delete the given frame from a layer.
| gpl | Grease pencil layer |
| gpf | Grease pencil frame |
Definition at line 1396 of file gpencil.c.
References bGPDlayer::actframe, BKE_gpencil_free_strokes(), BLI_freelinkN(), ELEM, bGPDlayer::frames, NULL, and bGPDframe::prev.
Referenced by BKE_gpencil_frame_delete_laststroke(), clear_strokes(), ED_gpencil_anim_copybuf_paste(), ED_gpencil_layer_frames_delete(), gpencil_actframe_delete_all_exec(), gpencil_actframe_delete_exec(), gpencil_frame_clean_duplicate_exec(), and posttrans_gpd_clean().
Look up the gp-frame on the requested frame number, but don't add a new one.
| gpl | Grease pencil layer |
| cframe | Frame number |
Definition at line 1216 of file gpencil.c.
References bGPDframe::framenum, bGPDlayer::frames, ListBase::last, NULL, and bGPDframe::prev.
Referenced by bake_strokes(), BKE_gpencil_stroke_copy_to_keyframes(), clear_strokes(), ED_gpencil_select_frame(), and gpencil_blank_frame_add_exec().
| bGPDframe* BKE_gpencil_layer_frame_get | ( | struct bGPDlayer * | gpl, |
| int | cframe, | ||
| eGP_GetFrame_Mode | addnew | ||
| ) |
Get the appropriate gp-frame from a given layer
| gpl | Grease pencil layer |
| cframe | Frame number |
| addnew | Add option |
Definition at line 1232 of file gpencil.c.
References blender::math::abs(), bGPDlayer::actframe, BKE_gpencil_frame_addcopy(), BKE_gpencil_frame_addnew(), CLOG_STR_ERROR, ListBase::first, bGPDframe::flag, bGPDlayer::flag, bGPDframe::framenum, bGPDlayer::frames, GP_FRAME_PAINT, GP_GETFRAME_ADD_COPY, GP_LAYER_FRAMELOCK, ListBase::last, LOG, bGPDframe::next, NULL, and bGPDframe::prev.
Referenced by annotation_draw_data_layers(), annotation_paint_initstroke(), bake_strokes(), BKE_gpencil_convert_curve(), BKE_gpencil_convert_mesh(), BKE_gpencil_frame_active_set(), BKE_gpencil_frame_delete_laststroke(), BKE_gpencil_frame_retime_get(), ED_gpencil_anim_copybuf_paste(), ED_gpencil_layer_merge(), gpencil_actframe_delete_all_exec(), gpencil_actframe_delete_exec(), gpencil_bake_grease_pencil_animation_exec(), gpencil_blank_frame_add_exec(), gpencil_brush_clone_add(), GPENCIL_cache_populate(), gpencil_convert_check_has_valid_timing(), gpencil_convert_poll(), gpencil_copy_visible_frames_to_eval(), gpencil_create_extensions(), gpencil_delete_temp_stroke_extension(), gpencil_draw_datablock(), gpencil_fill_modal(), gpencil_interpolate_modal(), gpencil_interpolate_seq_exec(), gpencil_layer_add_exec(), gpencil_layer_to_curve(), gpencil_paint_initstroke(), gpencil_prepare_stroke(), gpencil_primitive_interaction_end(), gpencil_select_same_layer(), gpencil_stroke_from_buffer(), gpencil_stroke_separate_exec(), gpencil_strokes_paste_exec(), gpencil_zoom_level_set(), insert_gpencil_key(), blender::io::gpencil::GpencilImporterSVG::read(), trace_start_job(), view3d_ruler_from_gpencil(), and view3d_ruler_to_gpencil().
Sort grease pencil frames.
| gpl | Grease pencil layer |
| r_has_duplicate_frames | Duplicated frames flag |
Definition at line 1553 of file gpencil.c.
References BLI_listbase_sort_r(), bGPDlayer::frames, and gpencil_cb_cmp_frame().
Referenced by ANIM_animdata_update(), and posttrans_gpd_clean().
Definition at line 1576 of file gpencil.c.
References ELEM, ListBase::first, bGPDlayer::info, bGPdata::layers, bGPDlayer_Mask::name, bGPDlayer::next, NULL, and STREQ.
Referenced by bake_strokes(), bakeModifier(), clear_strokes(), generateStrokes(), and lineart_gpencil_clear_strokes_exec_common().
Definition at line 1200 of file gpencil.c.
References bGPDlayer::flag, GP_LAYER_HIDE, GP_LAYER_LOCKED, and NULL.
| bGPDlayer_Mask* BKE_gpencil_layer_mask_add | ( | struct bGPDlayer * | gpl, |
| const char * | name | ||
| ) |
Add grease pencil mask layer.
| gpl | Grease pencil layer |
| name | Name of the mask |
Definition at line 1435 of file gpencil.c.
References bGPDlayer::act_mask, BLI_addtail(), BLI_strncpy(), mask(), bGPDlayer::mask_layers, and MEM_callocN.
Referenced by gpencil_layer_mask_add_exec().
Clean any invalid mask layer.
Definition at line 1516 of file gpencil.c.
References BKE_gpencil_layer_mask_remove(), BKE_gpencil_layer_named_get(), LISTBASE_FOREACH_MUTABLE, mask(), bGPDlayer::mask_layers, and NULL.
Referenced by BKE_gpencil_layer_mask_cleanup_all_layers(), and gpencil_merge_layer_exec().
Clean any invalid mask layer for all layers.
Definition at line 1525 of file gpencil.c.
References BKE_gpencil_layer_mask_cleanup(), bGPdata::layers, and LISTBASE_FOREACH.
Referenced by gpencil_stroke_separate_exec().
Definition at line 1506 of file gpencil.c.
References BLI_addtail(), BLI_listbase_clear(), LISTBASE_FOREACH, bGPDlayer::mask_layers, MEM_dupallocN, bGPDlayer_Mask::next, NULL, and bGPDlayer_Mask::prev.
Referenced by BKE_gpencil_layer_duplicate().
| bGPDlayer_Mask* BKE_gpencil_layer_mask_named_get | ( | struct bGPDlayer * | gpl, |
| const char * | name | ||
| ) |
Get mask layer by name.
| gpl | Grease pencil layer |
| name | Mask name |
Definition at line 1427 of file gpencil.c.
References BLI_findstring(), bGPDlayer::mask_layers, and NULL.
Referenced by ED_gpencil_layer_merge(), and gpencil_layer_mask_add_exec().
| void BKE_gpencil_layer_mask_remove | ( | struct bGPDlayer * | gpl, |
| struct bGPDlayer_Mask * | mask | ||
| ) |
Remove grease pencil mask layer.
| gpl | Grease pencil layer |
| mask | Grease pencil mask layer |
Definition at line 1446 of file gpencil.c.
References bGPDlayer::act_mask, BLI_freelinkN(), CLAMP_MIN, mask(), and bGPDlayer::mask_layers.
Referenced by BKE_gpencil_layer_mask_cleanup(), BKE_gpencil_layer_mask_remove_ref(), and gpencil_layer_mask_remove_exec().
Remove any reference to mask layer.
| gpd | Grease pencil data-block |
| name | Name of the mask layer |
Definition at line 1453 of file gpencil.c.
References BKE_gpencil_layer_mask_remove(), bGPdata::layers, LISTBASE_FOREACH, mask(), and STREQ.
Referenced by BKE_gpencil_layer_delete().
Sort grease pencil mask layers.
| gpd | Grease pencil data-block |
| gpl | Grease pencil layer |
Definition at line 1484 of file gpencil.c.
References BKE_gpencil_layer_named_get(), BLI_findindex(), BLI_listbase_sort(), gpencil_cb_sort_masks(), bGPdata::layers, LISTBASE_FOREACH, mask(), bGPDlayer::mask_layers, and NULL.
Referenced by BKE_gpencil_layer_mask_sort_all(), ED_gpencil_layer_merge(), gpencil_layer_mask_add_exec(), and gpencil_layer_mask_remove_exec().
Sort all grease pencil mask layer.
| gpd | Grease pencil data-block |
Definition at line 1499 of file gpencil.c.
References BKE_gpencil_layer_mask_sort(), bGPdata::layers, and LISTBASE_FOREACH.
Referenced by gpencil_layer_move_exec(), and gpencil_layer_remove_exec().
Get layer by name
| gpd | Grease pencil data-block |
| name | Layer name |
Definition at line 1419 of file gpencil.c.
References BLI_findstring(), bGPdata::layers, and NULL.
Referenced by BKE_gpencil_convert_curve(), BKE_gpencil_convert_mesh(), BKE_gpencil_layer_mask_cleanup(), BKE_gpencil_layer_mask_sort(), ED_gpencil_layer_merge(), gpencil_bake_grease_pencil_animation_exec(), gpencil_brush_clone_add(), gpencil_layer_cache_add(), and gpencil_layer_mask_add_exec().
| void BKE_gpencil_layer_original_pointers_update | ( | const struct bGPDlayer * | gpl_orig, |
| const struct bGPDlayer * | gpl_eval | ||
| ) |
Update original pointers in evaluated layer.
| gpl_orig | Original grease-pencil layer. |
| gpl_eval | Evaluated grease pencil layer. |
Definition at line 2663 of file gpencil.c.
References BKE_gpencil_frame_original_pointers_update(), ListBase::first, bGPDlayer::frames, bGPDframe_Runtime::gpf_orig, LISTBASE_FOREACH, bGPDframe::next, NULL, and bGPDframe::runtime.
Referenced by BKE_gpencil_data_update_orig_pointers(), gpencil_copy_structure_for_eval(), and gpencil_update_on_write_layer_cb().
| void BKE_gpencil_layer_transform_matrix_get | ( | const Depsgraph * | depsgraph, |
| Object * | obact, | ||
| bGPDlayer * | gpl, | ||
| float | diff_mat[4][4] | ||
| ) |
Definition at line 2705 of file gpencil.c.
References add_v3_v3(), BKE_pose_channel_find_name(), copy_m4_m4(), DEG_get_evaluated_object(), depsgraph, ELEM, bGPDlayer::inverse, bGPDlayer::layer_mat, mul_m4_m4m4(), NULL, OB_GPENCIL, Object::obmat, PARBONE, bGPDlayer::parent, PAROBJECT, PARSKEL, bGPDlayer::parsubstr, bGPDlayer::partype, Object::pose, bPoseChannel::pose_mat, Object::type, and unit_m4().
| int BKE_gpencil_material_find_index_by_name_prefix | ( | struct Object * | ob, |
| const char * | name_prefix | ||
| ) |
Find material by name prefix.
| ob | Object pointer |
| name_prefix | Prefix name of the material |
Definition at line 2855 of file gpencil.c.
References BKE_object_material_get(), Material::gp_style, Material::id, ID::name, NULL, STREQLEN, and Object::totcol.
Referenced by BKE_gpencil_convert_mesh(), blender::io::gpencil::GpencilImporter::create_material(), and ED_gpencil_trace_data_to_strokes().
Reassign strokes using a material.
| gpd | Grease pencil data-block |
| totcol | Total materials |
| index | Index of the material |
Definition at line 1948 of file gpencil.c.
References CLAMP_MIN, bGPdata::layers, and LISTBASE_FOREACH.
Referenced by BKE_object_material_slot_remove().
Remove strokes using a material.
| gpd | Grease pencil data-block |
| index | Index of the material |
Definition at line 1963 of file gpencil.c.
References bGPdata::layers, and LISTBASE_FOREACH.
Referenced by BKE_object_material_slot_used().
| void BKE_gpencil_material_remap | ( | struct bGPdata * | gpd, |
| const unsigned int * | remap, | ||
| unsigned int | remap_len | ||
| ) |
Remap material
| gpd | Grease pencil data-block |
| remap | Remap index |
| remap_len | Remap length |
Definition at line 1978 of file gpencil.c.
References bGPdata::layers, LISTBASE_FOREACH, and MAT_NR_REMAP.
Referenced by BKE_object_material_remap().
| bool BKE_gpencil_merge_materials | ( | struct Object * | ob, |
| float | hue_threshold, | ||
| float | sat_threshold, | ||
| float | val_threshold, | ||
| int * | r_removed | ||
| ) |
Merge similar materials
| ob | Grease pencil object |
| hue_threshold | Threshold for Hue |
| sat_threshold | Threshold for Saturation |
| val_threshold | Threshold for Value |
| r_removed | Number of materials removed |
Definition at line 2122 of file gpencil.c.
References BKE_gpencil_material_settings(), BKE_gpencil_merge_materials_table_get(), BKE_object_material_len_p(), BLI_ghash_free(), BLI_ghash_haskey(), BLI_ghash_int_new(), BLI_ghash_len(), BLI_ghash_lookup(), Object::data, MaterialGPencilStyle::flag, GP_LAYER_HIDE, GP_LAYER_UNLOCK_COLOR, GP_MATERIAL_HIDE, GP_MATERIAL_LOCKED, bGPdata::layers, LISTBASE_FOREACH, NULL, POINTER_AS_INT, and POINTER_FROM_INT.
Referenced by BKE_gpencil_convert_curve(), and gpencil_stroke_merge_material_exec().
| bool BKE_gpencil_merge_materials_table_get | ( | struct Object * | ob, |
| float | hue_threshold, | ||
| float | sat_threshold, | ||
| float | val_threshold, | ||
| struct GHash * | r_mat_table | ||
| ) |
Load a table with material conversion index for merged materials.
| ob | Grease pencil object. |
| hue_threshold | Threshold for Hue. |
| sat_threshold | Threshold for Saturation. |
| val_threshold | Threshold for Value. |
| r_mat_table | return material table. |
Definition at line 2003 of file gpencil.c.
References BKE_gpencil_material(), BKE_object_material_len_p(), BLI_ghash_free(), BLI_ghash_haskey(), BLI_ghash_insert(), BLI_ghash_int_new(), col, compare_ff(), copy_v3_v3(), MaterialGPencilStyle::fill_rgba, MaterialGPencilStyle::fill_style, MaterialGPencilStyle::flag, GP_MATERIAL_FILL_SHOW, GP_MATERIAL_LOCKED, GP_MATERIAL_STROKE_SHOW, Material::gp_style, MaterialGPencilStyle::mode, NULL, POINTER_FROM_INT, rgb_to_hsv_compat_v(), MaterialGPencilStyle::stroke_rgba, MaterialGPencilStyle::stroke_style, and zero_v3().
Referenced by BKE_gpencil_merge_materials().
| float BKE_gpencil_multiframe_falloff_calc | ( | struct bGPDframe * | gpf, |
| int | actnum, | ||
| int | f_init, | ||
| int | f_end, | ||
| struct CurveMapping * | cur_falloff | ||
| ) |
Get Falloff factor base on frame range
| gpf | Frame. |
| actnum | Number of active frame in layer. |
| f_init | Number of first selected frame. |
| f_end | Number of last selected frame. |
| cur_falloff | Curve with falloff factors. |
Definition at line 1917 of file gpencil.c.
References BKE_curvemapping_evaluateF(), float(), bGPDframe::framenum, and NULL.
Referenced by createTransGPencil_curves(), createTransGPencil_strokes(), gpencil_sculpt_brush_apply_standard(), gpencil_vertexpaint_brush_apply_to_layers(), and gpencil_weightpaint_brush_apply_to_layers().
| int BKE_gpencil_object_material_ensure | ( | struct Main * | bmain, |
| struct Object * | ob, | ||
| struct Material * | material | ||
| ) |
Assigns the material to object (if not already present) and returns its index (mat_nr).
Definition at line 1720 of file gpencil.c.
References BKE_gpencil_object_material_index_get(), BKE_MAT_ASSIGN_USERPREF, BKE_object_material_assign(), BKE_object_material_slot_add(), material, and Object::totcol.
Referenced by ED_gpencil_join_objects_exec(), gpencil_copybuf_validate_colormap(), gpencil_layer_duplicate_object_exec(), gpencil_materials_copy_to_object_exec(), and gpencil_stroke_separate_exec().
Get active color, and add all default settings if we don't find anything.
| ob | Grease pencil object |
Definition at line 1807 of file gpencil.c.
References BKE_gpencil_material_attr_init(), BKE_gpencil_object_material_ensure_from_active_input_material(), Material::gp_style, and NULL.
| Material* BKE_gpencil_object_material_ensure_by_name | ( | Main * | bmain, |
| Object * | ob, | ||
| const char * | name, | ||
| int * | r_index | ||
| ) |
Definition at line 2228 of file gpencil.c.
References BKE_gpencil_object_material_index_get_by_name(), BKE_gpencil_object_material_new(), BKE_object_material_get(), and bGPDlayer_Mask::name.
Referenced by gpencil_lineart_material(), gpencil_monkey_color(), and gpencil_stroke_material().
| Material* BKE_gpencil_object_material_ensure_from_active_input_brush | ( | struct Main * | bmain, |
| struct Object * | ob, | ||
| struct Brush * | brush | ||
| ) |
Guaranteed to return a material assigned to object. Returns never NULL.
Definition at line 1780 of file gpencil.c.
References BKE_gpencil_object_material_ensure_from_active_input_material(), BKE_gpencil_object_material_ensure_from_brush(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, and Brush::gpencil_settings.
Referenced by BKE_gpencil_object_material_ensure_from_active_input_toolsettings(), gpencil_init_colors(), and gpencil_session_init_fill().
Guaranteed to return a material assigned to object. Returns never NULL. Only use this for materials unrelated to user input.
| ob | Grease pencil object |
Definition at line 1797 of file gpencil.c.
References Object::actcol, BKE_material_default_gpencil(), and BKE_object_material_get().
Referenced by BKE_gpencil_object_material_ensure_active(), and BKE_gpencil_object_material_ensure_from_active_input_brush().
| Material* BKE_gpencil_object_material_ensure_from_active_input_toolsettings | ( | struct Main * | bmain, |
| struct Object * | ob, | ||
| struct ToolSettings * | ts | ||
| ) |
Guaranteed to return a material assigned to object. Returns never NULL.
| bmain | Main pointer |
| ob | Grease pencil object |
Definition at line 1768 of file gpencil.c.
References BKE_gpencil_object_material_ensure_from_active_input_brush(), Paint::brush, ToolSettings::gp_paint, NULL, and GpPaint::paint.
Referenced by ED_gpencil_add_defaults(), and gpencil_primitive_init().
| Material* BKE_gpencil_object_material_ensure_from_brush | ( | struct Main * | bmain, |
| struct Object * | ob, | ||
| struct Brush * | brush | ||
| ) |
Adds the pinned material to the object if necessary.
Definition at line 1702 of file gpencil.c.
References Object::actcol, BKE_gpencil_brush_material_get(), BKE_gpencil_object_material_index_get(), BKE_MAT_ASSIGN_USERPREF, BKE_object_material_assign(), BKE_object_material_get(), BKE_object_material_slot_add(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, Brush::gpencil_settings, and Object::totcol.
Referenced by BKE_gpencil_object_material_ensure_from_active_input_brush().
Returns the material for a brush with respect to its pinned state.
| ob | Grease pencil object |
| brush | Brush |
Definition at line 1748 of file gpencil.c.
References Object::actcol, BKE_gpencil_brush_material_get(), BKE_object_material_get(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, and Brush::gpencil_settings.
Referenced by gpencil_brush_cursor_draw().
Returns the material index for a brush with respect to its pinned state.
| ob | Grease pencil object |
| brush | Brush |
Definition at line 1759 of file gpencil.c.
References Object::actcol, BKE_gpencil_object_material_index_get(), BrushGpencilSettings::flag, GP_BRUSH_MATERIAL_PINNED, Brush::gpencil_settings, and BrushGpencilSettings::material.
Referenced by gpencil_primitive_set_initdata(), gpencil_stroke_from_buffer(), and gpencil_stroke_newfrombuffer().
Get material index (0-based like mat_nr not actcol).
| ob | Grease pencil object |
| ma | Material |
Definition at line 2199 of file gpencil.c.
References BKE_object_material_get(), BKE_object_material_len_p(), and NULL.
Referenced by bake_strokes(), BKE_gpencil_object_material_ensure(), BKE_gpencil_object_material_ensure_from_brush(), BKE_gpencil_object_material_get_index_from_brush(), generate_strokes_actual(), gpencil_bake_grease_pencil_animation_exec(), gpencil_brush_clone_add(), gpencil_stroke_change_color_exec(), gpencil_strokes_paste_exec(), and panel_draw().
| int BKE_gpencil_object_material_index_get_by_name | ( | Object * | ob, |
| const char * | name | ||
| ) |
Definition at line 2213 of file gpencil.c.
References BKE_object_material_get(), BKE_object_material_len_p(), Material::id, bGPDlayer_Mask::name, ID::name, NULL, and STREQ.
Referenced by BKE_gpencil_object_material_ensure_by_name().
| Material* BKE_gpencil_object_material_new | ( | struct Main * | bmain, |
| struct Object * | ob, | ||
| const char * | name, | ||
| int * | r_index | ||
| ) |
Creates a new grease-pencil material and assigns it to object.
| bmain | Main pointer |
| ob | Grease pencil object |
| name | Material name |
| r_index | value is set to zero based index of the new material if r_index is not NULL. |
Definition at line 1734 of file gpencil.c.
References Object::actcol, BKE_gpencil_material_add(), BKE_MAT_ASSIGN_USERPREF, BKE_object_material_assign(), BKE_object_material_slot_add(), Material::id, id_us_min(), bGPDlayer_Mask::name, and Object::totcol.
Referenced by BKE_gpencil_object_material_ensure_by_name(), blender::io::gpencil::GpencilImporter::create_material(), ED_gpencil_trace_data_to_strokes(), eyedropper_add_material(), gpencil_add_from_curve_material(), gpencil_add_material(), gpencil_convert_old_files_exec(), and image_to_gpencil_exec().
Create a default palette.
Definition at line 2241 of file gpencil.c.
References ARRAY_SIZE, BKE_paint_palette_set(), BKE_palette_add(), BKE_palette_color_add(), BLI_assert, BLI_findstring(), ListBase::first, ToolSettings::gp_paint, ToolSettings::gp_vertexpaint, hex_to_rgb(), Palette::id, id_us_min(), NULL, GpPaint::paint, GpVertexPaint::paint, Paint::palette, Main::palettes, PaletteColor::rgb, scene, and Scene::toolsettings.
Referenced by BLO_update_defaults_startup_blend(), gpencil_paintmode_toggle_exec(), and gpencil_vertexmode_toggle_exec().
Calc grease pencil statistics functions.
| gpd | Grease pencil data-block |
Definition at line 2180 of file gpencil.c.
References bGPdata::layers, LISTBASE_FOREACH, bGPdata::totframe, bGPdata::totlayer, bGPdata::totpoint, and bGPdata::totstroke.
Referenced by stats_object().
| bGPDstroke* BKE_gpencil_stroke_add | ( | struct bGPDframe * | gpf, |
| int | mat_idx, | ||
| int | totpoints, | ||
| short | thickness, | ||
| bool | insert_at_head | ||
| ) |
Create a new stroke and add to frame.
| gpf | Grease pencil frame |
| mat_idx | Material index |
| totpoints | Total points |
| thickness | Stroke thickness |
| insert_at_head | Add to the head of the strokes list |
Definition at line 792 of file gpencil.c.
References BKE_gpencil_stroke_new(), BLI_addhead(), BLI_addtail(), NULL, and bGPDframe::strokes.
Referenced by BKE_gpencil_convert_mesh(), BKE_gpencil_from_image(), BKE_gpencil_stroke_add_existing_style(), ED_gpencil_create_monkey(), ED_gpencil_create_stroke(), ED_gpencil_trace_data_to_strokes(), gpencil_generate_edgeloops(), and lineart_gpencil_generate().
| bGPDstroke* BKE_gpencil_stroke_add_existing_style | ( | struct bGPDframe * | gpf, |
| struct bGPDstroke * | existing, | ||
| int | mat_idx, | ||
| int | totpoints, | ||
| short | thickness | ||
| ) |
Add a stroke and copy the temporary drawing color value from one of the existing stroke.
| gpf | Grease pencil frame |
| existing | Stroke with the style to copy |
| mat_idx | Material index |
| totpoints | Total points |
| thickness | Stroke thickness |
Definition at line 810 of file gpencil.c.
References BKE_gpencil_stroke_add(), and bGPDstroke::runtime.
Referenced by BKE_gpencil_stroke_split().
| void BKE_gpencil_stroke_copy_settings | ( | const bGPDstroke * | gps_src, |
| bGPDstroke * | gps_dst | ||
| ) |
Definition at line 1041 of file gpencil.c.
References bGPDstroke::aspect_ratio, bGPDstroke::boundbox_max, bGPDstroke::boundbox_min, bGPDstroke::caps, copy_v2_v2(), copy_v2_v2_short(), copy_v3_v3(), copy_v4_v4(), bGPDstroke::fill_opacity_fac, bGPDstroke::flag, bGPDstroke::hardeness, bGPDstroke::inittime, bGPDstroke::mat_nr, bGPDstroke::select_index, bGPDstroke::thickness, bGPDstroke::uv_rotation, bGPDstroke::uv_scale, bGPDstroke::uv_translation, and bGPDstroke::vert_color_fill.
Referenced by gpencil_update_on_write_stroke_cb().
Definition at line 844 of file gpencil.c.
References bGPDcurve::curve_points, MEM_dupallocN, and NULL.
Referenced by BKE_gpencil_stroke_duplicate().
| bGPDstroke* BKE_gpencil_stroke_duplicate | ( | struct bGPDstroke * | gps_src, |
| bool | dup_points, | ||
| bool | dup_curve | ||
| ) |
Make a copy of a given grease-pencil stroke.
| gps_src | Source grease pencil strokes. |
| dup_points | Duplicate points data. |
| dup_curve | Duplicate curve data. |
Definition at line 855 of file gpencil.c.
References BKE_gpencil_stroke_curve_duplicate(), BKE_gpencil_stroke_weights_duplicate(), bGPDstroke::dvert, bGPDstroke::editcurve, MEM_dupallocN, bGPDstroke::next, NULL, bGPDstroke::points, bGPDstroke::prev, and bGPDstroke::triangles.
Referenced by annotation_stroke_newfrombuffer(), BKE_gpencil_curve_delete_tagged_points(), BKE_gpencil_frame_copy_strokes(), BKE_gpencil_frame_duplicate(), BKE_gpencil_stroke_copy_to_keyframes(), BKE_gpencil_stroke_delete_tagged_points(), duplicateStroke(), ED_gpencil_anim_copybuf_paste(), ED_gpencil_stroke_reproject(), generate_geometry(), gpencil_add_move_points(), gpencil_brush_clone_add(), gpencil_curve_extrude_points(), gpencil_duplicate_exec(), gpencil_duplicate_points(), gpencil_interpolate_modal(), gpencil_interpolate_seq_exec(), gpencil_interpolate_set_points(), gpencil_interpolate_update_strokes(), gpencil_layer_duplicate_object_exec(), gpencil_stroke_join_exec(), gpencil_stroke_join_islands(), gpencil_stroke_separate_exec(), gpencil_stroke_split_exec(), gpencil_strokes_copy_exec(), gpencil_strokes_paste_exec(), and gpencil_update_on_write_stroke_cb().
| bGPDcurve* BKE_gpencil_stroke_editcurve_new | ( | const int | tot_curve_points | ) |
Definition at line 821 of file gpencil.c.
References bGPDcurve::curve_points, MEM_callocN, and bGPDcurve::tot_curve_points.
Referenced by BKE_gpencil_curve_delete_tagged_points(), BKE_gpencil_stroke_editcurve_generate(), gpencil_curve_extrude_points(), and gpencil_stroke_editcurve_generate_edgecases().
| bGPDstroke* BKE_gpencil_stroke_new | ( | int | mat_idx, |
| int | totpoints, | ||
| short | thickness | ||
| ) |
Create a new stroke, with pre-allocated data buffers.
| mat_idx | Index of the material |
| totpoints | Total points |
| thickness | Stroke thickness |
Definition at line 756 of file gpencil.c.
References bGPDstroke::aspect_ratio, copy_v2_fl(), bGPDstroke::dvert, bGPDstroke::editcurve, bGPDstroke::fill_opacity_fac, bGPDstroke::flag, GP_STROKE_3DSPACE, bGPDstroke::hardeness, bGPDstroke::inittime, bGPDstroke::mat_nr, MEM_callocN, NULL, bGPDstroke::points, bGPDstroke::thickness, bGPDstroke::tot_triangles, bGPDstroke::totpoints, bGPDstroke::triangles, and bGPDstroke::uv_scale.
Referenced by add_stroke(), add_stroke_cyclic(), add_stroke_simple(), BKE_gpencil_stroke_add(), BKE_gpencil_stroke_perimeter_from_view(), gpencil_create_extensions(), gpencil_fill_modal(), gpencil_prepare_stroke(), and stroke_dash().
| bool BKE_gpencil_stroke_select_check | ( | const bGPDstroke * | gps | ) |
Definition at line 1825 of file gpencil.c.
References bGPDspoint::flag, GP_SPOINT_SELECT, and bGPDstroke::points.
| void BKE_gpencil_stroke_select_index_reset | ( | struct bGPDstroke * | gps | ) |
Reset unique stroke ID for selection.
Definition at line 1161 of file gpencil.c.
References bGPDstroke::select_index.
Referenced by BKE_gpencil_curve_sync_selection(), BKE_gpencil_stroke_editcurve_sync_selection(), BKE_gpencil_stroke_sync_selection(), BKE_gpencil_stroke_update_geometry_from_editcurve(), deselect_all_selected(), ED_gpencil_select_curve_toggle_all(), ED_gpencil_select_toggle_all(), ED_gpencil_stroke_reproject(), gpencil_add_move_points(), gpencil_calc_points_factor(), gpencil_cutter_lasso_select(), gpencil_delete_selected_points(), gpencil_dissolve_selected_stroke_points(), gpencil_duplicate_exec(), gpencil_generic_stroke_select(), gpencil_material_select_exec(), gpencil_primitive_set_initdata(), gpencil_select_exec(), gpencil_stroke_do_circle_sel(), gpencil_stroke_separate_exec(), gpencil_stroke_unselect(), gpencil_strokes_paste_exec(), select_all_curve_points(), and select_all_stroke_points().
| void BKE_gpencil_stroke_select_index_set | ( | struct bGPdata * | gpd, |
| struct bGPDstroke * | gps | ||
| ) |
Assign unique stroke ID for selection.
Definition at line 1155 of file gpencil.c.
References bGPDstroke::select_index, and bGPdata::select_last_index.
Referenced by BKE_gpencil_curve_sync_selection(), BKE_gpencil_from_image(), BKE_gpencil_stroke_editcurve_sync_selection(), BKE_gpencil_stroke_sync_selection(), BKE_gpencil_stroke_uniform_subdivide(), ED_gpencil_select_curve_toggle_all(), ED_gpencil_select_toggle_all(), ED_gpencil_vgroup_select(), gpencil_cutter_lasso_select(), gpencil_material_select_exec(), gpencil_prepare_stroke(), gpencil_select_exec(), gpencil_select_first_exec(), gpencil_select_last_exec(), gpencil_select_same_layer(), gpencil_select_same_material(), gpencil_select_vertex_color_exec(), gpencil_stroke_do_circle_sel(), select_all_curve_points(), and select_all_stroke_points().
| void BKE_gpencil_stroke_sync_selection | ( | struct bGPdata * | gpd, |
| struct bGPDstroke * | gps | ||
| ) |
Ensure selection status of stroke is in sync with its points.
| gps | Grease pencil stroke |
Definition at line 1092 of file gpencil.c.
References BKE_gpencil_stroke_select_index_reset(), BKE_gpencil_stroke_select_index_set(), bGPDspoint::flag, bGPDstroke::flag, GP_SPOINT_SELECT, GP_STROKE_SELECT, NULL, and bGPDstroke::points.
Referenced by gpencil_generic_stroke_select(), gpencil_select_exec(), gpencil_select_random_exec(), and gpencil_stroke_do_circle_sel().
| void BKE_gpencil_stroke_weights_duplicate | ( | struct bGPDstroke * | gps_src, |
| struct bGPDstroke * | gps_dst | ||
| ) |
Make a copy of a given gpencil weights.
| gps_src | Source grease pencil stroke |
| gps_dst | Destination grease pencil stroke |
Definition at line 834 of file gpencil.c.
References BKE_defvert_array_copy(), BLI_assert, bGPDstroke::dvert, NULL, and bGPDstroke::totpoints.
Referenced by BKE_gpencil_stroke_duplicate(), and gpencil_strokes_copy_exec().
Tag data-block for depsgraph update. Wrapper to avoid include Depsgraph tag functions in other modules.
| gpd | Grease pencil data-block. |
Definition at line 506 of file gpencil.c.
References DEG_id_tag_update(), bGPdata::id, ID_RECALC_GEOMETRY, and ID_RECALC_TRANSFORM.
Referenced by insert_gpencil_key().
Definition at line 2753 of file gpencil.c.
References BKE_pose_channel_find_name(), BLI_listbase_is_empty(), copy_m4_m4(), Object::data, DEG_get_evaluated_object(), depsgraph, ELEM, equals_m4m4(), GP_LAYER_HIDE, GP_LAYER_ONIONSKIN, Object::imat, is_one_v3(), is_zero_v3(), bGPdata::layers, LISTBASE_FOREACH, loc_eul_size_to_mat4(), mul_m4_m4m4(), mul_m4_series, mul_m4_v3(), bGPDframe::next, NULL, OB_GPENCIL, Object::obmat, PARBONE, PAROBJECT, PARSKEL, Object::pose, bPoseChannel::pose_mat, Object::type, unit_m4(), and bGPDspoint::x.
Update the geometry of the evaluated bGPdata. This function will: 1) Copy the original data over to the evaluated object. 2) Update the original pointers in the runtime structs.
Definition at line 3029 of file gpencil.c.
References BKE_gpencil_data_copy_settings(), BKE_gpencil_free_update_cache(), BKE_gpencil_traverse_update_cache(), data, ListBase::first, GPencilUpdateCache::flag, bGPdata::flag, GP_DATA_CACHE_IS_DIRTY, GP_UPDATE_NODE_FULL_COPY, GP_UPDATE_NODE_LIGHT_COPY, gpencil_update_on_write_frame_cb(), gpencil_update_on_write_layer_cb(), gpencil_update_on_write_stroke_cb(), bGPdata::layers, NULL, bGPdata::runtime, and bGPdata_Runtime::update_cache.
Referenced by blender::deg::deg_update_copy_on_write_datablock().
Update pointers of eval data to original data to keep references.
| ob_orig | Original grease pencil object |
| ob_eval | Evaluated grease pencil object |
Definition at line 2700 of file gpencil.c.
References BKE_gpencil_data_update_orig_pointers(), and Object::data.
| void BKE_gpencil_vgroup_remove | ( | struct Object * | ob, |
| struct bDeformGroup * | defgroup | ||
| ) |
Remove a vertex group.
| ob | Grease pencil object |
| defgroup | deform group |
Definition at line 1840 of file gpencil.c.
References BKE_defvert_find_index(), BKE_defvert_remove_group(), BKE_object_defgroup_active_index_get(), BKE_object_defgroup_active_index_set(), BLI_findindex(), BLI_freelinkN(), BLI_listbase_count(), BLI_listbase_is_empty(), Object::data, MDeformWeight::def_nr, DEG_id_tag_update(), usdtokens::g(), bGPdata::id, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, bGPdata::layers, LISTBASE_FOREACH, NULL, and bGPdata::vertex_group_names.
Referenced by BKE_object_defgroup_remove().
| void BKE_gpencil_visible_stroke_advanced_iter | ( | ViewLayer * | view_layer, |
| Object * | ob, | ||
| gpIterCb | layer_cb, | ||
| gpIterCb | stroke_cb, | ||
| void * | thunk, | ||
| bool | do_onion, | ||
| int | cfra | ||
| ) |
Definition at line 2430 of file gpencil.c.
References Object::data, bGPdata::flag, frame_len(), bGPDframe_Runtime::frameid, bGPDframe::framenum, GP_DATA_STROKE_WEIGHTMODE, GP_FRAME_SELECT, GP_LAYER_HIDE, GP_LAYER_ONIONSKIN, GP_LAYER_SOLO_MODE, GP_ONION_LOOP, GP_ONION_MODE_ABSOLUTE, GP_ONION_MODE_SELECTED, gpencil_is_layer_mask(), GPENCIL_MULTIEDIT_SESSIONS_ON, GPENCIL_PAINT_MODE, GPENCIL_PLAY_ON, bGPdata::gstep, is_zero_v3(), bGPdata::layers, LISTBASE_FOREACH, ViewLayer::name, bGPDframe::next, NULL, bGPdata::onion_flag, bGPDframe_Runtime::onion_id, bGPdata::onion_keytype, bGPdata::onion_mode, bGPDframe::runtime, bGPdata::runtime, bGPdata_Runtime::sbuffer_used, STREQ, and bGPDframe::strokes.
Referenced by DRW_cache_gpencil_face_wireframe_get(), gpencil_batches_ensure(), GPENCIL_cache_populate(), gpencil_copy_visible_frames_to_eval(), gpencil_edit_batches_ensure(), OVERLAY_gpencil_color_names(), and OVERLAY_outline_gpencil().
| void BKE_gpencil_visible_stroke_iter | ( | bGPdata * | gpd, |
| gpIterCb | layer_cb, | ||
| gpIterCb | stroke_cb, | ||
| void * | thunk | ||
| ) |
Definition at line 2389 of file gpencil.c.
References GP_LAYER_HIDE, is_zero_v3(), bGPdata::layers, LISTBASE_FOREACH, NULL, and bGPDframe::strokes.
Referenced by BKE_object_foreach_display_point(), and blender::eevee::SyncModule::sync_gpencil().
Definition at line 1532 of file gpencil.c.
References Freestyle::a, usdtokens::b(), bGPDframe::flag, bGPDframe::framenum, GP_FRAME_SELECT, and NULL.
Referenced by BKE_gpencil_layer_frames_sort().
Definition at line 1467 of file gpencil.c.
References bGPDlayer_Mask::sort_index.
Referenced by BKE_gpencil_layer_mask_sort().
|
static |
Helper to check if a layers is used as mask
| view_layer | Actual view layer. |
| gpd | Grease pencil data-block. |
| gpl_mask | Actual Layer. |
Definition at line 2361 of file gpencil.c.
References GP_LAYER_DISABLE_MASKS_IN_VIEWLAYER, bGPDlayer::info, bGPdata::layers, LISTBASE_FOREACH, mask(), ViewLayer::name, and STREQ.
Referenced by BKE_gpencil_visible_stroke_advanced_iter().
|
static |
Definition at line 2943 of file gpencil.c.
References bGPDlayer::actframe, BKE_gpencil_frame_copy_settings(), BKE_gpencil_frame_duplicate(), BKE_gpencil_frame_original_pointers_update(), BKE_gpencil_free_strokes(), BLI_assert, BLI_findlinkfrom(), BLI_freelinkN(), BLI_insertlinkbefore(), GPencilUpdateCache::data, ListBase::first, GPencilUpdateCache::flag, bGPDlayer::frames, GP_UPDATE_NODE_FULL_COPY, GP_UPDATE_NODE_LIGHT_COPY, tGPencilUpdateOnWriteTraverseData::gpf_eval, tGPencilUpdateOnWriteTraverseData::gpf_index, bGPDframe_Runtime::gpf_orig, tGPencilUpdateOnWriteTraverseData::gpl_eval, tGPencilUpdateOnWriteTraverseData::gps_eval, tGPencilUpdateOnWriteTraverseData::gps_index, if(), GPencilUpdateCache::index, bGPDframe::next, NULL, bGPDframe::runtime, bGPDframe::strokes, and user_data.
Referenced by BKE_gpencil_update_on_write().
|
static |
Definition at line 2912 of file gpencil.c.
References BKE_gpencil_layer_copy_settings(), BKE_gpencil_layer_delete(), BKE_gpencil_layer_duplicate(), BKE_gpencil_layer_original_pointers_update(), BLI_assert, BLI_findlinkfrom(), BLI_insertlinkbefore(), GPencilUpdateCache::data, ListBase::first, GPencilUpdateCache::flag, bGPDlayer::frames, GP_UPDATE_NODE_FULL_COPY, GP_UPDATE_NODE_LIGHT_COPY, tGPencilUpdateOnWriteTraverseData::gpd_eval, tGPencilUpdateOnWriteTraverseData::gpf_eval, tGPencilUpdateOnWriteTraverseData::gpf_index, tGPencilUpdateOnWriteTraverseData::gpl_eval, tGPencilUpdateOnWriteTraverseData::gpl_index, bGPDlayer_Runtime::gpl_orig, if(), GPencilUpdateCache::index, bGPdata::layers, bGPDlayer::next, NULL, bGPDlayer::runtime, and user_data.
Referenced by BKE_gpencil_update_on_write().
|
static |
Definition at line 2983 of file gpencil.c.
References BKE_gpencil_free_stroke(), BKE_gpencil_stroke_copy_settings(), BKE_gpencil_stroke_duplicate(), BLI_assert, BLI_findlinkfrom(), BLI_insertlinkbefore(), BLI_remlink(), GPencilUpdateCache::data, GPencilUpdateCache::flag, GP_UPDATE_NODE_FULL_COPY, GP_UPDATE_NODE_LIGHT_COPY, tGPencilUpdateOnWriteTraverseData::gpf_eval, tGPencilUpdateOnWriteTraverseData::gps_eval, tGPencilUpdateOnWriteTraverseData::gps_index, bGPDstroke_Runtime::gps_orig, bGPDspoint_Runtime::idx_orig, if(), GPencilUpdateCache::index, bGPDstroke::next, NULL, bGPDstroke::points, bGPDspoint_Runtime::pt_orig, bGPDspoint::runtime, bGPDstroke::runtime, bGPDframe::strokes, bGPDstroke::totpoints, and user_data.
Referenced by BKE_gpencil_update_on_write().
|
static |
Definition at line 264 of file gpencil.c.
References BKE_gpencil_blend_read_data().
|
static |
Definition at line 287 of file gpencil.c.
References Freestyle::a, BLO_expand, bGPdata::layers, LISTBASE_FOREACH, bGPdata::mat, and bGPdata::totcol.
|
static |
Definition at line 270 of file gpencil.c.
References Freestyle::a, BLO_read_id_address, bGPdata::id, bGPdata::layers, ID::lib, LISTBASE_FOREACH, bGPdata::mat, Library::parent, and bGPdata::totcol.
|
static |
Definition at line 133 of file gpencil.c.
References bGPdata::adt, BKE_animdata_blend_write(), BKE_defbase_blend_write(), BKE_defvert_blend_write(), BKE_id_blend_write(), BLO_write_id_struct, BLO_write_pointer_array(), BLO_write_struct, BLO_write_struct_array, BLO_write_struct_list, bGPDcurve::curve_points, bGPdata::id, bGPdata::layers, LISTBASE_FOREACH, bGPdata::mat, NULL, bGPdata::runtime, bGPdata_Runtime::sbuffer, bGPdata_Runtime::sbuffer_size, bGPdata_Runtime::sbuffer_used, bGPdata_Runtime::tot_cp_points, bGPDcurve::tot_curve_points, bGPdata::totcol, bGPdata_Runtime::update_cache, and bGPdata::vertex_group_names.
|
static |
Definition at line 60 of file gpencil.c.
References bGPDlayer::actframe, BKE_defgroup_copy_list(), BKE_gpencil_layer_duplicate(), BLI_addtail(), BLI_listbase_clear(), ListBase::first, bGPDlayer::frames, GP_LAYER_ONIONSKIN, is_one_v3(), is_zero_v3(), bGPDlayer::layer_mat, bGPdata::layers, LISTBASE_FOREACH, loc_eul_size_to_mat4(), bGPDlayer::location, bGPdata::mat, MEM_dupallocN, mul_m4_v3(), bGPDframe::next, NULL, bGPDlayer::onion_flag, bGPDlayer::rotation, bGPDlayer::scale, bGPdata::vertex_group_names, and bGPDspoint::x.
Referenced by BKE_gpencil_data_duplicate().
|
static |
Definition at line 120 of file gpencil.c.
References BKE_LIB_FOREACHID_PROCESS_IDSUPER, data, IDWALK_CB_NOP, IDWALK_CB_USER, bGPdata::layers, LISTBASE_FOREACH, bGPdata::mat, and bGPdata::totcol.
Definition at line 113 of file gpencil.c.
References BKE_gpencil_free_data().
Definition at line 332 of file gpencil.c.
Referenced by BKE_gpencil_batch_cache_dirty_tag(), and DRW_engines_register().
Definition at line 333 of file gpencil.c.
Referenced by BKE_gpencil_batch_cache_free(), and DRW_engines_register().
| IDTypeInfo IDType_ID_GD |
|
static |
Definition at line 58 of file gpencil.c.
Referenced by BKE_gpencil_frame_addnew(), and BKE_gpencil_layer_frame_get().