Skip to content

This project implements a C++ library for 2D graphical objects, emphasizing core programming concepts such as inheritance, aggregation, polymorphism, and more. It utilizes Qt's GUI capabilities, featuring a user-friendly interface for manipulating object properties and adheres to agile development methodologies.

Notifications You must be signed in to change notification settings

devloos/Graphics-Modeler

Repository files navigation

2D Graphics Modeler

Contributors

Member Roles
Connor Darling Product Owner
Carlos Aguilera SCRUM Master
Cameron Rosenthal Team Member
Liam Eastwood Team Member
Joesph Bobby Team Member

IMPORTANT

Username: admin

Password: password123

Overview

This project models as a library for basic 2D graphical objects. The goal is to exercise C++ fundamentals to construct this project such as inheritance, aggregation, polymorphism, exception handling, templates, operator overloading, and move semantics. There is a Shape class interface that allows all other shapes to derive from it. To store these shapes, a custom vector class is implemented using a basic iterator member type with begin() and end() methods. To sort the vector of shape objects, a custom selection sort algorithm is implemented using templated functions to compare perimeter and area.

The program is created using the gui library Qt. Specifically QPainter and QWidgets are used to render shapes and text on the screen. The user interface is designed to be readable and simple, while still being able to handle contingencies such as invalid input. In addition to output of text and shapes in the window, the program allows a user to manipulate size, color, and location.

Our team has strongly enforced an agile development methodology. These methods include:

  • Following a scrum procress of assigning a scrum master, product owner and team member role
  • Creating user stories to help with the implementation of features
  • Creating UML class diagrams, both use case and state diagrams

User Interface Design

  • Choose demo shapes using a header pane
  • A collapsable side navigation bar to modify any default attribute of a given shape
  • Settings header pane for user settings, contact information, and save and exit

Sprints

(Sprint #1) Estimated Time: 3 weeks
  • Implement shapes.txt parser object/logic
  • Implement vector container
  • Begin implementation of shape abc interface & inheritance hierarchy (line, polyline ...)
  • Investigate/understand qt qpainter demo project
  • Build basic 2d modeler qt project with login screen

(Sprint #2) Estimated Time: 3 weeks
  • Complete implementation of shape abc interface & inheritance hierarchy (line, polyline ...)
  • Ability to render 2d shapes (2d modeler qt project)
  • Renderarea widget (inherits from qwidget like qt 2d rendering demo project) can dislpay all geometric shapes
  • Ability to render all shapes from shapes.txt in renderarea widget (2d modeler qt project)
  • Reports to display shapes, shape perimeter & area (2d modeler qt project)
  • Update 2d shapes (i.e. add, remove or move) via rendering widget forms (2d modeler qt project)
  • Persist changes to shapes.txt file

General Requirement List
  • Use inheritance
  • Use aggregation
  • Use exception handling
  • Use a virtual function
  • Use at least two overload operators
  • At least one class using templates
  • At least one class must contain a pointer (write copy constructor and test it)
  • Invalid inputs should be addressed.
  • Doxygen documentation
  • Valgrind memory leak check
  • Guests should be able to enter "satisfied customer" testimonials that persist between executions.
  • Provide "Contact us" method with team name and logo

About

This project implements a C++ library for 2D graphical objects, emphasizing core programming concepts such as inheritance, aggregation, polymorphism, and more. It utilizes Qt's GUI capabilities, featuring a user-friendly interface for manipulating object properties and adheres to agile development methodologies.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 4

  •  
  •  
  •  
  •