| 131 | } |
| 132 | |
| 133 | IMPLOT_INLINE void PrimLine(ImDrawList& draw_list, const ImVec2& P1, const ImVec2& P2, float half_weight, ImU32 col, const ImVec2& tex_uv0, const ImVec2 tex_uv1) { |
| 134 | float dx = P2.x - P1.x; |
| 135 | float dy = P2.y - P1.y; |
| 136 | IMPLOT_NORMALIZE2F_OVER_ZERO(dx, dy); |
| 137 | dx *= half_weight; |
| 138 | dy *= half_weight; |
| 139 | draw_list._VtxWritePtr[0].pos.x = P1.x + dy; |
| 140 | draw_list._VtxWritePtr[0].pos.y = P1.y - dx; |
| 141 | draw_list._VtxWritePtr[0].uv = tex_uv0; |
| 142 | draw_list._VtxWritePtr[0].col = col; |
| 143 | draw_list._VtxWritePtr[1].pos.x = P2.x + dy; |
| 144 | draw_list._VtxWritePtr[1].pos.y = P2.y - dx; |
| 145 | draw_list._VtxWritePtr[1].uv = tex_uv0; |
| 146 | draw_list._VtxWritePtr[1].col = col; |
| 147 | draw_list._VtxWritePtr[2].pos.x = P2.x - dy; |
| 148 | draw_list._VtxWritePtr[2].pos.y = P2.y + dx; |
| 149 | draw_list._VtxWritePtr[2].uv = tex_uv1; |
| 150 | draw_list._VtxWritePtr[2].col = col; |
| 151 | draw_list._VtxWritePtr[3].pos.x = P1.x - dy; |
| 152 | draw_list._VtxWritePtr[3].pos.y = P1.y + dx; |
| 153 | draw_list._VtxWritePtr[3].uv = tex_uv1; |
| 154 | draw_list._VtxWritePtr[3].col = col; |
| 155 | draw_list._VtxWritePtr += 4; |
| 156 | draw_list._IdxWritePtr[0] = (ImDrawIdx)(draw_list._VtxCurrentIdx); |
| 157 | draw_list._IdxWritePtr[1] = (ImDrawIdx)(draw_list._VtxCurrentIdx + 1); |
| 158 | draw_list._IdxWritePtr[2] = (ImDrawIdx)(draw_list._VtxCurrentIdx + 2); |
| 159 | draw_list._IdxWritePtr[3] = (ImDrawIdx)(draw_list._VtxCurrentIdx); |
| 160 | draw_list._IdxWritePtr[4] = (ImDrawIdx)(draw_list._VtxCurrentIdx + 2); |
| 161 | draw_list._IdxWritePtr[5] = (ImDrawIdx)(draw_list._VtxCurrentIdx + 3); |
| 162 | draw_list._IdxWritePtr += 6; |
| 163 | draw_list._VtxCurrentIdx += 4; |
| 164 | } |
| 165 | |
| 166 | IMPLOT_INLINE void PrimRectFill(ImDrawList& draw_list, const ImVec2& Pmin, const ImVec2& Pmax, ImU32 col, const ImVec2& uv) { |
| 167 | draw_list._VtxWritePtr[0].pos = Pmin; |