mirror of
https://github.com/Drezil/imgui.git
synced 2024-11-29 14:56:36 +00:00
Drag and drop: Added COL3F payload for color without alpha overwrite. Exposed standard color payload types in imgui.h (#143)
This commit is contained in:
parent
16d9fa30b2
commit
7bf85db6c4
13
imgui.cpp
13
imgui.cpp
@ -9677,7 +9677,10 @@ bool ImGui::ColorButton(const char* desc_id, const ImVec4& col, ImGuiColorEditFl
|
|||||||
|
|
||||||
if (g.ActiveId == id && BeginDragDropSource()) // NB: The ActiveId test is merely an optional micro-optimization
|
if (g.ActiveId == id && BeginDragDropSource()) // NB: The ActiveId test is merely an optional micro-optimization
|
||||||
{
|
{
|
||||||
SetDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_4F, &col, sizeof(col), ImGuiCond_Once);
|
if (flags & ImGuiColorEditFlags_NoAlpha)
|
||||||
|
SetDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_3F, &col, sizeof(float) * 3, ImGuiCond_Once);
|
||||||
|
else
|
||||||
|
SetDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_4F, &col, sizeof(float) * 4, ImGuiCond_Once);
|
||||||
ColorButton(desc_id, col, flags);
|
ColorButton(desc_id, col, flags);
|
||||||
SameLine();
|
SameLine();
|
||||||
TextUnformatted("Color");
|
TextUnformatted("Color");
|
||||||
@ -9963,10 +9966,14 @@ bool ImGui::ColorEdit4(const char* label, float col[4], ImGuiColorEditFlags flag
|
|||||||
|
|
||||||
if (window->DC.LastItemRectHoveredRect && BeginDragDropTarget()) // NB: The LastItemRectHoveredRect test is merely an optional micro-optimization
|
if (window->DC.LastItemRectHoveredRect && BeginDragDropTarget()) // NB: The LastItemRectHoveredRect test is merely an optional micro-optimization
|
||||||
{
|
{
|
||||||
|
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_3F))
|
||||||
|
{
|
||||||
|
memcpy((float*)col, payload->Data, sizeof(float) * 3);
|
||||||
|
value_changed = true;
|
||||||
|
}
|
||||||
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_4F))
|
if (const ImGuiPayload* payload = AcceptDragDropPayload(IMGUI_PAYLOAD_TYPE_COLOR_4F))
|
||||||
{
|
{
|
||||||
IM_ASSERT(payload->DataSize == sizeof(ImVec4));
|
memcpy((float*)col, payload->Data, sizeof(float) * components);
|
||||||
memcpy((float*)col, payload->Data, sizeof(ImVec4));
|
|
||||||
value_changed = true;
|
value_changed = true;
|
||||||
}
|
}
|
||||||
EndDragDropTarget();
|
EndDragDropTarget();
|
||||||
|
4
imgui.h
4
imgui.h
@ -610,6 +610,10 @@ enum ImGuiDragDropFlags_
|
|||||||
ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect // For peeking ahead and inspecting the payload before delivery.
|
ImGuiDragDropFlags_AcceptPeekOnly = ImGuiDragDropFlags_AcceptBeforeDelivery | ImGuiDragDropFlags_AcceptNoDrawDefaultRect // For peeking ahead and inspecting the payload before delivery.
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// Standard Drag and Drop payload types. Types starting with '_' are defined by Dear ImGui.
|
||||||
|
#define IMGUI_PAYLOAD_TYPE_COLOR_3F "_COL3F" // float[3] // Standard type for colors, without alpha. User code may use this type.
|
||||||
|
#define IMGUI_PAYLOAD_TYPE_COLOR_4F "_COL4F" // float[4] // Standard type for colors. User code may use this type.
|
||||||
|
|
||||||
// User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array
|
// User fill ImGuiIO.KeyMap[] array with indices into the ImGuiIO.KeysDown[512] array
|
||||||
enum ImGuiKey_
|
enum ImGuiKey_
|
||||||
{
|
{
|
||||||
|
@ -169,8 +169,7 @@ inline void operator delete(void*, ImPlacementNewDummy, void*) {}
|
|||||||
// Types
|
// Types
|
||||||
//-----------------------------------------------------------------------------
|
//-----------------------------------------------------------------------------
|
||||||
|
|
||||||
// Drag and Drop payload types. String starting with '_' are managed by Dear ImGui.
|
// Internal Drag and Drop payload types. String starting with '_' are reserved for Dear ImGui.
|
||||||
#define IMGUI_PAYLOAD_TYPE_COLOR_4F "_COL4F" // float[4] // Standard type for colors. User code may use this type. Build a float[4] out of a float[3] if you don't have alpha.
|
|
||||||
#define IMGUI_PAYLOAD_TYPE_DOCKABLE "_IMDOCK" // ImGuiWindow* // [Internal] Docking/tabs
|
#define IMGUI_PAYLOAD_TYPE_DOCKABLE "_IMDOCK" // ImGuiWindow* // [Internal] Docking/tabs
|
||||||
|
|
||||||
enum ImGuiButtonFlags_
|
enum ImGuiButtonFlags_
|
||||||
|
Loading…
Reference in New Issue
Block a user