AA branch: removed the 'thickness' parameter from ImDrawList::AddLine()
This commit is contained in:
parent
ac56e4e209
commit
d35c1a9e66
25
imgui.cpp
25
imgui.cpp
@ -5,8 +5,6 @@
|
|||||||
// Developed by Omar Cornut and ImGui contributors.
|
// Developed by Omar Cornut and ImGui contributors.
|
||||||
|
|
||||||
// ANTI-ALIASED PRIMITIVES BRANCH
|
// ANTI-ALIASED PRIMITIVES BRANCH
|
||||||
// TODO
|
|
||||||
// - Support for thickness stroking. recently been added to the ImDrawList API as a convenience.
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
|
||||||
@ -140,7 +138,7 @@
|
|||||||
Occasionally introducing changes that are breaking the API. The breakage are generally minor and easy to fix.
|
Occasionally introducing changes that are breaking the API. The breakage are generally minor and easy to fix.
|
||||||
Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code.
|
Here is a change-log of API breaking changes, if you are using one of the functions listed, expect to have to fix some code.
|
||||||
|
|
||||||
- 2015/07/05 (1.42) - switched rendering data to use indexed rendering. this is saving a fair amount of CPU/GPU and enables us to get anti-aliasing for a marginal cost.
|
- 2015/07/07 (1.42) - switched rendering data to use indexed rendering. this is saving a fair amount of CPU/GPU and enables us to get anti-aliasing for a marginal cost.
|
||||||
this necessary change will break your rendering function! the fix should be very easy. sorry for that :(
|
this necessary change will break your rendering function! the fix should be very easy. sorry for that :(
|
||||||
- if you are using a vanilla copy of one of the imgui_impl_XXXX.cpp provided in the example, you just need to update your copy and you can ignore the rest.
|
- if you are using a vanilla copy of one of the imgui_impl_XXXX.cpp provided in the example, you just need to update your copy and you can ignore the rest.
|
||||||
- the signature of io.RenderDrawListsFn has changed!
|
- the signature of io.RenderDrawListsFn has changed!
|
||||||
@ -155,6 +153,7 @@
|
|||||||
each ImDrawList now contains both a vertex buffer (vtx_buffer) and an index buffer (idx_buffer). For each command, render elem_count/3 triangles using indices from the index buffer.
|
each ImDrawList now contains both a vertex buffer (vtx_buffer) and an index buffer (idx_buffer). For each command, render elem_count/3 triangles using indices from the index buffer.
|
||||||
- if you REALLY cannot render indexed primitives, you can call the draw_data->DeIndexAllBuffers() method to de-index your buffer. This is slow and a waste of CPU/GPU. Prefer using indexed rendering!
|
- if you REALLY cannot render indexed primitives, you can call the draw_data->DeIndexAllBuffers() method to de-index your buffer. This is slow and a waste of CPU/GPU. Prefer using indexed rendering!
|
||||||
- refer to code in the examples/ folder or ask on the github if you are unsure of how to upgrade.
|
- refer to code in the examples/ folder or ask on the github if you are unsure of how to upgrade.
|
||||||
|
- removed the 'thickness' parameter from ImDrawList::AddLine().
|
||||||
- 2015/07/02 (1.42) - renamed SetScrollPosHere() to SetScrollFromCursorPos(). Kept inline redirection function (will obsolete).
|
- 2015/07/02 (1.42) - renamed SetScrollPosHere() to SetScrollFromCursorPos(). Kept inline redirection function (will obsolete).
|
||||||
- 2015/07/02 (1.42) - renamed GetScrollPosY() to GetScrollY(). Necessary to reduce confusion along with other scrolling functions, because positions (e.g. cursor position) are not equivalent to scrolling amount.
|
- 2015/07/02 (1.42) - renamed GetScrollPosY() to GetScrollY(). Necessary to reduce confusion along with other scrolling functions, because positions (e.g. cursor position) are not equivalent to scrolling amount.
|
||||||
- 2015/06/14 (1.41) - changed ImageButton() default bg_col parameter from (0,0,0,1) (black) to (0,0,0,0) (transparent) - makes a difference when texture have transparence
|
- 2015/06/14 (1.41) - changed ImageButton() default bg_col parameter from (0,0,0,1) (black) to (0,0,0,0) (transparent) - makes a difference when texture have transparence
|
||||||
@ -2791,7 +2790,7 @@ static void RenderCheckMark(ImVec2 pos, ImU32 col)
|
|||||||
window->DrawList->PathLineTo(a);
|
window->DrawList->PathLineTo(a);
|
||||||
window->DrawList->PathLineTo(b);
|
window->DrawList->PathLineTo(b);
|
||||||
window->DrawList->PathLineTo(c);
|
window->DrawList->PathLineTo(c);
|
||||||
window->DrawList->PathStroke(col, 1.0f, false);
|
window->DrawList->PathStroke(col, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Calculate text size. Text can be multi-line. Optionally ignore text after a ## marker.
|
// Calculate text size. Text can be multi-line. Optionally ignore text after a ## marker.
|
||||||
@ -9195,10 +9194,8 @@ void ImDrawList::PrimRectUV(const ImVec2& a, const ImVec2& c, const ImVec2& uv_a
|
|||||||
idx_write += 6;
|
idx_write += 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32 col, float thickness, bool closed, bool anti_aliased)
|
void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32 col, bool closed, bool anti_aliased)
|
||||||
{
|
{
|
||||||
(void)thickness; // Unsupported
|
|
||||||
|
|
||||||
if (points_count < 2)
|
if (points_count < 2)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
@ -9302,8 +9299,8 @@ void ImDrawList::AddPolyline(const ImVec2* points, const int points_count, ImU32
|
|||||||
ImVec2 diff = p2 - p1;
|
ImVec2 diff = p2 - p1;
|
||||||
diff *= ImInvLength(diff, 1.0f);
|
diff *= ImInvLength(diff, 1.0f);
|
||||||
|
|
||||||
const float dx = diff.x * (thickness * 0.5f);
|
const float dx = diff.x * 0.5f;
|
||||||
const float dy = diff.y * (thickness * 0.5f);
|
const float dy = diff.y * 0.5f;
|
||||||
vtx_write[0].pos.x = p1.x + dy; vtx_write[0].pos.y = p1.y - dx; vtx_write[0].uv = uv; vtx_write[0].col = col;
|
vtx_write[0].pos.x = p1.x + dy; vtx_write[0].pos.y = p1.y - dx; vtx_write[0].uv = uv; vtx_write[0].col = col;
|
||||||
vtx_write[1].pos.x = p2.x + dy; vtx_write[1].pos.y = p2.y - dx; vtx_write[1].uv = uv; vtx_write[1].col = col;
|
vtx_write[1].pos.x = p2.x + dy; vtx_write[1].pos.y = p2.y - dx; vtx_write[1].uv = uv; vtx_write[1].col = col;
|
||||||
vtx_write[2].pos.x = p2.x - dy; vtx_write[2].pos.y = p2.y + dx; vtx_write[2].uv = uv; vtx_write[2].col = col;
|
vtx_write[2].pos.x = p2.x - dy; vtx_write[2].pos.y = p2.y + dx; vtx_write[2].uv = uv; vtx_write[2].col = col;
|
||||||
@ -9471,13 +9468,13 @@ void ImDrawList::PathRect(const ImVec2& a, const ImVec2& b, float rounding, int
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddLine(const ImVec2& a, const ImVec2& b, ImU32 col, float thickness)
|
void ImDrawList::AddLine(const ImVec2& a, const ImVec2& b, ImU32 col)
|
||||||
{
|
{
|
||||||
if ((col >> 24) == 0)
|
if ((col >> 24) == 0)
|
||||||
return;
|
return;
|
||||||
PathLineTo(a + ImVec2(0.5f,0.5f));
|
PathLineTo(a + ImVec2(0.5f,0.5f));
|
||||||
PathLineTo(b + ImVec2(0.5f,0.5f));
|
PathLineTo(b + ImVec2(0.5f,0.5f));
|
||||||
PathStroke(col, thickness, false);
|
PathStroke(col, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding, int rounding_corners)
|
void ImDrawList::AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding, int rounding_corners)
|
||||||
@ -9485,7 +9482,7 @@ void ImDrawList::AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float roun
|
|||||||
if ((col >> 24) == 0)
|
if ((col >> 24) == 0)
|
||||||
return;
|
return;
|
||||||
PathRect(a + ImVec2(0.5f,0.5f), b + ImVec2(0.5f,0.5f), rounding, rounding_corners);
|
PathRect(a + ImVec2(0.5f,0.5f), b + ImVec2(0.5f,0.5f), rounding, rounding_corners);
|
||||||
PathStroke(col, 1.0f, true);
|
PathStroke(col, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding, int rounding_corners)
|
void ImDrawList::AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding, int rounding_corners)
|
||||||
@ -9521,7 +9518,7 @@ void ImDrawList::AddCircle(const ImVec2& centre, float radius, ImU32 col, int nu
|
|||||||
|
|
||||||
const float a_max = IM_PI*2.0f * ((float)num_segments - 1.0f) / (float)num_segments;
|
const float a_max = IM_PI*2.0f * ((float)num_segments - 1.0f) / (float)num_segments;
|
||||||
PathArcTo(centre, radius, 0.0f, a_max, num_segments);
|
PathArcTo(centre, radius, 0.0f, a_max, num_segments);
|
||||||
PathStroke(col, 1.0f, true);
|
PathStroke(col, true);
|
||||||
}
|
}
|
||||||
|
|
||||||
void ImDrawList::AddCircleFilled(const ImVec2& centre, float radius, ImU32 col, int num_segments)
|
void ImDrawList::AddCircleFilled(const ImVec2& centre, float radius, ImU32 col, int num_segments)
|
||||||
@ -11379,7 +11376,7 @@ void ImGui::ShowTestWindow(bool* opened)
|
|||||||
// Draw a line between the button and the mouse cursor
|
// Draw a line between the button and the mouse cursor
|
||||||
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
ImDrawList* draw_list = ImGui::GetWindowDrawList();
|
||||||
draw_list->PushClipRectFullScreen();
|
draw_list->PushClipRectFullScreen();
|
||||||
draw_list->AddLine(ImGui::CalcItemRectClosestPoint(ImGui::GetIO().MousePos, true, -2.0f), ImGui::GetIO().MousePos, ImColor(ImGui::GetStyle().Colors[ImGuiCol_Button]), 4.0f);
|
draw_list->AddLine(ImGui::CalcItemRectClosestPoint(ImGui::GetIO().MousePos, true, -2.0f), ImGui::GetIO().MousePos, ImColor(ImGui::GetStyle().Colors[ImGuiCol_Button]));
|
||||||
draw_list->PopClipRect();
|
draw_list->PopClipRect();
|
||||||
ImVec2 value_raw = ImGui::GetMouseDragDelta(0, 0.0f);
|
ImVec2 value_raw = ImGui::GetMouseDragDelta(0, 0.0f);
|
||||||
ImVec2 value_with_lock_threshold = ImGui::GetMouseDragDelta(0);
|
ImVec2 value_with_lock_threshold = ImGui::GetMouseDragDelta(0);
|
||||||
|
6
imgui.h
6
imgui.h
@ -1060,7 +1060,7 @@ struct ImDrawList
|
|||||||
IMGUI_API void PopTextureID();
|
IMGUI_API void PopTextureID();
|
||||||
|
|
||||||
// Primitives
|
// Primitives
|
||||||
IMGUI_API void AddLine(const ImVec2& a, const ImVec2& b, ImU32 col, float thickness = 1.0f);
|
IMGUI_API void AddLine(const ImVec2& a, const ImVec2& b, ImU32 col);
|
||||||
IMGUI_API void AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners = 0x0F);
|
IMGUI_API void AddRect(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners = 0x0F);
|
||||||
IMGUI_API void AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners = 0x0F);
|
IMGUI_API void AddRectFilled(const ImVec2& a, const ImVec2& b, ImU32 col, float rounding = 0.0f, int rounding_corners = 0x0F);
|
||||||
IMGUI_API void AddTriangleFilled(const ImVec2& a, const ImVec2& b, const ImVec2& c, ImU32 col);
|
IMGUI_API void AddTriangleFilled(const ImVec2& a, const ImVec2& b, const ImVec2& c, ImU32 col);
|
||||||
@ -1068,7 +1068,7 @@ struct ImDrawList
|
|||||||
IMGUI_API void AddCircleFilled(const ImVec2& centre, float radius, ImU32 col, int num_segments = 12);
|
IMGUI_API void AddCircleFilled(const ImVec2& centre, float radius, ImU32 col, int num_segments = 12);
|
||||||
IMGUI_API void AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
|
IMGUI_API void AddText(const ImFont* font, float font_size, const ImVec2& pos, ImU32 col, const char* text_begin, const char* text_end = NULL, float wrap_width = 0.0f, const ImVec4* cpu_fine_clip_rect = NULL);
|
||||||
IMGUI_API void AddImage(ImTextureID user_texture_id, const ImVec2& a, const ImVec2& b, const ImVec2& uv0, const ImVec2& uv1, ImU32 col = 0xFFFFFFFF);
|
IMGUI_API void AddImage(ImTextureID user_texture_id, const ImVec2& a, const ImVec2& b, const ImVec2& uv0, const ImVec2& uv1, ImU32 col = 0xFFFFFFFF);
|
||||||
IMGUI_API void AddPolyline(const ImVec2* points, const int num_points, ImU32 col, float thickness, bool closed, bool anti_aliased);
|
IMGUI_API void AddPolyline(const ImVec2* points, const int num_points, ImU32 col, bool closed, bool anti_aliased);
|
||||||
IMGUI_API void AddConvexPolyFilled(const ImVec2* points, const int num_points, ImU32 col, bool anti_aliased);
|
IMGUI_API void AddConvexPolyFilled(const ImVec2* points, const int num_points, ImU32 col, bool anti_aliased);
|
||||||
|
|
||||||
// Stateful path API, add points then finish with PathFill() or PathStroke()
|
// Stateful path API, add points then finish with PathFill() or PathStroke()
|
||||||
@ -1078,7 +1078,7 @@ struct ImDrawList
|
|||||||
IMGUI_API void PathArcTo(const ImVec2& centre, float radius, float a_min, float a_max, int num_segments = 12);
|
IMGUI_API void PathArcTo(const ImVec2& centre, float radius, float a_min, float a_max, int num_segments = 12);
|
||||||
IMGUI_API void PathRect(const ImVec2& a, const ImVec2& b, float rounding = 0.0f, int rounding_corners = 0x0F);
|
IMGUI_API void PathRect(const ImVec2& a, const ImVec2& b, float rounding = 0.0f, int rounding_corners = 0x0F);
|
||||||
inline void PathFill(ImU32 col) { AddConvexPolyFilled(path.Data, path.Size, col, true); PathClear(); }
|
inline void PathFill(ImU32 col) { AddConvexPolyFilled(path.Data, path.Size, col, true); PathClear(); }
|
||||||
inline void PathStroke(ImU32 col, float thickness, bool closed) { AddPolyline(path.Data, path.Size, col, thickness, closed, true); PathClear(); }
|
inline void PathStroke(ImU32 col, bool closed) { AddPolyline(path.Data, path.Size, col, closed, true); PathClear(); }
|
||||||
|
|
||||||
// Advanced
|
// Advanced
|
||||||
IMGUI_API void AddCallback(ImDrawCallback callback, void* callback_data); // Your rendering function must check for 'user_callback' in ImDrawCmd and call the function instead of rendering triangles.
|
IMGUI_API void AddCallback(ImDrawCallback callback, void* callback_data); // Your rendering function must check for 'user_callback' in ImDrawCmd and call the function instead of rendering triangles.
|
||||||
|
Loading…
Reference in New Issue
Block a user