# BEdgeBreaker.h

## Macro Definitions

| `EB_DEFAULT`
| `HINT_ONE_PIECE`
| `HINT_WATERTIGHT`
| `HINT_MANIFOLD`
| `HINT_NO_HANDLES`
| `HINT_NO_BACKWARDS_OR_HOLES`
| `HINT_INPUT_BY_TRISTRIPS`
| `STATUS_ERROR`
| `STATUS_NORMAL`
| `STATUS_COMPLETE`
| `STATUS_WATERTIGHT`
| `STATUS_TRY_AGAIN`
| `MTABLE_HAS_LENGTHS`
| `MTABLE_HAS_M2STACKOFFSETS`
| `MTABLE_HAS_M2GATEOFFSETS`
| `MTABLE_HAS_DUMMIES`
| `MTABLE_HAS_PATCHES`
| `MTABLE_HAS_BOUNDING`
| `MTABLE_HAS_QUANTIZATION`
| `MTABLE_HAS_QUANTIZATION_NORMALS`
| `CASE_C`
| `CASE_L`
| `CASE_E`
| `CASE_R`
| `CASE_S`
| `CASE_M`
| `CASE_M2`
| `TONEXT4`
| `MAXVAL`
| `BIG_FLOAT`
| `DEFAULT_QUANTIZATION`
| `DEFAULT_POINT_FACTOR`
| `DEFAULT_HINTS`
| `POINTSIZE`
| `GARBAGE_VERTEX`
| `DUMMY_VERTEX`
| `GARBAGE`
| `VERTEX_SPECIAL`
| `INVALIDATE_VERTEX`
| `EA_VERTEX_INDEX`
| `PROXY_VERTEX_INDEX`
| `GARBAGE_EDGE`
| `MULTIPLE_EDGE`
| `EDGE_SPECIAL`
| `EDGE_INVALID`
| `INVALIDATE_EDGE`
| `REAL_EDGE_INDEX`
| `I2V`
| `V2I`
| `HALF_EDGE_INIT`
| `HNEXT`
| `HPREV`

## Types

| ET_Bounding_TAG
| eb_compress_configs_TAG
| eb_decompress_configs_TAG
| edgebreaker_header0
| edgebreaker_header1
| EDGEBREAKER_HEADER_TAG
| mtable_info
| HALF_EDGE_TAG
| half_edge_array
| int_stack
| varstream
| loop_table

## Type Aliases

struct ET_Bounding_TAG | `ET_Bounding`
struct eb_compress_configs_TAG | `eb_compress_configs`
struct eb_decompress_configs_TAG | `eb_decompress_configs`
struct EDGEBREAKER_HEADER_TAG | `edgebreaker_header`
struct HALF_EDGE_TAG | `half_edge`
short | `INT16`
int | `INT32`

## Functions

int | `show_edgebreaker_compress_size`
int | `edgebreaker_compress`
int | `show_edgebreaker_decompress_size`
int | `edgebreaker_decompress`
void | `mtable_info_init`
void | `mtable_info_free`
int | `lookup_vertex`
void | `predict`
int | `old_predict`
int | `old_pack_points`
int | `old_unpack_points`
int | `old_unpack_normals`
int | `int_stack_init`
int | `int_stack_expand`
void | `int_stack_free`
int | `int_stack_pop`
int | `int_stack_pop_internal`
void | `int_stack_push`
void | `int_stack_push_if_unique`
int | `validate_associations`
int | `half_edge_array_init`
void | `half_edge_array_free`
int | `half_edge_array_expand`
int | `half_edge_array_append`
int | `validate_edge`
void * | `default_malloc`
void | `default_free`
void | `default_new_vertex`
void | `vsinit_write`
void | `vsinit_read`
void | `vsfree`
void | `vsswap`
void | `vsput`
int | `vsget`

## Detailed Description

## Macro Definition

`EB_DEFAULT`

`HINT_ONE_PIECE`

`HINT_WATERTIGHT`

`HINT_MANIFOLD`

`HINT_NO_HANDLES`

`HINT_NO_BACKWARDS_OR_HOLES`

`HINT_INPUT_BY_TRISTRIPS`

`STATUS_ERROR`

`STATUS_NORMAL`

`STATUS_COMPLETE`

`STATUS_WATERTIGHT`

`STATUS_TRY_AGAIN`

`MTABLE_HAS_LENGTHS`

`MTABLE_HAS_M2STACKOFFSETS`

`MTABLE_HAS_M2GATEOFFSETS`

`MTABLE_HAS_DUMMIES`

`MTABLE_HAS_PATCHES`

`MTABLE_HAS_BOUNDING`

`MTABLE_HAS_QUANTIZATION`

`MTABLE_HAS_QUANTIZATION_NORMALS`

`CASE_C`

`CASE_L`

`CASE_E`

`CASE_R`

`CASE_S`

`CASE_M`

`CASE_M2`

`TONEXT4`(i)

`MAXVAL`(bits)

`BIG_FLOAT`

`DEFAULT_QUANTIZATION`

