Blender V5.0
interface_region_color_picker.cc File Reference
#include <cstdarg>
#include <cstdlib>
#include <cstring>
#include "MEM_guardedalloc.h"
#include "DNA_userdef_types.h"
#include "BLI_listbase.h"
#include "BLI_string_utf8.h"
#include "BLI_utildefines.h"
#include "BKE_context.hh"
#include "UI_interface_c.hh"
#include "WM_api.hh"
#include "WM_types.hh"
#include "RNA_access.hh"
#include "BLT_translation.hh"
#include "IMB_colormanagement.hh"
#include "interface_intern.hh"

Go to the source code of this file.

Enumerations

enum  ePickerType { PICKER_TYPE_RGB = 0 , PICKER_TYPE_HSV = 1 }
enum  ePickerSpace { PICKER_SPACE_LINEAR = 0 , PICKER_SPACE_PERCEPTUAL = 1 }

Functions

Color Conversion
static void ui_color_picker_rgb_round (float rgb[3])
void ui_color_picker_rgb_to_hsv_compat (const float rgb[3], float r_cp[3])
void ui_color_picker_rgb_to_hsv (const float rgb[3], float r_cp[3])
void ui_color_picker_hsv_to_rgb (const float r_cp[3], float rgb[3])
bool ui_but_is_color_gamma (uiBut *but)
bool ui_but_color_has_alpha (uiBut *but)
static void ui_scene_linear_to_perceptual_space (const bool is_gamma, float rgb[3])
static void ui_perceptual_to_scene_linear_space (const bool is_gamma, float rgb[3])
void ui_scene_linear_to_perceptual_space (uiBut *but, float rgb[3])
void ui_perceptual_to_scene_linear_space (uiBut *but, float rgb[3])

Variables

static char g_color_picker_type = PICKER_TYPE_HSV
static char g_color_picker_space = PICKER_SPACE_PERCEPTUAL

Color Picker

#define PICKER_TOTAL_W   (180.0f * UI_SCALE_FAC)
#define PICKER_BAR   ((8.0f * UI_SCALE_FAC) + (6 * U.pixelsize))
#define PICKER_SPACE   (8.0f * UI_SCALE_FAC)
#define PICKER_W   (PICKER_TOTAL_W - PICKER_BAR - PICKER_SPACE)
#define PICKER_H   PICKER_W
static void ui_color_picker_update_from_rgb_linear (ColorPicker *cpicker, const bool is_gamma, const bool is_editing_sliders, const float rgb_scene_linear[3])
void ui_but_hsv_set (uiBut *but)
static void ui_update_color_picker_buts_rgba (uiBlock *block, ColorPicker *cpicker, const bool is_editing_sliders, const float rgba_scene_linear[4])
static void ui_colorpicker_rgba_update_cb (bContext *, void *picker_bt1, void *prop_bt1)
static void ui_colorpicker_hsv_perceptual_slider_update_cb (bContext *, void *bt1, void *bt2)
static void ui_colorpicker_hsv_linear_slider_update_cb (bContext *, void *bt1, void *bt2)
static void ui_colorpicker_rgb_perceptual_slider_update_cb (bContext *, void *bt1, void *bt2)
static void ui_colorpicker_hex_rna_cb (bContext *, void *bt1, void *bt2)
static void ui_popup_close_cb (bContext *, void *bt1, void *)
static void ui_colorpicker_hide_reveal (uiBlock *block)
static void ui_colorpicker_update_type_space_cb (bContext *, void *picker_bt1, void *prop_bt1)
static void ui_colorpicker_circle (uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, ColorPicker *cpicker)
static void ui_colorpicker_square (uiBlock *block, PointerRNA *ptr, PropertyRNA *prop, eButGradientType type, ColorPicker *cpicker)
static void ui_block_colorpicker (const bContext *, uiBlock *block, uiBut *from_but, float rgba_scene_linear[4], bool show_picker)
static int ui_colorpicker_wheel_cb (const bContext *, uiBlock *block, const wmEvent *event)
uiBlockui_block_func_COLOR (bContext *C, uiPopupBlockHandle *handle, void *arg_but)
ColorPickerui_block_colorpicker_create (uiBlock *block)

Detailed Description

Color Picker Region & Color Utils

Definition in file interface_region_color_picker.cc.

Macro Definition Documentation

◆ PICKER_BAR

#define PICKER_BAR   ((8.0f * UI_SCALE_FAC) + (6 * U.pixelsize))

◆ PICKER_H

#define PICKER_H   PICKER_W

◆ PICKER_SPACE

#define PICKER_SPACE   (8.0f * UI_SCALE_FAC)

◆ PICKER_TOTAL_W

#define PICKER_TOTAL_W   (180.0f * UI_SCALE_FAC)

◆ PICKER_W

#define PICKER_W   (PICKER_TOTAL_W - PICKER_BAR - PICKER_SPACE)

Definition at line 511 of file interface_region_color_picker.cc.

Referenced by ui_colorpicker_circle().

Enumeration Type Documentation

◆ ePickerSpace

Enumerator
PICKER_SPACE_LINEAR 
PICKER_SPACE_PERCEPTUAL 

Definition at line 42 of file interface_region_color_picker.cc.

◆ ePickerType

Enumerator
PICKER_TYPE_RGB 
PICKER_TYPE_HSV 

Definition at line 37 of file interface_region_color_picker.cc.

Function Documentation

◆ ui_block_colorpicker()

void ui_block_colorpicker ( const bContext * ,
uiBlock * block,
uiBut * from_but,
float rgba_scene_linear[4],
bool show_picker )
static

Definition at line 630 of file interface_region_color_picker.cc.

