GOGeometry

GOGeometry

Functions

Types and Values

Object Hierarchy

    GEnum
    ╰── GODirection

Includes

#include <goffice/graph/go-geometry.h>

Description

Functions

go_geometry_cartesian_to_polar ()

void
go_geometry_cartesian_to_polar (double x,
                                double y,
                                double *rho,
                                double *theta);

Converts cartesion coordinates to polar coordinates.

Parameters

x

cartesian coordinate

 

y

cartesian coordinate

 

rho

polar coordinate

 

theta

polar coordinate

 

go_geometry_point_to_segment ()

double
go_geometry_point_to_segment (double xp,
                              double yp,
                              double xs,
                              double ys,
                              double w,
                              double h);

Parameters

xp

point coordinate

 

yp

point coordinate

 

xs

segment start coordinate

 

ys

segment start coordinate

 

w

extent of segment

 

h

extent of segment

 

Returns

the distance between a point and a segment.


go_geometry_AABR_add ()

void
go_geometry_AABR_add (GOGeometryAABR *aabr0,
                      GOGeometryAABR const *aabr1);

Computes the Axis Aligned Bounding Rectangle of aabr0 and aabr1, and stores result in aabr0.

Parameters

aabr0

a GOGeometryAABR

 

aabr1

a GOGeometryAABR

 

go_geometry_OBR_to_AABR ()

void
go_geometry_OBR_to_AABR (GOGeometryOBR const *obr,
                         GOGeometryAABR *aabr);

Stores Axis Aligned Bouding Rectangle of obr in aabr .

Parameters

obr

a GOGeometryOBR

 

aabr

a GOGeometryAABR

 

go_geometry_test_OBR_overlap ()

gboolean
go_geometry_test_OBR_overlap (GOGeometryOBR const *obr0,
                              GOGeometryOBR const *obr1);

Overlap test of Oriented Bounding Rectangles by the separating axis method.

Parameters

obr0

a GOGeometryOBR

 

obr1

a GOGeometryOBR

 

Returns

TRUE if OOBRs overlap


go_geometry_get_rotation_type ()

GOGeometryRotationType
go_geometry_get_rotation_type (double alpha);

Calculates rotation type for handling of special angles (alpha = n * pi / 2)

Parameters

alpha

angle in radians

 

go_geometry_calc_label_position ()

GOGeometrySide
go_geometry_calc_label_position (GOGeometryOBR *obr,
                                 double alpha,
                                 double offset,
                                 GOGeometrySide side,
                                 GOGeometrySide anchor);

Convenience routine that computes position of a label relative to an axis.

Parameters

obr

bounding rectangle of label

 

alpha

angle of axis

 

offset

minimum distance between label and axis

 

side

side of label with respect to axis

 

anchor

where to anchor the label

 

Returns

the computed anchor if anchor == GO_SIDE_AUTO, or anchor value.


go_geometry_calc_label_anchor ()

GOGeometrySide
go_geometry_calc_label_anchor (GOGeometryOBR *obr,
                               double alpha);

Parameters

obr

bounding rectangle of label

 

alpha

angle of axis

 

Returns

computed label anchor, to be used by go_geometry_calc_label_position.


go_direction_get_type ()

GType
go_direction_get_type (void);


go_direction_is_forward ()

gboolean
go_direction_is_forward (GODirection d);

Parameters

Returns

TRUE for GO_DIRECTION_DOWN or GO_DIRECTION_RIGHT.


go_direction_is_horizontal ()

gboolean
go_direction_is_horizontal (GODirection d);

Parameters

Returns

TRUE for GO_DIRECTION_LEFT and GO_DIRECTION_RIGHT.

Types and Values

GO_GEOMETRY_ANGLE_TOLERANCE

#define GO_GEOMETRY_ANGLE_TOLERANCE 1E-3


enum GOGeometrySide

Members

GO_SIDE_LEFT

   

GO_SIDE_RIGHT

   

GO_SIDE_LEFT_RIGHT

   

GO_SIDE_TOP

   

GO_SIDE_BOTTOM

   

GO_SIDE_TOP_BOTTOM

   

GO_SIDE_AUTO

   

enum GOGeometryRotationType

Members

GO_ROTATE_NONE

   

GO_ROTATE_COUNTERCLOCKWISE

   

GO_ROTATE_UPSIDEDOWN

   

GO_ROTATE_CLOCKWISE

   

GO_ROTATE_FREE

   

GOGeometryOBR

typedef struct {
        double x,y;     /* Center */
        double w,h;     /* Edges */
        double alpha;   /* Angle from x axis to w edge, in radians */
} GOGeometryOBR;


GOGeometryAABR

typedef struct _GogViewAllocation GOGeometryAABR;


enum GODirection

Members

GO_DIRECTION_UP

   

GO_DIRECTION_DOWN

   

GO_DIRECTION_LEFT

   

GO_DIRECTION_RIGHT

   

GO_DIRECTION_NONE