[Bf-blender-cvs] [2a87bd89951] master: Cleanup: split interface_regions.c

Campbell Barton noreply at git.blender.org
Fri Nov 3 10:51:27 CET 2017


Commit: 2a87bd89951204a5dd15b60ba86cbba72fc3b088
Author: Campbell Barton
Date:   Fri Nov 3 20:26:35 2017 +1100
Branches: master
https://developer.blender.org/rB2a87bd89951204a5dd15b60ba86cbba72fc3b088

Cleanup: split interface_regions.c

Each region type is quite separate and file was getting too big.

===================================================================

M	source/blender/editors/include/UI_interface.h
M	source/blender/editors/interface/CMakeLists.txt
M	source/blender/editors/interface/interface_intern.h
A	source/blender/editors/interface/interface_region_color_picker.c
A	source/blender/editors/interface/interface_region_menu_pie.c
A	source/blender/editors/interface/interface_region_menu_popup.c
A	source/blender/editors/interface/interface_region_popup.c
A	source/blender/editors/interface/interface_region_search.c
A	source/blender/editors/interface/interface_region_tooltip.c
M	source/blender/editors/interface/interface_regions.c
A	source/blender/editors/interface/interface_regions_intern.h

===================================================================

diff --git a/source/blender/editors/include/UI_interface.h b/source/blender/editors/include/UI_interface.h
index b0842c3acb8..0e936fdd313 100644
--- a/source/blender/editors/include/UI_interface.h
+++ b/source/blender/editors/include/UI_interface.h
@@ -379,6 +379,7 @@ typedef void (*uiMenuHandleFunc)(struct bContext *C, void *arg, int event);
  */
 typedef bool (*uiMenuStepFunc)(struct bContext *C, int direction, void *arg1);
 
+/* interface_region_menu_popup.c */
 /* Popup Menus
  *
  * Functions used to create popup menus. For more extended menus the
@@ -402,6 +403,7 @@ int UI_popup_menu_invoke(struct bContext *C, const char *idname, struct ReportLi
 void UI_popup_menu_retval_set(const uiBlock *block, const int retval, const bool enable);
 void UI_popup_menu_but_set(uiPopupMenu *pup, struct ARegion *butregion, uiBut *but);
 
+/* interface_region_menu_pie.c */
 /* Pie menus */
 typedef struct uiPieMenu uiPieMenu;
 
@@ -418,11 +420,13 @@ struct uiPieMenu *UI_pie_menu_begin(
         const struct wmEvent *event) ATTR_NONNULL();
 void UI_pie_menu_end(struct bContext *C, uiPieMenu *pie);
 struct uiLayout *UI_pie_menu_layout(struct uiPieMenu *pie);
+
+/* interface_region_menu_popup.c */
+
 /* Popup Blocks
  *
  * Functions used to create popup blocks. These are like popup menus
  * but allow using all button types and creating an own layout. */
-
 typedef uiBlock * (*uiBlockCreateFunc)(struct bContext *C, struct ARegion *ar, void *arg1);
 typedef void (*uiBlockCancelFunc)(struct bContext *C, void *arg1);
 
