Blender V4.3
editaction_gpencil.cc File Reference
#include <cmath>
#include <cstddef>
#include <cstdio>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "BLI_blenlib.h"
#include "BLI_utildefines.h"
#include "DNA_gpencil_legacy_types.h"
#include "DNA_scene_types.h"
#include "BKE_gpencil_legacy.h"
#include "ED_anim_api.hh"
#include "ED_gpencil_legacy.hh"
#include "ED_keyframes_edit.hh"
#include "ED_markers.hh"
#include "WM_api.hh"
#include "DEG_depsgraph.hh"

Go to the source code of this file.

Functions

bool ED_gpencil_layer_frames_looper (bGPDlayer *gpl, Scene *scene, bool(*gpf_cb)(bGPDframe *, Scene *))
 
void ED_gpencil_layer_make_cfra_list (bGPDlayer *gpl, ListBase *elems, bool onlysel)
 
bool ED_gpencil_layer_frame_select_check (const bGPDlayer *gpl)
 
static void gpencil_frame_select (bGPDframe *gpf, short select_mode)
 
void ED_gpencil_select_frames (bGPDlayer *gpl, short select_mode)
 
void ED_gpencil_layer_frame_select_set (bGPDlayer *gpl, short mode)
 
void ED_gpencil_select_frame (bGPDlayer *gpl, int selx, short select_mode)
 
void ED_gpencil_layer_frames_select_box (bGPDlayer *gpl, float min, float max, short select_mode)
 
void ED_gpencil_layer_frames_select_region (KeyframeEditData *ked, bGPDlayer *gpl, short tool, short select_mode)
 
void ED_gpencil_set_active_channel (bGPdata *gpd, bGPDlayer *gpl)
 
bool ED_gpencil_layer_frames_delete (bGPDlayer *gpl)
 
void ED_gpencil_layer_frames_duplicate (bGPDlayer *gpl)
 
void ED_gpencil_layer_frames_keytype_set (bGPDlayer *gpl, short type)
 
void ED_gpencil_anim_copybuf_free ()
 
bool ED_gpencil_anim_copybuf_copy (bAnimContext *ac)
 
bool ED_gpencil_anim_copybuf_paste (bAnimContext *ac, const short offset_mode)
 
static bool gpencil_frame_snap_nearest (bGPDframe *, Scene *)
 
static bool gpencil_frame_snap_nearestsec (bGPDframe *gpf, Scene *scene)
 
static bool gpencil_frame_snap_cframe (bGPDframe *gpf, Scene *scene)
 
static bool gpencil_frame_snap_nearmarker (bGPDframe *gpf, Scene *scene)
 
void ED_gpencil_layer_snap_frames (bGPDlayer *gpl, Scene *scene, short mode)
 
static bool gpencil_frame_mirror_cframe (bGPDframe *gpf, Scene *scene)
 
static bool gpencil_frame_mirror_yaxis (bGPDframe *gpf, Scene *)
 
static bool gpencil_frame_mirror_xaxis (bGPDframe *gpf, Scene *)
 
static bool gpencil_frame_mirror_marker (bGPDframe *gpf, Scene *scene)
 
void ED_gpencil_layer_mirror_frames (bGPDlayer *gpl, Scene *scene, short mode)
 

Variables

static ListBase gpencil_anim_copybuf = {nullptr, nullptr}
 
static int gpencil_anim_copy_firstframe = 999999999
 
static int gpencil_anim_copy_lastframe = -999999999
 
static int gpencil_anim_copy_cfra = 0
 

Function Documentation

◆ ED_gpencil_anim_copybuf_copy()

◆ ED_gpencil_anim_copybuf_free()

void ED_gpencil_anim_copybuf_free ( )

This function frees any MEM_calloc'ed copy/paste buffer data.

Definition at line 306 of file editaction_gpencil.cc.

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().

◆ ED_gpencil_anim_copybuf_paste()

◆ ED_gpencil_layer_frame_select_check()

bool ED_gpencil_layer_frame_select_check ( const bGPDlayer * gpl)

Check if one of the frames in this layer is selected.

Definition at line 92 of file editaction_gpencil.cc.

References bGPDlayer::frames, GP_FRAME_SELECT, and LISTBASE_FOREACH.

Referenced by deselect_action_keys(), and duplicate_action_keys().

◆ ED_gpencil_layer_frame_select_set()

void ED_gpencil_layer_frame_select_set ( bGPDlayer * gpl,
short mode )

Set all/none/invert select.

Definition at line 143 of file editaction_gpencil.cc.

References ED_gpencil_select_frames().

Referenced by deselect_action_keys().

◆ ED_gpencil_layer_frames_delete()

bool ED_gpencil_layer_frames_delete ( bGPDlayer * gpl)

Delete selected frames.

Definition at line 232 of file editaction_gpencil.cc.

References BKE_gpencil_layer_frame_delete(), bGPDlayer::frames, GP_FRAME_SELECT, and LISTBASE_FOREACH_MUTABLE.

Referenced by delete_action_keys().

◆ ED_gpencil_layer_frames_duplicate()

void ED_gpencil_layer_frames_duplicate ( bGPDlayer * gpl)

Duplicate selected frames from given gp-layer.

Definition at line 252 of file editaction_gpencil.cc.

References BKE_gpencil_frame_duplicate(), BLI_insertlinkafter(), bGPDlayer::frames, GP_FRAME_SELECT, and LISTBASE_FOREACH_MUTABLE.

Referenced by duplicate_action_keys().

