processing / processing/processing4
PShape does not provide getters for rectMode / ellipseMode
Nessuno ha ancora preso questa issue.
- Lingua principale
- Java
- Stelle
- 494
- Fork
- 183
- Merge medio
- 4h 39m
- PR unite (30g)
- 3
Descrizione
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
Guida per i contributori
Apri la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Direzione di ricerca
Inizia nella classe PShape ed esamina i campi protetti ellipseMode e rectMode insieme alla relativa API pubblica esistente. Aggiungi un modo che consenta ai chiamanti di interrogare entrambe le modalità, quindi verifica che il codice di conversione delle forme primitive possa distinguere il significato dei parametri per ciascuna modalità.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Valutazione
- Stack tecnologico
- java
- Ambito
- computer-graphics
- Tipo di issue
- Funzionalità
- Difficoltà
- 2/5
- Tempo stimato
- 1-3 ore
- Stato di attività
- Ferma
- Chiarezza
- Abbastanza chiara
- Idoneità per principianti
- 48/100