kicad-developers team mailing list archive
Mailing list archive
Re: Sweet parser
On 1/3/2011 3:36 PM, Dick Hollenbeck wrote:
> On 01/03/2011 01:58 PM, Dick Hollenbeck wrote:
>> I just made a commit that fixes some minor issues to a commit I made last
>> night, and I can now see the inheritance mechanism working really pretty well.
I've attached the changes I made to the library part file specification last
night. I updated all of the coordinates for dimensionless units. All I did
was divide all of the coordinates by 50 (mils). I added a short blurb about
logical coordinates. I also renamed route_pin_swap and route_alt_swap to
hint_pin_swap and hint_alt_swap. I think route is too tool specific. A
hinting system that is tool agnostic makes more sense to me.
>> Today is a company holiday I was not aware of, so that gives me another day
>> to work on this stuff in an active mode. My normal mode would be more
>> intermittent, or weekend centric, than what I can spend on it today.
Always a nice surprise.
>> I will make another commit very late this evening, and then take a less
>> active role for the remainder of the week, which could give you some time on it.
I'll start messing around with it tonight as I have some to kill tonight.
>> My thinking is that we do not have units, but if you wanted to name them
>> they might be:
>> "pin intervals", "pin spaces", or "pin deltas", which means of course, the
>> standard minimum distance between two pins in the new EESCEMA.
>> A value of 1 pin delta is what you'd often see in the Sweet strings,
>> *between* pins, in either X or Y axes.
I was thinking more in terms of logical units. All items that are connectible
(pins, wires, labels, etc.) must have integer units to guarantee connectivity.
All non-connectible items (lines, text, etc.) can have non-integer units as
well. This way it doesn't matter internally what EESchema uses as it's
coordinate scalar other than making sure you don't overflow or underflow the
>> Internal Units:
>> Do we want integers, floats, or doubles. (Haven't looked at the GAL yet to
>> see what it likes.) If integers, then we need some internal unit.
>> My suggestion there would be to use 1000 pin deltas.
> oops, I meant:
> My suggestion there would be to use 1/1000th of a pin delta as the internal unit.
Seems reasonable if you want to use 32 bit coordinates.
>> This would give us the granularity to position within a 1/1000th of a normal
>> minimum pin delta. And would give us the ability on the high end to go
>> 4 billion (int32_t) / 1000 = 1 million pins per X or Y axis.
I don't know if there would be a significant performance hit using 64 bit
integers on 32 bit systems. I doubt it would be much of an issue for EESchema.
Also, don't define it as an int32_t. Otherwise, it won't build on MSVC as
stdint.h is not defined. Use wxInt32 instead. I learned this one the hard way.
>> This way we simply multiple the Sweet strings coordinates by 1000 as we
>> parse them into internal units.
>> 10000 would also be reasonable, if you wanted to position something between
>> pins within 1/10000th of a pin delta.
>> What do folks think?
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@xxxxxxxxxxxxxxxxxxx
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help : https://help.launchpad.net/ListHelp