[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [58932] branches/soc-2013-paint/source/ blender: Fix color drag'n' drop so that it is possible to drop colors to both UI

Antony Riakiotakis kalast at gmail.com
Mon Aug 5 16:27:50 CEST 2013


Revision: 58932
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=58932
Author:   psy-fi
Date:     2013-08-05 14:27:49 +0000 (Mon, 05 Aug 2013)
Log Message:
-----------
Fix color drag'n'drop so that it is possible to drop colors to both UI
widgets and the main image spae region

Modified Paths:
--------------
    branches/soc-2013-paint/source/blender/blenkernel/BKE_paint.h
    branches/soc-2013-paint/source/blender/editors/interface/interface_ops.c
    branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_image.c
    branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_intern.h
    branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_ops.c
    branches/soc-2013-paint/source/blender/editors/space_image/space_image.c

Modified: branches/soc-2013-paint/source/blender/blenkernel/BKE_paint.h
===================================================================
--- branches/soc-2013-paint/source/blender/blenkernel/BKE_paint.h	2013-08-05 14:22:07 UTC (rev 58931)
+++ branches/soc-2013-paint/source/blender/blenkernel/BKE_paint.h	2013-08-05 14:27:49 UTC (rev 58932)
@@ -54,6 +54,7 @@
 struct Palette;
 struct PaletteColor;
 struct Main;
+struct wmOperator;
 
 enum OverlayFlags;
 
@@ -93,15 +94,16 @@
 void BKE_paint_reset_overlay_invalid(OverlayControlFlags flag);
 void BKE_paint_set_overlay_override(enum OverlayFlags flag);
 
-void BKE_paint_init(struct Paint *p, const char col[3]);
-void BKE_paint_free(struct Paint *p);
-void BKE_paint_copy(struct Paint *src, struct Paint *tar);
-
+/* palettes */
 void BKE_free_palette(struct Palette *palette);
 struct Palette *BKE_palette_add(struct Main *bmain, const char *name);
 struct PaletteColor *BKE_palette_color_add(struct Palette *palette);
 void BKE_palette_remove_color (struct Palette *palette, struct PaletteColor *colour);
 
+void BKE_paint_init(struct Paint *p, const char col[3]);
+void BKE_paint_free(struct Paint *p);
+void BKE_paint_copy(struct Paint *src, struct Paint *tar);
+
 struct Paint *BKE_paint_get_active(struct Scene *sce);
 struct Paint *BKE_paint_get_active_from_context(const struct bContext *C);
 PaintMode BKE_paintmode_get_active_from_context(const struct bContext *C);
@@ -125,9 +127,13 @@
 /* paint masks */
 float paint_grid_paint_mask(const struct GridPaintMask *gpm, unsigned level,
                             unsigned x, unsigned y);
+
+/* stroke related */
 void paint_calculate_rake_rotation(struct UnifiedPaintSettings *ups, const float mouse_pos[2]);
+
+void paint_bucket_fill(struct bContext *C, float color[3], struct wmOperator *op);
+
 /* Session data (mode-specific) */
-
 typedef struct SculptSession {
 	/* Mesh data (not copied) can come either directly from a Mesh, or from a MultiresDM */
 	struct MultiresModifierData *multires; /* Special handling for multires meshes */

Modified: branches/soc-2013-paint/source/blender/editors/interface/interface_ops.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/interface/interface_ops.c	2013-08-05 14:22:07 UTC (rev 58931)
+++ branches/soc-2013-paint/source/blender/editors/interface/interface_ops.c	2013-08-05 14:27:49 UTC (rev 58932)
@@ -50,6 +50,7 @@
 #include "BKE_global.h"
 #include "BKE_text.h" /* for UI_OT_reports_to_text */
 #include "BKE_report.h"
+#include "BKE_paint.h"
 
 #include "RNA_access.h"
 #include "RNA_define.h"
@@ -1076,9 +1077,20 @@
 {
 	/* should only return true for regions that include buttons, for now
 	 * return true always */
-	if (drag->type == WM_DRAG_COLOR && UI_but_active_drop_color(C))
-		return TRUE;
+	if (drag->type == WM_DRAG_COLOR){
+		SpaceImage *sima = CTX_wm_space_image(C);
+		ARegion *ar = CTX_wm_region(C);
 
+		if (UI_but_active_drop_color(C))
+			return TRUE;
+
+		/* should only return true for regions that include buttons, for now
+		 * return true always */
+		if (sima && (sima->mode == SI_MODE_PAINT)
+		    && sima->image && (ar && ar->regiontype == RGN_TYPE_WINDOW))
+			return TRUE;
+	}
+
 	return FALSE;
 }
 
@@ -1118,7 +1130,13 @@
 			RNA_property_update(C, &but->rnapoin, but->rnaprop);
 		}
 	}
+	else {
+		if(gamma)
+			srgb_to_linearrgb_v3_v3(color, color);
 
+		paint_bucket_fill(C, color, op);
+	}
+
 	ED_region_tag_redraw(ar);
 
 	return OPERATOR_FINISHED;

Modified: branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_image.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_image.c	2013-08-05 14:22:07 UTC (rev 58931)
+++ branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_image.c	2013-08-05 14:27:49 UTC (rev 58932)
@@ -1333,51 +1333,17 @@
 }
 
 
