processing / processing/processing4
PShape does not provide getters for rectMode / ellipseMode
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 494
- Forks
- 183
- Avg merge
- 4h 39m
- Merged PRs (30d)
- 3
Description
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
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start in the PShape class and inspect the protected ellipseMode and rectMode fields alongside its existing public API. Add a way for callers to query both modes, then verify that primitive-shape conversion code can distinguish the meanings of the parameters for each mode.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- computer-graphics
- Issue type
- Feature
- Difficulty
- 2/5
- Estimated time
- 1-3 hours
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100