Blender
V3.3
source
blender
editors
gpencil
gpencil_add_blank.c
Go to the documentation of this file.
1
/* SPDX-License-Identifier: GPL-2.0-or-later
2
* Copyright 2017 Blender Foundation. */
3
8
#include "
BLI_math.h
"
9
#include "
BLI_utildefines.h
"
10
11
#include "
DNA_gpencil_types.h
"
12
#include "
DNA_material_types.h
"
13
#include "
DNA_object_types.h
"
14
#include "
DNA_scene_types.h
"
15
16
#include "
BKE_context.h
"
17
#include "
BKE_gpencil.h
"
18
#include "
BKE_gpencil_geom.h
"
19
#include "
BKE_main.h
"
20
#include "
BKE_material.h
"
21
22
#include "
BLT_translation.h
"
23
24
#include "
DEG_depsgraph.h
"
25
26
#include "
ED_gpencil.h
"
27
28
/* Definition of the most important info from a color */
29
typedef
struct
ColorTemplate
{
30
const
char
*
name
;
31
float
line
[4];
32
float
fill
[4];
33
}
ColorTemplate
;
34
35
/* Add color an ensure duplications (matched by name) */
36
static
int
gpencil_stroke_material
(
Main
*bmain,
Object
*ob,
const
ColorTemplate
*pct)
37
{
38
int
index;
39
Material
*ma =
BKE_gpencil_object_material_ensure_by_name
(bmain, ob,
DATA_
(pct->
name
), &index);
40
41
copy_v4_v4
(ma->
gp_style
->
stroke_rgba
, pct->
line
);
42
srgb_to_linearrgb_v4
(ma->
gp_style
->
stroke_rgba
, ma->
gp_style
->
stroke_rgba
);
43
44
copy_v4_v4
(ma->
gp_style
->
fill_rgba
, pct->
fill
);
45
srgb_to_linearrgb_v4
(ma->
gp_style
->
fill_rgba
, ma->
gp_style
->
fill_rgba
);
46
47
return
index;
48
}
49
50
/* ***************************************************************** */
51
/* Stroke Geometry */
52
53
/* ***************************************************************** */
54
/* Color Data */
55
56
static
const
ColorTemplate
gp_stroke_material_black
= {
57
N_
(
"Black"
),
58
{0.0f, 0.0f, 0.0f, 1.0f},
59
{0.0f, 0.0f, 0.0f, 0.0f},
60
};
61
62
/* ***************************************************************** */
63
/* Blank API */
64
65
void
ED_gpencil_create_blank
(
bContext
*
C
,
Object
*ob,
float
UNUSED
(mat[4][4]))
66
{
67
Main
*bmain =
CTX_data_main
(
C
);
68
Scene
*
scene
=
CTX_data_scene
(
C
);
69
bGPdata
*gpd = (
bGPdata
*)ob->
data
;
70
71
/* create colors */
72
int
color_black =
gpencil_stroke_material
(bmain, ob, &
gp_stroke_material_black
);
73
74
/* set first color as active and in brushes */
75
ob->
actcol
= color_black + 1;
76
77
/* layers */
78
bGPDlayer
*layer =
BKE_gpencil_layer_addnew
(gpd,
"GP_Layer"
,
true
,
false
);
79
80
/* frames */
81
BKE_gpencil_frame_addnew
(layer,
scene
->
r
.
cfra
);
82
83
/* update depsgraph */
84
DEG_id_tag_update
(&gpd->
id
,
ID_RECALC_TRANSFORM
|
ID_RECALC_GEOMETRY
);
85
gpd->
flag
|=
GP_DATA_CACHE_IS_DIRTY
;
86
}
BKE_context.h
CTX_data_scene
struct Scene * CTX_data_scene(const bContext *C)
Definition:
context.c:1090
CTX_data_main
struct Main * CTX_data_main(const bContext *C)
Definition:
context.c:1074
BKE_gpencil.h
BKE_gpencil_frame_addnew
struct bGPDframe * BKE_gpencil_frame_addnew(struct bGPDlayer *gpl, int cframe)
Definition:
gpencil.c:514
BKE_gpencil_object_material_ensure_by_name
struct Material * BKE_gpencil_object_material_ensure_by_name(struct Main *bmain, struct Object *ob, const char *name, int *r_index)
Definition:
gpencil.c:2228
BKE_gpencil_layer_addnew
struct bGPDlayer * BKE_gpencil_layer_addnew(struct bGPdata *gpd, const char *name, bool setactive, bool add_to_header)
Definition:
gpencil.c:621
BKE_gpencil_geom.h
BKE_main.h
BKE_material.h
General operations, lookup, etc. for materials.
BLI_math.h
srgb_to_linearrgb_v4
MINLINE void srgb_to_linearrgb_v4(float linear[4], const float srgb[4])
Definition:
math_color_inline.c:77
copy_v4_v4
MINLINE void copy_v4_v4(float r[4], const float a[4])
Definition:
math_vector_inline.c:56
BLI_utildefines.h
UNUSED
#define UNUSED(x)
Definition:
BLI_utildefines.h:671
BLT_translation.h
DATA_
#define DATA_(msgid)
Definition:
BLT_translation.h:39
DEG_depsgraph.h
DEG_id_tag_update
void DEG_id_tag_update(struct ID *id, int flag)
Definition:
depsgraph_tag.cc:750
ID_RECALC_TRANSFORM
@ ID_RECALC_TRANSFORM
Definition:
DNA_ID.h:771
ID_RECALC_GEOMETRY
@ ID_RECALC_GEOMETRY
Definition:
DNA_ID.h:791
DNA_gpencil_types.h
GP_DATA_CACHE_IS_DIRTY
@ GP_DATA_CACHE_IS_DIRTY
Definition:
DNA_gpencil_types.h:799
DNA_material_types.h
DNA_object_types.h
Object is a sort of wrapper for general info.
DNA_scene_types.h
ED_gpencil.h
C
#define C
Definition:
RandGen.cpp:25
scene
Scene scene
Definition:
deg_eval_copy_on_write.cc:106
ED_gpencil_create_blank
void ED_gpencil_create_blank(bContext *C, Object *ob, float UNUSED(mat[4][4]))
Definition:
gpencil_add_blank.c:65
gp_stroke_material_black
static const ColorTemplate gp_stroke_material_black
Definition:
gpencil_add_blank.c:56
gpencil_stroke_material
static int gpencil_stroke_material(Main *bmain, Object *ob, const ColorTemplate *pct)
Definition:
gpencil_add_blank.c:36
ColorTemplate
struct ColorTemplate ColorTemplate
ColorTemplate
Definition:
gpencil_add_blank.c:29
ColorTemplate::fill
float fill[4]
Definition:
gpencil_add_blank.c:32
ColorTemplate::line
float line[4]
Definition:
gpencil_add_blank.c:31
ColorTemplate::name
const char * name
Definition:
gpencil_add_blank.c:30
Main
Definition:
BKE_main.h:121
MaterialGPencilStyle::stroke_rgba
float stroke_rgba[4]
Definition:
DNA_material_types.h:57
MaterialGPencilStyle::fill_rgba
float fill_rgba[4]
Definition:
DNA_material_types.h:59
Material
Definition:
DNA_material_types.h:164
Material::gp_style
struct MaterialGPencilStyle * gp_style
Definition:
DNA_material_types.h:230
Object
Definition:
DNA_object_types.h:242
Object::actcol
int actcol
Definition:
DNA_object_types.h:307
Object::data
void * data
Definition:
DNA_object_types.h:271
RenderData::cfra
int cfra
Definition:
DNA_scene_types.h:615
Scene
Definition:
DNA_scene_types.h:1739
Scene::r
struct RenderData r
Definition:
DNA_scene_types.h:1781
bContext
Definition:
context.c:56
bGPDlayer
Definition:
DNA_gpencil_types.h:467
bGPdata
Definition:
DNA_gpencil_types.h:670
bGPdata::flag
int flag
Definition:
DNA_gpencil_types.h:682
bGPdata::id
ID id
Definition:
DNA_gpencil_types.h:674
N_
#define N_(msgid)
Definition:
versioning_userdef.c:46
Generated on Tue Oct 22 2024 13:18:25 for Blender by
doxygen
1.9.1