Object Hierarchy

  GEnum
   +----GODirection

Description

Details

GOGeometryAABR

typedef struct _GogViewAllocation GOGeometryAABR;


GOGeometryOBR

typedef struct {
        double x, y;
        double w, h;
        double alpha;
} GOGeometryOBR;

double x;

horizontal position of the center.

double y;

vertical position of the center.

double w;

width of edge.

double h;

height of edge.

double alpha;

Aangle from x axis to w edge, in radians.

enum GOGeometryRotationType

typedef enum {
	GO_ROTATE_NONE = 0,
	GO_ROTATE_COUNTERCLOCKWISE = 1,
	GO_ROTATE_UPSIDEDOWN = 2,
	GO_ROTATE_CLOCKWISE = 3,
	GO_ROTATE_FREE = 4
} GOGeometryRotationType;

GO_ROTATE_NONE

no rotation.

GO_ROTATE_COUNTERCLOCKWISE

counter clockwise.

GO_ROTATE_UPSIDEDOWN

upside down.

GO_ROTATE_CLOCKWISE

clockwise.

GO_ROTATE_FREE

free rotation.

enum GOGeometrySide

typedef enum {
	GO_SIDE_LEFT		= 1 << 0,
	GO_SIDE_RIGHT		= 1 << 1,
	GO_SIDE_LEFT_RIGHT = 3 << 0,
	GO_SIDE_TOP		= 1 << 2,
	GO_SIDE_BOTTOM		= 1 << 3,
	GO_SIDE_TOP_BOTTOM = 3 << 2,
	GO_SIDE_AUTO		= 15
} GOGeometrySide;

GO_SIDE_LEFT

left.

GO_SIDE_RIGHT

right.

GO_SIDE_LEFT_RIGHT

left or right.

GO_SIDE_TOP

top.

GO_SIDE_BOTTOM

bottom.

GO_SIDE_TOP_BOTTOM

top or bottom.

GO_SIDE_AUTO

auto.

GO_GEOMETRY_ANGLE_TOLERANCE

#define GO_GEOMETRY_ANGLE_TOLERANCE 1E-3


enum GODirection

typedef enum {
	GO_DIRECTION_UP    = 0,
	GO_DIRECTION_DOWN  = 1,
	GO_DIRECTION_LEFT  = 2,
	GO_DIRECTION_RIGHT = 3,
	GO_DIRECTION_NONE  = 4
} GODirection;

GO_DIRECTION_UP

up.

GO_DIRECTION_DOWN

down.

GO_DIRECTION_LEFT

left.

GO_DIRECTION_RIGHT

right.

GO_DIRECTION_NONE

no direction.

go_direction_get_name ()

char const *        go_direction_get_name               (GODirection d);


go_direction_is_forward ()

gboolean            go_direction_is_forward             (GODirection d);

d :

GODirection

Returns :

TRUE for GO_DIRECTION_DOWN or GO_DIRECTION_RIGHT.

go_direction_is_horizontal ()

gboolean            go_direction_is_horizontal          (GODirection d);

d :

GODirection

Returns :

TRUE for GO_DIRECTION_LEFT and GO_DIRECTION_RIGHT.

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.

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 Bounding Rectangle of obr in aabr.

obr :

a GOGeometryOBR

aabr :

a GOGeometryAABR

go_geometry_calc_label_anchor ()

GOGeometrySide      go_geometry_calc_label_anchor       (GOGeometryOBR *obr,
                                                         double alpha);

obr :

bounding rectangle of label

alpha :

angle of axis

Returns :

computed label anchor, to be used by go_geometry_calc_label_position.

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.

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_cartesian_to_polar ()

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

Converts cartesion coordinates to polar coordinates.

x :

cartesian coordinate

y :

cartesian coordinate

rho :

polar coordinate

theta :

polar coordinate

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)

alpha :

angle in radians

Returns :

a GOGeometryRotationType

go_geometry_point_to_segment ()

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

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_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.

obr0 :

a GOGeometryOBR

obr1 :

a GOGeometryOBR

Returns :

TRUE if OOBRs overlap