processing / processing/processing4

PShape does not provide getters for rectMode / ellipseMode

Abierto
#1,359 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

enhancement
Lenguaje dominante
Java
Estrellas
494
Forks
183
Merge medio
4 h 39 min
PR fusionados (30 d)
3

Descripción

Most relevant area for this enhancement?

Core/Environment/Rendering

Feature to enhance

The PShape class

Enhancement details
Enhancement description

I was half way developing some classes to convert between PShapes and OPENRNDR Shapes but got stuck.

When dealing with PShape.PRIMITIVE types, PShape.getKind() returns what kind of shape is it (rect, ellipse, ...) and the PShape.getParams() returns an array of float values (x, y, width...) One needs to know the kind to know what the float values mean. But it's not sufficient, because if one called ellipseMode before, the values may mean center x and y, or corner x and y, either width or radius.

I didn't find a way to query ellipseMode or rectMode.

Benefits

Adding a way to query this information would help cross framework use of the PShape data structures.

Challenges

I think adding two getters to PShape shouldn't have any negative impact, but I'm not very familiar with the code base to be sure.

Additional context

Here a wip function where I try to convert an ELLIPSE PShape to an OPENRNDR Shape. This is incomplete, because the meaning of params 0, 1, 2 and 3 depend on the ellipseMode used, and there's no way to figure this out (I think).

        PShape.PRIMITIVE -> {
            listOf( // 101
                when (kind) {
                    PShape.RECT -> Rectangle( // 30
                        params[0] * 1.0, params[1] * 1.0,
                        params[2] * 1.0, params[3] * 1.0
                    ).contour

                    PShape.ELLIPSE -> Ellipse( // 31
                        params[0] * 1.0, params[1] * 1.0,
                        params[2] * 0.5, params[3] * 0.5
                    ).contour

                    PShape.LINE -> LineSegment(
                        params[0] * 1.0, params[1] * 1.0,
                        params[2] * 1.0, params[3] * 1.0
                    ).contour

                    // ARC, TRIANGLE, QUAD, SPHERE, BOX
                    else -> error("unsupported primitive kind: $kind")
                }
            )

PShape holds ellipseMode and rectMode variables, but they are protected and without getters.

Would you like to help implement this enhancement?

I’m not sure yet

Guía de contribución

Abrir la guía de contribución

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Línea de trabajo

Comienza en la clase PShape e inspecciona los campos protegidos ellipseMode y rectMode junto con su API pública existente. Añade una forma para que los llamadores puedan consultar ambos modos y, después, verifica que el código de conversión de formas primitivas pueda distinguir el significado de los parámetros para cada modo.

Escrito por el modelo de indexación a partir del texto del issue.

Evaluación

Stack tecnológico
java
Área
computer-graphics
Tipo de issue
Nueva funcionalidad
Dificultad
2/5
Tiempo estimado
1-3 horas
Estado de actividad
Estancado
Claridad
Bastante claro
Aptitud para principiantes
48/100

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.