References BLT_I18NCONTEXT_COLOR, But, COLOR_ROLE_COLOR_PICKING, COLOR_ROLE_SCENE_LINEAR, copy_v4_v4(), CTX_TIP_, uiBut::custom_data, FLT_MAX, g_color_picker_space, g_color_picker_type, uiBut::hardmax, ColorPicker::has_alpha, ColorPicker::hexcol, ColorPicker::hsv_linear_slider, ColorPicker::hsv_perceptual_slider, IFACE_, IMB_colormanagement_role_colorspace_name_get(), IMB_colormanagement_scene_linear_to_srgb_v3(), blender::wm::InvokeDefault, uiBlock::is_color_gamma_picker, Label, NumSlider, PICKER_TOTAL_W, PICKER_TYPE_HSV, PICKER_TYPE_RGB, ptr, ColorPicker::rgb_perceptual_slider, rgba_float_to_uchar(), RNA_property_float_get_array_at_most(), RNA_property_float_range(), RNA_property_float_ui_range(), uiBut::rnapoin, uiBut::rnaprop, Row, SNPRINTF_UTF8, uiBut::softmax, uiBut::softmin, step, str, Text, TIP_, U, UI_block_align_begin(), UI_block_align_end(), ui_block_colorpicker_create(), ui_but_color_has_alpha(), UI_but_drawflag_disable(), UI_but_flag_disable(), UI_but_func_set(), UI_but_func_tooltip_custom_set(), UI_BUT_ICON_LEFT, ui_but_is_color_gamma(), UI_but_number_slider_precision_set(), UI_but_number_slider_step_size_set(), UI_BUT_TEXT_LEFT, UI_BUT_UNDO, ui_color_picker_rgb_round(), ui_color_picker_update_from_rgb_linear(), ui_colorpicker_circle(), ui_colorpicker_hex_rna_cb(), ui_colorpicker_hide_reveal(), ui_colorpicker_hsv_linear_slider_update_cb(), ui_colorpicker_hsv_perceptual_slider_update_cb(), ui_colorpicker_rgb_perceptual_slider_update_cb(), ui_colorpicker_rgba_update_cb(), ui_colorpicker_square(), ui_colorpicker_update_type_space_cb(), UI_GRAD_HS, UI_GRAD_HV, UI_GRAD_SV, ui_popup_close_cb(), UI_TIP_LC_ACTIVE, UI_TIP_LC_NORMAL, UI_TIP_STYLE_HEADER, UI_TIP_STYLE_NORMAL, UI_tooltip_text_field_add(), UI_UNIT_X, UI_UNIT_Y, uiDefBut(), uiDefButC(), uiDefButF(), uiDefButR_prop(), uiDefIconButO(), UNPACK3_EX, UNPACK4_EX, USER_CP_CIRCLE_HSL, USER_CP_CIRCLE_HSV, USER_CP_SQUARE_HS, USER_CP_SQUARE_HV, USER_CP_SQUARE_SV, and y.

Referenced by ui_block_func_COLOR().

◆ ui_block_colorpicker_create()

ColorPicker * ui_block_colorpicker_create ( uiBlock * block)

◆ ui_block_func_COLOR()

◆ ui_but_color_has_alpha()

bool ui_but_color_has_alpha ( uiBut * but)

Returns true if the button represents a color with an Alpha component.

Definition at line 118 of file interface_region_color_picker.cc.

References ELEM, PROP_COLOR, PROP_COLOR_GAMMA, RNA_property_array_length(), RNA_property_subtype(), uiBut::rnapoin, and uiBut::rnaprop.

Referenced by ui_block_colorpicker(), and ui_but_drag_init().

◆ ui_but_hsv_set()

void ui_but_hsv_set ( uiBut * but)

For picker, while editing HSV.

Definition at line 227 of file interface_region_color_picker.cc.

References uiBut::custom_data, ColorPicker::hsv_perceptual, ui_but_v3_set(), and ui_color_picker_hsv_to_rgb().

Referenced by ui_do_but_HSVCIRCLE().

◆ ui_but_is_color_gamma()

◆ ui_color_picker_hsv_to_rgb()

◆ ui_color_picker_rgb_round()

◆ ui_color_picker_rgb_to_hsv()

void ui_color_picker_rgb_to_hsv ( const float rgb[3],
float r_cp[3] )

◆ ui_color_picker_rgb_to_hsv_compat()

◆ ui_color_picker_update_from_rgb_linear()

◆ ui_colorpicker_circle()

◆ ui_colorpicker_hex_rna_cb()

◆ ui_colorpicker_hide_reveal()

◆ ui_colorpicker_hsv_linear_slider_update_cb()

◆ ui_colorpicker_hsv_perceptual_slider_update_cb()

◆ ui_colorpicker_rgb_perceptual_slider_update_cb()

◆ ui_colorpicker_rgba_update_cb()

◆ ui_colorpicker_square()

◆ ui_colorpicker_update_type_space_cb()

void ui_colorpicker_update_type_space_cb ( bContext * ,
void * picker_bt1,
void * prop_bt1 )
static

◆ ui_colorpicker_wheel_cb()

◆ ui_perceptual_to_scene_linear_space() [1/2]

◆ ui_perceptual_to_scene_linear_space() [2/2]

void ui_perceptual_to_scene_linear_space ( uiBut * but,
float rgb[3] )

◆ ui_popup_close_cb()

◆ ui_scene_linear_to_perceptual_space() [1/2]

void ui_scene_linear_to_perceptual_space ( const bool is_gamma,
float rgb[3] )
static

◆ ui_scene_linear_to_perceptual_space() [2/2]

◆ ui_update_color_picker_buts_rgba()

Variable Documentation

◆ g_color_picker_space

◆ g_color_picker_type