# Roo - Unofficial Goo Format Parser for Elegoo 3D Printers

Roo is a Rust library that enables you to parse `.goo` files, the proprietary format used by Elegoo 3D printers. This library is not officially associated with Elegoo and is a community-driven project.

Roo is inspired by the UVTools project, and is essentially a rewrite of the `GooFile.cs` class found in that project. The purpose of this library is to make it easier for Rust developers to work with `.goo` files.

## Installation

To use Roo in your project, add the following to your `Cargo.toml` file:

```toml
[dependencies]
roo_parser = "0.1.0"
```

Then run `cargo build` to download and compile Roo.

## Usage

Here is a basic example of how you can use Roo to load and count the layers in a `.goo` file:

```rust
use std::fs::File;
use roo::Roo;

fn main() {
    // Specify the path to your .goo file
    let path = "/path/to/your/file.goo";
    
    // Open the file
    let file = match File::open(&path) {
        Err(why) => panic!("couldn't open {}: {}", path, why),
        Ok(file) => file,
    };

    // Create a Roo object from the file
    let mut roo = Roo::from_file(file).expect("Failed to parse the .goo file");

    // Iterate over the layers in the .goo file
    let mut layer_count = 0;
    while let Some(layer) = roo.next() {
        println!("Layer {}: {:?}", layer_count, layer);
        layer_count += 1;
    }

    println!("Total layers: {}", layer_count);
}

```

In this example, we open a `.goo` file, create a `Roo` object from it, and then we iterate over each layer in the file, printing it out and incrementing a count. At the end, we assert that the count is 32, which is the expected number of layers in our test file.

## Contributing

Contributions are welcome! Please feel free to submit a Pull Request or open an Issue.

## License

MIT License

## Disclaimer

This library is not officially associated with Elegoo. It is a community project and is not endorsed by or affiliated with Elegoo in any way. Use this library at your own risk.