-static int bucket_fill_exec(bContext *C, wmOperator *op)
+void paint_bucket_fill(struct bContext *C, float color[3], wmOperator *op)
 {
-	float color[3];
-
-	/* get from rna property only if set */
-	if (RNA_struct_property_is_set(op->ptr, "color")) {
-		RNA_float_get_array(op->ptr, "color", color);
-	}
-	else {		
-		Brush *br = image_paint_brush(C);
-
-		srgb_to_linearrgb_v3_v3(color, br->rgb);
-	}
-
 	undo_paint_push_begin(UNDO_PAINT_IMAGE, op->type->name,
 	                      image_undo_restore, image_undo_free);
 
 	paint_2d_bucket_fill(C, color);
 
 	undo_paint_push_end(UNDO_PAINT_IMAGE);
-
-	RNA_float_set_array(op->ptr, "color", color);
-
-	return OPERATOR_FINISHED;
 }
 
 
-void PAINT_OT_bucket_fill(wmOperatorType *ot)
-{
-	/* identifiers */
-	ot->name = "Bucket Fill";
-	ot->idname = "PAINT_OT_bucket_fill";
-	ot->description = "Fill canvas with brush color";
-
-	/* api callbacks */
-	ot->exec = bucket_fill_exec;
-	ot->poll = image_paint_poll;
-
-	/* flags */
-	ot->flag = OPTYPE_UNDO | OPTYPE_BLOCKING;
-
-	RNA_def_float_color(ot->srna, "color", 3, NULL, 0.0, 1.0, "Color", "Color for bucket fill", 0.0, 1.0);
-}
-
-
 static int texture_paint_poll(bContext *C)
 {
 	if (texture_paint_toggle_poll(C))

Modified: branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_intern.h
===================================================================
--- branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_intern.h	2013-08-05 14:22:07 UTC (rev 58931)
+++ branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_intern.h	2013-08-05 14:27:49 UTC (rev 58932)
@@ -172,7 +172,6 @@
 void PAINT_OT_texture_paint_toggle(struct wmOperatorType *ot);
 void PAINT_OT_project_image(struct wmOperatorType *ot);
 void PAINT_OT_image_from_view(struct wmOperatorType *ot);
-void PAINT_OT_bucket_fill(struct wmOperatorType *ot);
 
 /* new texture painting */
 void PAINT_OT_image_paint(struct wmOperatorType *ot);

Modified: branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_ops.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_ops.c	2013-08-05 14:22:07 UTC (rev 58931)
+++ branches/soc-2013-paint/source/blender/editors/sculpt_paint/paint_ops.c	2013-08-05 14:27:49 UTC (rev 58932)
@@ -1030,7 +1030,6 @@
 	WM_operatortype_append(PAINT_OT_project_image);
 	WM_operatortype_append(PAINT_OT_image_from_view);
 	WM_operatortype_append(PAINT_OT_texture_colors_flip);
-	WM_operatortype_append(PAINT_OT_bucket_fill);
 
 	/* weight */
 	WM_operatortype_append(PAINT_OT_weight_paint_toggle);

Modified: branches/soc-2013-paint/source/blender/editors/space_image/space_image.c
===================================================================
--- branches/soc-2013-paint/source/blender/editors/space_image/space_image.c	2013-08-05 14:22:07 UTC (rev 58931)
+++ branches/soc-2013-paint/source/blender/editors/space_image/space_image.c	2013-08-05 14:27:49 UTC (rev 58932)
@@ -351,37 +351,12 @@
 	RNA_string_set(drop->ptr, "filepath", drag->path);
 }
 
-static int image_drop_color_poll(struct bContext *C, wmDrag *drag, const wmEvent *UNUSED(event))
-{
-	SpaceImage *sima = CTX_wm_space_image(C);
-	/* should only return true for regions that include buttons, for now
-	 * return true always */
-	if (drag->type == WM_DRAG_COLOR && sima && (sima->mode == SI_MODE_PAINT) && sima->image)
-		return TRUE;
-
-	return FALSE;
-}
-
-static void image_drop_color_copy(wmDrag *drag, wmDropBox *drop)
-{
-	uiDragColorHandle *drag_info = (uiDragColorHandle *)drag->poin;
-	if (drag_info->gamma_corrected)
-		srgb_to_linearrgb_v3_v3(drag_info->color, drag_info->color);
-
-	RNA_float_set_array(drop->ptr, "color", drag_info->color);
-}
-
-
 /* area+region dropbox definition */
 static void image_dropboxes(void)
 {
 	ListBase *lb = WM_dropboxmap_find("Image", SPACE_IMAGE, 0);
 	
 	WM_dropbox_add(lb, "IMAGE_OT_open", image_drop_poll, image_drop_copy);
-
-	lb = WM_dropboxmap_find("Image", SPACE_IMAGE, RGN_TYPE_WINDOW);
-
-	WM_dropbox_add(lb, "PAINT_OT_bucket_fill", image_drop_color_poll, image_drop_color_copy);
 }
 
 /**
@@ -627,7 +602,6 @@
 static void image_main_area_init(wmWindowManager *wm, ARegion *ar)
 {
 	wmKeyMap *keymap;
-	ListBase *lb = WM_dropboxmap_find("Image", SPACE_IMAGE, RGN_TYPE_WINDOW);
 
 	// image space manages own v2d
 	// UI_view2d_region_reinit(&ar->v2d, V2D_COMMONVIEW_STANDARD, ar->winx, ar->winy);
@@ -651,8 +625,6 @@
 	WM_event_add_keymap_handler(&ar->handlers, keymap);
 	keymap = WM_keymap_find(wm->defaultconf, "Image", SPACE_IMAGE, 0);
 	WM_event_add_keymap_handler_bb(&ar->handlers, keymap, &ar->v2d.mask, &ar->winrct);
-
-	WM_event_add_dropbox_handler(&ar->handlers, lb);
 }
 
 static void image_main_area_draw(const bContext *C, ARegion *ar)




More information about the Bf-blender-cvs mailing list