Keep each function's declaration in the header file associated with its module. Arguably mode switching should be more organized, but for now it's better to just declare functions in more predictable places.
152 lines
5.2 KiB
C++
152 lines
5.2 KiB
C++
/* SPDX-FileCopyrightText: 2023 Blender Authors
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0-or-later */
|
|
|
|
/** \file
|
|
* \ingroup editors
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "DNA_view3d_enums.h"
|
|
|
|
enum class PaintMode : int8_t;
|
|
struct bContext;
|
|
struct bToolRef;
|
|
struct Depsgraph;
|
|
struct Image;
|
|
struct ImageUser;
|
|
struct ImBuf;
|
|
struct Main;
|
|
struct PaintModeSettings;
|
|
struct PaintTileMap;
|
|
struct ReportList;
|
|
struct Scene;
|
|
struct UndoStep;
|
|
struct UndoType;
|
|
struct wmKeyConfig;
|
|
struct wmOperator;
|
|
|
|
/* `paint_ops.cc` */
|
|
|
|
void ED_operatortypes_paint();
|
|
void ED_operatormacros_paint();
|
|
void ED_keymap_paint(wmKeyConfig *keyconf);
|
|
|
|
/* `paint_image.cc` */
|
|
|
|
void ED_imapaint_clear_partial_redraw();
|
|
void ED_imapaint_dirty_region(
|
|
Image *ima, ImBuf *ibuf, ImageUser *iuser, int x, int y, int w, int h, bool find_old);
|
|
void ED_imapaint_bucket_fill(bContext *C, float color[3], wmOperator *op, const int mouse[2]);
|
|
|
|
/* `paint_image_proj.cc` */
|
|
|
|
void ED_paint_data_warning(
|
|
ReportList *reports, bool has_uvs, bool has_mat, bool has_tex, bool has_stencil);
|
|
/**
|
|
* Make sure that active object has a material,
|
|
* and assign UVs and image layers if they do not exist.
|
|
*/
|
|
bool ED_paint_proj_mesh_data_check(Scene *scene,
|
|
Object *ob,
|
|
bool *r_has_uvs,
|
|
bool *r_has_mat,
|
|
bool *r_has_tex,
|
|
bool *r_has_stencil);
|
|
|
|
/* `image_undo.cc` */
|
|
|
|
/**
|
|
* The caller is responsible for running #ED_image_undo_push_end,
|
|
* failure to do so causes an invalid state for the undo system.
|
|
*/
|
|
void ED_image_undo_push_begin(const char *name, PaintMode paint_mode);
|
|
void ED_image_undo_push_begin_with_image(const char *name,
|
|
Image *image,
|
|
ImBuf *ibuf,
|
|
ImageUser *iuser);
|
|
|
|
void ED_image_undo_push_end();
|
|
/**
|
|
* Restore painting image to previous state. Used for anchored and drag-dot style brushes.
|
|
*/
|
|
void ED_image_undo_restore(UndoStep *us);
|
|
|
|
/** Export for ED_undo_sys. */
|
|
void ED_image_undosys_type(UndoType *ut);
|
|
|
|
void *ED_image_paint_tile_find(PaintTileMap *paint_tile_map,
|
|
Image *image,
|
|
ImBuf *ibuf,
|
|
ImageUser *iuser,
|
|
int x_tile,
|
|
int y_tile,
|
|
unsigned short **r_mask,
|
|
bool validate);
|
|
void *ED_image_paint_tile_push(PaintTileMap *paint_tile_map,
|
|
Image *image,
|
|
ImBuf *ibuf,
|
|
ImBuf **tmpibuf,
|
|
ImageUser *iuser,
|
|
int x_tile,
|
|
int y_tile,
|
|
unsigned short **r_mask,
|
|
bool **r_valid,
|
|
bool use_thread_lock,
|
|
bool find_prev);
|
|
void ED_image_paint_tile_lock_init();
|
|
void ED_image_paint_tile_lock_end();
|
|
|
|
PaintTileMap *ED_image_paint_tile_map_get();
|
|
|
|
#define ED_IMAGE_UNDO_TILE_BITS 6
|
|
#define ED_IMAGE_UNDO_TILE_SIZE (1 << ED_IMAGE_UNDO_TILE_BITS)
|
|
#define ED_IMAGE_UNDO_TILE_NUMBER(size) \
|
|
(((size) + ED_IMAGE_UNDO_TILE_SIZE - 1) >> ED_IMAGE_UNDO_TILE_BITS)
|
|
|
|
/* `paint_curve_undo.cc` */
|
|
|
|
void ED_paintcurve_undo_push_begin(const char *name);
|
|
void ED_paintcurve_undo_push_end(bContext *C);
|
|
|
|
/** Export for ED_undo_sys. */
|
|
void ED_paintcurve_undosys_type(UndoType *ut);
|
|
|
|
/* `paint_canvas.cc` */
|
|
|
|
/** Color type of an object can be overridden in sculpt/paint mode. */
|
|
eV3DShadingColorType ED_paint_shading_color_override(bContext *C,
|
|
const PaintModeSettings *settings,
|
|
Object *ob,
|
|
eV3DShadingColorType orig_color_type);
|
|
|
|
/**
|
|
* Does the given tool use a paint canvas.
|
|
*
|
|
* When #tref isn't given the active tool from the context is used.
|
|
*/
|
|
bool ED_paint_tool_use_canvas(bContext *C, bToolRef *tref);
|
|
|
|
/** Store the last used tool in the sculpt session. */
|
|
void ED_paint_tool_update_sticky_shading_color(bContext *C, Object *ob);
|
|
|
|
void ED_object_vpaintmode_enter_ex(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob);
|
|
void ED_object_vpaintmode_enter(bContext *C, Depsgraph *depsgraph);
|
|
void ED_object_wpaintmode_enter_ex(Main *bmain, Depsgraph *depsgraph, Scene *scene, Object *ob);
|
|
void ED_object_wpaintmode_enter(bContext *C, Depsgraph *depsgraph);
|
|
|
|
void ED_object_vpaintmode_exit_ex(Object *ob);
|
|
void ED_object_vpaintmode_exit(bContext *C);
|
|
void ED_object_wpaintmode_exit_ex(Object *ob);
|
|
void ED_object_wpaintmode_exit(bContext *C);
|
|
|
|
void ED_object_texture_paint_mode_enter_ex(Main *bmain,
|
|
Scene *scene,
|
|
Depsgraph *depsgraph,
|
|
Object *ob);
|
|
void ED_object_texture_paint_mode_enter(bContext *C);
|
|
|
|
void ED_object_texture_paint_mode_exit_ex(Main *bmain, Scene *scene, Object *ob);
|
|
void ED_object_texture_paint_mode_exit(bContext *C);
|