Test ran at 2025-10-03 01:02:19.118521+00:00 SOLUTION: lsystem_editor=1.0.0: L-Systems editor in Ada Origin: commit b01f05b870b2eb91e95f4868e259d9208afdbe34 from https://github.com/Heziode/lsystem-editor Properties: Author: Heziode Description: L-Systems editor in Ada Executable: lsystem-editor License: MIT Long_Description: App Icon # L-System Editor License A comprehensive graphical and command-line editor for creating, manipulating, and visualizing Lindenmayer systems (L-systems). This project was initially developed as part of a university project. ## What are L-Systems? L-systems (Lindenmayer systems) are a type of formal grammar introduced by biologist Aristid Lindenmayer in 1968. They are particularly useful for modeling plant growth and generating fractals. An L-system consists of: - An **alphabet** of symbols that can be used to make strings - An **axiom** (initial string) to start with - A set of **production rules** that expand each symbol into a larger string of symbols Through recursive application of these rules, complex structures can be generated from simple initial conditions. ## Features - **Interactive GUI** for creating and editing L-systems - **Command-line interface** for batch processing and automated workflows - **Real-time visualization** of the L-system at different development levels - **Export capabilities** to PS (PostScript) format for now - **Customizable rendering** with adjustable parameters (colors, margins, dimensions) - **Save and load** L-system definitions using `.ls` files ## Installation ### Using Alire (recommended) ``` alr install lsystem_editor ``` ### From Source 1. Ensure you have Ada and GtkAda installed. This project depends on GNAT Lib. 2. Clone the repository: `git clone https://github.com/Heziode/lsystem-editor.git` 3. Build with Alire: `alr build` or manually with `make` ## Usage ### GUI Mode Launch the graphical interface: ``` ./bin/lsystem_editor # Or alr run ``` The GUI offers: - A text editor area for defining L-system rules - Controls to adjust the development level - Real-time visualization of the L-system - Export options - Customization of colors and rendering parameters ### Command-Line Mode For automated processing or batch operations: ``` lsystem_editor --no-gui [OPTIONS] ``` #### Command-Line Options | Option | Long Form | Description | |--------|-----------|-------------| | `-i` | `--input=FILE` | Input file containing an L-system definition | | `-o` | `--output=FILE` | Output file to store an L-system definition | | `-e` | `--export=FORMAT` | Export format for the L-system representation | | `-p` | `--export-file=FILE` | Output file for the exported representation | | `-d` | `--develop=N` | Number of development steps to apply | | `-w` | `--width=N` | Width of the output representation | | `-h` | `--height=N` | Height of the output representation | | `-b` | `--background-color=COLOR` | Background color in hex format (e.g., #AABBCC) | | `-f` | `--foreground-color=COLOR` | Foreground color in hex format (e.g., #AABBCC) | | `-mt` | `--margin-top=N` | Top margin for rendering | | `-mr` | `--margin-right=N` | Right margin for rendering | | `-mb` | `--margin-bottom=N` | Bottom margin for rendering | | `-ml` | `--margin-left=N` | Left margin for rendering | ## L-System File Format L-system definitions are stored in `.ls` files with the following syntax: ``` [angle in degrees] [initial string] [symbol] [replacement string] [symbol] [replacement string] ... ``` ### Example L-System: Koch Curve ``` 60.0 -F++F++F F F-F++F-F ``` Where: - `F` means "draw forward" - `+` means "turn left by angle" - `-` means "turn right by angle" ## Controls in GUI Mode - **Text Editor**: Define and edit your L-system - **Validate Button**: Check if your L-system definition is valid - **Level Spinner**: Adjust the development level - **Color Controls**: Change foreground and background colors - **Export Options**: Save visualizations ## License L-System Editor is distributed under the MIT License. Copyright (c) 2018 Quentin Dauprat (Heziode) See the [LICENSE](https://github.com/Heziode/lsystem-editor/blob/master/LICENSE) file for full details. Maintainer: Heziode Maintainers_Logins: heziode Name: lsystem_editor Project_File: LSystem_Editor.gpr Tag: gtk Tag: gtk3 Tag: ada Tag: l-systems Tag: gtkada Tag: l-system Tag: editor Tag: gui Version: 1.0.0 Website: https://github.com/Heziode/lsystem-editor Dependencies (direct): gtkada^25.0.1 resources~0.1.0 Dependencies (solution): gtkada=25.0.1 libgtk3=3.24.49 make=4.4.1 pkg_config=0.29.2 resources=0.1.0 Dependencies (graph): gtkada=25.0.1 --> libgtk3=3.24.49 (>=3.24.24) gtkada=25.0.1 --> make=4.4.1 (*) gtkada=25.0.1 --> pkg_config=0.29.2 (*) lsystem_editor=1.0.0 --> gtkada=25.0.1 (^25.0.1) lsystem_editor=1.0.0 --> resources=0.1.0 (~0.1.0) LOG: [alr test] Testing lsystem_editor=1.0.0 [alr test] Spawning retrieval for remote crate: alr -d -n get lsystem_editor=1.0.0 Can't find C:\Strawberry\perl\bin\pkg-config on PATH, '.' not in PATH. Note: Deploying lsystem_editor=1.0.0... Note: Deploying resources=0.1.0... lsystem_editor=1.0.0 successfully retrieved. Dependencies were solved as follows: + gtkada 25.0.1 (new) +b libgtk3 3.24.49 (new,indirect,system package) +b make 4.4.1 (new,indirect,system package) +b pkg_config 0.29.2 (new,indirect,system package) + resources 0.1.0 (new) [alr test] Spawning default test for remote crate: alr -d -n build --release -- -cargs:Ada -gnatwn Note: Building lsystem_editor=1.0.0/LSystem_Editor.gpr... Setup [mkdir] object directory for project Resources [mkdir] library directory for project Resources [mkdir] object directory for project Lsystem_Editor [mkdir] exec directory for project Lsystem_Editor Compile [Ada] main.adb [C] whereami.c [Ada] resources.adb [Ada] lse.ads [Ada] lse-model.ads [Ada] lse-model-io.ads [Ada] lse-model-io-drawing_area.ads [Ada] lse-model-io-drawing_area-drawing_area_ptr.ads [Ada] lse-model-io-drawing_area_factory.adb [Ada] lse-model-io-text_file.adb [Ada] lse-model-io-turtle.adb [Ada] lse-model-io-turtle_utils.ads [Ada] lse-model-l_system.ads [Ada] lse-model-l_system-concrete_builder.adb [Ada] lse-model-l_system-l_system.adb [Ada] lse-presenter.ads [Ada] lse-presenter-presenter.adb [Ada] lse-view.ads [Ada] lse-view-view.adb [Ada] lse_resources.ads [Ada] lse-utils.ads [Ada] lse-utils-coordinate_2d.adb [Ada] lse-utils-utils.ads [Ada] lse-model-io-drawing_area-postscript.adb [Ada] lse-utils-coordinate_2d_ptr.ads [Ada] lse-utils-angle.adb [Ada] lse-utils-coordinate_2d_list.ads [Ada] lse-model-grammar.ads [Ada] lse-model-grammar-symbol.adb [Ada] lse-model-grammar-symbol_utils.ads [Ada] lse-model-interpreter.ads [Ada] lse-model-l_system-growth_rule_utils.ads [Ada] lsystem_editor_config.ads [Ada] lse-io.ads [Ada] lse-io-export_factory.adb [Ada] lse-utils-colors.adb [Ada] lse-model-l_system-l_system_ptr.ads [Ada] lse-model-l_system-error.adb [Ada] lse-model-l_system-error-invalid_rule.adb [Ada] lse-model-l_system-error-missing_angle.adb [Ada] lse-model-l_system-error-missing_axiom.adb [Ada] lse-model-l_system-error-missing_restore.adb [Ada] lse-model-l_system-error-missing_rule.adb [Ada] lse-model-l_system-error-missing_save.adb [Ada] lse-model-l_system-error-not_a_angle.adb [Ada] lse-model-l_system-error-unexpected_character.adb [Ada] lse-model-l_system-factory.adb [Ada] lse-io-drawing_area.adb [Ada] lse-view-callbacks.adb [Ada] lse-model-l_system-growth_rule.adb [Ada] lse-model-grammar-symbol-logoangleminus.adb [Ada] lse-model-grammar-symbol-logoangleplus.adb [Ada] lse-model-grammar-symbol-logoforward.adb [Ada] lse-model-grammar-symbol-logoforwardtrace.adb [Ada] lse-model-grammar-symbol-logopositionrestore.adb [Ada] lse-model-grammar-symbol-logopositionsave.adb [Ada] lse-model-grammar-symbol-logouturn.adb [Ada] lse-model-grammar-symbol-othersymbol.adb Build Libraries [gprlib] Resources.lexch [archive] libResources.a [index] libResources.a Bind [gprbind] main.bexch [Ada] main.ali Link [link] main.adb Success: Build finished successfully in 21.65 seconds. Found declared GPR file: LSystem_Editor.gpr [alr test] Test completed SUCCESSFULLY