113 int defaultNodeShape;
114 float dist = FLT_MAX;
120 defaultNodeShape=
getAttrBool(g,g,
"defaultnodeshape",0);
122 if(defaultNodeShape==0)
130 if(defaultNodeShape==1)
243 if (selPoly->
cnt < 2)
246 ( (selPoly->
pts[0].
x-pt.
x) <
EPS) &&
275 selPoly->
pts[selPoly->
cnt-1].
x=pt.
x;
276 selPoly->
pts[selPoly->
cnt-1].
y=pt.
y;
277 selPoly->
pts[selPoly->
cnt-1].
z=0;
Memory allocation wrappers that exit on failure.
static void * gv_recalloc(void *ptr, size_t old_nmemb, size_t new_nmemb, size_t size)
static double dist(int dim, double *x, double *y)
float GetOGLDistance(float l)
float distBetweenPts(glCompPoint A, glCompPoint B, float R)
int is_point_in_rectangle(float X, float Y, float RX, float RY, float RW, float RH)
double point_to_lineseg_dist(glCompPoint p, glCompPoint a, glCompPoint b)
Agsym_t * agattr(Agraph_t *g, int kind, char *name, const char *value)
creates or looks up attributes of a graph
int agxset(void *obj, Agsym_t *sym, const char *value)
Agedge_t * agfstout(Agraph_t *g, Agnode_t *n)
Agedge_t * agnxtout(Agraph_t *g, Agedge_t *e)
Agnode_t * agnxtnode(Agraph_t *g, Agnode_t *n)
Agnode_t * agfstnode(Agraph_t *g)
void deselect_all(Agraph_t *g)
static void * pick_object(Agraph_t *g, glCompPoint p)
static void pick_objects_in_rect(Agraph_t *g, float x1, float y1, float x2, float y2)
void pick_objects_rect(Agraph_t *g)
static void select_node(Agraph_t *g, Agnode_t *obj, int reverse)
void clear_selpoly(glCompPoly *sp)
static void select_edge(Agraph_t *g, Agedge_t *obj, int reverse)
static void select_polygon(Agraph_t *g, glCompPoly *selPoly)
void pick_object_xyz(Agraph_t *g, topview *t, float x, float y, float z)
static int close_poly(glCompPoly *selPoly, glCompPoint pt)
void add_selpoly(Agraph_t *g, glCompPoly *selPoly, glCompPoint pt)
int point_in_polygon(glCompPoly *selPoly, glCompPoint p)
int getAttrBool(Agraph_t *g, void *obj, char *attr_name, int def)
void cacheSelectedEdges(Agraph_t *g, topview *t)
void cacheSelectedNodes(Agraph_t *g, topview *t)