Computing">
Proyecto #2 - Paint++
Proyecto #2 - Paint++
Proyecto #2 - Paint++
Objetivo General
➔ Desarrollar una aplicación utilizando el lenguaje de programación C++.
Objetivos Específicos
➔ Aplicar conceptos de pathfinding y manipulación de matrices.
➔ Investigar y desarrollar una aplicación en el lenguaje de programación C++
➔ Investigar sobre manipulación de imágenes en C++
➔ Aplicar patrones de diseño en la solución de un problema.
● El usuario puede crear un canvas de un tamaño en pixeles definido por el mismo usuario.
● El sistema permite agregar figuras geométricas predefinidas. El usuario puede arrastrar dichas figuras
y cambiar el tamaño
● El sistema es capaz de borrar trazos o figuras completas utilizando la función de borrador. El tamaño
del borrador puede cambiarse a criterio del usuario
● El sistema permite dibujar utilizando la función de lápiz. El usuario puede seleccionar el color y el
ancho de los trazos.
● El sistema permite dibujar líneas rectas utilizando la función de lapicero. El usuario selecciona dos
puntos en el canvas y se dibuja la línea. Al igual que la función de lápiz, usuario puede seleccionar el
grosor y color de los trazos
● El sistema provee la función de color picker para determinar el color RGB de un pixel seleccionado
● El sistema provee la función paint-fill para pintar una región. El usuario da click en algún píxel de la
imagen y aplicando BFS, se pintan los pixeles alrededor hasta que el área circundante sea de otro
color.
● El sistema provee la opción de rotar el canvas/imagen al igual que la opción de hacer flip horizontal y
vertical
● El sistema lleva el registro de todos los comandos aplicados, por lo que usuario puede hacer undo y
redo.
● El sistema debe proveer una funcionalidad de zoom.
● El sistema provee una funcionalidad para seleccionar secciones de la imagen.
○ Selección rectangular
○ Selección free-form
○ Selección mágica (similar a paint fill pero para seleccionar)
● Debe ser posible salvar el canvas en un archivo BMP y volver a abrirlo posteriormente así como cargar
imagenes BMP construidas fuera de Paint++
● Debe ser posible aplicar un filtro de escala de grises a la imagen y un filtro negativo
● Puntos extra: diseñar e implementar dos filtros adicionales para las imágenes.
● No se permite el uso de OpenCV o cualquier otra biblioteca de manipulación de imágenes.
Documentación requerida
1. Internamente, el código se debe documentar siguiendo los estándares de documentación para C++.
2. La documentación externa se hará en un documento que incluya lo siguiente (deberá entregarse un
PDF):
a. Breve descripción del problema.
b. Diagrama de clases.
c. Descripción de las estructuras de datos desarrolladas.
d. Descripción de los algoritmos implementados para cada funcionalidad
e. Problemas encontrados en forma de bugs de github: En esta sección se detalla cualquier
problema que no se ha podido solucionar en el trabajo.
3. Planificación y administración del proyecto: se utilizará Jira para la administración del proyecto. Debe
incluir:
a. Lista de features e historias de usuario identificados de la especificación.
b. Plan de iteraciones que agrupen cada bloque de historias de usuario de forma que se vea un
desarrollo incremental
c. Descomposición de cada user story en tareas.
Objetivo General
➔ Elaborar un documento que evidencie la participación activa de los integrantes del equipo de acuerdo
con el rol asignado y la ejecución adecuada de los lineamientos establecidos por el grupo para el
trabajo en equipo.
Objetivos Específicos
➔ Participar activamente en el equipo de trabajo de acuerdo con el rol asignado.
➔ Ejecutar adecuadamente los lineamientos para el trabajo en equipo (metas, roles, reglas, cronogramas,
bitácoras, otros).
Atributos de Acreditación
➔ Trabajo individual y en equipo (Medio).