IStrokeHandler Interface

IStrokeHandler is an interface with methods to receive data about curves being stroked. CurvePrimitives emitStrokes () methods emit calls to a handler object with these methods. The various CurvePrimitive types are free to announce either single points (announcePoint), linear fragments, or fractional intervals of the parent curve.

  • handler.startCurvePrimitive (cp) -- announce the curve primitive whose strokes will follow.
  • announcePointTangent (xyz, fraction, tangent) -- announce a single point on the curve.
  • announceIntervalForUniformStepStrokes (cp, numStrokes, fraction0, fraction1) -- announce a fraction interval in which the curve can be evaluated (e.g. the handler can call cp->fractionToPointAndDerivative ())
  • announceSegmentInterval (cp, point0, point1, numStrokes, fraction0, fraction1) -- announce that the fractional interval fraction0, fraction1 is a straight line which should be broken into numStrokes strokes.
    • A LineSegment would make a single call to this.
    • A LineString would make one call to this for each of its segments, with fractions indicating position within the linestring.
  • endCurvePrimitive (cp) -- announce the end of the curve primitive.

Methods

Name Description
announceBezierCurve(bezier: BezierCurveBase, numStrokes: number, parent: CurvePrimitive, spandex: number, fraction0: number, fraction1: number): void Optional Announce a bezier curve fragment.  
announceIntervalForUniformStepStrokes(cp: CurvePrimitive, numStrokes: number, fraction0: number, fraction1: number): void Announce that curve primitive cp should be evaluated in the specified fraction interval.  
announcePointTangent(xyz: Point3d, fraction: number, tangent: Vector3d): void announce a single point with its fraction and tangent.  
announceSegmentInterval(cp: CurvePrimitive, point0: Point3d, point1: Point3d, numStrokes: number, fraction0: number, fraction1: number): void Announce numPoints interpolated between point0 and point1, with associated fractions  
endCurvePrimitive(cp: CurvePrimitive): void Announce that all data about cp has been announced.  
endParentCurvePrimitive(cp: CurvePrimitive): void Announce that all data about the parent primitive has been announced.  
needPrimaryGeometryForStrokes(): boolean Optional OPTIONAL method for a handler to indicate that it wants primary geometry (e.g.  
startCurvePrimitive(cp: CurvePrimitive): void Announce the curve primitive that will be described in subsequent calls.  
startParentCurvePrimitive(cp: CurvePrimitive): void announce a parent curve primitive  

Defined in

Last Updated: 30 November, 2023