`DEFAULT_POINT_FACTOR`

`DEFAULT_HINTS`

`POINTSIZE`

`GARBAGE_VERTEX`

`DUMMY_VERTEX`

`GARBAGE`

`VERTEX_SPECIAL`(x)

`INVALIDATE_VERTEX`(x)

`EA_VERTEX_INDEX`(x)

`PROXY_VERTEX_INDEX`(proxy_hash, v)

`GARBAGE_EDGE`

`MULTIPLE_EDGE`

`EDGE_SPECIAL`(x)

`EDGE_INVALID`(x)

`INVALIDATE_EDGE`(x)

`REAL_EDGE_INDEX`(x)

`I2V`(x)

`V2I`(x)

`HALF_EDGE_INIT`(h)

`HNEXT`(i)

`HPREV`(i)

## Type Alias Documentation

typedef struct ET_Bounding_TAG `ET_Bounding`

typedef struct eb_compress_configs_TAG `eb_compress_configs`

typedef struct eb_decompress_configs_TAG `eb_decompress_configs`

typedef struct EDGEBREAKER_HEADER_TAG `edgebreaker_header`

typedef struct HALF_EDGE_TAG `half_edge`

typedef short `INT16`

typedef int `INT32`

## Function Documentation

int `show_edgebreaker_compress_size`(int pcount, int flen, int const *face_data, int *stream_len_out, int *pointmap_count_out, eb_compress_configs const *configs)

int `edgebreaker_compress`(int pcount, float const *points, float const *normals, int flen, int const *fdata_in, int *stream_len_in_out, void *stream_out, int *pointmap_len_in_out, int *pointmap_out, eb_compress_configs const *configs)

int `show_edgebreaker_decompress_size`(int stream_len, void const *stream, int *pcount_out, int *normal_count_out, int *flen_out)

int `edgebreaker_decompress`(int stream_len, void const *stream, int *pcount_in_out, float *points_out, float *normals_out, bool *by_tristrips_out, int *flen_in_out, int *faces_out, eb_decompress_configs const *configs)

void `mtable_info_init`(mtable_info *m)

void `mtable_info_free`(mtable_info *m)

int `lookup_vertex`(const struct vhash_s *proxy_hash, int v)

void `predict`(half_edge_array const *ea, int ei, int third_vertex_unknown, char const *touched, struct vhash_s const *proxy_hash, int const *quantized_points, int *prediction_out)

int `old_predict`(int const *associations, int const *points, ET_Bounding const *bounding, int x_quantization, int y_quantization, int z_quantization, int *out)

int `old_pack_points`(mtable_info *mtable, int *associations, edgebreaker_header *hptr, int original_pointcount, int const *pointmap, float const *points, int buffsize, void *buffer_out, eb_compress_configs const *configs)

int `old_unpack_points`(int const *associations, edgebreaker_header const *hptr, void const *diffs_in, float *points_out, ET_Bounding const *bounding, int x_quantization, int y_quantization, int z_quantization)

int `old_unpack_normals`(int const *associations, edgebreaker_header const *hptr, void const *diffs_in, float *normals_out, int x_quantization_normals, int y_quantization_normals, int z_quantization_normals)

int `int_stack_init`(int_stack *s)

int `int_stack_expand`(int_stack *s)

void `int_stack_free`(int_stack *s)

int `int_stack_pop`(int_stack *s)

int `int_stack_pop_internal`(int_stack *s, int offset, int *out)

void `int_stack_push`(int_stack *s, int n)

void `int_stack_push_if_unique`(int_stack *s, int n)

int `validate_associations`(int const *associations, int pointcount)

int `half_edge_array_init`(half_edge_array *ea, int initial_size)

void `half_edge_array_free`(half_edge_array *ea)

int `half_edge_array_expand`(half_edge_array *ea)

int `half_edge_array_append`(half_edge_array *ea, half_edge **out)

int `validate_edge`(half_edge_array const *ea, half_edge const *a, loop_table const *loops)

void *`default_malloc`(size_t size, void *user_data)

void `default_free`(void *ptr, void *user_data)

void `default_new_vertex`(int a, int b, int c, void *user_data)

void `vsinit_write`(varstream *vs, int size, void *pointer)

void `vsinit_read`(varstream *vs, int size, void *pointer)

void `vsfree`(varstream *vs)

void `vsswap`(varstream *vs)

void `vsput`(varstream *vs, int const *numbits_array, int val)

int `vsget`(varstream *vs, int const *numbits_array)

Conversation saved
HOOPSY BETA

### Hello! I'm HOOPSY

Your multilingual generative AI assistant for documentation. Ask me anything about HOOPS Visualize 3DF in your own language, or choose a sample question below to start a conversation:

What is HOOPS Visualize 3DF?
What are the latest release notes for HOOPS Visualize 3DF?
How do I start evaluating HOOPS Visualize 3DF?
How do I write my first sample application?
How can I get assistance?

HOOPSY may store conversations according to OpenAI's policy. Responses may not always be accurate.

HOOPSY is thinking...