4#include "MRViewer/exports.h"
33 [[nodiscard]]
float get(
bool end )
const {
return end ?
b :
a; }
40 ImDrawList*
list = ImGui::GetBackgroundDrawList();
132 using ElemVar = std::variant<std::string, TextIcon, TextColor, TextFont>;
216 lines.emplace_back();
217 lines.back().elems.emplace_back().var = std::string();
230 lines.back().elems.emplace_back( std::move( elem ) );
236 addElem( { .var =
decltype(elem)(elem) } );
241 MRVIEWER_API
void update(
bool force =
false )
const;
318MRVIEWER_API std::optional<TextResult>
text(
321 ImVec2 push = {}, ImVec2 pivot = { 0.5f, 0.5f }
362 std::optional<LineResult>
line;
363 std::optional<TextResult>
text;
386 [[nodiscard]] ImVec2
endPoint(
bool second )
const {
return second ?
b :
a; }
404template <
typename A,
typename B,
typename F,
typename G,
typename H = std::
nullptr_t>
406 F&& stateToPoint, G&& bisectState, H&& onInsertPoint =
nullptr
411 std::size_t firstIndex = pointBuffer.size();
413 auto makeCurve = [&](
auto makeCurve,
int depth,
const auto& stateA,
const auto& stateB, ImVec2 pointA, ImVec2 pointB ) ->
void
420 auto midState = bisectState( stateA, stateB,
int(
depth ) );
421 ImVec2 midPoint = stateToPoint( midState );
423 makeCurve( makeCurve,
depth + 1, stateA, midState, pointA, midPoint );
424 makeCurve( makeCurve,
depth + 1, midState, stateB, midPoint, pointB );
430 onInsertPoint( pointB, stateB );
431 pointBuffer.push_back( pointB );
435 ImVec2 firstPoint = stateToPoint( stateA );
436 makeCurve( makeCurve, 0, stateA, stateB, firstPoint, stateToPoint( stateB ) );
439 pointBuffer.pop_back();
440 ret.midPoints = { pointBuffer.data() + firstIndex, pointBuffer.data() + pointBuffer.size() };
#define MR_MAKE_FLAG_OPERATORS(T)
Definition MRFlagOperators.h:6
MR_BIND_IGNORE auto end(const BitSet &)
Definition MRMesh/MRBitSet.h:310
auto depth(const Box< V > &box)
returns size along z axis
Definition MRMesh/MRBox.h:355
Definition ImGuiHelpers.h:31
constexpr auto lengthSq(A a)
Definition MRImGuiVectorOperators.h:131
Definition MRImGuiMeasurementIndicators.h:15
LineCapDecoration
Definition MRImGuiMeasurementIndicators.h:255
MRVIEWER_API std::optional< LineResult > line(Element elem, const Params ¶ms, ImVec2 a, ImVec2 b, const LineParams &lineParams={})
MRVIEWER_API void arrowTriangle(Element elem, const Params ¶ms, ImVec2 point, ImVec2 dir)
PreparedCurve prepareCurve(const CurveParams &curveParams, std::vector< ImVec2 > &pointBuffer, const A &stateA, const B &stateB, F &&stateToPoint, G &&bisectState, H &&onInsertPoint=nullptr)
Definition MRImGuiMeasurementIndicators.h:405
LineFlags
Definition MRImGuiMeasurementIndicators.h:264
@ noBackwardArrowTipOffset
Element
Definition MRImGuiMeasurementIndicators.h:98
MRVIEWER_API std::optional< TextResult > text(Element elem, const Params ¶ms, ImVec2 pos, const Text &text, const TextParams &textParams={}, ImVec2 push={}, ImVec2 pivot={ 0.5f, 0.5f })
TextIcon
Definition MRImGuiMeasurementIndicators.h:109
MRVIEWER_API std::optional< DistanceResult > distance(Element elem, const Params ¶ms, ImVec2 a, ImVec2 b, const Text &text, const DistanceParams &distanceParams={})
Definition MRMesh/MRColor.h:9
static constexpr Color transparent() noexcept
Definition MRMesh/MRColor.h:34
Definition MRImGuiMeasurementIndicators.h:371
int maxSubdivisionDepth
Definition MRImGuiMeasurementIndicators.h:373
float subdivisionStepPixels
Definition MRImGuiMeasurementIndicators.h:378
int minSubdivisionDepth
Definition MRImGuiMeasurementIndicators.h:375
Definition MRImGuiMeasurementIndicators.h:353
std::optional< bool > moveTextToLineEndIndex
Definition MRImGuiMeasurementIndicators.h:355
TextParams textParams
Definition MRImGuiMeasurementIndicators.h:357
Definition MRImGuiMeasurementIndicators.h:361
std::optional< TextResult > text
Definition MRImGuiMeasurementIndicators.h:363
std::optional< LineResult > line
Definition MRImGuiMeasurementIndicators.h:362
Definition MRImGuiMeasurementIndicators.h:272
std::optional< Stipple > stipple
Definition MRImGuiMeasurementIndicators.h:278
std::optional< Color > colorOverride
Definition MRImGuiMeasurementIndicators.h:275
Definition MRImGuiMeasurementIndicators.h:328
TextParams textParams
Definition MRImGuiMeasurementIndicators.h:332
LineCapDecoration decoration
Definition MRImGuiMeasurementIndicators.h:329
Text text
Definition MRImGuiMeasurementIndicators.h:331
Definition MRImGuiMeasurementIndicators.h:336
LineCap capA
Definition MRImGuiMeasurementIndicators.h:338
LineBodyParams body
Definition MRImGuiMeasurementIndicators.h:337
std::span< const ImVec2 > midPoints
Definition MRImGuiMeasurementIndicators.h:341
LineCap capB
Definition MRImGuiMeasurementIndicators.h:339
Definition MRImGuiMeasurementIndicators.h:345
std::optional< TextResult > capA
Definition MRImGuiMeasurementIndicators.h:346
std::optional< TextResult > capB
Definition MRImGuiMeasurementIndicators.h:346
Definition MRImGuiMeasurementIndicators.h:39
Color colorTextOutlineActive
Definition MRImGuiMeasurementIndicators.h:46
float width
Definition MRImGuiMeasurementIndicators.h:50
float smallWidth
Definition MRImGuiMeasurementIndicators.h:51
Stipple stippleDashed
Definition MRImGuiMeasurementIndicators.h:90
float totalLenThreshold
Definition MRImGuiMeasurementIndicators.h:75
Color colorTextOutlineHovered
Definition MRImGuiMeasurementIndicators.h:45
float arrowHalfWidth
Definition MRImGuiMeasurementIndicators.h:61
float arrowLen
Definition MRImGuiMeasurementIndicators.h:60
float textToLineSpacingRadius
Definition MRImGuiMeasurementIndicators.h:71
float notchHalfLen
Definition MRImGuiMeasurementIndicators.h:84
float textOutlineWidth
Definition MRImGuiMeasurementIndicators.h:53
float leaderLineLen
Definition MRImGuiMeasurementIndicators.h:81
Color colorOutline
Definition MRImGuiMeasurementIndicators.h:42
float arrowTipBackwardOffset
Definition MRImGuiMeasurementIndicators.h:65
Color colorMain
Definition MRImGuiMeasurementIndicators.h:41
Color colorTextOutline
Definition MRImGuiMeasurementIndicators.h:44
float clickableLabelLineWidth
Definition MRImGuiMeasurementIndicators.h:56
ImVec2 textToLineSpacingB
Definition MRImGuiMeasurementIndicators.h:69
float pointDiameter
Definition MRImGuiMeasurementIndicators.h:48
ImDrawList * list
Definition MRImGuiMeasurementIndicators.h:40
float clickableLabelOutlineWidth
Definition MRImGuiMeasurementIndicators.h:58
Color colorText
Definition MRImGuiMeasurementIndicators.h:43
ImVec2 textToLineSpacingA
Definition MRImGuiMeasurementIndicators.h:68
float outlineWidth
Definition MRImGuiMeasurementIndicators.h:52
float clickableLabelLineWidthSelected
Definition MRImGuiMeasurementIndicators.h:57
float invertedOverhang
Definition MRImGuiMeasurementIndicators.h:78
float textOutlineRounding
Definition MRImGuiMeasurementIndicators.h:54
Definition MRImGuiMeasurementIndicators.h:382
ImVec2 a
Definition MRImGuiMeasurementIndicators.h:383
ImVec2 b
Definition MRImGuiMeasurementIndicators.h:384
std::span< ImVec2 > midPoints
Definition MRImGuiMeasurementIndicators.h:388
ImVec2 endPoint(bool second) const
Definition MRImGuiMeasurementIndicators.h:386
Definition MRImGuiMeasurementIndicators.h:25
float b
Definition MRImGuiMeasurementIndicators.h:31
float a
Definition MRImGuiMeasurementIndicators.h:30
float get(bool end) const
Definition MRImGuiMeasurementIndicators.h:33
Definition MRImGuiMeasurementIndicators.h:19
float patternLength
Definition MRImGuiMeasurementIndicators.h:22
std::span< const Segment > segments
Definition MRImGuiMeasurementIndicators.h:35
Definition MRImGuiMeasurementIndicators.h:114
TextColor(ImU32 color)
Definition MRImGuiMeasurementIndicators.h:120
TextColor()
Definition MRImGuiMeasurementIndicators.h:118
std::optional< ImU32 > color
Definition MRImGuiMeasurementIndicators.h:116
TextColor(ImVec4 color)
Definition MRImGuiMeasurementIndicators.h:119
Definition MRImGuiMeasurementIndicators.h:124
ImFont * font
Definition MRImGuiMeasurementIndicators.h:126
Definition MRImGuiMeasurementIndicators.h:288
LineCapDecoration capDecoration
Definition MRImGuiMeasurementIndicators.h:290
ImVec2 point
Definition MRImGuiMeasurementIndicators.h:289
LineBodyParams body
Definition MRImGuiMeasurementIndicators.h:291
Definition MRImGuiMeasurementIndicators.h:282
Color borderColor
Definition MRImGuiMeasurementIndicators.h:285
bool isSelected
Definition MRImGuiMeasurementIndicators.h:302
bool isHovered
Definition MRImGuiMeasurementIndicators.h:297
std::optional< Line > line
Definition MRImGuiMeasurementIndicators.h:294
bool isActive
Definition MRImGuiMeasurementIndicators.h:299
Definition MRImGuiMeasurementIndicators.h:306
ImVec2 bgCornerB
Definition MRImGuiMeasurementIndicators.h:310
ImVec2 bgCornerA
Definition MRImGuiMeasurementIndicators.h:309
ImVec2 textCornerB
Definition MRImGuiMeasurementIndicators.h:308
ImVec2 textCornerA
Definition MRImGuiMeasurementIndicators.h:307
Definition MRImGuiMeasurementIndicators.h:244
ImVec2 cornerA
Definition MRImGuiMeasurementIndicators.h:245
ImVec2 cornerB
Definition MRImGuiMeasurementIndicators.h:246
Definition MRImGuiMeasurementIndicators.h:135
bool hasDefaultParams() const
Definition MRImGuiMeasurementIndicators.h:156
ImVec2 computedSize
Definition MRImGuiMeasurementIndicators.h:151
ImVec2 size
Definition MRImGuiMeasurementIndicators.h:140
ElemVar var
Definition MRImGuiMeasurementIndicators.h:136
int columnId
Definition MRImGuiMeasurementIndicators.h:148
ImVec2 computedSizeWithPadding
Definition MRImGuiMeasurementIndicators.h:154
ImVec2 align
Definition MRImGuiMeasurementIndicators.h:144
Definition MRImGuiMeasurementIndicators.h:163
ImVec2 computedSizeWithPadding
Definition MRImGuiMeasurementIndicators.h:178
ImVec2 align
Definition MRImGuiMeasurementIndicators.h:172
ImVec2 size
Definition MRImGuiMeasurementIndicators.h:168
std::vector< Elem > elems
Definition MRImGuiMeasurementIndicators.h:164
ImVec2 computedSize
Definition MRImGuiMeasurementIndicators.h:175
Definition MRImGuiMeasurementIndicators.h:131
MRVIEWER_API void addText(std::string_view text)
std::function< ImFont *()> FontFunc
Definition MRImGuiMeasurementIndicators.h:190
void addElem(Elem elem)
Definition MRImGuiMeasurementIndicators.h:225
Text()
Definition MRImGuiMeasurementIndicators.h:206
Text(std::string_view text)
Definition MRImGuiMeasurementIndicators.h:208
MRVIEWER_API DrawResult draw(ImDrawList &list, ImVec2 pos, const TextColor &defaultTextColor={}) const
ImFont * defaultFont
Definition MRImGuiMeasurementIndicators.h:197
MRVIEWER_API void update(bool force=false) const
std::vector< Line > lines
Definition MRImGuiMeasurementIndicators.h:181
void addLine()
Definition MRImGuiMeasurementIndicators.h:213
ImVec2 size
Definition MRImGuiMeasurementIndicators.h:185
static MRVIEWER_API void setStaticDefaultFontFunc(FontFunc func)
Text(const char *text)
Definition MRImGuiMeasurementIndicators.h:209
Text(const std::string &text)
Definition MRImGuiMeasurementIndicators.h:207
void add(auto &&elem)
Definition MRImGuiMeasurementIndicators.h:234
bool isEmpty() const
Definition MRImGuiMeasurementIndicators.h:211
bool dirty
Definition MRImGuiMeasurementIndicators.h:204
ImVec2 computedSize
Definition MRImGuiMeasurementIndicators.h:200
static MRVIEWER_API const FontFunc & getStaticDefaultFontFunc()
std::variant< std::string, TextIcon, TextColor, TextFont > ElemVar
Definition MRImGuiMeasurementIndicators.h:132
ImVec2 align
Definition MRImGuiMeasurementIndicators.h:188