◆ ED_gpencil_layer_frames_keytype_set()

void ED_gpencil_layer_frames_keytype_set ( bGPDlayer * gpl,
short type )

Set keyframe type for selected frames from given gp-layer

Parameters
typeThe type of keyframe (eBezTriple_KeyframeType) to set selected frames to.

Definition at line 275 of file editaction_gpencil.cc.

References bGPDlayer::frames, GP_FRAME_SELECT, and LISTBASE_FOREACH.

Referenced by setkeytype_action_keys().

◆ ED_gpencil_layer_frames_looper()

bool ED_gpencil_layer_frames_looper ( bGPDlayer * gpl,
Scene * scene,
bool(* gpf_cb )(bGPDframe *, Scene *) )

Loops over the GP-frames for a GP-layer, and applies the given callback.

Definition at line 43 of file editaction_gpencil.cc.

References bGPDlayer::frames, and LISTBASE_FOREACH.

Referenced by ED_gpencil_layer_mirror_frames(), and ED_gpencil_layer_snap_frames().

◆ ED_gpencil_layer_frames_select_box()

void ED_gpencil_layer_frames_select_box ( bGPDlayer * gpl,
float min,
float max,
short select_mode )

Select the frames in this layer that occur within the bounds specified.

Definition at line 169 of file editaction_gpencil.cc.

References bGPDlayer::frames, gpencil_frame_select(), IN_RANGE, LISTBASE_FOREACH, and min.

Referenced by actkeys_select_leftright(), box_select_elem(), and markers_selectkeys_between().

◆ ED_gpencil_layer_frames_select_region()

void ED_gpencil_layer_frames_select_region ( KeyframeEditData * ked,
bGPDlayer * gpl,
short tool,
short select_mode )

◆ ED_gpencil_layer_make_cfra_list()

void ED_gpencil_layer_make_cfra_list ( bGPDlayer * gpl,
ListBase * elems,
bool onlysel )

Make a listing all the gp-frames in a layer as cfraelems.

Definition at line 67 of file editaction_gpencil.cc.

References BLI_addtail(), CfraElem::cfra, ELEM, float, bGPDlayer::frames, GP_FRAME_SELECT, LISTBASE_FOREACH, MEM_callocN, and CfraElem::sel.

Referenced by columnselect_action_keys().

◆ ED_gpencil_layer_mirror_frames()

void ED_gpencil_layer_mirror_frames ( bGPDlayer * gpl,
Scene * scene,
short mode )

◆ ED_gpencil_layer_snap_frames()

◆ ED_gpencil_select_frame()

void ED_gpencil_select_frame ( bGPDlayer * gpl,
int selx,
short select_mode )

Select the frame in this layer that occurs on this frame (there should only be one at most).

Definition at line 154 of file editaction_gpencil.cc.

References BKE_gpencil_layer_frame_find(), and gpencil_frame_select().

Referenced by actkeys_mselect_column(), actkeys_mselect_single(), and columnselect_action_keys().

◆ ED_gpencil_select_frames()

void ED_gpencil_select_frames ( bGPDlayer * gpl,
short select_mode )

Set all/none/invert select (like above, but with SELECT_* modes).

Definition at line 130 of file editaction_gpencil.cc.

References bGPDlayer::frames, gpencil_frame_select(), and LISTBASE_FOREACH.

Referenced by actkeys_mselect_channel_only(), and ED_gpencil_layer_frame_select_set().

◆ ED_gpencil_set_active_channel()

void ED_gpencil_set_active_channel ( bGPdata * gpd,
bGPDlayer * gpl )

◆ gpencil_frame_mirror_cframe()

static bool gpencil_frame_mirror_cframe ( bGPDframe * gpf,
Scene * scene )
static

◆ gpencil_frame_mirror_marker()

static bool gpencil_frame_mirror_marker ( bGPDframe * gpf,
Scene * scene )
static

◆ gpencil_frame_mirror_xaxis()

static bool gpencil_frame_mirror_xaxis ( bGPDframe * gpf,
Scene *  )
static

◆ gpencil_frame_mirror_yaxis()

static bool gpencil_frame_mirror_yaxis ( bGPDframe * gpf,
Scene *  )
static

◆ gpencil_frame_select()

static void gpencil_frame_select ( bGPDframe * gpf,
short select_mode )
static

◆ gpencil_frame_snap_cframe()

static bool gpencil_frame_snap_cframe ( bGPDframe * gpf,
Scene * scene )
static

◆ gpencil_frame_snap_nearest()

static bool gpencil_frame_snap_nearest ( bGPDframe * ,
Scene *  )
static

Definition at line 498 of file editaction_gpencil.cc.

References floor(), GP_FRAME_SELECT, and int.

Referenced by ED_gpencil_layer_snap_frames().

◆ gpencil_frame_snap_nearestsec()

static bool gpencil_frame_snap_nearestsec ( bGPDframe * gpf,
Scene * scene )
static

◆ gpencil_frame_snap_nearmarker()

static bool gpencil_frame_snap_nearmarker ( bGPDframe * gpf,
Scene * scene )
static

Variable Documentation

◆ gpencil_anim_copy_cfra

int gpencil_anim_copy_cfra = 0
static

◆ gpencil_anim_copy_firstframe

int gpencil_anim_copy_firstframe = 999999999
static

◆ gpencil_anim_copy_lastframe

int gpencil_anim_copy_lastframe = -999999999
static

◆ gpencil_anim_copybuf

ListBase gpencil_anim_copybuf = {nullptr, nullptr}
static