drawPathText method

void drawPathText(
  1. String text,
  2. LineSegmentPath lineString,
  3. Mappoint reference,
  4. UiPaint paint,
  5. UiTextPaint textPaint,
  6. double maxTextWidth,
)

Implementation

void drawPathText(String text, LineSegmentPath lineString, Mappoint reference, UiPaint paint, UiTextPaint textPaint, double maxTextWidth) {
  if (text.trim().isEmpty) {
    return;
  }
  if (paint.isTransparent()) {
    return;
  }

  ParagraphEntry entry = ParagraphCacheMgr().getEntry(text, textPaint, paint, maxTextWidth);

  for (var segment in lineString.segments) {
    // So text isn't upside down
    bool doInvert = segment.end.x < segment.start.x;
    MappointRelative start;
    double diff = (segment.length() - entry.getWidth()) / 2;
    if (doInvert) {
      //start = segment.end.offset(-origin.x, -origin.y);
      start = segment.pointAlongLineSegment(diff + entry.getWidth()).offset(reference);
    } else {
      //start = segment.start.offset(-origin.x, -origin.y);
      start = segment.pointAlongLineSegment(diff).offset(reference);
    }
    // print(
    //     "$text: segment length ${segment.length()} - word length ${entry.getWidth()} at ${start.x - segment.start.x} / ${start.y - segment.start.y} @ ${segment.getAngle()}");
    drawTextRotated(entry.paragraph, segment.getTheta(), start);
    //      len -= segmentLength;
  }
}