Changeset View
Changeset View
Standalone View
Standalone View
source/blender/editors/include/ED_gpencil.h
| Show All 24 Lines | |||||
| /** \file ED_gpencil.h | /** \file ED_gpencil.h | ||||
| * \ingroup editors | * \ingroup editors | ||||
| */ | */ | ||||
| #ifndef __ED_GPENCIL_H__ | #ifndef __ED_GPENCIL_H__ | ||||
| #define __ED_GPENCIL_H__ | #define __ED_GPENCIL_H__ | ||||
| #include "ED_numinput.h" | |||||
| struct ID; | struct ID; | ||||
| struct ListBase; | struct ListBase; | ||||
| struct PointerRNA; | |||||
| struct rcti; | |||||
| struct bGPdata; | |||||
| struct bGPDlayer; | |||||
| struct bGPDframe; | |||||
| struct bGPDstroke; | |||||
| struct bGPDspoint; | |||||
| struct Brush; | |||||
| struct Main; | |||||
| struct bContext; | struct bContext; | ||||
| struct EvaluationContext; | |||||
| struct Depsgraph; | struct Depsgraph; | ||||
| struct ScrArea; | struct ScrArea; | ||||
| struct ARegion; | struct ARegion; | ||||
| struct RegionView3D; | |||||
| struct Scene; | |||||
| struct ToolSettings; | |||||
| struct ViewLayer; | |||||
| struct View3D; | struct View3D; | ||||
| struct Object; | struct Object; | ||||
| struct bGPdata; | struct Material; | ||||
| struct bGPDlayer; | |||||
| struct bGPDframe; | |||||
| struct bGPDstroke; | |||||
| struct bGPDpalette; | |||||
| struct bGPDpalettecolor; | |||||
| struct bAnimContext; | struct bAnimContext; | ||||
| struct KeyframeEditData; | struct KeyframeEditData; | ||||
| struct PointerRNA; | |||||
| struct Scene; | |||||
| struct ViewLayer; | |||||
| struct wmWindowManager; | |||||
| struct wmKeyConfig; | |||||
| struct wmKeyConfig; | |||||
| struct wmOperator; | |||||
| struct wmWindow; | |||||
| struct wmWindowManager; | |||||
| /* ------------- Grease-Pencil Helpers ---------------- */ | /* ------------- Grease-Pencil Runtime Data ---------------- */ | ||||
| typedef struct tGPDinterpolate_layer { | |||||
| struct tGPDinterpolate_layer *next, *prev; | |||||
| struct bGPDlayer *gpl; /* layer */ | |||||
| struct bGPDframe *prevFrame; /* frame before current frame (interpolate-from) */ | |||||
| struct bGPDframe *nextFrame; /* frame after current frame (interpolate-to) */ | |||||
| struct bGPDframe *interFrame; /* interpolated frame */ | |||||
| float factor; /* interpolate factor */ | |||||
| } tGPDinterpolate_layer; | |||||
| /* Temporary interpolate operation data */ | |||||
| typedef struct tGPDinterpolate { | |||||
| struct Scene *scene; /* current scene from context */ | |||||
| struct ScrArea *sa; /* area where painting originated */ | |||||
| struct ARegion *ar; /* region where painting originated */ | |||||
| struct bGPdata *gpd; /* current GP datablock */ | |||||
| int cframe; /* current frame number */ | |||||
| ListBase ilayers; /* (tGPDinterpolate_layer) layers to be interpolated */ | |||||
| float shift; /* value for determining the displacement influence */ | |||||
| float init_factor; /* initial interpolation factor for active layer */ | |||||
| float low_limit; /* shift low limit (-100%) */ | |||||
| float high_limit; /* shift upper limit (200%) */ | |||||
| int flag; /* flag from toolsettings */ | |||||
| NumInput num; /* numeric input */ | |||||
| void *draw_handle_3d; /* handle for drawing strokes while operator is running 3d stuff */ | |||||
| void *draw_handle_screen; /* handle for drawing strokes while operator is running screen stuff */ | |||||
| } tGPDinterpolate; | |||||
| /* Temporary 'Stroke Point' data | /* Temporary 'Stroke Point' data (2D / screen-space) | ||||
| * | * | ||||
| * Used as part of the 'stroke cache' used during drawing of new strokes | * Used as part of the 'stroke cache' used during drawing of new strokes | ||||
| */ | */ | ||||
| typedef struct tGPspoint { | typedef struct tGPspoint { | ||||
| int x, y; /* x and y coordinates of cursor (in relative to area) */ | int x, y; /* x and y coordinates of cursor (in relative to area) */ | ||||
| float pressure; /* pressure of tablet at this point */ | float pressure; /* pressure of tablet at this point */ | ||||
| float strength; /* pressure of tablet at this point for alpha factor */ | float strength; /* pressure of tablet at this point for alpha factor */ | ||||
| float time; /* Time relative to stroke start (used when converting to path) */ | float time; /* Time relative to stroke start (used when converting to path) */ | ||||
| float uv_fac; /* factor of uv along the stroke */ | |||||
| float uv_rot; /* uv rotation for dor mode */ | |||||
| } tGPspoint; | } tGPspoint; | ||||
| /* used to sort by zdepth gpencil objects in viewport */ | |||||
| /* Check if 'sketching sessions' are enabled */ | /* TODO: this could be a system parameter in userprefs screen */ | ||||
| #define GPENCIL_SKETCH_SESSIONS_ON(scene) ((scene)->toolsettings->gpencil_flags & GP_TOOL_FLAG_PAINTSESSIONS_ON) | #define GP_CACHE_BLOCK_SIZE 16 | ||||
| typedef struct tGPencilSort { | |||||
| struct Base *base; | |||||
| float zdepth; | |||||
| } tGPencilSort; | |||||
| /* ----------- Grease Pencil Tools/Context ------------- */ | /* ----------- Grease Pencil Tools/Context ------------- */ | ||||
| /* Context-dependent */ | /* Context-dependent */ | ||||
| struct bGPdata **ED_gpencil_data_get_pointers(const struct bContext *C, struct PointerRNA *ptr); | struct bGPdata **ED_gpencil_data_get_pointers(const struct bContext *C, struct PointerRNA *r_ptr); | ||||
| struct bGPdata *ED_gpencil_data_get_active(const struct bContext *C); | struct bGPdata *ED_gpencil_data_get_active(const struct bContext *C); | ||||
| struct bGPdata *ED_gpencil_data_get_active_evaluated(const struct bContext *C); | |||||
| /* Context independent (i.e. each required part is passed in instead) */ | /* Context independent (i.e. each required part is passed in instead) */ | ||||
| struct bGPdata **ED_gpencil_data_get_pointers_direct(struct ID *screen_id, struct Scene *scene, | struct bGPdata **ED_gpencil_data_get_pointers_direct( | ||||
| struct ScrArea *sa, struct Object *ob, | struct ID *screen_id, | ||||
| struct PointerRNA *ptr); | struct ScrArea *sa, | ||||
| struct bGPdata *ED_gpencil_data_get_active_direct(struct ID *screen_id, struct Scene *scene, | struct Scene *scene, | ||||
| struct ScrArea *sa, struct Object *ob); | struct Object *ob, | ||||
| struct PointerRNA *r_ptr); | |||||
| struct bGPdata *ED_gpencil_data_get_active_direct( | |||||
| struct ID *screen_id, | |||||
| struct ScrArea *sa, | |||||
| struct Scene *scene, | |||||
| struct Object *ob); | |||||
| bool ED_gpencil_data_owner_is_annotation(struct PointerRNA *owner_ptr); | |||||
| /* 3D View */ | /* 3D View */ | ||||
| struct bGPdata *ED_gpencil_data_get_active_v3d(struct Scene *scene, struct ViewLayer *view_layer); | struct bGPdata *ED_gpencil_data_get_active_v3d(struct ViewLayer *view_layer); | ||||
| bool ED_gpencil_has_keyframe_v3d(struct Scene *scene, struct Object *ob, int cfra); | bool ED_gpencil_has_keyframe_v3d(struct Scene *scene, struct Object *ob, int cfra); | ||||
| /* ----------- Stroke Editing Utilities ---------------- */ | /* ----------- Stroke Editing Utilities ---------------- */ | ||||
| bool ED_gpencil_stroke_can_use_direct(const struct ScrArea *sa, const struct bGPDstroke *gps); | bool ED_gpencil_stroke_can_use_direct(const struct ScrArea *sa, const struct bGPDstroke *gps); | ||||
| bool ED_gpencil_stroke_can_use(const struct bContext *C, const struct bGPDstroke *gps); | bool ED_gpencil_stroke_can_use(const struct bContext *C, const struct bGPDstroke *gps); | ||||
| bool ED_gpencil_stroke_color_use(const struct bGPDlayer *gpl, const struct bGPDstroke *gps); | bool ED_gpencil_stroke_color_use(struct Object *ob, const struct bGPDlayer *gpl, const struct bGPDstroke *gps); | ||||
| struct bGPDpalettecolor *ED_gpencil_stroke_getcolor(struct bGPdata *gpd, struct bGPDstroke *gps); | |||||
| bool ED_gpencil_stroke_minmax( | |||||
| const struct bGPDstroke *gps, const bool use_select, | |||||
| float r_min[3], float r_max[3]); | |||||
| /* ----------- Grease Pencil Operators ----------------- */ | /* ----------- Grease Pencil Operators ----------------- */ | ||||
| void ED_keymap_gpencil(struct wmKeyConfig *keyconf); | void ED_keymap_gpencil(struct wmKeyConfig *keyconf); | ||||
| void ED_operatortypes_gpencil(void); | void ED_operatortypes_gpencil(void); | ||||
| void ED_operatormacros_gpencil(void); | void ED_operatormacros_gpencil(void); | ||||
| Show All 10 Lines | |||||
| void ED_gpencil_draw_view2d(const struct bContext *C, bool onlyv2d); | void ED_gpencil_draw_view2d(const struct bContext *C, bool onlyv2d); | ||||
| void ED_gpencil_draw_view3d(struct wmWindowManager *wm, | void ED_gpencil_draw_view3d(struct wmWindowManager *wm, | ||||
| struct Scene *scene, | struct Scene *scene, | ||||
| struct ViewLayer *view_layer, | struct ViewLayer *view_layer, | ||||
| struct Depsgraph *depsgraph, | struct Depsgraph *depsgraph, | ||||
| struct View3D *v3d, | struct View3D *v3d, | ||||
| struct ARegion *ar, | struct ARegion *ar, | ||||
| bool only3d); | bool only3d); | ||||
| void ED_gpencil_draw_ex(struct Scene *scene, struct bGPdata *gpd, int winx, int winy, | void ED_gpencil_draw_view3d_annotations( | ||||
| struct Scene *scene, struct Depsgraph *depsgraph, | |||||
| struct View3D *v3d, struct ARegion *ar, | |||||
| bool only3d); | |||||
| void ED_gpencil_draw_view3d_object(struct wmWindowManager *wm, | |||||
| struct Scene *scene, | |||||
| struct Depsgraph *depsgraph, | |||||
| struct Object *ob, | |||||
| struct View3D *v3d, | |||||
| struct ARegion *ar, | |||||
| bool only3d); | |||||
| void ED_gpencil_draw_ex(struct RegionView3D *rv3d, struct Scene *scene, struct bGPdata *gpd, int winx, int winy, | |||||
| const int cfra, const char spacetype); | const int cfra, const char spacetype); | ||||
| void ED_gp_draw_interpolation(struct tGPDinterpolate *tgpi, const int type); | |||||
| /* ----------- Grease-Pencil AnimEdit API ------------------ */ | /* ----------- Grease-Pencil AnimEdit API ------------------ */ | ||||
| bool ED_gplayer_frames_looper(struct bGPDlayer *gpl, struct Scene *scene, | bool ED_gplayer_frames_looper(struct bGPDlayer *gpl, struct Scene *scene, | ||||
| short (*gpf_cb)(struct bGPDframe *, struct Scene *)); | short (*gpf_cb)(struct bGPDframe *, struct Scene *)); | ||||
| void ED_gplayer_make_cfra_list(struct bGPDlayer *gpl, ListBase *elems, bool onlysel); | void ED_gplayer_make_cfra_list(struct bGPDlayer *gpl, ListBase *elems, bool onlysel); | ||||
| bool ED_gplayer_frame_select_check(struct bGPDlayer *gpl); | bool ED_gplayer_frame_select_check(struct bGPDlayer *gpl); | ||||
| void ED_gplayer_frame_select_set(struct bGPDlayer *gpl, short mode); | void ED_gplayer_frame_select_set(struct bGPDlayer *gpl, short mode); | ||||
| Show All 16 Lines | |||||
| /* ------------ Grease-Pencil Undo System ------------------ */ | /* ------------ Grease-Pencil Undo System ------------------ */ | ||||
| int ED_gpencil_session_active(void); | int ED_gpencil_session_active(void); | ||||
| int ED_undo_gpencil_step(struct bContext *C, int step, const char *name); | int ED_undo_gpencil_step(struct bContext *C, int step, const char *name); | ||||
| /* ------------ Transformation Utilities ------------ */ | /* ------------ Transformation Utilities ------------ */ | ||||
| /* get difference matrix using parent */ | /* get difference matrix */ | ||||
| void ED_gpencil_parent_location(struct bGPDlayer *gpl, float diff_mat[4][4]); | void ED_gpencil_parent_location( | ||||
| const struct Depsgraph *depsgraph, struct Object *obact, struct bGPdata *gpd, | |||||
| struct bGPDlayer *gpl, float diff_mat[4][4]); | |||||
| /* reset parent matrix for all layers */ | /* reset parent matrix for all layers */ | ||||
| void ED_gpencil_reset_layers_parent(struct bGPdata *gpd); | void ED_gpencil_reset_layers_parent(struct Depsgraph *depsgraph, struct Object *obact, struct bGPdata *gpd); | ||||
| /* cursor utilities */ | |||||
| void ED_gpencil_brush_draw_eraser(struct Brush *brush, int x, int y); | |||||
| /* ----------- Add Primitive Utilities -------------- */ | |||||
| void ED_gpencil_create_monkey(struct bContext *C, float mat[4][4]); | |||||
| /* ------------ Object Utilities ------------ */ | |||||
| struct Object *ED_add_gpencil_object(struct bContext *C, struct Scene *scene, const float loc[3]); | |||||
| void ED_gpencil_add_defaults(struct bContext *C); | |||||
| /* set object modes */ | |||||
| void ED_gpencil_setup_modes(struct bContext *C, struct bGPdata *gpd, int newmode); | |||||
| void ED_gp_project_stroke_to_plane(struct Object *ob, struct RegionView3D *rv3d, struct bGPDstroke *gps, const float origin[3], const int axis); | |||||
| void ED_gp_project_point_to_plane(struct Object *ob, struct RegionView3D *rv3d, const float origin[3], const int axis, struct bGPDspoint *pt); | |||||
| void ED_gp_get_drawing_reference(struct View3D *v3d, struct Scene *scene, struct Object *ob, struct bGPDlayer *gpl, char align_flag, float vec[3]); | |||||
| /* set sculpt cursor */ | |||||
| void ED_gpencil_toggle_brush_cursor(struct bContext *C, bool enable, void *customdata); | |||||
| /* vertex groups */ | |||||
| void ED_gpencil_vgroup_assign(struct bContext *C, struct Object *ob, float weight); | |||||
| void ED_gpencil_vgroup_remove(struct bContext *C, struct Object *ob); | |||||
| void ED_gpencil_vgroup_select(struct bContext *C, struct Object *ob); | |||||
| void ED_gpencil_vgroup_deselect(struct bContext *C, struct Object *ob); | |||||
| /* join objects */ | |||||
| int ED_gpencil_join_objects_exec(struct bContext *C, struct wmOperator *op); | |||||
| /* texture coordinate utilities */ | |||||
| void ED_gpencil_tpoint_to_point(struct ARegion *ar, float origin[3], const struct tGPspoint *tpt, struct bGPDspoint *pt); | |||||
| void ED_gpencil_calc_stroke_uv(struct Object *ob, struct bGPDstroke *gps); | |||||
| void ED_gpencil_update_color_uv(struct Main *bmain, struct Material *mat); | |||||
| #endif /* __ED_GPENCIL_H__ */ | #endif /* __ED_GPENCIL_H__ */ | ||||