I definitely think a library for generic CG compatible types would be
great. I also think the standard library may need adaptation to allow
integers and floats to be used in generic structures (there isn't common
protocols for arithmetic operators, and those operators have different
implications for signed vs unsigned, float versus integer, etc.).
However I do not think they are fundamental enough as data structures and
data types to be in the standard library.
I would support something like CGVector (for 1,2,4,8... components), if
that can expose hardware vector optimisations that may not otherwise be
accessible. However that may be implemented efficiently enough with a third
party c library (like this https://github.com/mattt/Surge), and afaik may
already be under consideration for the built-in Float types.
On Thu, Jan 7, 2016 at 6:54 PM, Charles Constant via swift-evolution < firstname.lastname@example.org> wrote:
But that's conversion though, right? That's part of what I find
stressful. If I'm using Ints internally, I don't ever need to worry about
getting wonky results because of floating point math.
On Wed, Jan 6, 2016 at 11:45 PM, John Randolph <email@example.com> wrote:
> On Jan 6, 2016, at 11:38 PM, Charles Constant <firstname.lastname@example.org> >> wrote:
> > I can certainly think of situations where I might want integer based
rectangles, sizes, and points.
> I'm quite biased this week, because I spent *yesterday* writing a file
for my project with "IntRect" "IntPoint" "IntSize" ad nauseam. It's not
something I'm very thrilled to have as part of my Audio app - a lone file
of geometric structs that aready exist if you use CGFloats, where I don't
get the full implementation, etc. And previously, I've written code that I
needed land on whole numbers, and the extra concern about finding the right
options in Cocoa to do so just stressed me out.
FWIW, NSIntegralRect() and CGRectIntegral() do exist. Note their
entirely different naming conventions.
Would be much nicer to just use myRect.integralRect when I need to round
it. Might also be nice to have myRect.roundedOut and myRect.roundedIn for
a bit more control of which way the sides move.
swift-evolution mailing list