diff --git a/include/hexagram/cluster.h b/include/hexagram/cluster.h index 8514dc6..86b33e8 100644 --- a/include/hexagram/cluster.h +++ b/include/hexagram/cluster.h @@ -24,6 +24,14 @@ typedef struct _hexagram_cluster { } state; } hexagram_cluster; +void hexagram_cluster_resize(hexagram_cluster *cluster, + double width, + double height); + +void hexagram_cluster_init(hexagram_cluster *cluster, + double width, + double height); + hexagram_cluster *hexagram_cluster_new(double width, double height); diff --git a/src/cluster.c b/src/cluster.c index 2184ccd..1338366 100644 --- a/src/cluster.c +++ b/src/cluster.c @@ -3,13 +3,9 @@ #include -hexagram_cluster *hexagram_cluster_new(double width, double height) { - hexagram_cluster *cluster; - - if ((cluster = malloc(sizeof(*cluster))) == NULL) { - goto error_malloc_cluster; - } - +void hexagram_cluster_resize(hexagram_cluster *cluster, + double width, + double height) { /* * Ensure correct cluster aspect ratio */ @@ -50,11 +46,24 @@ hexagram_cluster *hexagram_cluster_new(double width, double height) { cluster->width = width; cluster->height = height; +} + +void hexagram_cluster_init(hexagram_cluster *cluster, + double width, + double height) { + hexagram_cluster_resize(cluster, width, height); - /* - * Initialize mutable state - */ memset(&cluster->state, '\0', sizeof(cluster->state)); +} + +hexagram_cluster *hexagram_cluster_new(double width, double height) { + hexagram_cluster *cluster; + + if ((cluster = malloc(sizeof(*cluster))) == NULL) { + goto error_malloc_cluster; + } + + hexagram_cluster_init(cluster, width, height); return cluster;