[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