← Back to team overview

kicad-developers team 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:
>> Wayne,
>>
>> 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.
>>

Dick,

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.

>>
>> =================
>>
>> Units:
>>
>> 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
integer.

>>
>>
>> =================
>>
>> 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.

Wayne

>>
>> 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?
>>
>> Dick
>>
> 
> 
> _______________________________________________
> 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
> 

Attachment: eeschema_part_sexpr_format_EN.odt
Description: application/vnd.oasis.opendocument.text


Follow ups

References