MCPcopy Create free account
hub / github.com/Wemino/MarkerPatch / ShadeVertsLinearColorGradientKeepAlpha

Method ShadeVertsLinearColorGradientKeepAlpha

include/imgui/imgui_draw.cpp:2375–2396  ·  view source on GitHub ↗

Generic linear color gradient, write to RGB fields, leave A untouched.

Source from the content-addressed store, hash-verified

2373
2374// Generic linear color gradient, write to RGB fields, leave A untouched.
2375void ImGui::ShadeVertsLinearColorGradientKeepAlpha(ImDrawList* draw_list, int vert_start_idx, int vert_end_idx, ImVec2 gradient_p0, ImVec2 gradient_p1, ImU32 col0, ImU32 col1)
2376{
2377 ImVec2 gradient_extent = gradient_p1 - gradient_p0;
2378 float gradient_inv_length2 = 1.0f / ImLengthSqr(gradient_extent);
2379 ImDrawVert* vert_start = draw_list->VtxBuffer.Data + vert_start_idx;
2380 ImDrawVert* vert_end = draw_list->VtxBuffer.Data + vert_end_idx;
2381 const int col0_r = (int)(col0 >> IM_COL32_R_SHIFT) & 0xFF;
2382 const int col0_g = (int)(col0 >> IM_COL32_G_SHIFT) & 0xFF;
2383 const int col0_b = (int)(col0 >> IM_COL32_B_SHIFT) & 0xFF;
2384 const int col_delta_r = ((int)(col1 >> IM_COL32_R_SHIFT) & 0xFF) - col0_r;
2385 const int col_delta_g = ((int)(col1 >> IM_COL32_G_SHIFT) & 0xFF) - col0_g;
2386 const int col_delta_b = ((int)(col1 >> IM_COL32_B_SHIFT) & 0xFF) - col0_b;
2387 for (ImDrawVert* vert = vert_start; vert < vert_end; vert++)
2388 {
2389 float d = ImDot(vert->pos - gradient_p0, gradient_extent);
2390 float t = ImClamp(d * gradient_inv_length2, 0.0f, 1.0f);
2391 int r = (int)(col0_r + col_delta_r * t);
2392 int g = (int)(col0_g + col_delta_g * t);
2393 int b = (int)(col0_b + col_delta_b * t);
2394 vert->col = (r << IM_COL32_R_SHIFT) | (g << IM_COL32_G_SHIFT) | (b << IM_COL32_B_SHIFT) | (vert->col & IM_COL32_A_MASK);
2395 }
2396}
2397
2398// Distribute UV over (a, b) rectangle
2399void ImGui::ShadeVertsLinearUV(ImDrawList* draw_list, int vert_start_idx, int vert_end_idx, const ImVec2& a, const ImVec2& b, const ImVec2& uv_a, const ImVec2& uv_b, bool clamp)

Callers

nothing calls this directly

Calls 3

ImLengthSqrFunction · 0.85
ImDotFunction · 0.85
ImClampFunction · 0.85

Tested by

no test coverage detected