diff --git a/source/blender/editors/interface/CMakeLists.txt b/source/blender/editors/interface/CMakeLists.txt
index c57f8d5c7a8..7392db0c91b 100644
--- a/source/blender/editors/interface/CMakeLists.txt
+++ b/source/blender/editors/interface/CMakeLists.txt
@@ -50,6 +50,12 @@ set(SRC
 	interface_ops.c
 	interface_panel.c
 	interface_regions.c
+	interface_region_color_picker.c
+	interface_region_menu_pie.c
+	interface_region_menu_popup.c
+	interface_region_popup.c
+	interface_region_search.c
+	interface_region_tooltip.c
 	interface_style.c
 	interface_templates.c
 	interface_utils.c
diff --git a/source/blender/editors/interface/interface_intern.h b/source/blender/editors/interface/interface_intern.h
index 537ecf8c65b..638ab01f8ba 100644
--- a/source/blender/editors/interface/interface_intern.h
+++ b/source/blender/editors/interface/interface_intern.h
@@ -583,25 +583,24 @@ struct uiPopupBlockHandle {
 /* #endif */
 };
 
-uiBlock *ui_block_func_COLOR(struct bContext *C, uiPopupBlockHandle *handle, void *arg_but);
+/* -------------------------------------------------------------------- */
+/* interface_region_*.c */
 
+/* interface_region_tooltip.c */
 struct ARegion *ui_tooltip_create(struct bContext *C, struct ARegion *butregion, uiBut *but);
 void ui_tooltip_free(struct bContext *C, struct ARegion *ar);
 
-uiBut *ui_popup_menu_memory_get(struct uiBlock *block);
-void   ui_popup_menu_memory_set(uiBlock *block, struct uiBut *but);
-
-void   ui_popup_translate(struct bContext *C, struct ARegion *ar, const int mdiff[2]);
-
-ColorPicker *ui_block_colorpicker_create(struct uiBlock *block);
-void ui_popup_block_scrolltest(struct uiBlock *block);
-
+/* interface_region_color_picker.c */
 void ui_rgb_to_color_picker_compat_v(const float rgb[3], float r_cp[3]);
 void ui_rgb_to_color_picker_v(const float rgb[3], float r_cp[3]);
 void ui_color_picker_to_rgb_v(const float r_cp[3], float rgb[3]);
 void ui_color_picker_to_rgb(float r_cp0, float r_cp1, float r_cp2, float *r, float *g, float *b);
 
-/* searchbox for string button */
+uiBlock *ui_block_func_COLOR(struct bContext *C, uiPopupBlockHandle *handle, void *arg_but);
+ColorPicker *ui_block_colorpicker_create(struct uiBlock *block);
+
+/* interface_region_search.c */
+/* Searchbox for string button */
 ARegion *ui_searchbox_create_generic(struct bContext *C, struct ARegion *butregion, uiBut *but);
 ARegion *ui_searchbox_create_operator(struct bContext *C, struct ARegion *butregion, uiBut *but);
 bool ui_searchbox_inside(struct ARegion *ar, int x, int y);
@@ -613,6 +612,12 @@ bool ui_searchbox_apply(uiBut *but, struct ARegion *ar);
 void ui_searchbox_free(struct bContext *C, struct ARegion *ar);
 void ui_but_search_refresh(uiBut *but);
 
+/* interface_region_menu_popup.c */
+int    ui_but_menu_step(uiBut *but, int step);
+bool   ui_but_menu_step_poll(const uiBut *but);
+uiBut *ui_popup_menu_memory_get(struct uiBlock *block);
+void   ui_popup_menu_memory_set(uiBlock *block, struct uiBut *but);
+
 uiBlock *ui_popup_block_refresh(
         struct bContext *C, uiPopupBlockHandle *handle,
         ARegion *butregion, uiBut *but);
@@ -625,14 +630,17 @@ uiPopupBlockHandle *ui_popup_menu_create(
         struct bContext *C, struct ARegion *butregion, uiBut *but,
         uiMenuCreateFunc create_func, void *arg);
 
+/* interface_region_menu_pie.c */
 void ui_pie_menu_level_create(
         uiBlock *block, struct wmOperatorType *ot, const char *propname, IDProperty *properties,
         const EnumPropertyItem *items, int totitem, int context, int flag);
 
+/* interface_region_popup.c */
+void ui_popup_translate(struct bContext *C, struct ARegion *ar, const int mdiff[2]);
 void ui_popup_block_free(struct bContext *C, uiPopupBlockHandle *handle);
+void ui_popup_block_scrolltest(struct uiBlock *block);
 
-int  ui_but_menu_step(uiBut *but, int step);
-bool ui_but_menu_step_poll(const uiBut *but);
+/* end interface_region_*.c */
 
 
 /* interface_panel.c */
diff --git a/source/blender/editors/interface/interface_region_color_picker.c b/source/blender/editors/interface/interface_region_color_picker.c
new file mode 100644
index 00000000000..4309e913d9e
--- /dev/null
+++ b/source/blender/editors/interface/interface_region_color_picker.c
@@ -0,0 +1,650 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2008 Blender Foundation.
+ * All rights reserved.
+ *
+ * Contributor(s): Blender Foundation
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+/** \file blender/editors/interface/interface_region_color_picker.c
+ *  \ingroup edinterface
+ *
+ * Color Picker Region & Color Utils
+ */
+
+#include <stdarg.h>
+#include <stdlib.h>
+#include <string.h>
+#include <assert.h>
+
+#include "MEM_guardedalloc.h"
+
+#include "DNA_userdef_types.h"
+
+#include "BLI_utildefines.h"
+#include "BLI_math.h"
+#include "BLI_listbase.h"
+#include "BLI_string.h"
+
+#include "BKE_context.h"
+
+#include "WM_types.h"
+
+#include "RNA_access.h"
+
+#include "UI_interface.h"
+
+#include "BLT_translation.h"
+
+#include "ED_screen.h"
+
+#include "IMB_colormanagement.h"
+
+#include "interface_intern.h"
+
+/* -------------------------------------------------------------------- */
+/** \name Color Conversion
+ * \{ */
+
+void ui_rgb_to_color_picker_compat_v(const float rgb[3], float r_cp[3])
+{
+	switch (U.color_picker_type) {
+		case USER_CP_CIRCLE_HSL:
+			rgb_to_hsl_compat_v(rgb, r_cp);
+			break;
+		default:
+			rgb_to_hsv_compat_v(rgb, r_cp);
+			break;
+	}
+}
+
+void ui_rgb_to_color_picker_v(const float rgb[3], float r_cp[3])
+{
+	switch (U.color_picker_type) {
+		case USER_CP_CIRCLE_HSL:
+			rgb_to_hsl_v(rgb, r_cp);
+			break;
+		default:
+			rgb_to_hsv_v(rgb, r_cp);
+			break;
+	}
+}
+
+void ui_color_picker_to_rgb_v(const float r_cp[3], float rgb[3])
+{
+	switch (U.color_picker_type) {
+		case USER_CP_CIRCLE_HSL:
+			hsl_to_rgb_v(r_cp, rgb);
+			break;
+		default:
+			hsv_to_rgb_v(r_cp, rgb);
+			break;
+	}
+}
+
+void ui_color_picker_to_rgb(float r_cp0, float r_cp1, float r_cp2, float *r, float *g, float *b)
+{
+	switch (U.color_picker_type) {
+		case USER_CP_CIRCLE_HSL:
+			hsl_to_rgb(r_cp0, r_cp1, r_cp2, r, g, b);
+			break;
+		default:
+			hsv_to_rgb(r_cp0, r_cp1, r_cp2, r, g, b);
+			break;
+	}
+}
+
+/** \} */
+
+/* -------------------------------------------------------------------- */
+/** \name Color Picker
+ * \{ */
+
+/* for picker, while editing hsv */
+void ui_but_hsv_set(uiBut *but)
+{
+	float col[3];
+	ColorPicker *cpicker = but->custom_data;
+	float *hsv = cpicker->color_data;
+
+	ui_color_picker_to_rgb_v(hsv, col);
+
+	ui_but_v3_set(but, col);
+}
+
+/* Updates all buttons who share the same color picker as the one passed
+ * also used by small picker, be careful with name checks below... */
+static void ui_update_color_picker_buts_rgb(
+        uiBlock *block, ColorPicker *cpicker, const float rgb[3], bool is_display_space)
+{
+	uiBut *bt;
+	float *hsv = cpicker->color_data;
+	struct ColorManagedDisplay *display = NULL;
+	/* this is to keep the H and S value when V is equal to zero
+	 * and we are working in HSV mode, of course!
+	 */
+	if (is_display_space) {
+		ui_rgb_to_color_picker_compat_v(rgb, hsv);
+	}
+	else {
+		/* we need to convert to display space to use hsv, because hsv is stored in display space */
+		float rgb_display[3];
+
+		copy_v3_v3(rgb_display, rgb);
+		ui_block_cm_to_display_space_v3(block, rgb_display);
+		ui_rgb_to_color_picker_compat_v(rgb_display, hsv);
+	}
+
+	if (block->color_profile)
+		display = ui_block_cm_display_get(block);
+
+	/* this updates button strings, is hackish... but button pointers are on stack of caller function */
+	for (bt = block->buttons.first; bt; bt = bt->next) {
+		if (bt->custom_data != cpicker)
+			continue;
+
+		if (bt->rnaprop) {
+			ui_but_v3_set(bt, rgb);
+
+			/* original button that created the color picker already does undo
+			 * push, so disable it on RNA buttons in the color picker block */
+			UI_but_flag_disable(bt, UI

@@ Diff output truncated at 10240 characters. @@



More information about the Bf-blender-cvs mailing list