aboutsummaryrefslogtreecommitdiff
path: root/include/lib/seg
diff options
context:
space:
mode:
authorChristian C <cc@localhost>2025-03-05 16:14:18 -0800
committerChristian C <cc@localhost>2025-03-05 16:14:18 -0800
commit74e46ee7709785f91e04ac42619e4a7e9f90bc18 (patch)
tree82f5140c42cff58d9a980e2737eea808e1820560 /include/lib/seg
parenta3684826417bf9cea4c24e8a82e9574feb64576d (diff)
Modularize
Diffstat (limited to 'include/lib/seg')
-rw-r--r--include/lib/seg/mask_data.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/include/lib/seg/mask_data.h b/include/lib/seg/mask_data.h
new file mode 100644
index 0000000..595ffd6
--- /dev/null
+++ b/include/lib/seg/mask_data.h
@@ -0,0 +1,46 @@
+#ifndef INC_LIB_SEG_MASK_DATA_H
+#define INC_LIB_SEG_MASK_DATA_H
+
+#include <lib/algo/avl_tree.h>
+#include <lib/monad.h>
+
+struct MaskData {
+ uint16_t label;
+ size_t area;
+ size_t perimeter;
+};
+
+// Allocate Mask Data for Label
+struct MaskData* create_mask_data(uint16_t label);
+
+// Compare mask data labels
+bool_t compare_labels(struct MaskData* left, struct MaskData* right);
+
+// Create AVL Mask node
+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);
+
+// Allocate a label's Mask data in a tree
+// If it already exists, skip the allocation
+struct AVLNode* insert_mask_alloc(struct AVLNode* node, uint16_t label);
+
+// Print AVL Node Mask Data Label
+void print_label(struct AVLNode* root);
+
+// Increase the label's area
+bool_t increase_label_area(struct AVLNode* root, uint16_t label);
+
+// Increase the label's perimeter
+bool_t increase_label_perimeter(struct AVLNode* root, uint16_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, uint16_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, uint16_t label);
+
+#endif