[Gtkradiant] [Bug
1109] WrongcalculationofBEZIERCURVETREE_MAX_INDEX
Ondrej Svetlik
ondrej at svetlik.info
Tue Sep 12 09:37:48 CDT 2006
Joseph, William wrote:
> or
>
> std::size_t(1) << (std::numeric_limits<std::size_t>::digits - 1)
>
> -----Original Message-----
> From: gtkradiant-bounces at zerowing.idsoftware.com
> [mailto:gtkradiant-bounces at zerowing.idsoftware.com] On Behalf Of Joseph,
> William
> Sent: 12 September 2006 15:20
> To: GtkRadiant developer discussion
> Subject: RE: [Gtkradiant] [Bug 1109]
> WrongcalculationofBEZIERCURVETREE_MAX_INDEX
>
>
> The value also has to be a power of two - the largest representable
> power of two.
> The way you're using numeric_limits makes a (possibly safe) assumption
> that numeric_limits<size_t>::max() will be (2^n - 1). If it's not, then
> the result won't be a power of two.
> Bit-shifting is the obvious way to calculate 2^n at compile-time.
>
> This is the way I would do it:
> std::size_t(1) << ((sizeof(std::size_t) * 8) - 1)
>
> this compiles on x86:
> std::size_t(1) << 31 // 2^31
>
> and on x86_64:
> std::size_t(1) << 63 // 2^63
>
> To test that the value is correct, create a patch cyclinder. If it looks
> curved, then it's working.
Cylinder looks like a cylinder :-). Dense cylinder and very dense look
the same. Moving control points deforms it as I would expect. I'll test
it again after size_t is back.
-oxs
More information about the Gtkradiant
mailing list