/** * glass_data.h - header file from glass_data.c. * * Copyright (C) 2025 https://optics-design.com * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * See the COPYING file for the full license text. */ #ifndef GLASS_DATA_H #define GLASS_DATA_H #include "glamacdef.h" // For type definitions #include "glamac_errors.h" // For error handling // Structure to represent an optical glass typedef struct { byte name[50]; f32 abbeNumber; // X-axis (vd) f32 refractiveIndex; // Y-axis (nd) byte glass_code[20]; // Glass code from manufacturer byte manufacturer[20]; // Manufacturer name } Glass; // Get number of glasses in the catalog u32 get_glass_count(void); // Get glass at index const Glass* get_glass(u32 index); // Get glass name const byte* get_glass_name(u32 index); // Find data range in glass catalog void find_glass_data_range(f32 *minAbbe, f32 *maxAbbe, f32 *minRI, f32 *maxRI); // Initialize glass data - call at program start void initialize_glass_data(void); // Load glasses from JSON file b32 load_glasses_from_json(const byte* json_path, const byte* manufacturer_filter); // Cleanup glass data resources void cleanup_glass_data(void); // Catalog management u32 get_catalog_count(void); const char* get_catalog_name(u32 catalog_index); const char* get_current_catalog_name(void); void set_current_catalog(u32 catalog_index); void cycle_catalog(i32 direction); // +1 for next, -1 for previous #endif /* GLASS_DATA_H */