|
Blender
V2.93
|
#include <stdio.h>#include "MEM_guardedalloc.h"#include "BLI_blenlib.h"#include "BLI_math_geom.h"#include "BLI_math_vector.h"#include "BLI_string_utils.h"#include "BLI_utildefines.h"#include "BLT_translation.h"#include "DNA_armature_types.h"#include "DNA_gpencil_modifier_types.h"#include "DNA_gpencil_types.h"#include "DNA_meshdata_types.h"#include "DNA_modifier_types.h"#include "DNA_object_types.h"#include "DNA_scene_types.h"#include "DNA_screen_types.h"#include "BKE_colortools.h"#include "BKE_gpencil.h"#include "BKE_gpencil_geom.h"#include "BKE_gpencil_modifier.h"#include "BKE_lattice.h"#include "BKE_lib_id.h"#include "BKE_lib_query.h"#include "BKE_material.h"#include "BKE_object.h"#include "DEG_depsgraph.h"#include "DEG_depsgraph_query.h"#include "MOD_gpencil_modifiertypes.h"#include "BLO_read_write.h"#include "CLG_log.h"Go to the source code of this file.
Variables | |
| static CLG_LogRef | LOG = {"bke.gpencil_modifier"} |
| static GpencilModifierTypeInfo * | modifier_gpencil_types [NUM_GREASEPENCIL_MODIFIER_TYPES] = {NULL} |
Set current grease pencil active frame.
| depsgraph | Current depsgraph |
| gpd | Grease pencil data-block. |
Definition at line 240 of file gpencil_modifier.c.
References BKE_gpencil_layer_frame_get(), DEG_debug_print_eval(), DEG_get_ctime(), DEG_get_original_id(), DEG_is_active(), depsgraph, GP_GETFRAME_USE_PREV, bGPdata::id, bGPdata::layers, LISTBASE_FOREACH, and ID::name.
Referenced by blender::deg::DepsgraphNodeBuilder::build_object_data_geometry_datablock(), and generateStrokes().
| bGPDframe* BKE_gpencil_frame_retime_get | ( | Depsgraph * | depsgraph, |
| Scene * | scene, | ||
| Object * | ob, | ||
| bGPDlayer * | gpl | ||
| ) |
Get the current frame re-timed with time modifiers.
| depsgraph | Current depsgraph. |
| scene | Current scene |
| ob | Grease pencil object |
| gpl | Grease pencil layer |
Definition at line 627 of file gpencil_modifier.c.
References BKE_gpencil_layer_frame_get(), depsgraph, GP_GETFRAME_USE_PREV, gpencil_remap_time_get(), and scene.
Referenced by BKE_gpencil_modifiers_calc(), generateStrokes(), and GPENCIL_cache_populate().
| bool BKE_gpencil_has_geometry_modifiers | ( | Object * | ob | ) |
Check if object has grease pencil Geometry modifiers.
| ob | Grease pencil object |
Definition at line 156 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), GpencilModifierTypeInfo::generateStrokes, Object::greasepencil_modifiers, and LISTBASE_FOREACH.
| bool BKE_gpencil_has_time_modifiers | ( | Object * | ob | ) |
Check if object has grease pencil Time modifiers.
| ob | Grease pencil object |
Definition at line 173 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), Object::greasepencil_modifiers, LISTBASE_FOREACH, and GpencilModifierTypeInfo::remapTime.
Referenced by BKE_gpencil_modifiers_calc(), GPENCIL_cache_populate(), and gpencil_remap_time_get().
| bool BKE_gpencil_has_transform_modifiers | ( | Object * | ob | ) |
Check if object has grease pencil transform stroke modifiers.
| ob | Grease pencil object |
Definition at line 190 of file gpencil_modifier.c.
References eGpencilModifierType_Armature, eGpencilModifierType_Hook, eGpencilModifierType_Lattice, eGpencilModifierType_Offset, GPENCIL_MODIFIER_ACTIVE, GPENCIL_MODIFIER_EDIT, Object::greasepencil_modifiers, and LISTBASE_FOREACH.
Referenced by gpencil_sculpt_brush_init().
| void BKE_gpencil_lattice_clear | ( | Object * | ob | ) |
Clear grease pencil lattice deform data.
| ob | Grease pencil object |
Definition at line 107 of file gpencil_modifier.c.
References BKE_lattice_deform_data_destroy(), LatticeGpencilModifierData::cache_data, eGpencilModifierType_Lattice, Object::greasepencil_modifiers, LISTBASE_FOREACH, and NULL.
Referenced by BKE_gpencil_modifiers_calc().
| void BKE_gpencil_lattice_init | ( | Object * | ob | ) |
Init grease pencil lattice deform data.
| ob | Grease pencil object |
Definition at line 82 of file gpencil_modifier.c.
References BKE_lattice_deform_data_create(), BKE_lattice_deform_data_destroy(), LatticeGpencilModifierData::cache_data, eGpencilModifierType_Lattice, Object::greasepencil_modifiers, LISTBASE_FOREACH, NULL, OB_LATTICE, LatticeGpencilModifierData::object, and Object::type.
Referenced by BKE_gpencil_modifiers_calc().
| void BKE_gpencil_modifier_blend_read_data | ( | BlendDataReader * | reader, |
| ListBase * | lb | ||
| ) |
Definition at line 883 of file gpencil_modifier.c.
References BKE_curvemapping_blend_read(), BKE_curvemapping_init(), BKE_gpencil_modifier_get_info(), BLO_read_data_address, BLO_read_list(), LatticeGpencilModifierData::cache_data, TintGpencilModifierData::colorband, HookGpencilModifierData::curfalloff, NoiseGpencilModifierData::curve_intensity, ColorGpencilModifierData::curve_intensity, OpacityGpencilModifierData::curve_intensity, SmoothGpencilModifierData::curve_intensity, TintGpencilModifierData::curve_intensity, ThickGpencilModifierData::curve_thickness, eGpencilModifierType_Color, eGpencilModifierType_Hook, eGpencilModifierType_Lattice, eGpencilModifierType_Noise, eGpencilModifierType_Opacity, eGpencilModifierType_Smooth, eGpencilModifierType_Thick, eGpencilModifierType_Tint, eModifierType_None, LISTBASE_FOREACH, and NULL.
Referenced by object_blend_read_data().
| void BKE_gpencil_modifier_blend_read_lib | ( | BlendLibReader * | reader, |
| Object * | ob | ||
| ) |
Definition at line 962 of file gpencil_modifier.c.
References BKE_gpencil_modifiers_foreach_ID_link(), BKE_object_modifiers_lib_link_common(), eGpencilModifierFlag_OverrideLibrary_Local, Object::greasepencil_modifiers, Object::id, ID::lib, LISTBASE_FOREACH, mod(), and NULL.
Referenced by object_blend_read_lib().
| void BKE_gpencil_modifier_blend_write | ( | BlendWriter * | writer, |
| ListBase * | modbase | ||
| ) |
Definition at line 818 of file gpencil_modifier.c.
References BKE_curvemapping_blend_write(), BKE_gpencil_modifier_get_info(), BLO_write_struct, BLO_write_struct_by_name(), TintGpencilModifierData::colorband, HookGpencilModifierData::curfalloff, NoiseGpencilModifierData::curve_intensity, ColorGpencilModifierData::curve_intensity, OpacityGpencilModifierData::curve_intensity, SmoothGpencilModifierData::curve_intensity, TintGpencilModifierData::curve_intensity, ThickGpencilModifierData::curve_thickness, eGpencilModifierType_Color, eGpencilModifierType_Hook, eGpencilModifierType_Noise, eGpencilModifierType_Opacity, eGpencilModifierType_Smooth, eGpencilModifierType_Thick, eGpencilModifierType_Tint, LISTBASE_FOREACH, NULL, and GpencilModifierTypeInfo::struct_name.
Referenced by object_blend_write().
| void BKE_gpencil_modifier_copydata | ( | GpencilModifierData * | md, |
| GpencilModifierData * | target | ||
| ) |
Copy grease pencil modifier data.
| md | Source modifier data |
| target | Target modifier data |
Definition at line 490 of file gpencil_modifier.c.
References BKE_gpencil_modifier_copydata_ex().
Referenced by ED_object_gpencil_modifier_copy().
| void BKE_gpencil_modifier_copydata_ex | ( | GpencilModifierData * | md, |
| GpencilModifierData * | target, | ||
| const int | flag | ||
| ) |
Copy grease pencil modifier data.
| md | Source modifier data |
| target | Target modifier data \parm flag: Flags |
Definition at line 464 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), GpencilModifierTypeInfo::copyData, GpencilModifierData::flag, GpencilModifierTypeInfo::foreachIDLink, gpencil_modifier_copy_data_id_us_cb(), LIB_ID_CREATE_NO_USER_REFCOUNT, GpencilModifierData::mode, NULL, GpencilModifierData::type, and GpencilModifierData::ui_expand_flag.
Referenced by BKE_gpencil_modifier_copydata(), and BKE_object_modifier_stack_copy().
| void BKE_gpencil_modifier_copydata_generic | ( | const GpencilModifierData * | md_src, |
| GpencilModifierData * | md_dst | ||
| ) |
Generic grease pencil modifier copy data.
| md_src | Source modifier data |
| md_dst | Target modifier data |
Definition at line 429 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), BLI_assert, GpencilModifierTypeInfo::freeData, GpencilModifierTypeInfo::struct_size, and GpencilModifierData::type.
| bool BKE_gpencil_modifier_depends_ontime | ( | GpencilModifierData * | md | ) |
Check if grease pencil modifier depends on time.
| md | Modifier data |
Definition at line 382 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), GpencilModifierTypeInfo::dependsOnTime, and GpencilModifierData::type.
Referenced by BKE_object_modifier_gpencil_use_time().
| void BKE_gpencil_modifier_free | ( | GpencilModifierData * | md | ) |
Free grease pencil modifier data
| md | Modifier data |
Definition at line 357 of file gpencil_modifier.c.
References BKE_gpencil_modifier_free_ex().
Referenced by BKE_gpencil_modifier_init(), ED_object_gpencil_modifier_apply(), and gpencil_object_modifier_remove().
| void BKE_gpencil_modifier_free_ex | ( | GpencilModifierData * | md, |
| const int | flag | ||
| ) |
Free grease pencil modifier data
| md | Modifier data |
| flag | Flags |
Definition at line 333 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), GpencilModifierData::error, GpencilModifierTypeInfo::foreachIDLink, GpencilModifierTypeInfo::freeData, LIB_ID_CREATE_NO_USER_REFCOUNT, MEM_freeN, modifier_free_data_id_us_cb(), NULL, and GpencilModifierData::type.
Referenced by BKE_gpencil_modifier_free(), and BKE_object_free_modifiers().
| const GpencilModifierTypeInfo* BKE_gpencil_modifier_get_info | ( | GpencilModifierType | type | ) |
Get grease pencil modifier information.
| type | Type of modifier |
Definition at line 394 of file gpencil_modifier.c.
References modifier_gpencil_types, NULL, and type.
Referenced by BKE_gpencil_has_geometry_modifiers(), BKE_gpencil_has_time_modifiers(), BKE_gpencil_modifier_blend_read_data(), BKE_gpencil_modifier_blend_write(), BKE_gpencil_modifier_copydata_ex(), BKE_gpencil_modifier_copydata_generic(), BKE_gpencil_modifier_depends_ontime(), BKE_gpencil_modifier_free_ex(), BKE_gpencil_modifier_new(), BKE_gpencil_modifier_unique_name(), BKE_gpencil_modifiers_calc(), BKE_gpencil_modifiers_foreach_ID_link(), BKE_gpencil_modifiers_foreach_tex_link(), BKE_gpencil_modifierType_panel_id(), BKE_object_copy_gpencil_modifier(), blender::deg::DepsgraphRelationBuilder::build_object_data_geometry(), ED_gpencil_join_objects_exec(), ED_object_gpencil_modifier_add(), ED_object_gpencil_modifier_copy(), ED_spacetype_buttons(), gpencil_modifier_add_itemf(), gpencil_modifier_apply_obdata(), gpencil_modifier_ops_extra_draw(), gpencil_modifier_panel_header(), gpencil_time_modifier(), lineart_mod_is_disabled(), and uiTemplateGpencilModifiers().
| void BKE_gpencil_modifier_init | ( | void | ) |
Initialize grease pencil modifier.
Definition at line 266 of file gpencil_modifier.c.
References VirtualModifierData::amd, BKE_gpencil_modifier_free(), BKE_gpencil_modifier_new(), eGpencilModifierMode_Virtual, eGpencilModifierType_Armature, eGpencilModifierType_Lattice, gpencil_modifier_type_init(), VirtualModifierData::lmd, ModifierData::mode, LatticeModifierData::modifier, ArmatureModifierData::modifier, modifier_gpencil_types, and virtualModifierCommonData.
Referenced by main().
| bool BKE_gpencil_modifier_is_nonlocal_in_liboverride | ( | const Object * | ob, |
| const GpencilModifierData * | gmd | ||
| ) |
Check whether given modifier is not local (i.e. from linked data) when the object is a library override.
| gmd | May be NULL, in which case we consider it as a non-local modifier case. |
Definition at line 539 of file gpencil_modifier.c.
References eGpencilModifierFlag_OverrideLibrary_Local, GpencilModifierData::flag, ID_IS_OVERRIDE_LIBRARY, and NULL.
| GpencilModifierData* BKE_gpencil_modifier_new | ( | int | type | ) |
Create new grease pencil modifier.
| type | Type of modifier |
Definition at line 293 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), BLI_strncpy(), DATA_, eGpencilModifierFlag_OverrideLibrary_Local, eGpencilModifierMode_Editmode, eGpencilModifierMode_Realtime, eGpencilModifierMode_Render, eGpencilModifierTypeFlag_EnableInEditmode, GpencilModifierData::flag, GpencilModifierTypeInfo::flags, GpencilModifierTypeInfo::initData, MEM_callocN, GpencilModifierData::mode, GpencilModifierTypeInfo::name, GpencilModifierData::name, GpencilModifierTypeInfo::struct_name, GpencilModifierTypeInfo::struct_size, type, GpencilModifierData::type, and GpencilModifierData::ui_expand_flag.
Referenced by BKE_gpencil_modifier_init(), BKE_object_copy_gpencil_modifier(), BKE_object_modifier_stack_copy(), ED_object_gpencil_modifier_add(), ED_object_gpencil_modifier_copy(), and object_gpencil_add_exec().
| void BKE_gpencil_modifier_panel_expand | ( | GpencilModifierData * | md | ) |
Definition at line 419 of file gpencil_modifier.c.
References GpencilModifierData::ui_expand_flag, and UI_PANEL_DATA_EXPAND_ROOT.
Referenced by outliner_set_properties_tab().
| void BKE_gpencil_modifier_set_error | ( | GpencilModifierData * | md, |
| const char * | _format, | ||
| ... | |||
| ) |
Set grease pencil modifier error.
| md | Modifier data |
| _format | Format |
Definition at line 513 of file gpencil_modifier.c.
References BLI_strdup(), buffer, CLOG_STR_ERROR, GpencilModifierData::error, LOG, MEM_freeN, and TIP_.
| bool BKE_gpencil_modifier_unique_name | ( | ListBase * | modifiers, |
| GpencilModifierData * | gmd | ||
| ) |
Definition at line 363 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), BLI_uniquename(), DATA_, GpencilModifierTypeInfo::name, GpencilModifierData::name, and GpencilModifierData::type.
Referenced by BKE_object_copy_gpencil_modifier(), ED_object_gpencil_modifier_add(), ED_object_gpencil_modifier_copy(), and object_gpencil_add_exec().
Calculate gpencil modifiers.
| depsgraph | Current depsgraph |
| scene | Current scene |
| ob | Grease pencil object |
Definition at line 763 of file gpencil_modifier.c.
References BKE_gpencil_frame_retime_get(), BKE_gpencil_has_time_modifiers(), BKE_gpencil_lattice_clear(), BKE_gpencil_lattice_init(), BKE_gpencil_modifier_get_info(), DAG_EVAL_RENDER, Object::data, GpencilModifierTypeInfo::deformStroke, DEG_get_mode(), depsgraph, ListBase::first, GpencilModifierTypeInfo::generateStrokes, GPENCIL_ANY_EDIT_MODE, GPENCIL_CURVE_EDIT_SESSIONS_ON, GPENCIL_MODIFIER_ACTIVE, GPENCIL_MODIFIER_EDIT, GPENCIL_MULTIEDIT_SESSIONS_ON, GPENCIL_SIMPLIFY_MODIF, Object::greasepencil_modifiers, bGPdata::layers, LISTBASE_FOREACH, NULL, scene, and bGPDframe::strokes.
Referenced by BKE_object_handle_data_update(), and object_force_modifier_update_for_bind().
| GpencilModifierData* BKE_gpencil_modifiers_findby_name | ( | Object * | ob, |
| const char * | name | ||
| ) |
Find grease pencil modifier by name.
| ob | Grease pencil object |
| name | Name to find |
Definition at line 592 of file gpencil_modifier.c.
References BLI_findstring(), and Object::greasepencil_modifiers.
Referenced by bakeModifier(), and gpencil_edit_modifier_property_get().
| GpencilModifierData* BKE_gpencil_modifiers_findby_type | ( | Object * | ob, |
| GpencilModifierType | type | ||
| ) |
Definition at line 495 of file gpencil_modifier.c.
References ListBase::first, Object::greasepencil_modifiers, GpencilModifierData::next, type, and GpencilModifierData::type.
Referenced by ED_gpencil_add_armature(), ED_gpencil_add_lattice_modifier(), ED_object_gpencil_modifier_add(), ED_object_gpencil_modifier_copy(), gpencil_generate_weights_exec(), and panel_draw().
| void BKE_gpencil_modifiers_foreach_ID_link | ( | Object * | ob, |
| GreasePencilIDWalkFunc | walk, | ||
| void * | userData | ||
| ) |
Link grease pencil modifier related IDs.
| ob | Grease pencil object |
| walk | Walk option |
| userData | User data |
Definition at line 552 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), ListBase::first, GpencilModifierTypeInfo::foreachIDLink, Object::greasepencil_modifiers, GpencilModifierData::next, and GpencilModifierData::type.
Referenced by BKE_gpencil_modifier_blend_read_lib(), blender::deg::DepsgraphNodeBuilder::build_object(), blender::deg::DepsgraphRelationBuilder::build_object(), object_blend_read_expand(), and object_foreach_id().
| void BKE_gpencil_modifiers_foreach_tex_link | ( | Object * | ob, |
| GreasePencilTexWalkFunc | walk, | ||
| void * | userData | ||
| ) |
Link grease pencil modifier related Texts.
| ob | Grease pencil object |
| walk | Walk option |
| userData | User data |
Definition at line 571 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), ListBase::first, GpencilModifierTypeInfo::foreachTexLink, Object::greasepencil_modifiers, GpencilModifierData::next, and GpencilModifierData::type.
Referenced by buttons_texture_users_from_context().
| GpencilModifierData* BKE_gpencil_modifiers_get_virtual_modifierlist | ( | const Object * | ob, |
| GpencilVirtualModifierData * | UNUSEDvirtualModifierData | ||
| ) |
Definition at line 125 of file gpencil_modifier.c.
References VirtualModifierData::amd, Object::data, ListBase::first, Object::greasepencil_modifiers, OB_ARMATURE, OB_LATTICE, ArmatureModifierData::object, Object::parent, PARSKEL, Object::partype, Object::type, and virtualModifierCommonData.
| void BKE_gpencil_modifierType_panel_id | ( | GpencilModifierType | type, |
| char * | r_idname | ||
| ) |
Get the idname of the modifier type's panel, which was defined in the panelRegister callback.
| type | Type of modifier |
| r_idname | ID name |
Definition at line 411 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), GPENCIL_MODIFIER_TYPE_PANEL_PREFIX, GpencilModifierTypeInfo::name, and type.
Referenced by gpencil_modifier_panel_id(), and gpencil_modifier_panel_register().
Prepare grease pencil eval data for modifiers
| depsgraph | Current depsgraph |
| scene | Current scene |
| ob | Grease pencil object |
Definition at line 701 of file gpencil_modifier.c.
References BKE_gpencil_eval_delete(), BKE_gpencil_update_orig_pointers(), Object::data, DEG_debug_print_eval(), DEG_get_original_id(), depsgraph, equals_m4m4(), ListBase::first, Object_Runtime::gpd_eval, Object_Runtime::gpd_orig, gpencil_assign_object_eval(), gpencil_copy_activeframe_to_eval(), gpencil_copy_for_eval(), GPENCIL_CURVE_EDIT_SESSIONS_ON, GPENCIL_MULTIEDIT_SESSIONS_ON, GPENCIL_SIMPLIFY_MODIF, Object::greasepencil_modifiers, bGPdata::id, Object::id, is_one_v3(), is_zero_v3(), bGPdata::layers, LISTBASE_FOREACH, loc_eul_size_to_mat4(), ID::name, NULL, Object::runtime, scene, and ID::us.
Referenced by BKE_object_handle_data_update().
|
static |
Definition at line 638 of file gpencil_modifier.c.
References BLI_assert, bGPdata::id, Object::id, LIB_TAG_COPIED_ON_WRITE, LIB_TAG_COPIED_ON_WRITE_EVAL_RESULT, bGPdata::runtime, and ID::tag.
Referenced by BKE_gpencil_prepare_eval_data().
|
static |
Definition at line 652 of file gpencil_modifier.c.
References BKE_gpencil_frame_copy_strokes(), BKE_gpencil_frame_original_pointers_update(), BKE_gpencil_free_strokes(), BKE_gpencil_layer_frame_get(), BLI_findindex(), BLI_findlink(), depsgraph, ListBase::first, bGPDframe::framenum, bGPDlayer::frames, GP_GETFRAME_USE_PREV, gpencil_remap_time_get(), bGPDframe_Runtime::gpf_orig, bGPdata::layers, LISTBASE_FOREACH, bGPDlayer::next, NULL, bGPDframe::runtime, and scene.
Referenced by BKE_gpencil_prepare_eval_data().
Definition at line 687 of file gpencil_modifier.c.
References BKE_id_copy_ex(), bGPdata::id, LIB_ID_COPY_LOCALIZE, NULL, and result.
Referenced by BKE_gpencil_prepare_eval_data().
|
static |
Definition at line 447 of file gpencil_modifier.c.
References id_us_plus(), IDWALK_CB_USER, and NULL.
Referenced by BKE_gpencil_modifier_copydata_ex().
|
static |
Remap grease pencil frame (Time modifier)
| depsgraph | Current depsgraph |
| scene | Current scene |
| ob | Grease pencil object |
| gpl | Grease pencil layer |
Definition at line 605 of file gpencil_modifier.c.
References BKE_gpencil_has_time_modifiers(), DAG_EVAL_RENDER, DEG_get_ctime(), DEG_get_mode(), depsgraph, gpencil_time_modifier(), and scene.
Referenced by BKE_gpencil_frame_retime_get(), and gpencil_copy_activeframe_to_eval().
|
static |
Definition at line 206 of file gpencil_modifier.c.
References BKE_gpencil_modifier_get_info(), Object::data, depsgraph, GPENCIL_ANY_EDIT_MODE, GPENCIL_MODIFIER_ACTIVE, GPENCIL_MODIFIER_EDIT, Object::greasepencil_modifiers, LISTBASE_FOREACH, GpencilModifierTypeInfo::remapTime, and scene.
Referenced by gpencil_remap_time_get().
|
static |
Definition at line 317 of file gpencil_modifier.c.
References id_us_min(), IDWALK_CB_USER, and NULL.
Referenced by BKE_gpencil_modifier_free_ex().
|
static |
Definition at line 64 of file gpencil_modifier.c.
Referenced by BKE_gpencil_modifier_set_error().
|
static |
Definition at line 65 of file gpencil_modifier.c.
Referenced by BKE_gpencil_modifier_get_info(), and BKE_gpencil_modifier_init().