Skip to content

Latest commit

ย 

History

194 Commits

Folders and files

NameName
Last commit message
Last commit date
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

๐Ÿ–ผ๏ธ 2D Image Editor - Standalone Software

๐Ÿงฉ Description

This project is a complete 2D image editor built with JavaFX as a standalone desktop application, designed to work with PNM image formats (PBM, PGM, PPM).
It was developed as part of the Software Engineering II and Operating Systems modules at SUPSI (2024โ€“2025).

The editor supports a modular and extensible design and follows Agile principles (Scrum), unit and UI testing, and strong architectural practices (Layering, MVC, Design Patterns).

๐Ÿงฑ Software Architecture

The application is composed of two clearly separated Maven modules:

๐Ÿ”ง Backend

Implements a Layered Architecture:

  • Application Layer: coordination and orchestration
  • Business Layer: transformation logic, error management
  • Data Access Layer: reading/writing PNM files

The backend is fully decoupled from the GUI and is designed for reusability and testability.

๐ŸŽจ Frontend

Developed in JavaFX using MVC, with a dedicated controller dispatching events and updates to the view.
Notable design features:

  • Observer Pattern: notifies UI components of model changes
  • Adapter Pattern: unifies interaction between different UI elements (e.g., buttons, menu items)
  • Abstract Factory Pattern: dynamic creation of format-specific image readers

๐ŸŽฎ Main Features

  • ๐Ÿ“‚ Load and display PNM images (PBM, PGM, PPM โ€“ plain text and binary)
  • ๐Ÿ”„ Apply image transformations:
    • Flip (vertical and horizontal)
    • Rotate 90ยฐ (clockwise and counter-clockwise)
    • Negative
  • ๐Ÿงช Prepare and run a pipeline of transformation steps
  • ๐Ÿ’พ Save modified images in PNM format
  • ๐Ÿ•“ Reopen recently used images
  • ๐ŸŒ Multilingual UI without real-time switching
  • ๐Ÿ“ User preferences saved in a plain-text config file
  • โ„น๏ธ Application info panel (version, build date, credits)

๐Ÿ› ๏ธ Technologies Used

  • Language: Java 17
  • GUI Framework: JavaFX
  • Build Tool: Maven (multi-module)
  • Patterns: MVC, Observer, Adapter, Abstract Factory
  • Persistence: PNM format, preferences in plain text
  • Testing: JUnit 5, Mockito, JavaFX UI testing (robot)

๐Ÿš€ How to Run the Project

โš ๏ธ Ensure Java (JDK 17 or higher) is installed.

  1. Clone the repository:
    git clone https://github.com/antoniomarroffino/2D-Image-Editor.git
  2. Navigate into the project folder:
    cd 2D-Image-Editor
  3. Build and run the application:
    mvn javafx:run

Alternatively, execute the standalone .jar file located in the build/ or target/ directory.

๐Ÿ“ฆ Requirements

  • Java Development Kit (JDK) 17+
  • JavaFX SDK (bundled or added via Maven)
  • OS Compatibility: Windows, macOS, Linux

๐Ÿ“š Educational Goals

During the development, the following software engineering practices were applied:

  • Agile methodology with Scrum (sprints, backlog, iterations)
  • Software architecture principles (layering, modularization)
  • Design patterns to support maintainability and scalability
  • Internationalization and user interaction design
  • Configuration management (Git, Maven)
  • Comprehensive testing (unit + end-to-end)

The system aligns with the Open-Closed Principle (OCP), allowing new editing operations or file formats to be added without modifying the existing code.

โœ… Project Status

โœ”๏ธ Completed in December 2024
๐Ÿ”’ No further maintenance planned

๐Ÿ‘ค Author

Antonio Marroffino


๐Ÿ“œ License

This project was developed for educational purposes as part of the Bachelor's degree in Computer Engineering at SUPSI.

About

๐Ÿ–ผ๏ธ A lightweight but extensible 2D image editor supporting PNM formats, developed in JavaFX. Features include image transformation pipelines, multilingual UI, and user preference persistence.

Topics

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages