Graph-Layout-Aesthetic
view release on metacpan or search on metacpan
include/aglo.h view on Meta::CPAN
#ifndef aglo_h
# define aglo_h 1
#define C_OBJECT(object, class, context) \
aglo_c_object(aTHX_ &(object), class, context)
extern void *aglo_c_object(pTHX_ SV **object, const char *class,
const char *context);
#define C_CHECK(object, class, context) \
aglo_c_check(aTHX_ object, class, context)
extern void *aglo_c_check(pTHX_ SV *object, const char *class,
const char *context);
typedef UV aglo_unsigned;
typedef IV aglo_signed;
typedef double aglo_real;
typedef enum aglo_boolean {
false=0,
true=!false
} aglo_boolean;
typedef aglo_unsigned aglo_vertex;
typedef struct aglo_edge_record {
aglo_vertex tail; /* edge: head -> tail */
aglo_boolean forward; /* not tail -> head */
struct aglo_edge_record *next;
} *aglo_edge_record;
typedef struct aglo_graph {
aglo_boolean done;
aglo_vertex vertices;
aglo_signed level_sequence; /* abused as a boolean currently,
later drop finish test and do a real
sequence number check */
aglo_vertex nr_levels;
aglo_signed *at_level;
aglo_vertex *level_sorted_vertex;
aglo_vertex **level2nodes;
void *private_data;
void *user_data;
aglo_edge_record edge_table[1]; /* must be last */
} *aglo_graph;
typedef aglo_real *aglo_point;
typedef const aglo_real *aglo_const_point;
typedef aglo_real *aglo_gradient;
typedef struct aglo_state {
aglo_graph graph; /* Topology */
SV *graph_sv; /* perl object reference for graph */
struct use_force *forces;
aglo_real temperature;
aglo_real end_temperature;
aglo_unsigned iterations;
aglo_unsigned dimensions; /* e.g. 2 means 2-dimensional space */
aglo_signed sequence; /* bumped when state changed */
aglo_signed centroid_sequence;
aglo_gradient gradient, force_gradient;
aglo_boolean paused;
aglo_point cached_centroid;
aglo_point point[1]; /* State vector, must be last */
} *aglo_state;
typedef void aglo_aesth_gradient_fx(pTHX_ aglo_state state,
aglo_gradient gradient, void *private);
typedef aglo_aesth_gradient_fx *aglo_aesth_gradient;
typedef void *aglo_aesth_setup_fx(pTHX_ SV *force_sv, SV *state_sv,
aglo_state state);
typedef aglo_aesth_setup_fx *aglo_aesth_setup;
typedef void aglo_aesth_cleanup_fx(pTHX_ aglo_state state,
void *private);
typedef aglo_aesth_cleanup_fx *aglo_aesth_cleanup;
typedef struct aglo_force {
aglo_aesth_gradient aesth_gradient;
aglo_aesth_setup aesth_setup;
aglo_aesth_cleanup aesth_cleanup;
void *private_data;
void *user_data;
} *aglo_force;
typedef struct use_force {
aglo_real weight;
aglo_force force;
SV *force_sv;
void *private;
struct use_force *next;
} *use_force;
extern void aglo_frame_coordinates(aglo_state state,
aglo_point min_frame,
aglo_point max_frame);
extern void aglo_iso_frame_coordinates(aglo_state state,
aglo_point min_frame,
aglo_point max_frame);
extern void aglo_normalize_state(aglo_state state);
extern void aglo_randomize(pTHX_ aglo_state state, aglo_real size);
#endif /* aglo_h */
( run in 0.664 second using v1.01-cache-2.11-cpan-71847e10f99 )