aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorChristian C <cc@localhost>2025-03-23 15:34:48 -0700
committerChristian C <cc@localhost>2025-03-23 15:34:48 -0700
commit22c32ae8649e8540198942b33d4bab72c4ea7238 (patch)
tree946e173c4ab362ec88f21854e8613a21c330a6e1 /lib
parent981e8bfd12f79cb469bb54a915230eda6dafab41 (diff)
Userspace types
Diffstat (limited to 'lib')
-rw-r--r--lib/algo/avl_tree.c48
-rw-r--r--lib/data/image_types.c12
-rw-r--r--lib/png.c2
-rw-r--r--lib/seg/mask_data.c82
-rw-r--r--lib/seg/util.c12
5 files changed, 78 insertions, 78 deletions
diff --git a/lib/algo/avl_tree.c b/lib/algo/avl_tree.c
index 9ac5d47..7b86bab 100644
--- a/lib/algo/avl_tree.c
+++ b/lib/algo/avl_tree.c
@@ -5,7 +5,7 @@
#include <stdio.h>
// Get the height of an AVL node
-AvlHeight_t get_height(struct AVLNode* node)
+AvlHeight_t get_height(AVLNode* node)
{
if (node == NULL) {
return 0;
@@ -20,7 +20,7 @@ AvlHeight_t max_height(AvlHeight_t a, AvlHeight_t b)
}
// Get the balance factor of a node
-ssize_t get_balance_factor(struct AVLNode* node)
+ssize_t get_balance_factor(AVLNode* node)
{
if (node == NULL) {
return 0;
@@ -29,10 +29,10 @@ ssize_t get_balance_factor(struct AVLNode* node)
}
// Rotate an AVL node right
-struct AVLNode* right_rotate(struct AVLNode* parent)
+AVLNode* right_rotate(AVLNode* parent)
{
- struct AVLNode* child1 = parent->left;
- struct AVLNode* child2 = child1->right;
+ AVLNode* child1 = parent->left;
+ AVLNode* child2 = child1->right;
child1->right = parent;
parent->left = child2;
@@ -43,10 +43,10 @@ struct AVLNode* right_rotate(struct AVLNode* parent)
}
// Rotate an AVL node left
-struct AVLNode* left_rotate(struct AVLNode* parent)
+AVLNode* left_rotate(AVLNode* parent)
{
- struct AVLNode* child1 = parent->right;
- struct AVLNode* child2 = child1->left;
+ AVLNode* child1 = parent->right;
+ AVLNode* child2 = child1->left;
child1->left = parent;
parent->right = child2;
@@ -57,9 +57,9 @@ struct AVLNode* left_rotate(struct AVLNode* parent)
}
// Create AVL node
-struct AVLNode* create_avl_node(void* data, AvlComparator compare)
+AVLNode* create_avl_node(void* data, AvlComparator compare)
{
- struct AVLNode* node = (struct AVLNode*)malloc(sizeof(struct AVLNode));
+ AVLNode* node = (AVLNode*)malloc(sizeof(AVLNode));
if (node == NULL) {
return NULL;
}
@@ -72,12 +72,12 @@ struct AVLNode* create_avl_node(void* data, AvlComparator compare)
}
// Insert data into AVL tree
-struct Result avl_insert(struct AVLNode* node, void* data, AvlComparator compare)
+Result avl_insert(AVLNode* node, void* data, AvlComparator compare)
{
- struct Result result;
+ Result result;
// 1. Standard BST insertion
if (node == NULL) {
- return (struct Result) {create_avl_node(data, compare), TRUE};
+ return (Result) {create_avl_node(data, compare), TRUE};
}
if (node->compare(data, node->data)) {
@@ -86,16 +86,16 @@ struct Result avl_insert(struct AVLNode* node, void* data, AvlComparator compare
fprintf(stderr, "Failed to insert!");
return result;
}
- node->left = (struct AVLNode*)result.data;
+ node->left = (AVLNode*)result.data;
} else if (node->compare(node->data, data)) {
result = avl_insert(node->right, data, compare);
if (!result.success) {
fprintf(stderr, "Failed to insert!");
return result;
}
- node->right = (struct AVLNode*)result.data;
+ node->right = (AVLNode*)result.data;
} else {
- return (struct Result) {node, FALSE};
+ return (Result) {node, FALSE};
}
// 2. Update height of the ancestor node
@@ -107,25 +107,25 @@ struct Result avl_insert(struct AVLNode* node, void* data, AvlComparator compare
// LeftLeft
if ((balance > 1) && node->compare(data, node->left->data)) {
- return (struct Result) {right_rotate(node), TRUE};
+ return (Result) {right_rotate(node), TRUE};
}
// RightRight
if ((balance < -1) && node->compare(node->right->data, data)) {
- return (struct Result) {left_rotate(node), TRUE};
+ return (Result) {left_rotate(node), TRUE};
}
// LeftRight
if ((balance > 1) && node->compare(node->left->data, data)) {
- return (struct Result) {right_rotate(node), TRUE};
+ return (Result) {right_rotate(node), TRUE};
}
// RightLeft
if ((balance < -1) && node->compare(data,node->right->data)) {
- return (struct Result) {left_rotate(node), TRUE};
+ return (Result) {left_rotate(node), TRUE};
}
- return (struct Result) {node, TRUE};
+ return (Result) {node, TRUE};
}
// In-order traversal print pointer
-void print_in_order(struct AVLNode* root)
+void print_in_order(AVLNode* root)
{
if (root != NULL) {
print_in_order(root->left);
@@ -135,7 +135,7 @@ void print_in_order(struct AVLNode* root)
}
// Free avl tree nodes starting at root
-void free_avl_tree(struct AVLNode* root)
+void free_avl_tree(AVLNode* root)
{
if (root != NULL) {
free_avl_tree(root->left);
@@ -145,7 +145,7 @@ void free_avl_tree(struct AVLNode* root)
}
// Free avl tree and their data starting at root
-void free_avl_tree_nodes(struct AVLNode* root)
+void free_avl_tree_nodes(AVLNode* root)
{
if (root != NULL) {
free_avl_tree_nodes(root->left);
diff --git a/lib/data/image_types.c b/lib/data/image_types.c
index c33a88e..0375a24 100644
--- a/lib/data/image_types.c
+++ b/lib/data/image_types.c
@@ -1,9 +1,9 @@
#include <lib/data/image_types.h>
#include <stdlib.h>
-struct Image* create_image(size_t width, size_t height)
+Image* create_image(size_t width, size_t height)
{
- struct Image* ip = (struct Image*)malloc(sizeof(struct Image));
+ Image* ip = (Image*)malloc(sizeof(Image));
ip->width = width;
ip->height = height;
ip->image = (ImageData_t**)malloc(sizeof(ImageData_t*) * ip->height);
@@ -14,9 +14,9 @@ struct Image* create_image(size_t width, size_t height)
return ip;
}
-struct ImageMask* create_image_mask(size_t width, size_t height)
+ImageMask* create_image_mask(size_t width, size_t height)
{
- struct ImageMask* ip = (struct ImageMask*)malloc(sizeof(struct ImageMask));
+ ImageMask* ip = (ImageMask*)malloc(sizeof(ImageMask));
ip->width = width;
ip->height = height;
ip->mask = (ImageMaskData_t**)malloc(sizeof(ImageMaskData_t*) * ip->height);
@@ -27,7 +27,7 @@ struct ImageMask* create_image_mask(size_t width, size_t height)
return ip;
}
-void free_image(struct Image* image)
+void free_image(Image* image)
{
if (image->image[0] != NULL) {
free(image->image[0]);
@@ -42,7 +42,7 @@ void free_image(struct Image* image)
}
}
-void free_image_mask(struct ImageMask* image_mask)
+void free_image_mask(ImageMask* image_mask)
{
if (image_mask->mask[0] != NULL) {
free(image_mask->mask[0]);
diff --git a/lib/png.c b/lib/png.c
index 8d71ac8..5da0b95 100644
--- a/lib/png.c
+++ b/lib/png.c
@@ -4,7 +4,7 @@
#include <png.h>
// Save bitmap to file
-void save_png(struct bitmap_t* bitmap, char* fname)
+void save_png(Bitmap* bitmap, char* fname)
{
FILE *fp;
png_structp png_ptr = NULL;
diff --git a/lib/seg/mask_data.c b/lib/seg/mask_data.c
index dc3a811..52a3ac4 100644
--- a/lib/seg/mask_data.c
+++ b/lib/seg/mask_data.c
@@ -4,9 +4,9 @@
#include <stdio.h>
// Allocate Mask Data for Label
-struct MaskData* create_mask_data(ImageMaskData_t label)
+MaskData* create_mask_data(ImageMaskData_t label)
{
- struct MaskData *data = (struct MaskData*)malloc(sizeof(struct MaskData));
+ MaskData *data = (MaskData*)malloc(sizeof(MaskData));
data->label = label;
data->area = 0;
data->perimeter = 0;
@@ -14,15 +14,15 @@ struct MaskData* create_mask_data(ImageMaskData_t label)
}
// Compare mask data labels
-bool_t compare_labels(struct MaskData* left, struct MaskData* right)
+bool_t compare_labels(MaskData* left, MaskData* right)
{
return left->label < right->label;
}
// Create AVL Mask node
-struct AVLNode* create_avl_mask_node(struct MaskData* data)
+AVLNode* create_avl_mask_node(MaskData* data)
{
- struct AVLNode* node = (struct AVLNode*)malloc(sizeof(struct AVLNode));
+ AVLNode* node = (AVLNode*)malloc(sizeof(AVLNode));
if (node == NULL) {
return NULL;
}
@@ -35,31 +35,31 @@ struct AVLNode* create_avl_mask_node(struct MaskData* data)
}
// Insert MaskData into the AVL Tree
-struct Result insert_mask(struct AVLNode* node, struct MaskData* data)
+Result insert_mask(AVLNode* node, MaskData* data)
{
- struct Result result;
+ Result result;
// 1. Standard BST insertion
if (node == NULL) {
- return (struct Result) {create_avl_mask_node(data), TRUE};
+ return (Result) {create_avl_mask_node(data), TRUE};
}
- struct MaskData *node_data = (struct MaskData*)node->data;
+ MaskData *node_data = (MaskData*)node->data;
if (node->compare(data, node_data)) {
result = insert_mask(node->left, data);
if (!result.success) {
fprintf(stderr, "Failed to insert!");
return result;
}
- node->left = (struct AVLNode*)result.data;
+ node->left = (AVLNode*)result.data;
} else if (node->compare(node->data, data)) {
result = insert_mask(node->right, data);
if (!result.success) {
fprintf(stderr, "Failed to insert!");
return result;
}
- node->right = (struct AVLNode*)result.data;
+ node->right = (AVLNode*)result.data;
} else {
- return (struct Result) {node, FALSE};
+ return (Result) {node, FALSE};
}
// 2. Update height of the ancestor node
@@ -71,53 +71,53 @@ struct Result insert_mask(struct AVLNode* node, struct MaskData* data)
// LeftLeft
if ((balance > 1) && node->compare(data, node->left->data)) {
- return (struct Result) {right_rotate(node), TRUE};
+ return (Result) {right_rotate(node), TRUE};
}
// RightRight
if ((balance < -1) && node->compare(node->right->data, data)) {
- return (struct Result) {left_rotate(node), TRUE};
+ return (Result) {left_rotate(node), TRUE};
}
// LeftRight
if ((balance > 1) && node->compare(node->left->data, data)) {
- return (struct Result) {right_rotate(node), TRUE};
+ return (Result) {right_rotate(node), TRUE};
}
// RightLeft
if ((balance < -1) && node->compare(data,node->right->data)) {
- return (struct Result) {left_rotate(node), TRUE};
+ return (Result) {left_rotate(node), TRUE};
}
- return (struct Result) {node, TRUE};
+ return (Result) {node, TRUE};
}
// Allocate a label's Mask data in a tree
// If it already exists, skip the allocation
-struct AVLNode* insert_mask_alloc(struct AVLNode* node, ImageMaskData_t label)
+AVLNode* insert_mask_alloc(AVLNode* node, ImageMaskData_t label)
{
- struct MaskData* data = create_mask_data(label);
- struct Result result = insert_mask(node, data);
+ MaskData* data = create_mask_data(label);
+ Result result = insert_mask(node, data);
if (!result.success) {
free(data);
}
- return (struct AVLNode*)result.data;
+ return (AVLNode*)result.data;
}
// Print AVL Node Mask Data Label
-void print_label(struct AVLNode* root)
+void print_label(AVLNode* root)
{
if (root != NULL) {
print_label(root->left);
- struct MaskData* data = root->data;
+ MaskData* data = root->data;
printf("%d: (%zu, %zu) ", data->label, data->area, data->perimeter);
print_label(root->right);
}
}
// Increase the label's area
-bool_t increase_label_area(struct AVLNode* root, ImageMaskData_t label)
+bool_t increase_label_area(AVLNode* root, ImageMaskData_t label)
{
if (root == NULL) {
return FALSE;
}
- struct MaskData* data = (struct MaskData*)root->data;
+ MaskData* data = (MaskData*)root->data;
if (data->label == label) {
data->area++;
}
@@ -131,12 +131,12 @@ bool_t increase_label_area(struct AVLNode* root, ImageMaskData_t label)
}
// Increase the label's perimeter
-bool_t increase_label_perimeter(struct AVLNode* root, ImageMaskData_t label)
+bool_t increase_label_perimeter(AVLNode* root, ImageMaskData_t label)
{
if (root == NULL) {
return FALSE;
}
- struct MaskData* data = (struct MaskData*)root->data;
+ MaskData* data = (MaskData*)root->data;
if (data->label == label) {
data->perimeter++;
}
@@ -151,9 +151,9 @@ bool_t increase_label_perimeter(struct AVLNode* root, ImageMaskData_t label)
// Increase the label's area
// Create an AVL node if it doesn't exist
-struct AVLNode* increase_label_area_alloc(struct AVLNode* root, ImageMaskData_t label)
+AVLNode* increase_label_area_alloc(AVLNode* root, ImageMaskData_t label)
{
- struct AVLNode* new_root = root;
+ AVLNode* new_root = root;
bool_t success = increase_label_area(new_root, label);
if (success == FALSE) {
new_root = insert_mask_alloc(new_root, label);
@@ -164,9 +164,9 @@ struct AVLNode* increase_label_area_alloc(struct AVLNode* root, ImageMaskData_t
// Increase the label's perimeter
// Create an AVL node if it doesn't exist
-struct AVLNode* increase_label_perimeter_alloc(struct AVLNode* root, ImageMaskData_t label)
+AVLNode* increase_label_perimeter_alloc(AVLNode* root, ImageMaskData_t label)
{
- struct AVLNode* new_root = root;
+ AVLNode* new_root = root;
bool_t success = increase_label_perimeter(new_root, label);
if (success == FALSE) {
new_root = insert_mask_alloc(new_root, label);
@@ -182,7 +182,7 @@ bool_t compare_image_mask_data_t(ImageMaskData_t* s1, ImageMaskData_t* s2)
}
// In-order traversal print pointer
-void print_in_order_image_mask_data_t(struct AVLNode* root)
+void print_in_order_image_mask_data_t(AVLNode* root)
{
if (root != NULL) {
print_in_order_image_mask_data_t(root->left);
@@ -192,7 +192,7 @@ void print_in_order_image_mask_data_t(struct AVLNode* root)
}
// Check if ImageMaskData_t in AVLTree with ImageMaskData_t* data
-bool_t in_image_mask_data_t_tree(struct AVLNode* root, ImageMaskData_t value)
+bool_t in_image_mask_data_t_tree(AVLNode* root, ImageMaskData_t value)
{
if (root == NULL) {
return FALSE;
@@ -208,15 +208,15 @@ bool_t in_image_mask_data_t_tree(struct AVLNode* root, ImageMaskData_t value)
// Filter out small masks
// Assumption: Contiguous labeling
-struct AVLNode* get_small_labels(struct AVLNode* removal_tree, struct AVLNode* label_tree, size_t min_area, size_t min_perimeter)
+AVLNode* get_small_labels(AVLNode* removal_tree, AVLNode* label_tree, size_t min_area, size_t min_perimeter)
{
- struct AVLNode* return_tree = removal_tree;
+ AVLNode* return_tree = removal_tree;
if (label_tree != NULL) {
return_tree = get_small_labels(return_tree, label_tree->left, min_area, min_perimeter);
- struct MaskData* node_data = (struct MaskData*)label_tree->data;
+ MaskData* node_data = (MaskData*)label_tree->data;
if ((node_data->area < min_area) || (node_data->perimeter < min_perimeter)) {
// Insert
- struct Result result = avl_insert(return_tree, &node_data->label, (bool_t (*)(void*,void*))compare_image_mask_data_t);
+ Result result = avl_insert(return_tree, &node_data->label, (bool_t (*)(void*,void*))compare_image_mask_data_t);
if (result.success) {
return_tree = result.data;
}
@@ -227,9 +227,9 @@ struct AVLNode* get_small_labels(struct AVLNode* removal_tree, struct AVLNode* l
}
// Get mask label data
-struct AVLNode* get_mask_data(ImageMaskData_t* masks, uint32_t width, uint32_t height)
+AVLNode* get_mask_data(ImageMaskData_t* masks, uint32_t width, uint32_t height)
{
- struct AVLNode* root = NULL;
+ AVLNode* root = NULL;
for (size_t y = 0; y < height; y++) {
for (size_t x = 0; x < width; x++) {
size_t coord = x + y*width;
@@ -247,8 +247,8 @@ struct AVLNode* get_mask_data(ImageMaskData_t* masks, uint32_t width, uint32_t h
// Filter out small masks in mask
void filter_small_masks(ImageMaskData_t* masks, uint32_t width, uint32_t height, size_t min_area, size_t min_perimeter)
{
- struct AVLNode* root = get_mask_data(masks, width, height);
- struct AVLNode* small_label_tree = NULL;
+ AVLNode* root = get_mask_data(masks, width, height);
+ AVLNode* small_label_tree = NULL;
small_label_tree = get_small_labels(NULL, root, min_area, min_perimeter);
for (size_t y = 0; y < height; y++) {
for (size_t x = 0; x < width; x++) {
diff --git a/lib/seg/util.c b/lib/seg/util.c
index 2952952..6eee1a2 100644
--- a/lib/seg/util.c
+++ b/lib/seg/util.c
@@ -202,7 +202,7 @@ void closeup(ImageMaskData_t** mask, uint32_t width, uint32_t height, size_t num
// Combine Label Masks
// For all empty spaces in the destination, put the extra label if it exists
// Allocates an array if destination is unallocated
-struct ImageMask* combine_masks(struct ImageMask *destination, struct ImageMask *extra_labels)
+ImageMask* combine_masks(ImageMask *destination, ImageMask *extra_labels)
{
if (destination == NULL) {
destination = create_image_mask(extra_labels->width, extra_labels->height);
@@ -220,7 +220,7 @@ struct ImageMask* combine_masks(struct ImageMask *destination, struct ImageMask
// Process Tif File to Labels
// width, height will be overwritten with image dimensions
// starting_label_p will be incremented for each label found in the image
-struct ImageMask* tif_to_labels(char* tif_file_name, uint32_t *width, uint32_t *height, ImageMaskData_t *starting_label_p)
+ImageMask* tif_to_labels(char* tif_file_name, uint32_t *width, uint32_t *height, ImageMaskData_t *starting_label_p)
{
TIFFSetWarningHandler(TiffDummyHandler);
//-TIFF-IMAGE-OPEN-------------------------------
@@ -268,7 +268,7 @@ struct ImageMask* tif_to_labels(char* tif_file_name, uint32_t *width, uint32_t *
//-FLOOD-FILL-SEGMENTATION-----------------------
//-CONTIGUOUS-REGION-FINDING---------------------
- struct ImageMask *im_data = create_image_mask((size_t)*width, (size_t)*height);
+ ImageMask *im_data = create_image_mask((size_t)*width, (size_t)*height);
if (im_data == NULL) {
fprintf(stderr, "Memory allocation error\n");
free(image_data);
@@ -316,13 +316,13 @@ struct ImageMask* tif_to_labels(char* tif_file_name, uint32_t *width, uint32_t *
}
// Convert mask to bitmap
-struct bitmap_t* image_mask_data_to_bitmap(ImageMaskData_t* buffer, uint32_t width, uint32_t height)
+Bitmap* image_mask_data_to_bitmap(ImageMaskData_t* buffer, uint32_t width, uint32_t height)
{
- struct pixel_t* out_buffer = (struct pixel_t*)calloc(width*height, sizeof(struct pixel_t));
+ Pixel* out_buffer = (Pixel*)calloc(width*height, sizeof(Pixel));
if (out_buffer == NULL) {
return NULL;
}
- struct bitmap_t* bitmap = (struct bitmap_t*)malloc(sizeof(struct bitmap_t));
+ Bitmap* bitmap = (Bitmap*)malloc(sizeof(Bitmap));
if (bitmap == NULL) {
free(out_buffer);
return NULL;