Blender
V3.3
|
#include <math.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "DNA_gpencil_types.h"
#include "DNA_scene_types.h"
#include "BKE_fcurve.h"
#include "BKE_gpencil.h"
#include "BKE_report.h"
#include "ED_anim_api.h"
#include "ED_gpencil.h"
#include "ED_keyframes_edit.h"
#include "ED_markers.h"
#include "WM_api.h"
#include "DEG_depsgraph.h"
Go to the source code of this file.
Variables | |
static ListBase | gpencil_anim_copybuf = {NULL, NULL} |
static int | gpencil_anim_copy_firstframe = 999999999 |
static int | gpencil_anim_copy_lastframe = -999999999 |
static int | gpencil_anim_copy_cfra = 0 |
bool ED_gpencil_anim_copybuf_copy | ( | struct bAnimContext * | ac | ) |
This function adds data to the copy/paste buffer, freeing existing data first Only the selected GP-layers get their selected keyframes copied.
Returns whether the copy operation was successful or not.
Definition at line 316 of file editaction_gpencil.c.
References ANIM_animdata_filter(), ANIM_animdata_freelist(), ANIMFILTER_DATA_VISIBLE, ANIMFILTER_LIST_VISIBLE, ANIMFILTER_NODUPLIS, ANIMTYPE_GPLAYER, BKE_gpencil_frame_duplicate(), BLI_addtail(), BLI_assert, BLI_listbase_is_empty(), BLI_movelisttolist(), BLI_strncpy(), RenderData::cfra, bAnimContext::data, bAnimListElem::data, bAnimContext::datatype, ED_gpencil_anim_copybuf_free(), filter(), ListBase::first, bGPDlayer::frames, GP_FRAME_SELECT, gpencil_anim_copy_cfra, gpencil_anim_copy_firstframe, gpencil_anim_copy_lastframe, gpencil_anim_copybuf, bGPDlayer::info, LISTBASE_FOREACH, MEM_callocN, bAnimListElem::next, NULL, Scene::r, scene, bAnimContext::scene, and bAnimListElem::type.
Referenced by actkeys_copy_exec().
This function frees any MEM_calloc'ed copy/paste buffer data.
Definition at line 306 of file editaction_gpencil.c.
References BKE_gpencil_free_layers(), BLI_listbase_clear(), gpencil_anim_copy_cfra, gpencil_anim_copy_firstframe, gpencil_anim_copy_lastframe, and gpencil_anim_copybuf.
Referenced by ED_gpencil_anim_copybuf_copy(), and WM_exit_ex().
bool ED_gpencil_anim_copybuf_paste | ( | struct bAnimContext * | ac, |
short | copy_mode | ||
) |
Pastes keyframes from buffer, and reports success.
Definition at line 383 of file editaction_gpencil.c.
References ANIM_animdata_filter(), ANIM_animdata_freelist(), ANIMFILTER_DATA_VISIBLE, ANIMFILTER_FOREDIT, ANIMFILTER_LIST_VISIBLE, ANIMFILTER_NODUPLIS, ANIMFILTER_SEL, ANIMTYPE_GPLAYER, BKE_gpencil_layer_frame_delete(), BKE_gpencil_layer_frame_get(), BKE_gpencil_stroke_duplicate(), BLI_addtail(), BLI_listbase_is_empty(), RenderData::cfra, bAnimContext::data, bAnimListElem::data, bAnimContext::datatype, DEG_id_tag_update(), filter(), ListBase::first, bGPDframe::framenum, GP_GETFRAME_ADD_NEW, gpencil_anim_copy_cfra, gpencil_anim_copy_firstframe, gpencil_anim_copy_lastframe, gpencil_anim_copybuf, bAnimListElem::id, ID_RECALC_GEOMETRY, ID_RECALC_TRANSFORM, bGPDlayer::info, KEYFRAME_PASTE_OFFSET_CFRA_END, KEYFRAME_PASTE_OFFSET_CFRA_RELATIVE, KEYFRAME_PASTE_OFFSET_CFRA_START, KEYFRAME_PASTE_OFFSET_NONE, ListBase::last, bAnimListElem::next, bGPDstroke::next, NULL, offset, Scene::r, scene, bAnimContext::scene, STREQ, and bAnimListElem::type.
Referenced by actkeys_paste_exec().
Definition at line 93 of file editaction_gpencil.c.
References bGPDlayer::frames, GP_FRAME_SELECT, LISTBASE_FOREACH, and NULL.
Referenced by deselect_action_keys(), and duplicate_action_keys().
Set all/none/invert select.
Definition at line 144 of file editaction_gpencil.c.
References ED_gpencil_select_frames(), and NULL.
Referenced by deselect_action_keys().
Delete selected frames.
Definition at line 232 of file editaction_gpencil.c.
References BKE_gpencil_layer_frame_delete(), bGPDlayer::frames, GP_FRAME_SELECT, LISTBASE_FOREACH_MUTABLE, and NULL.
Referenced by delete_action_keys().
Duplicate selected frames from given gp-layer.
Definition at line 252 of file editaction_gpencil.c.
References BKE_gpencil_frame_duplicate(), BLI_insertlinkafter(), bGPDlayer::frames, GP_FRAME_SELECT, LISTBASE_FOREACH_MUTABLE, and NULL.
Referenced by duplicate_action_keys().
Set keyframe type for selected frames from given gp-layer
type | The type of keyframe (eBezTriple_KeyframeType) to set selected frames to. |
Definition at line 275 of file editaction_gpencil.c.
References bGPDlayer::frames, GP_FRAME_SELECT, LISTBASE_FOREACH, NULL, and type.
Referenced by setkeytype_action_keys().
bool ED_gpencil_layer_frames_looper | ( | bGPDlayer * | gpl, |
Scene * | scene, | ||
bool(*)(bGPDframe *, Scene *) | gpf_cb | ||
) |
Definition at line 44 of file editaction_gpencil.c.
References bGPDlayer::frames, LISTBASE_FOREACH, NULL, and scene.
Referenced by ED_gpencil_layer_mirror_frames(), and ED_gpencil_layer_snap_frames().
void ED_gpencil_layer_frames_select_box | ( | struct bGPDlayer * | gpl, |
float | min, | ||
float | max, | ||
short | select_mode | ||
) |
Select the frames in this layer that occur within the bounds specified.
Definition at line 170 of file editaction_gpencil.c.
References bGPDlayer::frames, gpencil_frame_select(), IN_RANGE, LISTBASE_FOREACH, max, min, and NULL.
Referenced by actkeys_select_leftright(), box_select_elem(), and markers_selectkeys_between().
void ED_gpencil_layer_frames_select_region | ( | struct KeyframeEditData * | ked, |
struct bGPDlayer * | gpl, | ||
short | tool, | ||
short | select_mode | ||
) |
Select the frames in this layer that occur within the lasso/circle region specified.
Definition at line 184 of file editaction_gpencil.c.
References BEZT_OK_CHANNEL_CIRCLE, BEZT_OK_CHANNEL_LASSO, KeyframeEditData::channel_y, KeyframeEditData::data, bGPDlayer::frames, gpencil_frame_select(), keyframe_region_circle_test(), keyframe_region_lasso_test(), LISTBASE_FOREACH, and NULL.
Referenced by region_select_elem().
Make a listing all the gp-frames in a layer as cfraelems.
Definition at line 68 of file editaction_gpencil.c.
References BLI_addtail(), CfraElem::cfra, ELEM, float(), bGPDlayer::frames, GP_FRAME_SELECT, LISTBASE_FOREACH, MEM_callocN, NULL, and CfraElem::sel.
Referenced by columnselect_action_keys().
Mirror selected gp-frames on... TODO: mirror over a specific time.
Definition at line 635 of file editaction_gpencil.c.
References ED_gpencil_layer_frames_looper(), gpencil_frame_mirror_cframe(), gpencil_frame_mirror_marker(), gpencil_frame_mirror_xaxis(), gpencil_frame_mirror_yaxis(), MIRROR_KEYS_CURFRAME, MIRROR_KEYS_MARKER, MIRROR_KEYS_XAXIS, MIRROR_KEYS_YAXIS, NULL, and scene.
Referenced by mirror_action_keys().
Snap selected frames to ....
Definition at line 535 of file editaction_gpencil.c.
References ED_gpencil_layer_frames_looper(), gpencil_frame_snap_cframe(), gpencil_frame_snap_nearest(), gpencil_frame_snap_nearestsec(), gpencil_frame_snap_nearmarker(), scene, SNAP_KEYS_CURFRAME, SNAP_KEYS_NEARFRAME, SNAP_KEYS_NEARMARKER, and SNAP_KEYS_NEARSEC.
Referenced by snap_action_keys().
Select the frame in this layer that occurs on this frame (there should only be one at most).
Definition at line 155 of file editaction_gpencil.c.
References BKE_gpencil_layer_frame_find(), gpencil_frame_select(), and NULL.
Referenced by actkeys_mselect_column(), actkeys_mselect_single(), and columnselect_action_keys().
Set all/none/invert select (like above, but with SELECT_* modes).
Definition at line 131 of file editaction_gpencil.c.
References bGPDlayer::frames, gpencil_frame_select(), LISTBASE_FOREACH, and NULL.
Referenced by actkeys_mselect_channel_only(), and ED_gpencil_layer_frame_select_set().
Set the layer's channel as active
Definition at line 217 of file editaction_gpencil.c.
References BKE_gpencil_layer_active_get(), BKE_gpencil_layer_active_set(), BKE_gpencil_layer_autolock_set(), bGPDlayer::flag, GP_LAYER_SELECT, NA_EDITED, NC_GPENCIL, ND_DATA, NULL, and WM_main_add_notifier().
Referenced by mouse_action_keys().
Definition at line 558 of file editaction_gpencil.c.
References RenderData::cfra, KDL::diff(), bGPDframe::flag, bGPDframe::framenum, GP_FRAME_SELECT, Scene::r, and scene.
Referenced by ED_gpencil_layer_mirror_frames().
Definition at line 595 of file editaction_gpencil.c.
References KDL::diff(), ED_markers_get_first_selected(), bGPDframe::flag, TimeMarker::frame, bGPDframe::framenum, GP_FRAME_SELECT, initialized, Scene::markers, NULL, and scene.
Referenced by ED_gpencil_layer_mirror_frames().
Definition at line 582 of file editaction_gpencil.c.
References KDL::diff(), bGPDframe::flag, bGPDframe::framenum, and GP_FRAME_SELECT.
Referenced by ED_gpencil_layer_mirror_frames().
Definition at line 570 of file editaction_gpencil.c.
References KDL::diff(), bGPDframe::flag, bGPDframe::framenum, and GP_FRAME_SELECT.
Referenced by ED_gpencil_layer_mirror_frames().
Definition at line 112 of file editaction_gpencil.c.
References bGPDframe::flag, GP_FRAME_SELECT, NULL, SELECT_ADD, SELECT_INVERT, and SELECT_SUBTRACT.
Referenced by ED_gpencil_layer_frames_select_box(), ED_gpencil_layer_frames_select_region(), ED_gpencil_select_frame(), and ED_gpencil_select_frames().
Definition at line 518 of file editaction_gpencil.c.
References RenderData::cfra, bGPDframe::flag, bGPDframe::framenum, GP_FRAME_SELECT, Scene::r, and scene.
Referenced by ED_gpencil_layer_snap_frames().
Definition at line 499 of file editaction_gpencil.c.
References blender::math::floor(), and GP_FRAME_SELECT.
Referenced by ED_gpencil_layer_snap_frames().
Definition at line 509 of file editaction_gpencil.c.
References bGPDframe::flag, float(), floorf, FPS, bGPDframe::framenum, and GP_FRAME_SELECT.
Referenced by ED_gpencil_layer_snap_frames().
Definition at line 526 of file editaction_gpencil.c.
References ED_markers_find_nearest_marker_time(), bGPDframe::flag, bGPDframe::framenum, GP_FRAME_SELECT, Scene::markers, and scene.
Referenced by ED_gpencil_layer_snap_frames().
|
static |
Definition at line 304 of file editaction_gpencil.c.
Referenced by ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_free(), and ED_gpencil_anim_copybuf_paste().
|
static |
Definition at line 302 of file editaction_gpencil.c.
Referenced by ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_free(), and ED_gpencil_anim_copybuf_paste().
|
static |
Definition at line 303 of file editaction_gpencil.c.
Referenced by ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_free(), and ED_gpencil_anim_copybuf_paste().
Definition at line 301 of file editaction_gpencil.c.
Referenced by ED_gpencil_anim_copybuf_copy(), ED_gpencil_anim_copybuf_free(), and ED_gpencil_anim_copybuf_paste().