Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJacques Lucke <jacques@blender.org>2020-11-06 15:16:17 +0300
committerJacques Lucke <jacques@blender.org>2020-11-06 15:16:17 +0300
commit9ad2965921f064250830a8647de3dce68bcb2e4d (patch)
treedcfec730e0e71fc72e1852162a70aecee2145007 /source/blender
parente810a16d75d346646720814740f8e2a241f4bd8b (diff)
Refactor: move Paint .blend I/O to blenkernel
Ref T76372.
Diffstat (limited to 'source/blender')
-rw-r--r--source/blender/blenkernel/BKE_paint.h8
-rw-r--r--source/blender/blenkernel/intern/paint.c34
-rw-r--r--source/blender/blenloader/intern/readfile.c30
-rw-r--r--source/blender/blenloader/intern/writefile.c6
4 files changed, 46 insertions, 32 deletions
diff --git a/source/blender/blenkernel/BKE_paint.h b/source/blender/blenkernel/BKE_paint.h
index bb1d1781e31..59291b1c7cb 100644
--- a/source/blender/blenkernel/BKE_paint.h
+++ b/source/blender/blenkernel/BKE_paint.h
@@ -66,6 +66,8 @@ struct ViewLayer;
struct bContext;
struct bToolRef;
struct tPaletteColorHSV;
+struct BlendWriter;
+struct BlendDataReader;
enum eOverlayFlags;
@@ -217,6 +219,12 @@ void BKE_paint_toolslots_brush_update(struct Paint *paint);
void BKE_paint_toolslots_brush_validate(struct Main *bmain, struct Paint *paint);
struct Brush *BKE_paint_toolslots_brush_get(struct Paint *paint, int slot_index);
+/* .blend I/O */
+void BKE_paint_blend_write(struct BlendWriter *writer, struct Paint *paint);
+void BKE_paint_blend_read_data(struct BlendDataReader *reader,
+ const struct Scene *scene,
+ struct Paint *paint);
+
#define SCULPT_FACE_SET_NONE 0
/* Used for both vertex color and weight paint */
diff --git a/source/blender/blenkernel/intern/paint.c b/source/blender/blenkernel/intern/paint.c
index f2af5520d16..3e8bdbf0481 100644
--- a/source/blender/blenkernel/intern/paint.c
+++ b/source/blender/blenkernel/intern/paint.c
@@ -1176,6 +1176,40 @@ void BKE_paint_stroke_get_average(Scene *scene, Object *ob, float stroke[3])
}
}
+void BKE_paint_blend_write(BlendWriter *writer, Paint *p)
+{
+ if (p->cavity_curve) {
+ BKE_curvemapping_blend_write(writer, p->cavity_curve);
+ }
+ BLO_write_struct_array(writer, PaintToolSlot, p->tool_slots_len, p->tool_slots);
+}
+
+void BKE_paint_blend_read_data(BlendDataReader *reader, const Scene *scene, Paint *p)
+{
+ if (p->num_input_samples < 1) {
+ p->num_input_samples = 1;
+ }
+
+ BLO_read_data_address(reader, &p->cavity_curve);
+ if (p->cavity_curve) {
+ BKE_curvemapping_blend_read(reader, p->cavity_curve);
+ }
+ else {
+ BKE_paint_cavity_curve_preset(p, CURVE_PRESET_LINE);
+ }
+
+ BLO_read_data_address(reader, &p->tool_slots);
+
+ /* Workaround for invalid data written in older versions. */
+ const size_t expected_size = sizeof(PaintToolSlot) * p->tool_slots_len;
+ if (p->tool_slots && MEM_allocN_len(p->tool_slots) < expected_size) {
+ MEM_freeN(p->tool_slots);
+ p->tool_slots = MEM_callocN(expected_size, "PaintToolSlot");
+ }
+
+ BKE_paint_runtime_init(scene->toolsettings, p);
+}
+
/* returns non-zero if any of the face's vertices
* are hidden, zero otherwise */
bool paint_is_face_hidden(const MLoopTri *lt, const MVert *mvert, const MLoop *mloop)
diff --git a/source/blender/blenloader/intern/readfile.c b/source/blender/blenloader/intern/readfile.c
index 8c457670256..f7ae7e1e2a2 100644
--- a/source/blender/blenloader/intern/readfile.c
+++ b/source/blender/blenloader/intern/readfile.c
@@ -4181,39 +4181,13 @@ static void link_recurs_seq(BlendDataReader *reader, ListBase *lb)
}
}
-static void direct_link_paint(BlendDataReader *reader, const Scene *scene, Paint *p)
-{
- if (p->num_input_samples < 1) {
- p->num_input_samples = 1;
- }
-
- BLO_read_data_address(reader, &p->cavity_curve);
- if (p->cavity_curve) {
- BKE_curvemapping_blend_read(reader, p->cavity_curve);
- }
- else {
- BKE_paint_cavity_curve_preset(p, CURVE_PRESET_LINE);
- }
-
- BLO_read_data_address(reader, &p->tool_slots);
-
- /* Workaround for invalid data written in older versions. */
- const size_t expected_size = sizeof(PaintToolSlot) * p->tool_slots_len;
- if (p->tool_slots && MEM_allocN_len(p->tool_slots) < expected_size) {
- MEM_freeN(p->tool_slots);
- p->tool_slots = MEM_callocN(expected_size, "PaintToolSlot");
- }
-
- BKE_paint_runtime_init(scene->toolsettings, p);
-}
-
static void direct_link_paint_helper(BlendDataReader *reader, const Scene *scene, Paint **paint)
{
/* TODO. is this needed */
BLO_read_data_address(reader, paint);
if (*paint) {
- direct_link_paint(reader, scene, *paint);
+ BKE_paint_blend_read_data(reader, scene, *paint);
}
}
@@ -4280,7 +4254,7 @@ static void direct_link_scene(BlendDataReader *reader, Scene *sce)
direct_link_paint_helper(reader, sce, (Paint **)&sce->toolsettings->gp_sculptpaint);
direct_link_paint_helper(reader, sce, (Paint **)&sce->toolsettings->gp_weightpaint);
- direct_link_paint(reader, sce, &sce->toolsettings->imapaint.paint);
+ BKE_paint_blend_read_data(reader, sce, &sce->toolsettings->imapaint.paint);
sce->toolsettings->particle.paintcursor = NULL;
sce->toolsettings->particle.scene = NULL;
diff --git a/source/blender/blenloader/intern/writefile.c b/source/blender/blenloader/intern/writefile.c
index 9bf4c6526f4..5aa5679650a 100644
--- a/source/blender/blenloader/intern/writefile.c
+++ b/source/blender/blenloader/intern/writefile.c
@@ -153,6 +153,7 @@
#include "BKE_node.h"
#include "BKE_object.h"
#include "BKE_packedFile.h"
+#include "BKE_paint.h"
#include "BKE_pointcache.h"
#include "BKE_report.h"
#include "BKE_screen.h"
@@ -1323,10 +1324,7 @@ static void write_view_settings(BlendWriter *writer, ColorManagedViewSettings *v
static void write_paint(BlendWriter *writer, Paint *p)
{
- if (p->cavity_curve) {
- BKE_curvemapping_blend_write(writer, p->cavity_curve);
- }
- BLO_write_struct_array(writer, PaintToolSlot, p->tool_slots_len, p->tool_slots);
+ BKE_paint_blend_write(writer, p);
}
static void write_layer_collections(BlendWriter *writer, ListBase *lb)