logo
Free, unlimited AI code reviews that run on commit
git-lrc git-lrc GitHub Install Now We'd appreciate a star git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt git-lrc - Free, unlimited AI code reviews that run on commit | Product Hunt

PointObj, LineObj, BoxObj, MultiLineObj, FillPolygonObj, Extent - helper classes that manage geometric

Boxobj Public Operations

BoxObj(Coord=0,Coord=0,Coord=0,Coord=0)BoxObj(BoxObj*)
              Construct a BoxObj, supplying either two  coordinate  pairs  or  another  BoxObj  to  specify  the
              instance's  bottom-left and top-right corners, which are stored in its _left, _bottom, _right, and
              _top public members.

       booleanContains(PointObj&)booleanIntersects(BoxObj&)booleanIntersects(LineObj&)
              Return whether this contains the given point and intersects the given box or line, respectively.

       BoxObjoperator-(BoxObj&)BoxObjoperator+(BoxObj&)
              Compute the intersection (-) or union (+) of this and the given box, returning the result.   These
              operations do not affect this or their argument.

       booleanWithin(BoxObj&)
              Return  true  if  this falls completely within the given box.  Within will also return true if the
              boxes are identical.

Description

       Unidraw defines several helper classes that store and manage geometric information.  Structured  graphics
       objects may use these helper classes to support their semantics.  PointObj stores a point, LineObj stores
       two  points,  and  MultiLineObj stores any number of points. BoxObj and FillPolygonObj define rectangular
       and polygonal areas, respectively.  Extent stores extent information, that is, the lower left corner  and
       center  of  a bounding box plus a fixed amount of extra space around the bounding box.  All these classes
       provide operations for computing geometric information.

Extent Public Operations

Extent(floatleft=0,floatbottom=0,floatcx=0,floatcy=0,floattol=0)Extent(Extent&)
              Construct a new Extent, optionally supplying its parameters explicitly  or  providing  a  existing
              Extent  to  copy.   The  parameters  are stored in the Extent's _left, _bottom, _cx, _cy, and _tol
              public members.

       booleanUndefined()
              Return whether the extent is undefined, that is, if (_left,_bottom) and (_cx,_cy) are  the  same
              point.

       booleanWithin(Extent&)
              Return  true  if the given extent circumscribes this.  Within will also return true if the extents
              are identical.

       voidMerge(Extent&)
              Enlarge this extent to subsume area of the given extent.

Fillpolygonobj Protected Operations

voidNormalize()
              Copy  the  vertices  defined  by  _x, _y, and _count into _normx, _normy, and _normCount such that
              (_normx[0],_normy[0]) is the lower-leftmost vertex and there are no redundant vertices.

Fillpolygonobj Public Operations

FillPolygonObj(Coord*=nil,Coord*=nil,int=0)
              Create a new FillPolygonObj, optionally specifying its vertices.  If vertices are  supplied,  then
              the  constructor  uses  Normalize  (described  below) to store a normalized set of vertices in the
              FillPolygonObj's _normx, _normy, and _normCount public members.  FillPolygonObj is a  subclass  of
              MultiLineObj; thus it stores the constructor arguments in its _x, _y, and _count public members.

       virtual~FillPolygonObj()
              The destructor deletes the _normx and _normy arrays.

       booleanContains(PointObj&)booleanIntersects(BoxObj&)booleanIntersects(LineObj&)
              Return whether this contains the given point and intersects the given box or line, respectively.

Lineobj Public Operations

LineObj(Coord=0,Coord=0,Coord=0,Coord=0)LineObj(LineObj*)
              Construct  a  LineObj,  supplying  either  two  coordinate pairs or another LineObj to specify the
              instance's endpoints, which are stored in its _p1 and _p2 public members.

       booleanContains(PointObj&)booleanIntersects(LineObj&)
              Return whether this contains the given point and intersects the given line, respectively.

       intSame(PointObj&p1,PointObj&p2)
              A helper function used in Intersects. Same returns a positive value if p1 and p2 fall on the  same
              side  of  the  line,  0  if both points fall on the line, or a negative value if the points are on
              opposite sides of the line.

Multilineobj Protected Operations

voidGrowBuf()
              Increase the size of the internal buffers used to store linearized splines.

       booleanCanApproxWithLine(doublex0,double,y0,doublex1,doubley1,doublex2,doubley2)
              Return whether two connected line segments defined by the given three points can  be  approximated
              visually with a single line between the endpoints.

       voidAddLine(doublex0,doubley0,doublex1,doubley1)
              Add a line to the internal buffer of vertices.

       voidAddBezierArc(doublex0,doubley0,doublex1,doubley1,doublex2,doubley2,doublex3,doubley3)
              Add lines approximating the appearance of a Bezier arc defined by the given points to the internal
              buffer of vertices.

       voidCalcSection(Coordcminus1x,Coordcminus1y,Coordcx,Coordcy,Coordcplus1x,Coordcplus1y,Coordcplus2x,Coordcplus2y)
              Add  a  Bezier  arc  to the internal buffer of vertices based on a series of four B-spline control
              points, the one before and the two after (cx,cy).

Multilineobj Public Operations

MultiLineObj(Coord*=nil,Coord*=nil,int=0)
              Create a MultiLineObj, optionally supplying coordinate arrays (and their  size)  that  define  the
              vertices  of  the multiline. The MultiLineObj does not copy these arrays but stores them directly.
              The MultiLineObj stores this information in its _x, _y, and _count public members.

       voidGetBox(BoxObj&)
              Calculate the bounding box  circumscribing  the  MultiLineObj's  vertices  and  store  it  in  the
              argument.

       booleanContains(PointObj&)booleanIntersects(BoxObj&)booleanIntersects(LineObj&)
              Return whether this contains the given point and intersects the given box or line, respectively.

       booleanWithin(BoxObj&)
              Return  true  if  this  falls  completely within the MultiLineObj's bounding box. Within will also
              return true if the boxes are identical.

       voidSplineToMultiLine(Coord*cpx,Coord*cpy,intcount)voidClosedSplineToMultiLine(Coord*cpx,Coord*cpy,intcount)
              Linearize the open or closed B-Spline defined by the given set of control  points  and  store  the
              result  in  this.  These operations store the linearized result in internal buffers and assign the
              addresses of these buffers to _x and _y; they do not delete _x and _y if they are non-nil prior to
              assignment.

Name

       PointObj,  LineObj,  BoxObj,  MultiLineObj, FillPolygonObj, Extent - helper classes that manage geometric
       information for structured graphics

Pointobj Public Operations

PointObj(Coord=0,Coord=0)PointObj(PointObj*)
              Construct a PointObj, supplying either two Coords or another PointObj to  specify  the  instance's
              coordinates, which are stored in its _x and _y public members.

       floatDistance(PointObj&)
              Return the distance between this and the given PointObj.

See Also

Graphic(3U)

Unidraw                                          2 February 1991                                    geomobjs(3U)

Synopsis

#include<Unidraw/Graphic/geomobjs.h>

See Also