aboutsummaryrefslogtreecommitdiff
path: root/include
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 /include
parent981e8bfd12f79cb469bb54a915230eda6dafab41 (diff)
Userspace types
Diffstat (limited to 'include')
-rw-r--r--include/lib/algo/avl_tree.h23
-rw-r--r--include/lib/data/image_types.h16
-rw-r--r--include/lib/monad.h4
-rw-r--r--include/lib/png.h12
-rw-r--r--include/lib/seg/mask_data.h32
-rw-r--r--include/lib/seg/util.h7
6 files changed, 48 insertions, 46 deletions
diff --git a/include/lib/algo/avl_tree.h b/include/lib/algo/avl_tree.h
index 4400aa6..0221952 100644
--- a/include/lib/algo/avl_tree.h
+++ b/include/lib/algo/avl_tree.h
@@ -2,6 +2,7 @@
#define INC_LIB_ALGO_AVL_TREE_H
#include <lib/bool.h>
+#include <lib/monad.h>
#include <stdint.h>
#include <stdlib.h>
#include <sys/types.h>
@@ -10,42 +11,42 @@
typedef bool_t (*AvlComparator)(void*, void*);
-struct AVLNode {
+typedef struct AVLNode {
void* data;
AvlComparator compare;
struct AVLNode* left;
struct AVLNode* right;
AvlHeight_t height;
-};
+} AVLNode;
// Get the height of an AVL node
-AvlHeight_t get_height(struct AVLNode* node);
+AvlHeight_t get_height(AVLNode* node);
// Get the Maximum Height between two
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);
// Rotate an AVL node right
-struct AVLNode* right_rotate(struct AVLNode* parent);
+AVLNode* right_rotate(AVLNode* parent);
// Rotate an AVL node left
-struct AVLNode* left_rotate(struct AVLNode* parent);
+AVLNode* left_rotate(AVLNode* parent);
// Create AVL node
-struct AVLNode* create_avl_node(void* data, AvlComparator compare);
+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);
// In-order traversal print pointer
-void print_in_order(struct AVLNode* root);
+void print_in_order(AVLNode* root);
// Free avl tree nodes starting at root
-void free_avl_tree(struct AVLNode* root);
+void free_avl_tree(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);
#endif
diff --git a/include/lib/data/image_types.h b/include/lib/data/image_types.h
index 020dd59..ca97d21 100644
--- a/include/lib/data/image_types.h
+++ b/include/lib/data/image_types.h
@@ -7,22 +7,22 @@
#define ImageData_t uint8_t
#define ImageMaskData_t uint16_t
-struct Image {
+typedef struct Image {
size_t width;
size_t height;
ImageData_t** image;
-};
+} Image;
-struct ImageMask {
+typedef struct ImageMask {
size_t width;
size_t height;
ImageMaskData_t** mask;
-};
+} ImageMask;
-struct Image* create_image(size_t width, size_t height);
-struct ImageMask* create_image_mask(size_t width, size_t height);
+Image* create_image(size_t width, size_t height);
+ImageMask* create_image_mask(size_t width, size_t height);
-void free_image(struct Image* image);
-void free_image_mask(struct ImageMask* image_mask);
+void free_image(Image* image);
+void free_image_mask(ImageMask* image_mask);
#endif
diff --git a/include/lib/monad.h b/include/lib/monad.h
index 74db079..af5eb3a 100644
--- a/include/lib/monad.h
+++ b/include/lib/monad.h
@@ -3,9 +3,9 @@
#include <lib/bool.h>
-struct Result {
+typedef struct Result {
void* data;
bool_t success;
-};
+} Result;
#endif
diff --git a/include/lib/png.h b/include/lib/png.h
index ddc1db3..c21fede 100644
--- a/include/lib/png.h
+++ b/include/lib/png.h
@@ -8,19 +8,19 @@
#define PixelSize_t uint8_t
#define PixelDepth_t uint8_t
-struct pixel_t {
+typedef struct pixel_t {
PixelChannel_t red;
PixelChannel_t green;
PixelChannel_t blue;
-};
+} Pixel;
-struct bitmap_t {
- struct pixel_t* image_buffer;
+typedef struct bitmap_t {
+ Pixel* image_buffer;
size_t width;
size_t height;
-};
+} Bitmap;
// Save bitmap to file
-void save_png(struct bitmap_t* bitmap, char* fname);
+void save_png(Bitmap* bitmap, char* fname);
#endif
diff --git a/include/lib/seg/mask_data.h b/include/lib/seg/mask_data.h
index bbaf38c..91b9074 100644
--- a/include/lib/seg/mask_data.h
+++ b/include/lib/seg/mask_data.h
@@ -5,60 +5,60 @@
#include <lib/data/image_types.h>
#include <lib/monad.h>
-struct MaskData {
+typedef struct MaskData {
ImageMaskData_t label;
size_t area;
size_t perimeter;
-};
+} MaskData;
// Allocate Mask Data for Label
-struct MaskData* create_mask_data(ImageMaskData_t label);
+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);
// Create AVL Mask node
-struct AVLNode* create_avl_mask_node(struct MaskData* data);
+AVLNode* create_avl_mask_node(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);
// 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);
// Print AVL Node Mask Data Label
-void print_label(struct AVLNode* root);
+void print_label(AVLNode* root);
// 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);
// 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);
// 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);
// 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);
// Comparison of ImageMaskData_ts
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);
// 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);
// 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);
// 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);
// 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);
diff --git a/include/lib/seg/util.h b/include/lib/seg/util.h
index 395c5cd..88389f6 100644
--- a/include/lib/seg/util.h
+++ b/include/lib/seg/util.h
@@ -2,6 +2,7 @@
#define INC_LIB_SEG_UTIL_H
#include <lib/bool.h>
+#include <lib/png.h>
#include <lib/data/image_types.h>
#include <stdint.h>
#include <stddef.h>
@@ -25,15 +26,15 @@ void closeup(ImageMaskData_t** mask, uint32_t width, uint32_t height, size_t cou
// 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);
// 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);
// 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);
// Reduce a mask to the contiguous regions
// Automatically update pointer to contiguous mask