[Bf-blender-cvs] [f444749064b] soc-2019-npr: LANPR: Line layer operators now moved to ED
YimingWu
noreply at git.blender.org
Sat Jul 13 09:24:25 CEST 2019
Commit: f444749064babb653332b1fff73bce5ab27bb0bc
Author: YimingWu
Date: Sat Jul 13 15:23:55 2019 +0800
Branches: soc-2019-npr
https://developer.blender.org/rBf444749064babb653332b1fff73bce5ab27bb0bc
LANPR: Line layer operators now moved to ED
===================================================================
M source/blender/draw/engines/lanpr/lanpr_ops.c
M source/blender/editors/lanpr/lanpr_ops.c
===================================================================
diff --git a/source/blender/draw/engines/lanpr/lanpr_ops.c b/source/blender/draw/engines/lanpr/lanpr_ops.c
index 5c5420dcf49..7f5479e9a93 100644
--- a/source/blender/draw/engines/lanpr/lanpr_ops.c
+++ b/source/blender/draw/engines/lanpr/lanpr_ops.c
@@ -3640,7 +3640,7 @@ LANPR_RenderBuffer *lanpr_create_render_buffer()
return rb;
}
-int lanpr_max_occlusion_in_line_layers(SceneLANPR *lanpr);
+int ED_lanpr_max_occlusion_in_line_layers(SceneLANPR *lanpr);
int lanpr_max_occlusion_in_collections(Collection *c)
{
@@ -3706,7 +3706,7 @@ int lanpr_get_max_occlusion_level(Scene *s)
SceneLANPR *lanpr = &s->lanpr;
if (!strcmp(s->r.engine, RE_engine_id_BLENDER_LANPR)) {
/* Use the line layers in scene LANPR settings */
- return lanpr_max_occlusion_in_line_layers(lanpr);
+ return ED_lanpr_max_occlusion_in_line_layers(lanpr);
}
else {
/* Other engines, use GPencil configurations */
@@ -4490,325 +4490,3 @@ void SCENE_OT_lanpr_calculate_feature_lines(struct wmOperatorType *ot)
ot->cancel = lanpr_compute_feature_lines_cancel;
ot->exec = lanpr_compute_feature_lines_exec;
}
-
-int lanpr_max_occlusion_in_line_layers(SceneLANPR *lanpr)
-{
- LANPR_LineLayer *lli;
- int max_occ = -1, max;
- for (lli = lanpr->line_layers.first; lli; lli = lli->next) {
- if (lli->use_multiple_levels) {
- max = MAX2(lli->qi_begin, lli->qi_end);
- }
- else {
- max = lli->qi_begin;
- }
- max_occ = MAX2(max, max_occ);
- }
- return max_occ;
-}
-
-LANPR_LineLayer *lanpr_new_line_layer(SceneLANPR *lanpr)
-{
- LANPR_LineLayer *ll = MEM_callocN(sizeof(LANPR_LineLayer), "Line Layer");
-
- int max_occ = lanpr_max_occlusion_in_line_layers(lanpr);
-
- ll->qi_begin = ll->qi_end = max_occ + 1;
- ll->use_same_style = 1;
- ll->thickness = 1.0f;
- copy_v3_fl(ll->color, 0.8);
- ll->color[3] = 1.0f;
- ll->enable_contour = 1;
- ll->enable_crease = 1;
- ll->enable_material_seperate = 1;
- ll->enable_edge_mark = 1;
- ll->enable_intersection = 1;
-
- lanpr->active_layer = ll;
- BLI_addtail(&lanpr->line_layers, ll);
-
- return ll;
-}
-LANPR_LineLayerComponent *lanpr_new_line_component(SceneLANPR *lanpr)
-{
- if (!lanpr->active_layer) {
- return 0;
- }
- LANPR_LineLayer *ll = lanpr->active_layer;
-
- LANPR_LineLayerComponent *llc = MEM_callocN(sizeof(LANPR_LineLayerComponent), "Line Component");
- BLI_addtail(&ll->components, llc);
-
- return llc;
-}
-
-int lanpr_add_line_layer_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
-
- lanpr_new_line_layer(lanpr);
-
- DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE);
-
- WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, NULL);
-
- return OPERATOR_FINISHED;
-}
-int lanpr_delete_line_layer_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
-
- LANPR_LineLayer *ll = lanpr->active_layer;
-
- if (!ll) {
- return OPERATOR_FINISHED;
- }
-
- if (ll->prev) {
- lanpr->active_layer = ll->prev;
- }
- else if (ll->next) {
- lanpr->active_layer = ll->next;
- }
- else {
- lanpr->active_layer = 0;
- }
-
- BLI_remlink(&scene->lanpr.line_layers, ll);
-
- /* if (ll->batch) GPU_batch_discard(ll->batch); */
-
- MEM_freeN(ll);
-
- DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE);
-
- WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, NULL);
-
- return OPERATOR_FINISHED;
-}
-int lanpr_move_line_layer_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
-
- LANPR_LineLayer *ll = lanpr->active_layer;
-
- if (!ll) {
- return OPERATOR_FINISHED;
- }
-
- int dir = RNA_enum_get(op->ptr, "direction");
-
- if (dir == 1 && ll->prev) {
- BLI_remlink(&lanpr->line_layers, ll);
- BLI_insertlinkbefore(&lanpr->line_layers, ll->prev, ll);
- }
- else if (dir == -1 && ll->next) {
- BLI_remlink(&lanpr->line_layers, ll);
- BLI_insertlinkafter(&lanpr->line_layers, ll->next, ll);
- }
-
- DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE);
-
- WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, NULL);
-
- return OPERATOR_FINISHED;
-}
-int lanpr_add_line_component_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
-
- lanpr_new_line_component(lanpr);
-
- return OPERATOR_FINISHED;
-}
-int lanpr_delete_line_component_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
- LANPR_LineLayer *ll = lanpr->active_layer;
- LANPR_LineLayerComponent *llc;
- int i = 0;
-
- if (!ll) {
- return OPERATOR_FINISHED;
- }
-
- int index = RNA_int_get(op->ptr, "index");
-
- for (llc = ll->components.first; llc; llc = llc->next) {
- if (index == i) {
- break;
- }
- i++;
- }
-
- if (llc) {
- BLI_remlink(&ll->components, llc);
- MEM_freeN(llc);
- }
-
- return OPERATOR_FINISHED;
-}
-int lanpr_rebuild_all_commands_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
-
- lanpr_rebuild_all_command(lanpr);
-
- DEG_id_tag_update(&scene->id, ID_RECALC_COPY_ON_WRITE);
-
- WM_event_add_notifier(C, NC_OBJECT | ND_DRAW, NULL);
-
- return OPERATOR_FINISHED;
-}
-int lanpr_enable_all_line_types_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
- LANPR_LineLayer *ll;
-
- if (!(ll = lanpr->active_layer)) {
- return OPERATOR_FINISHED;
- }
-
- ll->enable_contour = 1;
- ll->enable_crease = 1;
- ll->enable_edge_mark = 1;
- ll->enable_material_seperate = 1;
- ll->enable_intersection = 1;
-
- copy_v3_v3(ll->contour_color, ll->color);
- copy_v3_v3(ll->crease_color, ll->color);
- copy_v3_v3(ll->edge_mark_color, ll->color);
- copy_v3_v3(ll->material_color, ll->color);
- copy_v3_v3(ll->intersection_color, ll->color);
-
- ll->thickness_contour = 1;
- ll->thickness_crease = 1;
- ll->thickness_material = 1;
- ll->thickness_edge_mark = 1;
- ll->thickness_intersection = 1;
-
- return OPERATOR_FINISHED;
-}
-int lanpr_auto_create_line_layer_exec(struct bContext *C, struct wmOperator *op)
-{
- Scene *scene = CTX_data_scene(C);
- SceneLANPR *lanpr = &scene->lanpr;
-
- LANPR_LineLayer *ll;
-
- ll = lanpr_new_line_layer(lanpr);
- ll->thickness = 1.7;
-
- lanpr_enable_all_line_types_exec(C, op);
-
- ll = lanpr_new_line_layer(lanpr);
- ll->thickness = 0.9;
- copy_v3_fl(ll->color, 0.6);
-
- lanpr_enable_all_line_types_exec(C, op);
-
- ll = lanpr_new_line_layer(lanpr);
- ll->thickness = 0.7;
- copy_v3_fl(ll->color, 0.5);
-
- lanpr_enable_all_line_types_exec(C, op);
-
- lanpr_rebuild_all_command(lanpr);
-
- return OPERATOR_FINISHED;
-}
-
-
-
-void SCENE_OT_lanpr_add_line_layer(struct wmOperatorType *ot)
-{
-
- ot->name = "Add Line Layer";
- ot->description = "Add a new line layer";
- ot->idname = "SCENE_OT_lanpr_add_line_layer";
-
- ot->exec = lanpr_add_line_layer_exec;
-}
-void SCENE_OT_lanpr_delete_line_layer(struct wmOperatorType *ot)
-{
-
- ot->name = "Delete Line Layer";
- ot->description = "Delete selected line layer";
- ot->idname = "SCENE_OT_lanpr_delete_line_layer";
-
- ot->exec = lanpr_delete_line_layer_exec;
-}
-void SCENE_OT_lanpr_rebuild_all_commands(struct wmOperatorType *ot)
-{
-
- ot->name = "Refresh Drawing Commands";
- ot->description = "Refresh LANPR line layer drawing commands";
- ot->idname = "SCENE_OT_lanpr_rebuild_all_commands";
-
- ot->exec = lanpr_rebuild_all_commands_exec;
-}
-void SCENE_OT_lanpr_auto_create_line_layer(struct wmOperatorType *ot)
-{
-
- ot->name = "Auto Create Line Layer";
- ot->description = "Automatically create defalt line layer config";
- ot->idname = "SCENE_OT_lanpr_auto_create_line_layer";
-
- ot->exec = lanpr_auto_create_line_layer_exec;
-}
-void SCENE_OT_lanpr_move_line_layer(struct wmOperatorType *ot)
-{
- static const EnumPropertyItem line_layer_move[] = {
- {1, "UP", 0, "Up", ""}, {-1, "DOWN", 0, "Down", ""}, {0, NULL, 0, NULL, NULL}};
-
- ot->name = "Move Line Layer";
- ot->description = "Move LANPR line layer up and down";
- ot->idname = "SCENE_OT_lanpr_move_line_layer";
-
- /* this need property to assign up/down direction */
-
- ot->exec = lanpr_move_line_layer_exec;
-
- RNA_def_enum(ot->srna,
- "direction",
- line_layer_move,
- 0,
- "Direction",
- "Direction to move the active line layer towards");
-}
-void SCENE_OT_lanpr_enable_all_line_types(struct wmOperatorType *ot)
-{
- ot->name = "Enable All Line Types";
- ot->description = "Enable All Line Types In This Line Layer.";
- ot->idname = "SCENE_OT_lanpr_enable_all_line_types";
-
- ot->exec = lanpr_enable_all_line_types_exec;
-}
-
-void SCENE_OT_lanpr_add_line_component(struct wmOperatorType *ot)
-{
-
- ot->name = "Add Line Component";
- ot->description = "Add a new line Component";
- ot->idname = "SCENE_OT_lanpr_add_line_component";
-
- ot->exec = lanpr_add_line_component_exec;
-}
-void SCENE_OT_lanpr_delete_line_component(struct wmOperatorType *ot)
-{
-
- ot->name = "Delete Line Component";
- ot->description = "Delete selected line component";
- ot->idname = "SCENE_OT_lanpr_delete_line_component";
-
- ot->exec = lanpr_delete_line_component_exec;
-
- RNA_def_int(ot->srna, "index", 0, 0, 10000, "index", "index of this line component", 0, 10000);
-}
diff --git a/source/blender/editors/lanpr/lanpr_ops.c b/source/blender/editors/lanpr/lanpr_ops.c
index f08e0bf779c..ba4832c40f4 100644
--- a/source/blender/editors/lanpr/lanpr_ops.c
+++ b/source/blender/editors/lanpr/lanpr_ops.c
@@ -48,6 +48,11 @@
#include "BKE_context.h"
#include "MEM_guardedalloc.h"
+#include "RNA_access.h"
+#include "RNA_define.h"
+
+#include "BLI_math.h"
+
#include "bmesh.h"
#include "bmesh_class.h"
#include "bmesh_tools.h"
@@ -87,6 +92,325 @@ void ED_lanpr_free_everything(struct Scene *s);
+/* Layer operations */
+
+int ED_lanpr_max_occlusion_in_line_layers(SceneLANPR *lanpr)
+{
+ LANPR_LineLayer *lli;
+ int max_occ = -1, max;
+ for (lli =
@@ Diff output truncated at 10240 characters. @@
More information about the Bf-blender-cvs
mailing list