Re: [Kicad-developers] exploiting human readability

2010-10-11 Thread Dick Hollenbeck

> Attached is the result of the first 1/2 hour of work.  Sorry I did not
> get more time this weekend on it.
>
> More over the next several days.
>   

More now.

Almost big enough now to test against doxygen.

Dick



// Author Dick Hollenbeck 


typedef std::string STRING;
typedef std::vector< STRING >  STRINGS;


const STRING StrEmpty = "";



/**
 * Class LPID (aka GUID)
 * is a Logical Part ID and consists of various portions much like a URI.  It
 * relies heavily on a logical library name to hide where actual physical library
 * sources reside.  Its static functions serve as managers of the library table to
 * map logical library names to actual library sources.
 * 
 * Example LPID string:
 * "kicad:passives/R".
 * 
 * 
 *  "kicad" is the logical library name.
 *  "passives" is the category.
 *  "passives/R" is the partname.
 * 
 * 
 * This class owns the library table, which is like fstab in concept and maps logical
 * library name to library URI, type, and password. It has the following columns:
 * 
 *  Logical Library Name
 *  Library Type
 *  Library URI
 *  Password
 * 
 * 
 * For now, the Library Type can be one of:
 * 
 *  "dir"
 *  "schematic"  i.e. a parts list
 *  "subversion"
 *  "bazaar"
 *  "http"
 * 
 * For now, the Library URI types needed to support the various types can be one of:
 * 
 *  "file://C:/mylib"
 *  "svn://kicad.org/partlib/trunk"
 *  "http://kicad.org/partlib";
 * 
 * The library table is built up from several sources, and is a contatonation
 * of those sources.
 */
class LPID  // aka GUID
{
/**
 * Constructor LPID
 * takes aLPID string and parses it.  A typical LPID string uses a logical
 * library name followed by a part name.
 * e.g.: "kicad:passives/R".
 */
LPID( const STRING& aLPID ) throw( PARSE_ERROR );

/**
 * Function GetLogLib
 * returns the logical library portion of a LPID.
 */
STRING  GetLogLib();

/**
 * Function GetCategory
 * returns the category of this part id, "passives" in the example at the
 * top of the class description.
 */
STRING  GetCategory();


//--

/**
 * Function GetLibraryURI
 * returns the full library path from a logical library name.
 */
static STRING  GetLibraryURI( const STRING& aLogicalLibraryName );

/**
 * Function GetLibraryType
 * returns the type of a logical library.
 */
static STRING GetLibraryType( const STRING& aLogicalLibraryName );

/**
 * Function GetLogLibraries
 * returns the logical library names, all of them.
 */
static STRINGS GetLogLibraries();
};


class LIBRARY_SOURCE
{
public:
/*
NRVO described:
http://msdn.microsoft.com/en-us/library/ms364057%28VS.80%29.aspx

Even with NRVO provided by the compilers, I don't see it being as lean as
having the LIBARY keep an expanded member STRING for the aResult value. So I
am heading towards passing STRING* aResult and STRINGS* aResults. Rather
than returning a STRING.
*/


virtual STRING GetSourceType();


virtual void ReadPart( STRING* aResult, const STRING& aName, const STRING& aRev=StrEmpty ) throw( IOError ) = 0;

virtual void ReadParts( STRINGS* aResults, const STRINGS& aNames ) throw( IOError ) = 0;

virtual void GetCategories( STRINGS* aResults ) throw( IOError ) = 0;

virtual void GetCategoricalParts( STRINGS* aResults, const STRING& aCategory ) throw( IOError ) = 0;

virtual void GetRevisions( STRINGS* aResults, const STRING& aName ) throw( IOError ) = 0;

virtual void FindParts( STRINGS* aResults, const STRING& aQuery ) throw( IOError ) = 0;

protected:
STRING  sourceType;
STRING  sourceURI;
};


class LIBRARY_SINK
{
public:
virtual void WritePart( const STRING& aName, const STRING& aSExpression ) throw ( IOERROR ) = 0;

protected:
STRING  sinkType;
STRING  sinkURI;
};


class LIBRARYS
{
static LIBRARY* MakeLIBRARY( const STRING& aLogicalLibrary ) throw( IOError );

static LIBRARY* FindOpened( const STRING& aLogicalLibrary );

~LIBRARIES();


private:

/// collection of LIBRARYs, searchable by logical name.
std::map< STRING, LIBRARY* >libraries;  // owns the LIBRARYs.
};




/**
 * Class LIBRARY
 * is a cache of parts.
 */
class LIBRARY
{
public:

/**
 * Constructor LIBRARY
 *
 * @param aLogicalLibrary is the name of a well know logical library, and is
 *  known because it already exists in the library table.
 *
 * @param aLibrarySource is an open LIBRARY_SOURCE whose ownership is
 *  given over to this LIBRARY.
 *
 * @param aLibrarySink is an ope

Re: [Kicad-developers] Improving usability of KiCad

2010-10-11 Thread Dick Hollenbeck
On 10/11/2010 01:29 PM, Brian F. G. Bidulock wrote:
> Alex,
>
> On Mon, 11 Oct 2010, Alex G wrote:
>   
>> Please guys, stop arguing. I agree with changing the base unit system to
>> metric, and I have already voiced that opinion. No one tried to chop my
>> throat. If it makes sense to switch to metric why not do it?
>>
>> The real question is wether it makes sense.
>> 
> I have several 1000-ball BGAs on a metric pitch.  Every other ball is off
> its position by part of 1/1th of an inch.  No problem?  Well when
> pulling dogbones for BGA breakout, I wind up with about 1000 0.1mil segments
> connecting the imperial gridded vias to the imperial gridded balls.  So
> I tried unlocking the 45-degree tracks pulling slightly off 45-degrees so
> that there were no 0.1mil segments.  Instead I got 1000 DRC errors (yeah,
> its tight in there), and a thousand 0.0mil segments.  Then there is the
> performance problems associated with drawing thousands of 0.1mil or 0.0mil
> traces.  Hard locking to a 10 nanometer minimum grid would remove all these
> problems.  Any time pads, pins or lands are on a metric pitch, the same
> problems arise.
>
> The maximum precision allowed by RS-274X is 6.6 for metric, so it makes
> sense to use 1 nanometer as the internal unit.
>   


Brian,

This is something I would not oppose.  Its clear we may need finer
granularity on the *internal* units.

In any case, this rounding problem is intolerable.  The internal units
are the grand unifier between the two or more types of real world units.

We should also support more than one type of real world units, by
mentioning them in the part or footprint.

Internally however, I'd like to work with the *internal* units.

One poster said something that I still wonder about, and that C++ cannot
reliably multiple and divide by 2.54 and do a round trip conversion
using the current internal unit granularity.

It is mind boggling that 2.54 and using a C++ double does not allow this
to happen.  I don't have time to test it, but I am wondering about it. 
Is this a problem with 64 IEEE float, or that we simply do not have
enough resolution in our internal units?

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] make uninstall: no rule?

2010-10-12 Thread Dick Hollenbeck
On 10/08/2010 05:07 AM, Fabio Varesano wrote:
> Attached you find a patch (created with bzr send) which add CMake
> rules to create a uninstall make rule.
>
> I did it following the CMake wiki you linked and it should work if one
> compile from the build directory (building all kicad).
>
> You can test it running the following commands from the kicad source
> tree root:
> mkdir build
> cd build
> cmake ../
> make
> (using root) make install
> (using root) make uninstall
>
>  Probably a similar approach shuold be added to all various
> subprograms so that one could uninstall eg pcbnew only. I'm sure on
> how to proceed with this.
>   
:


> Fabio Varesano
>   

Committed in testing's rev 2535.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Improving usability of KiCad

2010-10-12 Thread Dick Hollenbeck

>> I have several 1000-ball BGAs on a metric pitch.  Every other ball is off
>> its position by part of 1/1th of an inch.  No problem?  Well when
>> pulling dogbones for BGA breakout, I wind up with about 1000 0.1mil segments
>> connecting the imperial gridded vias to the imperial gridded balls.  So
>> I tried unlocking the 45-degree tracks pulling slightly off 45-degrees so
>> that there were no 0.1mil segments.  Instead I got 1000 DRC errors (yeah,
>> its tight in there), and a thousand 0.0mil segments.  Then there is the
>> performance problems associated with drawing thousands of 0.1mil or 0.0mil
>> traces.  Hard locking to a 10 nanometer minimum grid would remove all these
>> problems.  Any time pads, pins or lands are on a metric pitch, the same
>> problems arise.
>>
>> 
> Ouch!!!
>
>   
>> The maximum precision allowed by RS-274X is 6.6 for metric, so it makes
>> sense to use 1 nanometer as the internal unit.
>>
>> 
> I agree. i don't understand why Dick is so hard set against metric.
> Maybe if you uploaded your branch/fork to launchpad, and enough people
> started throwing their firewood on that fire, he might turn softer.
>
> Alex
>   


Alex, I said nothing about metric.

PCBNEW
--

I'd like to see support for both metric and imperial (which we mostly
have), along with the 3rd notion of integer based internal units.  The
problem we have now is that the granularity of the internal unit is not
fine enough to avoid round trip conversion errors.  The finer we go, the
more memory the internal "cell" based autorouter (in PCBNEW) needs, and
the longer it will take.  The change in memory and speed will likely be
related to the square in the granularity change.  So if you increase the
granularity by 100, then you'll need 10,000 times as much memory and
time to run it.

(So maybe you decide at that point to simply toss it out and use
freerouter.)

If you take the autorouter off the table, then the question becomes, "is
there a downside to having granularity that is finer than you need?" 
This is a question, not a suggestion.


--


Here is a posting which claims to have found the greatest common
denominator, GCD, for a new internal unit:

https://lists.launchpad.net/kicad-developers/msg03757.html

Here is another opinion:

https://lists.launchpad.net/kicad-developers/msg03729.html


Here is the root of the thread:

https://lists.launchpad.net/kicad-developers/msg03720.html

Until we revise the file format for PCBNEW, along with a comprehensive
migration plan, including a *.brd board converter, the best we can do is
plan and summarize, and schedule for later completion.  A summarizing
paragraph could be formulated on this mailing list and then copied to a
blueprint after it is agreed to by a majority, inclusive of someone
willing to do the work.

That's about all I can think to say about it for now.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] launchpad branding images

2010-10-12 Thread Dick Hollenbeck
On 10/12/2010 06:41 AM, Fabio Varesano wrote:
> I would be happy to do that! Should I use artwork/kicad.svg as
> starting point?
>
> FV
>   

Sounds good, no sense swimming upstream.

Thanks.


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] launchpad branding images

2010-10-12 Thread Dick Hollenbeck
On 10/12/2010 08:07 AM, Fabio Varesano wrote:
> There you go.
>
> FV
>   

You da man!

Go see your work at launchpad.net



> On 10/12/2010 02:12 PM, Dick Hollenbeck wrote:
>   
>> On 10/12/2010 06:41 AM, Fabio Varesano wrote:
>> 
>>> I would be happy to do that! Should I use artwork/kicad.svg as
>>> starting point?
>>>
>>> FV
>>>   



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Improving usability of KiCad

2010-10-12 Thread Dick Hollenbeck
O
> I wonder if it occurred to others - if the inch had been defined as 25.6 
> instead of 25.4/mm this 
> problem would have been quite different.  

I thought the inch was defined first.

> I do think the inch will die out someday. 

That's what they said in here in the USA in the 1960's.  And then Dr.
Spock came along and the world got soft, teachers got a break, kids got
a break.  In the 1960's I remember there being a commitment to learn
metric, then that commitment went away, because it meant, ahem, work and
study and teaching. Not just for kids in school but also for adults out
of school.

It might have been a nice thing to do with the Y2K initiative.  You
know, declare the inch dead.  The problem obviously is the machine
tools, tools, etc.  But if we simply started measuring everything in
metric, the 2.54 that we would see everywhere would eventually get
tiresome and the machines would eventually get made in metric.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Improving usability of KiCad

2010-10-13 Thread Dick Hollenbeck
On 10/13/2010 09:48 AM, Marco Serantoni wrote:
>
> On Oct 13, 2010, at 8:17 AM, Dick Hollenbeck wrote:
>
>>
>>> I wonder if it occurred to others - if the inch had been defined as
>>> 25.6 instead of 25.4/mm this
>>> problem would have been quite different.  
>>
>> I thought the inch was defined first.
>>
>>> I do think the inch will die out someday.
>>
>> That's what they said in here in the USA in the 1960's.  And then Dr.
>> Spock came along and the world got soft, teachers got a break, kids got
>> a break.  In the 1960's I remember there being a commitment to learn
>> metric, then that commitment went away, because it meant, ahem, work and
>> study and teaching. Not just for kids in school but also for adults out
>> of school.
>
> Dick, we doesn't want that US will change its metric system, nor begin
> a lesson of metrology.
> Scientific international system is MKS, wxDC has also calls that
> returns millimeters, the greatest part of the world population uses a
> metric system, ISO 31 says the same,  don't you find those be good
> reasons to switch the internal metric system to a metric one ?
>
> Mr Spock could say in this occasion: the many outweigh the needs of
> the few. 
>
> --
> Marco


No idea what you are talking about Marco.

Your reply does not match my posting.  You have a misunderstanding about
what I said.

My posting was in English, but that seems not to have been good enough.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Improving usability of KiCad

2010-10-13 Thread Dick Hollenbeck
On 10/13/2010 10:01 AM, Alex G wrote:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
> On 10/13/2010 05:48 PM, Marco Serantoni wrote:
>   
>> Dick, we doesn't want that US will change its metric system, nor begin a
>> lesson of metrology.
>> Scientific international system is MKS, wxDC has also calls that returns
>> millimeters, the greatest part of the world population uses a metric
>> system, ISO 31 says the same,  don't you find those be good reasons to
>> switch the internal metric system to a metric one ?
>>
>> 
> Marco,
>
> We already agreed earlier in this thread to make a summarize the
> (re)implementation of the internal unit system. My understanding was
> that once enough developers agree to it, we can put it as a blueprint
> and those interested (myself included) can start work.
>
> Alex
>   

Jean-Pierre has not objected.  There is probably some considerations
about extending the range of the zoom that come with this, and how the
UI is to handle that.  Will the zoom menu get too big, etc.  And some
other issues that still need to be discussed about the actual migration,
what that means in terms of saving a board, or a footprint (save as old,
save as new, or either).  Where we designate what the units are in those
saves.


I think it prudent to adopt your paragraph as the opening paragraph at
this point.  Then we should add a couple of more before the coding
begins.  Brian says he has already done some of this work.  There is no
harm in defining what is needed, and then going to see what he has
done.  If we do it the other way around, we might miss something.

Alex, go ahead and put your first paragraph out there if you don't mind.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Improving usability of KiCad

2010-10-13 Thread Dick Hollenbeck
On 10/13/2010 10:47 AM, Alex G wrote:
> -BEGIN PGP SIGNED MESSAGE-
> Hash: SHA1
>
> On 10/13/2010 06:40 PM, Dick Hollenbeck wrote:
>   
>> Jean-Pierre has not objected.  There is probably some considerations
>> about extending the range of the zoom that come with this, and how the
>> UI is to handle that.  Will the zoom menu get too big, etc.  And some
>> other issues that still need to be discussed about the actual migration,
>> what that means in terms of saving a board, or a footprint (save as old,
>> save as new, or either).  Where we designate what the units are in those
>> saves.
>>
>>
>> I think it prudent to adopt your paragraph as the opening paragraph at
>> this point.  Then we should add a couple of more before the coding
>> begins.  Brian says he has already done some of this work.  There is no
>> harm in defining what is needed, and then going to see what he has
>> done.  If we do it the other way around, we might miss something.
>>
>> Alex, go ahead and put your first paragraph out there if you don't mind.
>>
>> 
> Done. Here's the blueprint (I hope this is what I was supposed to do).
> https://blueprints.launchpad.net/kicad/+spec/unit-system
>
> Alex
>   

Thanks Alex.  Maybe Brian B can coach you through something resembling a
discussion plan and a patch.

Anything involving a file format change is worth being careful about, we
have customers you know.  :)

This is why I am trying to get all the issues understood up front, no
hurry on this.

They don't like to have their designs broken.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Improving usability of KiCad

2010-10-13 Thread Dick Hollenbeck
On 10/13/2010 12:59 PM, Wayne Stambaugh wrote:
> On 10/13/2010 10:48 AM, Marco Serantoni wrote:
>   
>> On Oct 13, 2010, at 8:17 AM, Dick Hollenbeck wrote:
>>
>> 
>>>   
>>>> I wonder if it occurred to others - if the inch had been defined as 25.6
>>>> instead of 25.4/mm this
>>>> problem would have been quite different.  
>>>> 
>>> I thought the inch was defined first.
>>>
>>>   
>>>> I do think the inch will die out someday.
>>>> 
>>> That's what they said in here in the USA in the 1960's.  And then Dr.
>>> Spock came along and the world got soft, teachers got a break, kids got
>>> a break.  In the 1960's I remember there being a commitment to learn
>>> metric, then that commitment went away, because it meant, ahem, work and
>>> study and teaching. Not just for kids in school but also for adults out
>>> of school.
>>>   
>> Dick, we doesn't want that US will change its metric system, nor begin a 
>> lesson
>> of metrology.
>> Scientific international system is MKS, wxDC has also calls that returns
>> millimeters, the greatest part of the world population uses a metric system,
>> ISO 31 says the same,  don't you find those be good reasons to switch the
>> internal metric system to a metric one ?
>>
>> Mr Spock could say in this occasion: the many outweigh the needs of the few. 
>> 
> Marco,
>
> Wrong Spock!  Dr. Spock was one of the first child psychologists to write a
> parenting book which unfortunately a lot of parents bought into.  He naively
> believed that you could raise healthy well adjusted adults by coddling their
> egos as children by telling them how wonderful they were even when they
> weren't.  This had the adverse effect of creating several generations of 
> adults
> who feel entitled to everything without doing anything.  These are the adults
> who are always complaining about how unfair everything is.  This parenting
> method was the antithesis of the old school parenting method of corporal
> punishment (spanking) and demanding that children tow the line.  Thankfully, 
> my
> parents didn't subscribe to the Dr. Spock method of child rearing even though
> he published his book around the time I was born.  I'll get off my soapbox 
> now.
>   

No reason to.  Wayne for president!

You should at least start your own newspaper or blog, PLEASE!


> Wayne
>
>   


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] expat dependency for cmake

2010-10-15 Thread Dick Hollenbeck
FYI,

Kicad does not use expat directly.  wxWidgets does.  wxWidgets includes
expat in its source tree.

So one can argue that this is a discussion for the wxWidgets build
environment, and if it is built properly, then Kicad can simply use
wxWidgets, which should be responsible for the libraries that it needs.

Maybe an equally valid solution is to submit a patch to the wxWidgets
team, or to your distro team, or whatever.

It may not be the best solution, but before I identify the best
solution, I usually try and find more than one.


Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] expat dependency for cmake

2010-10-15 Thread Dick Hollenbeck
On 10/15/2010 09:26 AM, Martijn Kuipers wrote:
> On Oct 15, 2010, at 15:04 PM, Dick Hollenbeck wrote:
>
>   
>> FYI,
>>
>> Kicad does not use expat directly.  wxWidgets does.  wxWidgets includes
>> expat in its source tree.
>> 
> Well wxWidgets includes wxexpat in its source tree, not exactly expat per se.
>
>   
>> So one can argue that this is a discussion for the wxWidgets build
>> environment, and if it is built properly, then Kicad can simply use
>> wxWidgets, which should be responsible for the libraries that it needs.
>> 
> I wondered about that too. In order to compile wx I use the 
> --enable-monolithic option, but then it does not make builtin support for 
> zlib, expat and perhaps some others (at least on OSX). Do you consider this a 
> wxWidgets error?
>
> Another option is to make a multi-lib build and make kicad responsible for 
> taking in all libs, but that requires more cmake surgery.
>
>   
>> Maybe an equally valid solution is to submit a patch to the wxWidgets
>> team, or to your distro team, or whatever.
>> 
> I just wanted Kicad to tell me beforehand (before building) that my 
> dependencies are not in order. I don't think Kicad should tell me whom I 
> should blaim for this.
>
>   
>> It may not be the best solution, but before I identify the best
>> solution, I usually try and find more than one.
>> 
> I weighted the odds and thought that adding the expat one is reasonable, but 
> if you prefer a multilib build then I will prepare the OR and begin the 
> surgary. 
>   

If I were to participate in appraising the relative merits of
alternative solutions, I would think that anything that is OSX specific
should be pushed back to OSX folks, anything that is wxWidgets specific
should be pushed back to wxWidgets, or maintained as a separate patch to
wxWidgets, etc.

If we work long enough on the cmake scripts, eventually we will not be
able to read them.

But I am not participating in this.  I don't have the pain you do.  I am
using Ubuntu Lucid, without issue.


Even though I was instrumental in crafting the first CMake buid of Kicad
on Windows, I haven't has windows on my machine for at least 4 years,
and stopped using it about 9 years ago.  So I am not currently qualified
to make the judgement. 

But I just suggest that weight be given to putting blame where blame
belongs.   Pros and cons are weighed according to their importance, and
others will have different weights.

Expat is not a fixture in Kicad.  We might decide to switch to another
XML library in the future.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] expat dependency for cmake

2010-10-15 Thread Dick Hollenbeck
On 10/15/2010 09:26 AM, Martijn Kuipers wrote:
> On Oct 15, 2010, at 15:04 PM, Dick Hollenbeck wrote:
>
>   
>> FYI,
>>
>> Kicad does not use expat directly.  wxWidgets does.  wxWidgets includes
>> expat in its source tree.
>> 
> Well wxWidgets includes wxexpat in its source tree, not exactly expat per se.
>   

It is a nested checkout, I don't have time to dispute this with fact.
But let's say I question your statement.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] expat dependency for cmake

2010-10-16 Thread Dick Hollenbeck
On 10/16/2010 02:20 AM, Martijn Kuipers wrote:
> On Oct 15, 2010, at 15:50 PM, Dick Hollenbeck wrote:
>
>   
>> On 10/15/2010 09:26 AM, Martijn Kuipers wrote:
>> 
>>> On Oct 15, 2010, at 15:04 PM, Dick Hollenbeck wrote:
>>>
>>>
>>>   
>>>> FYI,
>>>>
>>>> Kicad does not use expat directly.  wxWidgets does.  wxWidgets includes
>>>> expat in its source tree.
>>>>
>>>> 
>>> Well wxWidgets includes wxexpat in its source tree, not exactly expat per 
>>> se.
>>>
>>>
>>>   
>>>> So one can argue that this is a discussion for the wxWidgets build
>>>> environment, and if it is built properly, then Kicad can simply use
>>>> wxWidgets, which should be responsible for the libraries that it needs.
>>>>
>>>> 
>>> I wondered about that too. In order to compile wx I use the 
>>> --enable-monolithic option, but then it does not make builtin support for 
>>> zlib, expat and perhaps some others (at least on OSX). Do you consider this 
>>> a wxWidgets error?
>>>
>>> Another option is to make a multi-lib build and make kicad responsible for 
>>> taking in all libs, but that requires more cmake surgery.
>>>
>>>
>>>   
>>>> Maybe an equally valid solution is to submit a patch to the wxWidgets
>>>> team, or to your distro team, or whatever.
>>>>
>>>> 
>>> I just wanted Kicad to tell me beforehand (before building) that my 
>>> dependencies are not in order. I don't think Kicad should tell me whom I 
>>> should blaim for this.
>>>
>>>
>>>   
>>>> It may not be the best solution, but before I identify the best
>>>> solution, I usually try and find more than one.
>>>>
>>>> 
>>> I weighted the odds and thought that adding the expat one is reasonable, 
>>> but if you prefer a multilib build then I will prepare the OR and begin the 
>>> surgary. 
>>>
>>>   
>> If I were to participate in appraising the relative merits of
>> alternative solutions, I would think that anything that is OSX specific
>> should be pushed back to OSX folks, anything that is wxWidgets specific
>> should be pushed back to wxWidgets, or maintained as a separate patch to
>> wxWidgets, etc.
>> 
> Great. If this works we would not need autoconf or cmake at all, just simple 
> makefiles.
> Hmm, perhaps we should program for the real world and accepts that this is 
> not going to happen any time soon.
>
>   
>> If we work long enough on the cmake scripts, eventually we will not be
>> able to read them.
>> 
> That's why you can add comments to them too.
>
>   
>> But I am not participating in this.  I don't have the pain you do.  I am
>> using Ubuntu Lucid, without issue.
>> 
> So, as long as it works on Ubuntu Lucid it is an upstream bug?
>
>   
>> Even though I was instrumental in crafting the first CMake buid of Kicad
>> on Windows, I haven't has windows on my machine for at least 4 years,
>> and stopped using it about 9 years ago.  So I am not currently qualified
>> to make the judgement. 
>> 
> Neither am I. I don't use windows enough to understand all its intrigues.
>
>   
>> But I just suggest that weight be given to putting blame where blame
>> belongs.   Pros and cons are weighed according to their importance, and
>> others will have different weights.
>>
>> Expat is not a fixture in Kicad.  We might decide to switch to another
>> XML library in the future.
>> 
> Open source has no fixtures, that is why it is open source. That doesn't mean 
> that we should not try to get it to work on all supported platforms.
>
> I am not even sure this is a wx problem. Should wx-config add the -lexpat 
> flag if it uses the system-lib?
> Even so, it does not now, and we can detect that and solve it now.
>   


wxWidgets depends on expat.  Kicad does not depend on expat. 
Just these statements alone suggest the problem is in wxWidgets.


There are two ways that wxWidgets depends on expat:

1) wxXml class depends on expat.

2) xrc depends on wxXml which depends on expat


My current theory is this:

wxWidgets folks have probably gotten their build system fairly robust
for users of 2), i.e. xrc.

For those that are only using 1), like Kicad, then they still have a
hole or two.  When we say "they",

Perhaps a test should be done to depend on the xrc support, even though
we don't use it.  That might be another way to consider plugging this hole.

The provider of wxWidgets is definitely a factor also to consider also,
where does it come from?  If it comes from the distro repo, then there
is a package maintainer in this picture also, else not.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] exploiting human readability

2010-10-17 Thread Dick Hollenbeck
On 10/08/2010 07:41 AM, Wayne Stambaugh wrote:
> On 10/7/2010 6:26 PM, Dick Hollenbeck wrote:
>   
>> 
>>> (part REFDES is PLID
>>>   (at X Y)
>>>   (rot 0)  # make this optional, defaulting to zero
>>> )
>>>   
>>>   
>>
>> Schematic component instantiation:
>> -
>>
>> I don't know that "part" is best, and there may be a better name.
>>
>> But what I see from this, unless there are holes in the concept, is that
>> there need be *NO location information* in what we have been calling the
>> component, nor any rotation information.
>>
>> That can be introduced in the part C++ PART class for the very first
>> time.  The graphics primitives in the component have their coordinates,
>> but those coordinates are relative to the component's origin, not any
>> thing beyond that.
>>
>>
>> The component is located and rotated [and mirrored] when it is
>> instantiated within a part.
>> 

This class PART is now backwards, see text below.  Class COMPONENT now
points to a PART, and is imply an instantiation of a PART.

>>
>> class PART
>> {
>> COMPONENT* component// points into the parts list
>>
>> POINT pos;
>>
>> wxString  reference;
>>
>> int angle;
>> }
>>
>>
>> Something like that.  Maybe also mirroring support at the PART level. 
>> The get bounding box function delegates to the COMPONENT, and offsets
>> and rotates the result of that box to the region on screen.
>>
>> Are part and component properly named?
>> 
> I can't really think of a better one.  Generally speaking, you think in terms
> of adding components to your schematic not parts.  At the user level you 
> should
> use the term component but internally you could differentiate by defining
> components similar to the way we do now which is LIB_COMPONENT ( your
> COMPONENT) and SCH_COMPONENT ( your PART ).  But I'm not sure this is any 
> better.
>
> Wayne
>   


Well as you may have seen, I started down the path of PART for what
lives in the LIBRARY or PARTS_LIST, and COMPONENT for what lives in the
schematic.  I think this is consistent with the generic XML export, but
perhaps a swap from what has been discussed on this list recently.  (But
after all, how can you not put a PART in a PARTS_LIST?)

My next commit will have quite a bit more in it, class PARTS_LIST, class
COMPONENT (mostly as a place holder for you) along with an architecture
diagram, and doxygen docs. 

The PARTS_LIST is a difficult concept to grasp from words alone,
especially the difference between its role within its containing
schematic, vs. its role for another schematic.
The diagram and text in my next commit will clarify this, and be spit
out as a cohesive Doxygen *.html file set.

There should be enough at that point to mostly capture the ideas, and to
start coding.  I keep hammering on the idea that with the new design,
libraries can actually read only entities.  Why share something that is
not re-usable as is?   This is a departure from the way some folks are
currently thinking, no doubt.  But the PARTS_LIST comes to the rescue as
the modification arena.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] (no subject)

2010-10-17 Thread Dick Hollenbeck

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Did you change something in the drawing code?

2010-10-18 Thread Dick Hollenbeck
On 10/18/2010 01:29 AM, Lorenzo Marcantonio wrote:
> BTW there is a way in bzr to know what was the 'parent'
> revision number in a merge?
>   

$ bzr qlog

Seems to be the best way to view almost anything.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Interesting idea to make money with open-source

2010-10-18 Thread Dick Hollenbeck
On 10/14/2010 11:50 PM, Michael Heidinger wrote:
> Hi,
>
> i find this idea great. I really like that. There are some features to 
> realize I would pay for it; but I'm afraid this can't be enought to live 
> from this little money (lets say up to 100 usd for a "big" feature).
>
> My idea is the following:
> 1. Step: Feature proposal: A user proposes a new feature.
> 2. If you consider it as too special, e.g. someone can say "I will do it 
> for the amount x usd as it is very speacial (but the price must be 
> fair!) in x days". Now its awailable in a kind of store, where you can 
> buy percentages of the feature. Of course 1 person can buy 100%! The 
> money is transfered to an account of trust.
> 3. If 100% of the amount is reached the developer starts developing. 
> After the user is satisfied the account of trust transfers the money.
> 4. Now the feature is awailable for everyone. In the corresponding 
> source code is marked "sponsored by user x programmed by user y"
>
> I really like this idea, as I am not very experienced in software 
> programming and I sometimes would really need some improvements for a 
> faster more efficent pcb design.
> Keep in mind: Some guys also use that program to make money, so why 
> shouldn't also you, the development team, profit from it?
>
> What I would be interested in: Are the developpers interested? 

It only takes one.

Some feature requests sit for years, folks wonder when they're going to
get done.

Features normally only get done when the guy coding it has the same
problem, so in that case it has been referred to as scratching your own
itch.

Beyond this (intersection of my problem and your problem), the open
source model breaks down.

I think there are already sites that are intended to conduct business
along these lines, and are targeted for open source projects.

It should be no mystery that qualified folks won't work for free.  The
major open source projects have corporate sponsors, so even those guys
are not working for free.


Dick




> Taking 
> money also means to statisfy the wishes of the customer and that means a 
> minimized freedom in programming.
>
> See you
> Michael
>   


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] expat dependency for cmake

2010-10-18 Thread Dick Hollenbeck
On 10/17/2010 04:06 PM, Martijn Kuipers wrote:
> On Oct 17, 2010, at 22:02 PM, Wayne Stambaugh wrote:
>
>   
>> On 10/16/2010 2:52 PM, Martijn Kuipers wrote:
>> 
>>> 
>>>   
 There are two ways that wxWidgets depends on expat:

 1) wxXml class depends on expat.

 2) xrc depends on wxXml which depends on expat


 My current theory is this:

 wxWidgets folks have probably gotten their build system fairly robust
 for users of 2), i.e. xrc.

 For those that are only using 1), like Kicad, then they still have a
 hole or two.  When we say "they",

 Perhaps a test should be done to depend on the xrc support, even though
 we don't use it.  That might be another way to consider plugging this hole.

 The provider of wxWidgets is definitely a factor also to consider also,
 where does it come from?  If it comes from the distro repo, then there
 is a package maintainer in this picture also, else not.


 Dick
 
>>> Thanks Dick and Wayne for your clear explanation.  Though even if it is a 
>>> wx problem, should we not plug the hole while we await a fix from upstream?
>>>   
>> Martin,
>>
>> On my home machine with wxWidgets build as individual static libraries
>> using expat included with wxWidgets, wx-config --libs xml yields the
>> following output:
>>
>> -L/mingw/lib  -mthreads  /mingw/lib/libwx_baseud_xml-2.8.a
>> /mingw/lib/libwx_baseud-2.8.a -lwxregexud-2.8 -lwxexpatd-2.8 -lz
>> -lrpcrt4 -luuid -lodbc32 -lole32 -loleaut32 -lwinspool -lwinmm -lshell32
>> -lcomctl32 -lcomdlg32 -lctl3d32 -ladvapi32 -lwsock32 -lgdi32
>>
>> It appears that in this case, wx-config is returning the correct expat
>> library to link against.  I'll check my machine a work tomorrow.  I'm
>> pretty sure I build wxWidgets using the expat library I build separately
>> and see if it includes -lexpat instead of -lwxexpatd-2.8.
>>
>> Wayne
>> 
> Thanks Wayne,
>
> I am on OSX if that makes a difference. Marco has already created a 
> bug-report at wx, so let's see what they do.
>
> /Martijn
>   

CMake has this command:

include( .cmake )

It is an inter-project communication mechanism that I have used in house
here, for two projects that are both based on CMake.

I think we'd award the "man of the year award" to the guy who could
spend three hours creating a full CMakeLists.txt system for wxWidgets,
and sell that project on using the CMake tool (maybe not in that
order).  The persuasive argument would go along the lines of "KDE uses
CMake, so",  "Kicad is one of the largest multi-platform customers
of wxWidgets, and we like CMake  and don't like the fact that
wx-config sometimes falls down..."


That new wxWidgets CMake build system then could export() the
.cmake into Kicad's build system.  This would solve all
the problems on all the platforms as far as I am concerned.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Events inside kicad

2010-10-26 Thread Dick Hollenbeck
On 10/26/2010 01:50 PM, Marco Serantoni wrote:
> In those days i was thinking about to add an internal event generation for 
> some kicad classes.
> Adding internal events at wxAUIManager could be a good start to implement 
> "external frames" and utilities (plugins) , making possible plug-in new 
> functionalities and probably reorganizing some parts of code
>
> I've already something ready, if nobody has something against it i wish 
> commit the first tranche of the implementation on pcbnew.
>   

If it is as disruptive as you say, can we see a patch and have a short
chat about it before you commit?

It would be good for Jean-Pierre and Wayne to get a look.

I don't think there is any fundamental objections to improvements though  :)

Thanks,

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Events inside kicad

2010-10-26 Thread Dick Hollenbeck
On 10/26/2010 01:58 PM, Marco Serantoni wrote:
> On 26/ott/2010, at 20.54, Dick Hollenbeck wrote:
>
>   
>> On 10/26/2010 01:50 PM, Marco Serantoni wrote:
>> 
>>> In those days i was thinking about to add an internal event generation for 
>>> some kicad classes.
>>> Adding internal events at wxAUIManager could be a good start to implement 
>>> "external frames" and utilities (plugins) , making possible plug-in new 
>>> functionalities and probably reorganizing some parts of code
>>>
>>> I've already something ready, if nobody has something against it i wish 
>>> commit the first tranche of the implementation on pcbnew.
>>>
>>>   
>> If it is as disruptive as you say, can we see a patch and have a short
>> chat about it before you commit?
>> 
> Indeed, 
> Here is the patch, let's chat :)
>   

Thanks for your patience, and willingness to accept feedback.

We might need to wait a day or two for folks to comment.

I know English is not your favorite language, but it would be easier for
folks to grasp what you are trying to do with some supporting
documentation.  It looks like you have something ambitious in mind.

Can an inkscape diagram tell the story better than words, using arrows
or what not?

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Events inside kicad

2010-10-27 Thread Dick Hollenbeck
On 10/27/2010 03:29 AM, Martijn Kuipers wrote:
> On Oct 27, 2010, at 1:27 AM, Wayne Stambaugh wrote:
>
>   
>> On 10/26/2010 2:58 PM, Marco Serantoni wrote:
>> 
>>> On 26/ott/2010, at 20.54, Dick Hollenbeck wrote:
>>>
>>>   
>>>> On 10/26/2010 01:50 PM, Marco Serantoni wrote:
>>>> 
>>>>> In those days i was thinking about to add an internal event generation 
>>>>> for some kicad classes.
>>>>> Adding internal events at wxAUIManager could be a good start to implement 
>>>>> "external frames" and utilities (plugins) , making possible plug-in new 
>>>>> functionalities and probably reorganizing some parts of code
>>>>>   
>> Marco,
>>
>> Before you commit this, I would like to see an example of how you are
>> going to handle these events in some type of plug in framework.  I'm
>> just not seeing where you are going with this.  If you are planning on
>> handling these events in any of the Kicad application main windows, that
>> doesn't make much sense because it was a command event generated by the
>> main window that got you to that point in the first place.  What does
>> make sense to me it to create some custom command events for handling
>> things like zoom and grid selection.  One of the often overlooked
>> features of command events is that they can be used to pass objects and
>> data pointers along with the event by using the Set/GetClientObject and
>> Set/GetClientData.  I'm not rejecting this patch, but I'm concerned that
>> this patch will not be fully developed and no plugins that handle these
>> events will ever be written which means there is an unnecessary level
>> complexity in this code.
>> 
>
> Marco could probably explain it better than I can, but from what I understood 
> his intention is to make Kicad event-based and using message-passing, pretty 
> much like wx itself.
>
> A good explanation of this event-based use (for those that do not already 
> know it) can be found here:
> http://docs.wxwidgets.org/trunk/overview_events.html
>
> I also misunderstood Marco's email in thinking he was proposing a 
> plugin-framework, but that is not the case. However, having this in Kicad 
> would make it easier to add a plugin-framework. Eagle seems to have a large 
> amount of scripts around, so there must be some use for it. Of course, Kicad 
> is open source so the most wanted plugins could be ported inside Kicad. 
>
> This is just what I understood after a small conversation I had with Marco. 
> Of course, he can probably explain things a lot better than me, although he 
> convinced me it was "a good thing", for what it is worth.
>
> /Martijn
>   


It could be useful and it could solve a problem.  It should not be hard
to show an example usage, and doing so would ensure we are not providing
a solution to a problem that does not exist.

If I ask my wife if I can put a 480V 3 phase outlet in our living room,
I should not be surprised when she asks me to show her the catalog page
showing the electric razor, or popcorn maker, or vacuum cleaner that I
expect to plug in there.  She likes pictures.


Dick




>> 
>>>>> I've already something ready, if nobody has something against it i wish 
>>>>> commit the first tranche of the implementation on pcbnew.
>>>>>
>>>>>   
>>>> If it is as disruptive as you say, can we see a patch and have a short
>>>> chat about it before you commit?
>>>> 
>>> Indeed, 
>>> Here is the patch, let's chat :)
>>>   
>> Your patch has a few issues.  The code formatting is incorrect.  Please
>> see the recently released coding guidelines in the Kicad source tree or
>> use uncrustify to correct the formatting.  Also, try to avoid the wx
>> prefix when naming source code that is not going to be pushed upstream
>> to wxWidgets.  I think we should leave that to the wxWidget developers.
>> I know there are a few other places in where this is used in the Kicad
>> source tree but this is one of those minor things that should be cleaned
>> up.  Thank you for your effort.
>>
>> Wayne
>>
>> 
>>> --
>>> Marco
>>>
>>>
>>>
>>> ___
>>> Mailing list: https://launchpad.net/~kicad-developers
>>> Post to : kicad-developers@lists.launchpad.net
>>> Unsubscribe : https://launchpad.net/~kicad-developers
>>> More help   : https://help.la

Re: [Kicad-developers] Silk screen line width behavior.

2010-11-09 Thread Dick Hollenbeck
On 11/09/2010 02:35 PM, Wayne Stambaugh wrote:
> I just got DFM failure from my PCB manufacture for silk screen width of 0.001"
> for all the silk screen drawings on a board I just laid out.  I checked all of
> the module silk screen widths and everything is 0.005" or larger.  A quick
> check of the silk screen layer gerber file revealed the aperture being used 
> was
> indeed 0.001".  After some digging around, I found that changing the "Default
> pen size" in the plot dialog changed the silk screen line width.  Is this the
> appropriate behavior?  Setting the default line width to 0 did not fall back 
> to
> the line width defined in the module.  I would expect my silk screen line
> widths to be what I defined them in my module not the default pen size 
> setting.
>  At one time, I thought this was the default behavior.  Before I file a bug
> report, I wanted to make sure I'm not missing something.  Anyone else have any
> thoughts on this?
>
> Wayne
>   

Its not perfectly pertinent to your question, but I have found

/scripts/setfont.sh

to be useful after I have a board ready to plot.

I have not stumbled onto your problem before.  Maybe something has
changed, or I just missed it.


>From a UI perspective, I would not prefer to have to set the default
width to zero to say, "leave me alone".

I would prefer to select a checkbox saying override the line-widths, or NOT.


Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] sourceforge.net svn repo is emptied

2010-11-11 Thread Dick Hollenbeck
I was able to erase the content of the SVN repo at sourceforge.net.

After doing that I disabled it for general use.  But as we have learned,
disabling it does not prevent someone from reading from it.  However,
now it will come up empty during a checkout.

The package maintainers will now have to dig a little, for
understanding, and update their build scripts to use bzr against
launchpad.net.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] sourceforge.net svn repo is emptied

2010-11-11 Thread Dick Hollenbeck
On 11/11/2010 05:34 PM, Martijn Kuipers wrote:
> Hi Dick,
>
> Great. Why not submit a single text-file saying it is hosted now on lp.?
>
> /Martijn
>   



I tried, not possible.  Sourceforge has the repo set as read only.  I
had to use svnadmin to bash the damn thing.

This way we get a built in IQ test applied before any developers come
here.  Maybe we'll get only the good ones.  The ones that cannot figure
out how to compile an empty directory we can simply ignore, assume they
don't know how to read, and maybe they will go away.

Over and out, and I promise to not to participate in any more discussion
on this subject.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Revision 2604 has broken cvpcb and some random warnings

2010-11-12 Thread Dick Hollenbeck
Committed in 2607.

It fixed the warnings for me and I am happy with it.

However, I was not seeing the errors reported by Jerry, and Marco it
seems you were not either.

So I don't know what is up with Jerry's report.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Footprint text umbilicals

2010-11-17 Thread Dick Hollenbeck
Marco,

Looks pretty good to me.

Dick


> Hi,
>
> Here's a proposal for a feature stolen from Eagle (at least). When
> moving footprint reference texts around in crowded areas of a board,
> it is sometimes difficult to keep track of, e.g., which reference
> belongs to which resistor. The situation would be clearer if there was
> a line drawn from the reference and other text fields to the parent
> footprint origin. That's what the attached patch adds to pcbnew. In
> addition it centers the cursor on the field that is being moved when
> the move starts.
>
> marco
>   
>
>
> ___
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>   


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Pcbnew plot output directory

2010-11-21 Thread Dick Hollenbeck
On 11/20/2010 05:08 PM, Marco Mattila wrote:
> Hello all,
>
> This patch adds an output directory field into the plot dialog in
> pcbnew and directs gerber/hpgl etc. output into that directory.
> There's a browse button that opens a dialog for browsing. If the
> directory does not exist, it is created. Tested in linux, not in
> windows. Wxwidgets methods are used for file (name) manipulations, so
> things are probably ok in windows, too.
>
> marco
>   

Committed in testing 2625.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Footprint text umbilicals

2010-11-21 Thread Dick Hollenbeck
I wasted 15 minutes only to find this was committted in 2618.


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Footprint text umbilicals

2010-11-21 Thread Dick Hollenbeck
On 11/21/2010 11:24 AM, jean-pierre charras wrote:
> Le 21/11/2010 16:03, Dick Hollenbeck a écrit :
>   
>> I wasted 15 minutes only to find this was committted in 2618.
>>
>> 
> Sorry,
> I sent a mail to kicad dev list after committed this patch, but I believe 
> this mail was lost.
>
>   
Thanks Jean-Pierre, maybe the email went to Marco and not to the list. 
I think most all of us have made that mistake at least once.  :)


Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Test zone filling with Boost::polygon

2010-12-02 Thread Dick Hollenbeck
On 12/01/2010 02:29 AM, jean-pierre charras wrote:
> Le 01/12/2010 04:47, Dick Hollenbeck a écrit :
>   
>> Thanks Jean-Pierre.
>>
>> I changed to polygon fills everywhere with min zone size of 0.006
>>
>> Attached are two png images which show the problem with and without pads
>> on top.  The problem actually might not be with the boost library but
>> with the algorithm used to specify the voids for pads.
>>
>> Compare the two images, and you'll see that simply by turning on pads
>> the problems with the zone reside in the region of some low pitch pads.
>>
>> Dick
>> 
> I found the bug: algo that removes unconnected thermal stubs when using 
> thermal pads was always running in boost version, and 
> removed some sub areas in filled zone areas.
> boost::polygon is not the culprit, and seems now work fine.
> But obviously needs now more tests.
>   

Thanks Jean-Pierre.  The boost::polygon build seems to now creat a good
copper area in the region which was previously giving us grief.  Nice
job catching that.

Perhaps we have enough confidence now to switch over to boost::polygon
as the default choice in the CMakeLists.txt file?

This way we can begin to get more boards to exercise that code.

At some point we should also probably update the stable branch also.

Thanks,

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] library structure

2010-12-03 Thread Dick Hollenbeck
On 12/03/2010 12:45 AM, Phinitnan Chanasabaeng wrote:
> On Sep 23, 2010, at 1:09 AM, Wayne Stambaugh wrote:
> > symbol - The graphical and/or electrical representation of a component.
> > Think everything between DRAW/ENDDRAW in the current file format.
> > 
>
> > field - The default and user defined text values that describe a
> > component such as value, reference designator, footprint, etc.
> > 
> > component - The combination of default and user defined fields and a
>
> > symbol that get imported into a schematic.
> > 
> > library - One or more components along with some meta-data to describe
> > the library.
> > 
>
> After a long time reading the whole thread, 

It only took me 2 minutes.

> I too agree with this scheme.
>
> Then, we may create component's files and use some kind database such as 
> sqlite to store a group of components(meta data) as libraries.
> This will let us do all database task such as searching, tagging, etc. 
> Editing/copy/paste components in a library will also be easier.
>
>
> Tony
>   


In recent weeks there has been a lot of design work done behind the
scenes on eeschema and the whole concept of what a library even is. 
Everything you know about EESCHEMA has potential to change within the
next 4 months.  The first reveal of the new design will happen within
days.  Incremental enhancements, enhancement requests, and wish list
items, which are based on the current design, are probably wasted time.

Feedback is best offered between the time when the new proposed design
is revealed and when coding starts, circa 2 weeks.

Thanks,

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] library structure

2010-12-04 Thread Dick Hollenbeck
On 12/04/2010 02:19 AM, Michael Heidinger wrote:
> First i want to say that metric is standard in the world. This has a 
> reason: All unites are logically structured and easyly convertable into 
> other units of the SI system. Having both will just cause problems and 
> will be confusing for everybody. So lets do it one time the correct way 
> and stop unit-mesurement-problem 4ever! Lets fix it on one standard: Metric.
>   

No.

Lets remember we are talking about eeschema here, not pcbnew.

* pcbnew library redesign is another time, and another effort. *

metric schematics are only mildly useful.  By this, I assume one would
mean grid spacing?  Remember schematic parts are not actual footprints.

We can support metric schematic parts, but I think aligning to a common
grid size will in the end be more useful.  What good is it to load a
schematic part and have its pins not aligned to a common grid?

Again, schematics, not footprints or pcbnew are in discussion here.

Much will be learned and pioneered here for EESCHEMA, and then the more
demanding PCBNEW library concepts can be handled later.  I don't want to
get into PCBNEW libraries yet, since any PCBNEW implementation work is
thought to be planned later.  There will be mandatory additional and
more demanding needs for the PCBNEW libraries, and real world
engineering units are among them.

Wayne is soon revealing a new EESCHEMA part file format document that we
worked on together.  And soon we are also revealing a C++ class system
for a distributed library management system, and the new parts list
concept, soon.  I just have to make a few more pictures with inkscape,
argh, not my familiar tool.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-06 Thread Dick Hollenbeck
On 12/06/2010 12:37 PM, Marco Mattila wrote:
> === modified file 'common/common_plotGERBER_functions.cpp'
> --- common/common_plotGERBER_functions.cpp2010-11-12 16:36:43 +
> +++ common/common_plotGERBER_functions.cpp2010-12-06 17:43:56 +
> @@ -504,3 +504,11 @@
>  set_current_line_width( -1 );
>  poly( 5, &polygon[0].x, aTrace_Mode==FILLED ? FILLED_SHAPE : NO_FILL );
>  }
> +
> +void GERBER_PLOTTER::SetLayerPolarity( bool aPositive )
> +{
> +if( aPositive )
> +fprintf( output_file, "%%LPD*%%\n" );
> +else
> +fprintf( output_file, "%%LPC*%%\n" );
> +}
>
> === modified file 'include/plot_common.h'
> --- include/plot_common.h 2010-11-12 16:59:16 +
> +++ include/plot_common.h 2010-12-06 17:41:21 +
> @@ -169,6 +169,13 @@
> boolaBold );
>  void   marker( const wxPoint& position, int diametre, int 
> aShapeId );
>  
> +/** Function SetLayerPolarity
>   


No, see the coding standard for proper formatting of the function header.



> + * sets current Gerber layer polarity to positive or negative
> + * by writing \%LPD*\% or \%LPC*\% to the Gerber file, respectively.
> + * param @aPositive = layer polarity, true for positive
> + */
> +virtual void SetLayerPolarity( bool aPositive ) = 0;
> +
>  protected:
>  /* These are marker subcomponents */
>  void   center_square( const wxPoint& position, int diametre, 
> FILL_T fill );
> @@ -272,6 +279,8 @@
>  virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
> int aPadOrient, GRTraceMode aTrace_Mode );
>  
> +virtual void SetLayerPolarity( bool aPositive ) {};
> +
>  protected:
>  void pen_control( int plume );
>  
> @@ -321,6 +330,8 @@
>  virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
> int aPadOrient, GRTraceMode aTrace_Mode );
>  
> +virtual void SetLayerPolarity( bool aPositive ) {};
> +
>  protected:
>  double plot_scale_adjX, plot_scale_adjY;
>  };
> @@ -379,6 +390,8 @@
>  virtual voidflash_pad_trapez( wxPoint aPadPos, 
> wxPoint aCorners[4],
>int aPadOrient, 
> GRTraceMode aTrace_Mode );
>  
> +virtual voidSetLayerPolarity( bool aPositive );
> +
>  protected:
>  voidselect_aperture( const wxSize&   
> size,
>   APERTURE::Aperture_Type 
> type );
> @@ -439,6 +452,8 @@
>  virtual void flash_pad_trapez( wxPoint aPadPos, wxPoint aCorners[4],
> int aPadOrient, GRTraceMode aTrace_Mode );
>  
> +virtual void SetLayerPolarity( bool aPositive ) {};
> +
>  protected:
>  int current_color;
>  };
>   


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-06 Thread Dick Hollenbeck
Hi,
> Board manufacturers typically do not print silkscreen on areas without
> soldermask. Nevertheless, it would be nice to have proper gerbers to
> begin with, i.e., gerbers with no silkscreen in soldermaskless areas.
> Of course, most of the problem can be taken care of by drawing the
> footprints properly. However, sometimes the silkscreen of one
> footprint ends up on the pads of another one (think components under a
> so-dimm card, for example). The attached patch adds an option to
> subtract the soldermask from the silkscreen when doing gerber output.
>
> marco
>   

Committed in version 2644.

Fixed in version 2645.

Fixes:  function header, space above single line comments, expandable
dialog box problems.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-06 Thread Dick Hollenbeck
On 12/06/2010 04:20 PM, Dick Hollenbeck wrote:
> Hi,
>   
>> Board manufacturers typically do not print silkscreen on areas without
>> soldermask. Nevertheless, it would be nice to have proper gerbers to
>> begin with, i.e., gerbers with no silkscreen in soldermaskless areas.
>> Of course, most of the problem can be taken care of by drawing the
>> footprints properly. However, sometimes the silkscreen of one
>> footprint ends up on the pads of another one (think components under a
>> so-dimm card, for example). The attached patch adds an option to
>> subtract the soldermask from the silkscreen when doing gerber output.
>>
>> marco
>>   
>> 
> Committed in version 2644.
>
> Fixed in version 2645.
>
> Fixes:  function header, space above single line comments, expandable
> dialog box problems.
>
> Dick
>   

Marco,

Did you test the gerber output with gerbview?

I am not sure that gerbview can display a file created with the negative
layer.

If it cannot, I think we should reverse the default setting that you
chose, or I would ask you to see if you can patch gerbview.  I think it
would be bad for pcbnew to generate a gerber that gerbview cannot display.

Thanks,

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-07 Thread Dick Hollenbeck
On 12/07/2010 03:08 AM, Marco Mattila wrote:
> I tested the output with gerbview and gerbv. In gerbv everything's ok.
> Now that I checked again with gerbview the negative layer kind of
> works. However, since negative layers in gerbview are taken care of by
> drawing them in background color, the negative stuff will be
> "subtracted" from all layers below the negative layer. Fixing this
> probably requires that the drawing of a layer is first done onto a
> temporary device context/bitmap and blitting the result to the main
> window. I can take a look at this.

Just having a single bitmap will not change anything that I can see. 
You did not mention having multiple layer specific bitmaps and then
doing combinational logic on their bits into a final destination.  What
if you just draw the negative layer last onto the screen?  Or is the
problem a matter of "looking ahead" to detect the negative layer before
beginning drawing?  Is gerbview losing the "sequence" of operations
established in the gerber file?  If so, the way the gerber file loading
takes place could be an issue, and the container that holds the drawing
primitives.


>  Anyways, the default value of
> subtractMaskFromSilk can be changed to false.
>   

I agree, but:  at one time there were retentative preferences for all
these gerber output settings.  I had at one time gone through and added
most if not all the settings to a "save to disk mechanism".  I don't
know that I got all of them, and I don't know that some have been added
that recently that did not make it into that savable category.

You are familiar with this code now.  It was 2 years since I looked at
it.  It would be wonderful if we could save all the settings.  The
non-conforming issue there is the layer choices, since they are board
specific.  Most the other settings are not necessarily board specific. 
I had once argued for putting more of these kinds of board specific
settings into the BOARD, but that was never truly fulfilled.  When we
get to redoing the BOARD format, we should take a long hard look at this
again.


> By the way, there's still a problem with the function header in
> plot_common.h. The third patch I submitted is correct, I think.
>   

I just saw that 3rd this morning, missed it yesterday because I reacted
to the original patch too quickly. 

Thanks,

Dick


> marco
>
> On Tue, Dec 7, 2010 at 12:48 AM, Dick Hollenbeck  wrote:
>   
>> On 12/06/2010 04:20 PM, Dick Hollenbeck wrote:
>> 
>>> Hi,
>>>
>>>   
>>>> Board manufacturers typically do not print silkscreen on areas without
>>>> soldermask. Nevertheless, it would be nice to have proper gerbers to
>>>> begin with, i.e., gerbers with no silkscreen in soldermaskless areas.
>>>> Of course, most of the problem can be taken care of by drawing the
>>>> footprints properly. However, sometimes the silkscreen of one
>>>> footprint ends up on the pads of another one (think components under a
>>>> so-dimm card, for example). The attached patch adds an option to
>>>> subtract the soldermask from the silkscreen when doing gerber output.
>>>>
>>>> marco
>>>>
>>>>
>>>> 
>>> Committed in version 2644.
>>>
>>> Fixed in version 2645.
>>>
>>> Fixes:  function header, space above single line comments, expandable
>>> dialog box problems.
>>>
>>> Dick
>>>
>>>   
>> Marco,
>>
>> Did you test the gerber output with gerbview?
>>
>> I am not sure that gerbview can display a file created with the negative
>> layer.
>>
>> If it cannot, I think we should reverse the default setting that you
>> chose, or I would ask you to see if you can patch gerbview.  I think it
>> would be bad for pcbnew to generate a gerber that gerbview cannot display.
>>
>> Thanks,
>>
>> Dick
>>
>>
>> ___
>> Mailing list: https://launchpad.net/~kicad-developers
>> Post to : kicad-developers@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~kicad-developers
>> More help   : https://help.launchpad.net/ListHelp
>>
>> 
> ___
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>
>   


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-10 Thread Dick Hollenbeck
On 12/09/2010 05:51 PM, Marco Mattila wrote:
> Drawing the negative layer last is not correct, since it erases
> everything below the negative objects in all layers. The attached
> patch seems to do the trick right. All layers (=layers as they are
> seen in gerbview, not individual layers in a gerber file) are first
> drawn into a bitmap and negative objects are drawn in background
> color. Then the bitmap itself is used as a mask in blitting the bitmap
> onto the screen.
>
> marco
>   

I should be able to get a look at this over the weekend.

Dick




___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-11 Thread Dick Hollenbeck
On 12/09/2010 05:51 PM, Marco Mattila wrote:
> Drawing the negative layer last is not correct, since it erases
> everything below the negative objects in all layers. The attached
> patch seems to do the trick right. All layers (=layers as they are
> seen in gerbview, not individual layers in a gerber file) are first
> drawn into a bitmap and negative objects are drawn in background
> color. Then the bitmap itself is used as a mask in blitting the bitmap
> onto the screen.
>
> marco
>
> On Tue, Dec 7, 2010 at 4:41 PM, Dick Hollenbeck  wrote:

Marco & JP:

I committed something that was very similar to what you submitted.



However, I found some significant speed ups:

1) not using GR_OR mode when erasing the background of a negative layer.

2) not using the mask in the Blit() function but rather use wxOR there, which 
seems to
be signicantly faster for some reason.

The two changes together are extremely snappy. 

Please test to make sure this code is equivalent with respect to display 
results.

Thanks,


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-12 Thread Dick Hollenbeck
On 12/12/2010 08:37 AM, jean-pierre charras wrote:
> Le 12/12/2010 12:04, Marco Mattila a écrit :
>> Using OR instead of COPY in blitting does not produce equivalent
>> resuilts. Now the appearance of one layer depends on what was drawn
>> "below" it.
>>
>> marco
>>
>> On Sun, Dec 12, 2010 at 4:33 AM, Dick Hollenbeck  wrote:
>>> However, I found some significant speed ups:
>>>
>>> 1) not using GR_OR mode when erasing the background of a negative layer.
>>>
>>> 2) not using the mask in the Blit() function but rather use wxOR there, 
>>> which seems to
>>> be signicantly faster for some reason.
>>>
>>> The two changes together are extremely snappy.
>>>
>>> Please test to make sure this code is equivalent with respect to display 
>>> results.
>>>
> I now fixed issue when compiling with USE_WX_ZOOM defined,
> i.e. when the device context is responsible to calculate zoom and draw offset.
> (blit function seems work only when user scale = 1 and no offset).
>
> About OR and COPY, each image (gerber layer) is drawn into its memory DC 
> using COPY, so each image should be OK.
>
> Combining different images using OR is better than COPY, because one can see 
> all images (transparency effect),
> like all layers in Pcbnew, and do not change Gerber images.
>
> This code need to be tested now under MacOSX.


Jean-Pierre,

I did not mean to give the impression that I was done working on the code.  It 
is a
little disconcerting having the code change in my editor right out from 
underneath me,
after doing a bzr update.  The key to grasping this was *my* question about 
whether my
commit functioned the same as Marco's patch: this implied an intent on my part 
to fix
it if it was not yet working OK.  Marco's response should have been taken to 
mean that
I was back to the drawing board.


Perhaps I was not clear.  But I tried to be.


Out of respect for Marco, the statement that using "OR is better than COPY", 
should be
flagged as an opinion.

We need to remain respectful of the work of contributing developers if we are 
going to
ever evolve beyond a small team.  And today, frankly, even my nose is a little 
bent
out of shape.

I do not think we have found the best overall solution yet.  I'd ask for the 
ability
to work on the code without having it change underneath me again.

I can see advantages to supporting both a blended color view, like we have in 
PCBNEW
and like what I committed, and a solid color view like what Marco presented, 
perhaps a
toggle button can alternate the two drawing effects.



Marco,

Thanks for your patience.

Your code is technically correct, but it has severe performance problems on my
system.  I have the fastest computer of anybody that I personally know.   64 bit
machine, very high end graphics card.


Taking from a comment I added to my portion of the Draw function this AM:

// On Linux with a large screen, this version is much faster and without 
flicker,
// but gives a PCBNEW look where layer colors blend together.  Plus it works
// only because the background color is black.  But it may be more useable for 
some.
// The difference is due in part because of the cpu cycles needed to create the
// monochromatic bitmap above, and the extra time needed to do bit indexing
// into the monochromatic bitmap on the blit above.

The cost of testing the individual monocromatic bit for each device context bit 
is
proportional to X * Y of the screen, so with "O squared" on screen area.  I 
have a
very large screen.  And I am having problems with drawing only two layers, not 
10
which will be even worse.


If we cannot find a faster way to get your desired behaviour, I think we we 
will have
to support it in a toggle mode.   So I am happy to spend some more time 
searching for
an optimal solution with you if you do not mind.

How do you feel about the toggle button?  Both modes have some advantages from 
a user
experience perspective.  My code is obviously dependent on the background being 
black,
and that may not always be the case in the future, so I have put a comment in 
to that
effect. 

I do not think we are done yet.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-12 Thread Dick Hollenbeck
On 12/12/2010 12:40 PM, Marco Mattila wrote:
> Dick,
>
> The main point in my reply earlier was just that the visual results
> are not equivalent. However, I agree with you that using OR is the way
> to go if it is acceptable that things in gerbview will look a little
> different than before. At least I'm ok with that.
>
> Anyways, I think that the graphics we are talking about here is not
> very complex and should be doable. Someone mentioned wxGraphicsContext
> in the mailing list a while ago and that it should bring a performance
> boost. When working on the patch I briefly experimented with wxGCDC
> (which I think wraps wxGraphicsContext in a wxDC compatible way?).
> However, the performance was pretty bad and since it turned out that
> alpha blending was not necessary I didn't continue on that route any
> further.
>
> marco

The problem with ORing the colors is that as you get more layers, eventually the
intersections all turn white, no?
(Ok, on a normal board, we don't have so many mutliple gerber layer 
intersections,
true.  But if it can go wrong it eventually will.)


Again, I'd like to support both modes from a UI experience point of view.  I 
have some
time now to work on this.


Regarding your code, we don't know where the bottleneck is.  (If we did, we 
could
directly attack it.)


So we can start guessing. 

Let's assume the screen memory is slower than internal memory, this could be the
current bottleneck.  Plus I am seeing flicker with only two layers, let alone a 
full
stack of gerber layers.  This tends to support the theory.

I will spend some time and try buffering the screen memory in its own additional
wxMemoryDC until the very end. 
I can spend that time now.



Can you make sense of this language from here:

http://docs.wxwidgets.org/trunk/classwx_d_c.html#12bed94a15136b9080683f4151042a34

Pay attention to the algorithm used by wx for Windows when the bitmap cannot be 
used.


/useMask/   If true, Blit does a transparent blit using the mask that is 
associated
with the bitmap selected into the source device context. The Windows 
implementation
does the following if MaskBlt cannot be used:

   1. Creates a temporary bitmap and copies the destination area into it.
   2. Copies the source area into the temporary bitmap using the specified 
logical
  function.
   3. Sets the masked area in the temporary bitmap to BLACK by ANDing the mask 
bitmap
  with the temp bitmap with the foreground colour set to WHITE and the bg 
colour
  set to BLACK.
   4. Sets the unmasked area in the destination area to BLACK by ANDing the mask
  bitmap with the destination area with the foreground colour set to BLACK 
and the
  background colour set to WHITE.
   5. ORs the temporary bitmap with the destination area.
   6. Deletes the temporary bitmap.

This sequence of operations ensures that the source's transparent area need not 
be
black, and logical functions are supported.




As a second test, maybe we can use that same algorithm, for all platforms.  It 
almost
sounds as if you can set the background and foreground colors in advance of 
doing a
blit, and have that affect the final outcome of the blit.  This is not 
intuitively
obvious, that setting a color in advance of a blit will go into effect during a 
blit.


Those are two schemes to try, and actually they both involve buffering the 
screen
memory, until the end.


Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-12 Thread Dick Hollenbeck

> Sorry, Dick and Marco.
> Dick, you are right.
> But I am always in a hurry to see enhancements in Kicad,
> and sometimes I forget I must wait for guys who spend their valuable time to 
> work on it.
> I apologize.
> I'll try to be patient.


Apology accepted.  Your and my time are both valuable.  That is why we should 
not
normally be working on the same thing  :)

It is like spending resources twice on the same thing.

There will be, and have been times that I ask for help, but until that happens, 
it
means I don't need it.

Thanks for stepping up, and apologizing, Jean-Pierre.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-12 Thread Dick Hollenbeck
On 12/12/2010 02:31 PM, Dick Hollenbeck wrote:
>> Sorry, Dick and Marco.
>> Dick, you are right.
>> But I am always in a hurry to see enhancements in Kicad,
>> and sometimes I forget I must wait for guys who spend their valuable time to 
>> work on it.
>> I apologize.
>> I'll try to be patient.
>
> Apology accepted.  Your and my time are both valuable.  That is why we should 
> not
> normally be working on the same thing  :)
>
> It is like spending resources twice on the same thing.
>
> There will be, and have been times that I ask for help, but until that 
> happens, it
> means I don't need it.
>
> Thanks for stepping up, and apologizing, Jean-Pierre.
>
>
> Dick

Jean-Pierre,

Please don't take anything I've said here to mean that you are not wanted in the
*discussions*, that is not what I am trying to say.  But there is no point in 
us both
editing the same source file on the same problem.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-12 Thread Dick Hollenbeck
On 12/12/2010 01:57 PM, Lorenzo Marcantonio wrote:
> On Sun, 12 Dec 2010, Dick Hollenbeck wrote:
>
>> The problem with ORing the colors is that as you get more layers, eventually 
>> the
>> intersections all turn white, no?
>> (Ok, on a normal board, we don't have so many mutliple gerber layer 
>> intersections,
>> true.  But if it can go wrong it eventually will.)
> A couple of supply layers and two signal parallel or crossing is actually 
> pretty
> normal (in fact some stackups uses power layers to decouple parallel
> running traces on different layers).
>
> I think it will happen pretty soon:D
>
>> Let's assume the screen memory is slower than internal memory, this could be 
>> the
>> current bottleneck.  Plus I am seeing flicker with only two layers, let 
>> alone a full
>> stack of gerber layers.  This tends to support the theory.
> Blitting is slow, expecially under X.
>
>> I will spend some time and try buffering the screen memory in its own 
>> additional
>> wxMemoryDC until the very end.
> Another option would be to accumulate the image in a memory bitmap and
> then blit it. It all depends on the wxMemoryDC performance.


Well that is not another option than the one I suggested, please excuse my bad 
English.

I coded it up and it is faster, and the bottleneck has been located.  The 
blitting is
slow only when screen memory is in the picture (pardon the pun).  The one and 
only
final blit is now the bottleneck, so there is no point in persuing the path of
eliminating the monochromatic bitmap.

Often screen memory is of a different format than the internal RAM resident 
bitmaps,
and this can be a CPU intensive thing, to convert each pixel.

The last remaining opportunity to reduce the time spent doing the last screen 
blit is
to optimize on the dirty area alone.  If we could reduce the size of the dirty 
area,
this would *dramatically* improve speed.  I think this is only possible though 
on the
layer show/hide clicks, where a layer is coming or going.  On the resizing 
operations,
especially when grid is on screen, the entire screen needs to be redrawn, 
mandating a
full sized blit.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Option to subtract soldermask from silkscreen in gerber output

2010-12-12 Thread Dick Hollenbeck
On 12/12/2010 04:56 PM, Vesa Solonen wrote:
> On Sun, 12 Dec 2010, Dick Hollenbeck wrote:
>
>> Often screen memory is of a different format than the internal RAM resident 
>> bitmaps,
>> and this can be a CPU intensive thing, to convert each pixel.
>> The last remaining opportunity to reduce the time spent doing the last 
>> screen blit is
>> to optimize on the dirty area alone.  If we could reduce the size of the 
>> dirty area,
>> this would *dramatically* improve speed.  I think this is only possible 
>> though on the
>> layer show/hide clicks, where a layer is coming or going.  On the resizing 
>> operations,
>> especially when grid is on screen, the entire screen needs to be redrawn, 
>> mandating a
>> full sized blit.
> I think the above sums up the bigger problem of graphics very well. WxDC 
> technology is from the 90's and so is KiCad's usage of graphics hardware. 
> KiCad should not mess with low level bitmap operations, but just send the 
> vector data to the graphics processor (or optimized sw implementation, 
> like mesa softpipe). Dirty area optimizations were done as EXA protocol 
> for the X server... This really is not an application level problem, but 
> wxDC is making it one. The efforts might be better spent on finding 
> alternative solutions for drawing than wxDC.
>
> -Vesa

I agree.  I have lost all my enthusiasm for wxDC.  It is nothing I care to 
spend any
more time on.

We indeed need to find a better solution.  In the next few weeks I will be 
looking at
Hueter's work.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] EESCHEMA: New design for a distributed library management system.

2010-12-13 Thread Dick Hollenbeck
Hey Guys,

After a significant wait, I actually did follow through and put together my 
thoughts
on a distributed library managment system for EESCHEMA.  Eventually some of 
these
design ideas could be used on PCBNEW also, but that is not happening yet.


I have been thinking about this design for approximately a year.  Then 3 months 
ago
began discussing it on the list.  Wayne has been very supportive, and then 
advanced
beyond that and actually offered to write the part description grammar spec.


Since then, we have been discussing this when we have time, and he has that 
second
part of the design nearly ready to go in the form of the part description 
language
spec, tentatively name "Sweet".


There are actually 3 new main concepts being introduced at once:

1) Distributed libraries, with an *abstract* library API.
2) Parts List.
3) Part description language.


Taken together, it will basically mean rewriting EESCHEMA to implement all three
concepts, and I don't think any one of the concepts can be done without the 
other two.

Wayne and I will be busy over the Christmas holidays, others are welcome to 
join in. 
In advance of that work, if you feel you can contribute any improvements to the
concepts please let me know soon.

I will be coding the LIB manager and at least one or two LIB_SOURCEs, and the
PARTS_LIST over the holidays, hopefully. 

If there is enough time, and assuming Wayne can do the part parsing and get it 
to me
on time, I will also do a preliminary text driven GUI which calls the parser to 
draw a
part on screen, and at that time I'd like to take a look at Torsten's GAL to do 
the
graphics portion of it.  It is only a single panel, not a significant 
commitment to
the GAL, but an experiment.  The test tool will not initially support GUI 
editing,
only GUI display of what is parsed in text, per previous discussion on this 
list.  

You remember how some HTML editors allow you to edit the HTML source and then 
display
the GUI in another panel.  I think inkscape may have a similar mode, editing 
SVG as
text, then displaying it. 

Hopefully Sweet will be easy enough to edit in this way, TBD.

To get a look at the distributed library management design, run doxygen on the
design.h file in /new, or use the script in there to do that.  Output HTML goes 
into
new/html.  Be sure not to miss the block diagram graphic at the bottom of the 
main page.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] EESCHEMA: New design for a distributed library management system.

2010-12-13 Thread Dick Hollenbeck
On 12/13/2010 12:47 PM, bennet...@digis.net wrote:
> Distributed library, huh!  I want to check out the spec,

The first part:

$ bzr up
$ cd /new
$ ./make-html.sh  or doxygen

$ firefox html/index.html


The second part:

Coming from Wayne.


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-13 Thread Dick Hollenbeck

Wayne and Torsten,

Here is a patch that allows the GAL to compile and run on Ubuntu Lucid x86_64

with *version wxWidgets 2.8.x*

The key thing is the wxWidgets version.  The repo seems to be dependent on 2.9.


Moving forward, we're going to need write access to a branch holding this 
stuff.  I
think we should keep it a separate branch.  Kicad's Cmake can be told to do a 
checkout
later.

Thanks again to Torsten for what looks to be:

1) great work,
2) conforming to the coding standards, and
3) for patience in the supreme.


Regards,


Dick

=== modified file 'gal/cairo_gal.cpp'
--- gal/cairo_gal.cpp	2010-10-17 22:57:11 +
+++ gal/cairo_gal.cpp	2010-12-13 19:39:57 +
@@ -149,15 +149,26 @@
 #if defined( __WXGTK__ )
 // Create a new wxClientDC and get the native implementation
 m_clientDC = new wxClientDC( this );
+
+#if wxCHECK_VERSION( 2, 9, 0 )
+
 m_clientDCimpl = new wxClientDCImpl( m_bufferedDC, this );
 m_drawable = m_clientDCimpl -> m_gdkwindow;
+
+#elif wxCHECK_VERSION( 2,8,0 )
+m_clientDCimpl = new wxClientDC( this );
+m_drawable = m_clientDCimpl -> m_window;
+#else
+#error "need wx widgets 2.8 as a minimum"
+#endif
+
 m_cairoImage = gdk_cairo_create( m_buffer );
 #endif
 
 #if defined(__WXMSW__)
 // Get the handle of the current window
 m_clientDC = new wxClientDC( this );
-m_hdc = ( ( HDC )( m_clientDC->GetHDC() ) );
+m_hdc = (HDC) m_clientDC->GetHDC();
 
 // Create a buffer
 m_dcBuffer = CreateCompatibleDC( m_hdc );

=== modified file 'gal/cairo_gal.h'
--- gal/cairo_gal.h	2010-10-17 22:57:11 +
+++ gal/cairo_gal.h	2010-12-03 08:50:29 +
@@ -217,7 +217,7 @@
 wxClientDC* m_clientDC; //!< Client device context; required because drawing outside the paint event
 wxBufferedDC* m_bufferedDC; //!< The buffered drawing context
 GdkPixmap* m_buffer; //!< The GDK pixmap
-wxClientDCImpl* m_clientDCimpl; //< The system dependent implementation of a ClientDC
+wxClientDC* m_clientDCimpl; //< The system dependent implementation of a ClientDC
 GdkDrawable* m_drawable; //!< Gdk Drawable (Drawables are either GdkWindow or GdkPixmap objects)
 #endif
 

=== modified file 'gal/opengl_gal.cpp'
--- gal/opengl_gal.cpp	2010-10-17 22:57:11 +
+++ gal/opengl_gal.cpp	2010-12-03 09:31:29 +
@@ -44,7 +44,7 @@
 #endif
 
 OPENGL_GAL::OPENGL_GAL( wxFrame* aParent, wxSize aScreenSize ) :
-wxGLCanvas( aParent, wxID_ANY, glAttributes, wxDefaultPosition, wxDefaultSize, 0, wxT(
+wxGLCanvas( aParent, wxID_ANY, (int*) glAttributes, wxDefaultPosition, wxDefaultSize, 0, wxT(
 "GLCanvas" ) )
 
 {

=== modified file 'gal/test/test_gal.cpp'
--- gal/test/test_gal.cpp	2010-10-17 22:57:11 +
+++ gal/test/test_gal.cpp	2010-12-03 09:32:41 +
@@ -618,7 +618,7 @@
 wxCMD_LINE_PARAM,
 NULL,
 NULL,
-"[testline | testpolyline | testrectangle | testcircle | testarc | testpolygon | testgroup | testfont | testtextalignment ]",
+wxT("[testline | testpolyline | testrectangle | testcircle | testarc | testpolygon | testgroup | testfont | testtextalignment ]"),
 wxCMD_LINE_VAL_STRING, wxCMD_LINE_PARAM_MULTIPLE },
 { wxCMD_LINE_NONE } };
 

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-13 Thread Dick Hollenbeck
On 12/13/2010 01:48 PM, Dick Hollenbeck wrote:
> Wayne and Torsten,
>
> Here is a patch that allows the GAL to compile and run on Ubuntu Lucid x86_64
>
> with *version wxWidgets 2.8.x*
>
> The key thing is the wxWidgets version.  The repo seems to be dependent on 
> 2.9.
>
>
> Moving forward, we're going to need write access to a branch holding this 
> stuff.  I
> think we should keep it a separate branch.  Kicad's Cmake can be told to do a 
> checkout
> later.

If the *community* decision is to move forward with it.  (Seems that could have 
been a
point of mis-understanding.)  I am only one voice, but I should get a good look 
at it
over the Christmas break.


> Thanks again to Torsten for what looks to be:
>
> 1) great work,
> 2) conforming to the coding standards, and
> 3) for patience in the supreme.
>
>
> Regards,
>
>
> Dick
>

___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-14 Thread Dick Hollenbeck
On 12/14/2010 03:22 AM, Martijn Kuipers wrote:
> On Dec 14, 2010, at 2:55 AM, Dick Hollenbeck wrote:
>
>> On 12/13/2010 01:48 PM, Dick Hollenbeck wrote:
>>> Wayne and Torsten,
>>>
>>> Here is a patch that allows the GAL to compile and run on Ubuntu Lucid 
>>> x86_64
>>>
>>> with *version wxWidgets 2.8.x*
>>>
>>> The key thing is the wxWidgets version.  The repo seems to be dependent on 
>>> 2.9.
>>>
>>>
>>> Moving forward, we're going to need write access to a branch holding this 
>>> stuff.  I
>>> think we should keep it a separate branch.  Kicad's Cmake can be told to do 
>>> a checkout
>>> later.
>> If the *community* decision is to move forward with it.  (Seems that could 
>> have been a
>> point of mis-understanding.)  I am only one voice, but I should get a good 
>> look at it
>> over the Christmas break.
> Great, for me an example (just like you planned) might show me the value of 
> Torstens' work. Not saying there isn't any, I am just not seeing it (my fault 
> really).

I had a cathartic moment this weekend when the BLIT operations under wxwidgets 
on
linux flunked in the extreme.
I don't yet know what the better alternative is yet, just know we need one.  For
gerbview, cairo and pixman are in my scope, and some research can be put into
techiques in gerbv and its graphical foundations, which I think are cairo and 
pixman.

> If I understand correctly you (DIck) are proposing to maintain 2 branches for 
> a while:
> - Kicad as we know it
> - Kicad Next Generation

I personally am only committing to a design, and to code only a new EESCHEMA
foundation.  I won't live long enough to create a new Kicad, inclusive of 
PCBNEW,
since I only have several hundred hours to donate each year.  I hope it is not 
just me
and Wayne working on this.   Wayne is already on board to write critical 
portions of
it, others are welcome.


Once the new foundation is poured, pieces of the old EESCHEMA can come over on 
top of
the new foundation, one by one, and during that time we can get a look at each 
piece
separately, to see if it is worth keeping or re-writing.  Obviously the old 
library
editor and manager will all go away.  The parts list concept is not going to be 
easy
to implement, and the chief struggle there will be providing a user friendly 
interface
experience.  That is why I wanted to do that very early, to prove the *UI* and
usability experience concepts early in the game. 

The remote aspects of some of the LIB_SOURCEs don't currently seem as 
difficult, and
they can be implemented incrementally over a long period of time, by any number 
of
people at any time.  The design enables that.  Some of them will require 
servers on
the back end, and much help is needed to write those, if they are to get done 
at all. 
Those servers are not cast in stone, other than they have to work with the 
LIB_SOURCE
running on the client, which is in C++.  But the servers themselves can be in 
any
language, could be python, or an apache module, whatever.


> If the next generation is as promising as is foreseen, then one day we 
> (Jean-Pierre) will just bless the next generation branch as the stable one. 
> Right ?

Yes some time will be needed.  The real EESCHEMA switch happens when folks 
start using
it, and they will cast that vote when and if they find it superior.

Dick


> Thanks for all the effort people are putting into Kicad.
>
> /Martijn 
>


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] EESCHEMA: New design for a distributed library management system.

2010-12-14 Thread Dick Hollenbeck

> The remote aspects of some of the LIB_SOURCEs don't currently seem
> as difficult, and they can be implemented incrementally over a long
> period of time, by any number of people at any time. The design
> enables that. Some of them will require servers on the back end, and
> much help is needed to write those, if they are to get done at all.
> Those servers are not cast in stone, other than they have to work
> with the LIB_SOURCE running on the client, which is in C++. But the
> servers themselves can be in any language, could be python, or an
> apache module, whatever.


I wanted to mention a few items that will help illustrate just how powerful this
design is. 

The unit of retrieval from the LIB_SOURCEs is the Sweet text string.  
Essentially that
returned Sweet string is part of the API.  However, behind the mechanism of 
returning
this string can be anything.  There could for example be a conversion step, 
converting
the part from any other format into the Sweet form.

Not only is a conversion process possible, but so is a dynamic creation 
process. 
There is a function to "search for a part using a query string".  But do not 
limit
that concept to an existing part.

We do not have to limit ourselves to a single "query language".   We could 
support
several, including a pastebin type ID string.  We just have to use whatever 
query
language the LIB_SOURCE supports, and I see some supporting more than our 
standard one.

This is an opportunity to innovate, and to share.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-14 Thread Dick Hollenbeck
On 12/14/2010 09:38 AM, Lorenzo Marcantonio wrote:
> On Tue, 14 Dec 2010, Dick Hollenbeck wrote:
>
>> I had a cathartic moment this weekend when the BLIT operations under 
>> wxwidgets on
>> linux flunked in the extreme.
>> I don't yet know what the better alternative is yet, just know we need one.  
>> For
>> gerbview, cairo and pixman are in my scope, and some research can be put into
>> techiques in gerbv and its graphical foundations, which I think are cairo 
>> and pixman.
> In my experience cairo is slower than anything I've seen (maybe even
> a Java2D would be faster).

Well you obviously did not recompile the latest gerbview with the patch that was
discussed Sunday night. 

20 seconds to update 12 gerver layers or so, on a super fast computer.

cairo is NOT the slowest.  Besides, current testing should speak louder than 
past
experiences.  I don't have an opinion yet on what is best for us.  I just KNOW 
it aint
what we are using.


>  Look at gerbv in cairo mode to get an idea.
> pixman looks more promising but I've no experience on it.
>


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-14 Thread Dick Hollenbeck

>> If the next generation is as promising as is foreseen, then one day we 
>> (Jean-Pierre) will just bless the next generation branch as the stable one. 
>> Right ?
> Yes some time will be needed.  The real EESCHEMA switch happens when folks 
> start using
> it, and they will cast that vote when and if they find it superior.

More important than Jean-Pierre's blessing, is his help.  :)

The user's give the blessings.

> Dick
>


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-14 Thread Dick Hollenbeck
On 12/14/2010 11:34 AM, jean-pierre charras wrote:
> Le 14/12/2010 17:06, Dick Hollenbeck a écrit :
>> On 12/14/2010 09:38 AM, Lorenzo Marcantonio wrote:
>>> On Tue, 14 Dec 2010, Dick Hollenbeck wrote:
>>>
>>>> I had a cathartic moment this weekend when the BLIT operations under 
>>>> wxwidgets on
>>>> linux flunked in the extreme.
>>>> I don't yet know what the better alternative is yet, just know we need 
>>>> one.  For
>>>> gerbview, cairo and pixman are in my scope, and some research can be put 
>>>> into
>>>> techiques in gerbv and its graphical foundations, which I think are cairo 
>>>> and pixman.
>>> In my experience cairo is slower than anything I've seen (maybe even
>>> a Java2D would be faster).
>> Well you obviously did not recompile the latest gerbview with the patch that 
>> was
>> discussed Sunday night.
>>
>> 20 seconds to update 12 gerver layers or so, on a super fast computer.
>>
>> cairo is NOT the slowest.  Besides, current testing should speak louder than 
>> past
>> experiences.  I don't have an opinion yet on what is best for us.  I just 
>> KNOW it aint
>> what we are using.
>>
>>
>>>   Look at gerbv in cairo mode to get an idea.
>>> pixman looks more promising but I've no experience on it.
>>>
> For info: I spent some hours to test latest Gerbview, under Linux Ubuntu 
> 10.10 , Windows XP and Vista.
> I used a 10 layers very large board (9500 pads/vias, 27000 track segments, a 
> lot of copper areas)
> on my computer (a very common and low cost PC with a basic graphic card)with 
> a single 1200x1000 pixels monitor.
> I do not have any speed issues:
> The new Gerbview is faster than the old version (at least as fast as Gerbv on 
> my computer).
> The copy mode is roughly as fast as the or mode.
> When Gerbview is full screen, it takes about 1 second to redraw the screen 
> (less than pcbnew to redraw the board).
>
> So "20 seconds to update 12 gerver layers or so, on a super fast computer" 
> could be due to an other problem,
> even with monitor that have more pixels than mine.
>
> Having said this, I think if you are motivated to work on a new graphic 
> alternative using the experimental Torsten's work,
> this is a *very good* news.
>
> I do not know if cairo or an other tool is faster or not.
> The answer will come from tests with very large boards on a lot of different 
> computers and OS.
>
> But we can find a lot of enhancements (anti aliasing, better and more 
> powerful graphic primitives ...)
> One of most important issues with the current wxDC implementation is the fact 
> one cannot have a scaling factor for graphic texts.
> This is the main reason why Eeschema does not use usual fonts.
>
> Cairo is a candidate, but have also a look to sfml2:
> Developers are actively working on it.
> It is multi platform.
> It use currently cmake.
> It is small.
> It could be an other serious candidate.

Jean-Pierre,

Thanks for the discussion on gerbview. 

1920 x 1200 = 2304000 pixels
-  = 1.92

1200 x 1000  = 120 pixel


Yes, it seems you are correct, the area difference is no explanation for this 
large
difference in blit "mask with AND" mode.

So the question is, how many users will find themselves with the same problem?  
Hard
to answer if we don't know the reason for the problem.

gerbv is MUCH faster on my computer than the latest gerbview using "mask with 
AND". 
However, using blit OR mode, gerbview is faster than gerbv.

If we can get that button in there to toggle the mode, perhaps we can simply 
postpone
solving the blit "mask with AND" question.

=

Also, thanks for your thoughts on the graphics subsystem.

Actually writing some bit of new code for Torsten's API will provide us with a 
lot of
observations.  If the API is sound, most anything can be tucked underneath it.

After all, it is a GAL.

As far as speed goes, we may not get a good read on the speed until something 
more
demanding is done with it, like a gerbview or pcbnew.  EESCHEMA would ask 
relatively
little of the GAL.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-14 Thread Dick Hollenbeck

> Thanks for the discussion on gerbview. 
>
> 1920 x 1200 = 2304000 pixels
> -  = 1.92
>
> 1200 x 1000  = 120 pixel
>
>
> Yes, it seems you are correct, the area difference is no explanation for this 
> large
> difference in blit "mask with AND" mode.


Well on second thought, it is not O(screen area).

Screen area could be the entire reason.

I will try it with a reduced resolution setting soon.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-15 Thread Dick Hollenbeck
On 12/15/2010 06:19 AM, Brian Sidebotham wrote:
> On 14 December 2010 22:49, Wayne Stambaugh  wrote:
>> I made some ,inor changes to clarify inherited vs base part and changed
>> LPID names reflect local naming convention as suggested by Dick.
>>
>> Wayne
>>
>> On 12/14/2010 9:39 AM, Wayne Stambaugh wrote:
>>> I know all of you've been on the edge of your seats waiting for the the new
>>> part file format since Dick announced his plans to start working on the
>>> distributed library.  So without further ado, attached is the preliminary 
>>> copy
>>> of the library part file specification.  Please take a look at it and make 
>>> sure
>>> I didn't forget anything.  I have tried to accommodate all of the previous
>>> library discussions as best I could.  If I missed something, it wasn't
>>> intentional so please let me know so I can revise the specification.
>>>
>>> Initially, I would like keep the discussion focused on what is missing and 
>>> how
>>> it should be implemented.  Please keep the discussion on semantics like "I
>>> would rather use thickness instead of line_width" until after we've hammered
>>> out all of the technical issues.
>>>
>>> Once we have a consensus, I will convert the document into a more formal 
>>> format
>>> similar to the current file specification documents and commit it to the
>>> documentation repo since that is were the rest of Kicad's documentation 
>>> resides.
>>>
>>> I know it's been a long time coming so thank you for your patience.
>>>
>>> Wayne
> Hi Wayne,
>
> I just got a look through the doc. I have a few questions/observations for 
> you:
>
> (1) If I browsed a library for a part which contains all of the parts
> information below the line:
> # This is an example of a dual input NAND gate A of a 7400.
> in the document, does this mean that I would see all of the parts for
> selection? i.e. dual_input_nand_a, dual_input_nand_b,
> dual_input_nand_c, dual_input_nand_d, dual_input_nand_demorgan_a,
> dual_input_nand_demorgan_b, dual_input_nand_demorgan_c,
> dual_input_nand_demorgan_d, 7400, 74LS00, and SN74HCT00NSR
>
> I would have thought there would need to be a way in the syntax of
> showing what was a selectable/finished part and what was merely a
> "symbol" or partial part which should not be allowed to be entered
> into the schematic directly.

Brian,

This is a good observation, about the readiness of a part.  (Don't mean to butt 
in,
since you asked Wayne.)

Three possible solutions to keeping a part off limits for instantiation:

1) Mark the part as not ready for prime time using Sweet.

2) The part parser is dancing through all these part body expressions.  Rather 
than
the user saying in syntax that the part is not ready for primetime, it may be 
possible
for the parser to reach such a conclusion and then reflect this in a class 
PART::state
field, indicating that it is syntactically correct, but incompletely specified.

3) We may also be able to do this based on library "category".   Categories 
within a
library are directory like partitions, and although I had originally thought 
that they
would apply to all libraries except the parts list, in the last two days I have 
been
wondering if we may be able to or should have them there also, as a tabbed
spreadsheet.  (The UI paradigm of the parts list is going to be a challenge, it 
has to
be useable.)

Remember, the only parts that can be instantiated are those in the parts list.  
So
this brings up a fourth option, which is to say that only prime-time ready 
parts (i.e.
instantiable parts) can go into the parts list.  That may be the best option of 
all. 
My least favorite is 1).

But the conversation extends then not merely to instantiation, but also to 
extension. 
For extension, the derived part may live in the parts list, and all base parts 
have to
be available for extension, regardless of their library of origin and 
regardless of
their completeness.  So any picklist UI has to show all of them.

Dick


> Ah, actually, I see you might be using the value field for this
> purpose. Only values are selectable parts perhaps?
>
> (2) I could see a pin rename function being handy. At the moment it is
> possible to delete a pin and then add a new pin in, but this would
> mean re-defining all of the other pin properties.
>
> (pin_rename NUMBER NAME)
>
> Another method might be to have overriding of pin attributes. For example:
>
> (part “dual_input_nand_a”
>   (reference “U”)
>   (pin input line (at -600 100 180)
> (name “” (font (size 60 60)) (visible yes))
> (number “1” (font (size 60 60)) (visible yes))
> (visible yes))
> )
>
> (part “dual_input_nand_b” inherits “dual_in_nand_a/rev1”
>   (pin_del 7)
>   (pin_del 14)
>   (pin_renum 1 4)
>   (pin_renum 2 5)
>   (pin_renum 3 6)
>   (pin (number "4") (name "D"))
>   (pin (number "5") (name "E"))
>   (pin (number "6") (name "F"))
> )
>
> Perhaps this is something already envisaged?
> It will be useful for people who use micro with an inordinate amount
> of

Re: [Kicad-developers] New part file format document.

2010-12-15 Thread Dick Hollenbeck
On 12/15/2010 08:35 AM, Wayne Stambaugh wrote:
> On 12/15/2010 8:49 AM, Dick Hollenbeck wrote:
>> On 12/15/2010 06:19 AM, Brian Sidebotham wrote:
>>> On 14 December 2010 22:49, Wayne Stambaugh  wrote:
>>>> I made some ,inor changes to clarify inherited vs base part and changed
>>>> LPID names reflect local naming convention as suggested by Dick.
>>>>
>>>> Wayne
>>>>
>>>> On 12/14/2010 9:39 AM, Wayne Stambaugh wrote:
>>>>> I know all of you've been on the edge of your seats waiting for the the 
>>>>> new
>>>>> part file format since Dick announced his plans to start working on the
>>>>> distributed library.  So without further ado, attached is the preliminary 
>>>>> copy
>>>>> of the library part file specification.  Please take a look at it and 
>>>>> make sure
>>>>> I didn't forget anything.  I have tried to accommodate all of the previous
>>>>> library discussions as best I could.  If I missed something, it wasn't
>>>>> intentional so please let me know so I can revise the specification.
>>>>>
>>>>> Initially, I would like keep the discussion focused on what is missing 
>>>>> and how
>>>>> it should be implemented.  Please keep the discussion on semantics like "I
>>>>> would rather use thickness instead of line_width" until after we've 
>>>>> hammered
>>>>> out all of the technical issues.
>>>>>
>>>>> Once we have a consensus, I will convert the document into a more formal 
>>>>> format
>>>>> similar to the current file specification documents and commit it to the
>>>>> documentation repo since that is were the rest of Kicad's documentation 
>>>>> resides.
>>>>>
>>>>> I know it's been a long time coming so thank you for your patience.
>>>>>
>>>>> Wayne
>>> Hi Wayne,
>>>
>>> I just got a look through the doc. I have a few questions/observations for 
>>> you:
>>>
>>> (1) If I browsed a library for a part which contains all of the parts
>>> information below the line:
>>> # This is an example of a dual input NAND gate A of a 7400.
>>> in the document, does this mean that I would see all of the parts for
>>> selection? i.e. dual_input_nand_a, dual_input_nand_b,
>>> dual_input_nand_c, dual_input_nand_d, dual_input_nand_demorgan_a,
>>> dual_input_nand_demorgan_b, dual_input_nand_demorgan_c,
>>> dual_input_nand_demorgan_d, 7400, 74LS00, and SN74HCT00NSR
>>>
>>> I would have thought there would need to be a way in the syntax of
>>> showing what was a selectable/finished part and what was merely a
>>> "symbol" or partial part which should not be allowed to be entered
>>> into the schematic directly.
>> Brian,
>>
>> This is a good observation, about the readiness of a part.  (Don't mean to 
>> butt in,
>> since you asked Wayne.)
> Brian,
>
> Good catch.  I hadn't actually thought about that.
>
>> Three possible solutions to keeping a part off limits for instantiation:
>>
>> 1) Mark the part as not ready for prime time using Sweet.
>>
>> 2) The part parser is dancing through all these part body expressions.  
>> Rather than
>> the user saying in syntax that the part is not ready for primetime, it may 
>> be possible
>> for the parser to reach such a conclusion and then reflect this in a class 
>> PART::state
>> field, indicating that it is syntactically correct, but incompletely 
>> specified.
> My preference would be solution 2.  If we change our minds as to what defines 
> a
> valid part, we only need to change that in the library code.  If we implement
> it as a new part file element, we would have to change it in every part file.
> It also creates additional syntax for the part file.  One of my primary goals
> was to keep the part syntax as clean and readable as possible so I will be
> reluctant to add anything that can be solved in code.  It should be easy 
> enough
> to have the librarian only display valid parts for inclusion into a schematic.
>
> Wayne

Right, I should have given my 4th solution a number 4).  Definitely 2) is 
needed, and
the good news is 2) and 4) are not mutually exclusive.  You could not implement 
4)
without 2).


For 2):

During parsing, and in the Inherits() method, we can set bits in a "contains" 
bitmap int.


class PART {

Re: [Kicad-developers] New part file format document.

2010-12-15 Thread Dick Hollenbeck
On 12/15/2010 08:46 AM, Dick Hollenbeck wrote:
> On 12/15/2010 08:35 AM, Wayne Stambaugh wrote:
>> On 12/15/2010 8:49 AM, Dick Hollenbeck wrote:
>>> On 12/15/2010 06:19 AM, Brian Sidebotham wrote:
>>>> On 14 December 2010 22:49, Wayne Stambaugh  wrote:
>>>>> I made some ,inor changes to clarify inherited vs base part and changed
>>>>> LPID names reflect local naming convention as suggested by Dick.
>>>>>
>>>>> Wayne
>>>>>
>>>>> On 12/14/2010 9:39 AM, Wayne Stambaugh wrote:
>>>>>> I know all of you've been on the edge of your seats waiting for the the 
>>>>>> new
>>>>>> part file format since Dick announced his plans to start working on the
>>>>>> distributed library.  So without further ado, attached is the 
>>>>>> preliminary copy
>>>>>> of the library part file specification.  Please take a look at it and 
>>>>>> make sure
>>>>>> I didn't forget anything.  I have tried to accommodate all of the 
>>>>>> previous
>>>>>> library discussions as best I could.  If I missed something, it wasn't
>>>>>> intentional so please let me know so I can revise the specification.
>>>>>>
>>>>>> Initially, I would like keep the discussion focused on what is missing 
>>>>>> and how
>>>>>> it should be implemented.  Please keep the discussion on semantics like 
>>>>>> "I
>>>>>> would rather use thickness instead of line_width" until after we've 
>>>>>> hammered
>>>>>> out all of the technical issues.
>>>>>>
>>>>>> Once we have a consensus, I will convert the document into a more formal 
>>>>>> format
>>>>>> similar to the current file specification documents and commit it to the
>>>>>> documentation repo since that is were the rest of Kicad's documentation 
>>>>>> resides.
>>>>>>
>>>>>> I know it's been a long time coming so thank you for your patience.
>>>>>>
>>>>>> Wayne
>>>> Hi Wayne,
>>>>
>>>> I just got a look through the doc. I have a few questions/observations for 
>>>> you:
>>>>
>>>> (1) If I browsed a library for a part which contains all of the parts
>>>> information below the line:
>>>> # This is an example of a dual input NAND gate A of a 7400.
>>>> in the document, does this mean that I would see all of the parts for
>>>> selection? i.e. dual_input_nand_a, dual_input_nand_b,
>>>> dual_input_nand_c, dual_input_nand_d, dual_input_nand_demorgan_a,
>>>> dual_input_nand_demorgan_b, dual_input_nand_demorgan_c,
>>>> dual_input_nand_demorgan_d, 7400, 74LS00, and SN74HCT00NSR
>>>>
>>>> I would have thought there would need to be a way in the syntax of
>>>> showing what was a selectable/finished part and what was merely a
>>>> "symbol" or partial part which should not be allowed to be entered
>>>> into the schematic directly.
>>> Brian,
>>>
>>> This is a good observation, about the readiness of a part.  (Don't mean to 
>>> butt in,
>>> since you asked Wayne.)
>> Brian,
>>
>> Good catch.  I hadn't actually thought about that.
>>
>>> Three possible solutions to keeping a part off limits for instantiation:
>>>
>>> 1) Mark the part as not ready for prime time using Sweet.
>>>
>>> 2) The part parser is dancing through all these part body expressions.  
>>> Rather than
>>> the user saying in syntax that the part is not ready for primetime, it may 
>>> be possible
>>> for the parser to reach such a conclusion and then reflect this in a class 
>>> PART::state
>>> field, indicating that it is syntactically correct, but incompletely 
>>> specified.
>> My preference would be solution 2.  If we change our minds as to what 
>> defines a
>> valid part, we only need to change that in the library code.  If we implement
>> it as a new part file element, we would have to change it in every part file.
>> It also creates additional syntax for the part file.  One of my primary goals
>> was to keep the part syntax as clean and readable as possible so I will be
>> reluctant to add anything that can be solved in code.  It should be easy 
>> enough
>> to have the librarian only display valid parts for inclusion into a 
>> schematic.
>>
>> Wayne
> Right, I should have given my 4th solution a number 4).  Definitely 2) is 
> needed, and
> the good news is 2) and 4) are not mutually exclusive.  You could not 
> implement 4)
> without 2).

Since the parts list is the origin of the BOM, we may need to have 4) also, 
other wise
folks will go to buy incomplete parts and get all confused.  :)

Worse yet, they may come back and ask us where to get those parts.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-15 Thread Dick Hollenbeck

>> Since the parts list is the origin of the BOM, we may need to have 4) also, 
>> other wise
>> folks will go to buy incomplete parts and get all confused.  :)
>>
>> Worse yet, they may come back and ask us where to get those parts.
> It's really difficult to find a good supplier for arcs, rectangles, and lines,
> let alone bezier curves :)

I'm trying to imagine my reaction if my wife asked me to go buy a 3 legged dog.


I'd be tempted to tell her that I am one, but it aint true.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-15 Thread Dick Hollenbeck

> I didn't use pin_swap in an example because a 7400 is so simple you typically
> wouldn't need to swap any pins.  I see pin swapping being useful on component
> with a lot of reconfigurable pins (think micro-controllers or gate arrays).
> The primary usage pattern I see with pin swapping is say I am 90% done wiring 
> a
> 32 bit micro-controller in my schematic when I realize that the last couple of
> pins are going to turn my schematic into a rats nest.  Rather than rip up all
> the work you've just done, you could quickly create a new component based on
> the existing one and swap the pins that would allow you to finish wiring your
> schematic the way you want it to.  I can see pin swapping also finding it's 
> way
> into the schematic edit. 


I don't see that happening, and this is because components are nothing but
instantiated parts.  You cannot swap the pins of a component, because 
technically it
does not have any.  So this has to happen in the parts list.  Behind the scenes 
you
could clone the part to a new parts list entry, and then change the part 
reference in
the component to point to the new part in the parts list.

Like I said, it is going to take discipline to hang on to this parts list 
concept. 
I'm fully committed to doing that however, so expect resistance from me on 
concepts
that make it difficult to keep the parts list.  Sorry.


Dick




___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-15 Thread Dick Hollenbeck
On 12/15/2010 01:41 PM, Wayne Stambaugh wrote:
> On 12/15/2010 2:21 PM, Dick Hollenbeck wrote:
>>> I didn't use pin_swap in an example because a 7400 is so simple you 
>>> typically
>>> wouldn't need to swap any pins.  I see pin swapping being useful on 
>>> component
>>> with a lot of reconfigurable pins (think micro-controllers or gate arrays).
>>> The primary usage pattern I see with pin swapping is say I am 90% done 
>>> wiring a
>>> 32 bit micro-controller in my schematic when I realize that the last couple 
>>> of
>>> pins are going to turn my schematic into a rats nest.  Rather than rip up 
>>> all
>>> the work you've just done, you could quickly create a new component based on
>>> the existing one and swap the pins that would allow you to finish wiring 
>>> your
>>> schematic the way you want it to.  I can see pin swapping also finding it's 
>>> way
>>> into the schematic edit. 
>>
>> I don't see that happening, and this is because components are nothing but
>> instantiated parts.  You cannot swap the pins of a component, because 
>> technically it
>> does not have any.  So this has to happen in the parts list.  Behind the 
>> scenes you
>> could clone the part to a new parts list entry, and then change the part 
>> reference in
>> the component to point to the new part in the parts list.
>>
>> Like I said, it is going to take discipline to hang on to this parts list 
>> concept. 
>> I'm fully committed to doing that however, so expect resistance from me on 
>> concepts
>> that make it difficult to keep the parts list.  Sorry.
> I guess I'm still not 100% sure how all this is going to fit together.  The
> above should read:  Create a new part derived from the existing one and swap
> the pins in the inherited part.  Change the part in your schematic to your new
> part.
>
> Wayne


The definition of "component" in the new doxygen output might help.  There is 
not much
to a component.  It has no pins itself.


The component is in the schematic.  It points to a part in the parts list, the 
part
that it "*is*".  The component has no pins itself, but borrows those of the 
part via
pointer at the C++ level.


To swap pins in a component:

Create a new part derived from the component's current one, and swap

the pins in the inherited part.  Change the component in the schematic such 
that its part reference points to the new part in the parts list.


We'll need reference counting in RAM loaded parts so they cannot be deleted if 
some
higher level entity, part or component, is dependent on them. 

It is not generally easy to delete a part in the new API.  Only possible to 
delete a
part if its LIB has LIB_SINK, and even now I remember this function is missing 
in
LIB_SINK.  Currently I don't see the PARTS_LIST class using the 
LIB_SOURCE+LIB_SINK
delegates, since it can override the LIB functions using polymorphism.


Hope this helps,

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-15 Thread Dick Hollenbeck
On 12/15/2010 01:15 AM, jean-pierre charras wrote:
> Le 14/12/2010 18:59, Dick Hollenbeck a écrit :
>>> Thanks for the discussion on gerbview.
>>>
>>> 1920 x 1200 = 2304000 pixels
>>> -  = 1.92
>>>
>>> 1200 x 1000  = 120 pixel
>>>
>>>
>>> Yes, it seems you are correct, the area difference is no explanation for 
>>> this large
>>> difference in blit "mask with AND" mode.
>>
>> Well on second thought, it is not O(screen area).
>>
>> Screen area could be the entire reason.
>>
>> I will try it with a reduced resolution setting soon.
>>
>> Dick
>>
> I forgot:
>
> If you are compiling with option USE_WX_ZOOM = ON, the patch has a bug in 
> BOARD::Draw.
> line
>  aPanel->DrawBackGround( &screenDC );
> must be
>  aPanel->DoPrepareDC(screenDC);
>  aPanel->DrawBackGround( &screenDC );
>
> Otherwise, if the grid display option is ON, the grid is always drawn, 
> regardless the grid size in pixels,
> because in the current device context, the user scale is set to 1.0, and 
> testing to see if the grid size in pixel is more than 10 
> pixels fails.
>
> For zoom values of 16 and more, the grid drawing routine is therefore very 
> long and can easily explain 20 seconds to redraw the 
> screen.
> Roughly, the grid routine try to draw the grid on a screen size of zoom * 
> screen_size_x * zoom * screen_size_y.
> If the grid size is low and zoom value hight, it takes a while.
>
> (Can be avoid if you switch the grid display OFF)

Jean-Pierre,

I have 15 *.pho files associated with the board I had sent you for debugging the
zones.  Fifteen *.pho layers.  That screen redraws in 1.8 seconds using the 
"bitmask
with COPY" mode.
On a full screen. 

*The twenty seconds was a bad report, sorry.*

I think I loaded the gerbers on the command line with "ks*.pho" and ended up 
with 30
gerbers, since there were two root filename sets, say ks1*.pho and ks2*.pho.  
My bad. 
But it was never 20 seconds, just feld like it, and mostly because the loading 
of the
gerbers redraws the screen after each individual layer.

In the OR mode, it is faster. 

If I scrink the screen, it gets faster, goes down to 0.7 seconds or so, 
approximately
proportional to screen area.  The grid had not much effect that I could tell.

I think the 1.8 seconds is tolerable for now.  And the faster OR mode even more 
so.

I really like the look of the "bitmask with COPY" mode. 

It would be nice to have both modes. 

Lastly until I buffered using screenDC, I had been getting screen flashing 
using the
"bitmap with COPY" mode.  So I think we need to keep that, or something like it.


GetBoard()->Draw( DrawPanel, DC,
GR_COPY,  // this needs to be GR_COPY or GR_OR, 
set
from a toggle button.
wxPoint( 0, 0 ) );


That argument GR_COPY, if it could be button toggled to GR_OR, with the other 
TODO
items I mentioned when I emailed the patch, would probably make for an 
excellent step
forward for this tool.

Thanks,

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2010-12-15 Thread Dick Hollenbeck
On 12/15/2010 04:16 PM, Dick Hollenbeck wrote:
> On 12/15/2010 01:15 AM, jean-pierre charras wrote:
>> Le 14/12/2010 18:59, Dick Hollenbeck a écrit :
>>>> Thanks for the discussion on gerbview.
>>>>
>>>> 1920 x 1200 = 2304000 pixels
>>>> -  = 1.92
>>>>
>>>> 1200 x 1000  = 120 pixel
>>>>
>>>>
>>>> Yes, it seems you are correct, the area difference is no explanation for 
>>>> this large
>>>> difference in blit "mask with AND" mode.
>>> Well on second thought, it is not O(screen area).
>>>
>>> Screen area could be the entire reason.
>>>
>>> I will try it with a reduced resolution setting soon.
>>>
>>> Dick
>>>
>> I forgot:
>>
>> If you are compiling with option USE_WX_ZOOM = ON, the patch has a bug in 
>> BOARD::Draw.
>> line
>>  aPanel->DrawBackGround( &screenDC );
>> must be
>>  aPanel->DoPrepareDC(screenDC);
>>  aPanel->DrawBackGround( &screenDC );
>>
>> Otherwise, if the grid display option is ON, the grid is always drawn, 
>> regardless the grid size in pixels,
>> because in the current device context, the user scale is set to 1.0, and 
>> testing to see if the grid size in pixel is more than 10 
>> pixels fails.
>>
>> For zoom values of 16 and more, the grid drawing routine is therefore very 
>> long and can easily explain 20 seconds to redraw the 
>> screen.
>> Roughly, the grid routine try to draw the grid on a screen size of zoom * 
>> screen_size_x * zoom * screen_size_y.
>> If the grid size is low and zoom value hight, it takes a while.
>>
>> (Can be avoid if you switch the grid display OFF)
> Jean-Pierre,
>
> I have 15 *.pho files associated with the board I had sent you for debugging 
> the
> zones.  Fifteen *.pho layers.  That screen redraws in 1.8 seconds using the 
> "bitmask
> with COPY" mode.
> On a full screen. 
>
> *The twenty seconds was a bad report, sorry.*
>
> I think I loaded the gerbers on the command line with "ks*.pho" and ended up 
> with 30
> gerbers, since there were two root filename sets, say ks1*.pho and ks2*.pho.  
> My bad. 
> But it was never 20 seconds, just feld like it, and mostly because the 
> loading of the
> gerbers redraws the screen after each individual layer.
>
> In the OR mode, it is faster. 
>
> If I scrink the screen, it gets faster, goes down to 0.7 seconds or so, 
> approximately
> proportional to screen area.  The grid had not much effect that I could tell.
>
> I think the 1.8 seconds is tolerable for now.  And the faster OR mode even 
> more so.
>
> I really like the look of the "bitmask with COPY" mode. 
>
> It would be nice to have both modes. 
>
> Lastly until I buffered using screenDC, I had been getting screen flashing 
> using the
> "bitmap with COPY" mode.  So I think we need to keep that, or something like 
> it.
>
>
> GetBoard()->Draw( DrawPanel, DC,
> GR_COPY,  // this needs to be GR_COPY or 
> GR_OR, set
> from a toggle button.
> wxPoint( 0, 0 ) );
>
>
> That argument GR_COPY, if it could be button toggled to GR_OR, with the other 
> TODO
> items I mentioned when I emailed the patch, would probably make for an 
> excellent step
> forward for this tool.

the competing gerbv draws the same gerber stack in about 0.8 seconds using the 
same
size, etc.

It its presentation seems more like our "bitmask with COPY" mode.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck

> The only thing not covered for me then would be one schematic pin to
> many footprint pins support. I can't see a nice way of doing that yet.


Brian,

Even with the current software, try adding pins to your footprint that share 
the same
pin name.  I believe the netlist will know then that these pins are all 
equivalent and
are mapped to the very one and the same schematic pin.  I remember doing this, 
so I
think its there now.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck
On 12/16/2010 06:18 AM, Brian Sidebotham wrote:
> On 16 December 2010 02:31, Wayne Stambaugh  wrote:
>> On 12/15/2010 9:19 PM, Karl Schmidt wrote:
>>> On 12/15/2010 07:30 PM, Brian Sidebotham wrote:
>>>
>>>
 When placing components such as passives (mainly R's and C's) you come
 across the common problem that you draw the symbol either horizontally
 or vertically. When you place the component it could be in one of four
 orientations, but generally it's either 0deg rot (horizontal) or 90deg
 rot (vertical).
>>> This is called Schematic symbol alternatives - usually you only need 2
>>> versions (bridge circuits need a 45 makes 3 versions) - most CAD systems
>>> have this - and its nice.  I added this to my wiki's wish list.
>> This would this not be a feature in the schematic capture program?  An
>> excellent idea but I don't see it as a requirement of the part file or
>> the part file editor.
>>
>> Wayne
> It does need a way of telling the schematic capture how to choose a
> look for a component. However, I think the functionality is allowed
> for in the current spec already. The different versions can be
> alternatives, then it is down to the GUI design to make these
> alternatives easy to select on a per-component instance basis which
> I'm sure is possible, and if I remember rightly desired by Jean-Pierre
> for large logic designs too for selecting deMorgan.
>
> So I think this is already covered, I hadn't thought about using
> alternatives for this in the part spec. This also covers different
> pinouts for processors that are available in different packages.


Yes, maybe there is a way for "alternate like" keywords to assist in the dynamic
construction of [pop up or other kinds of] menus during part picking.

Dick



> The only thing not covered for me then would be one schematic pin to
> many footprint pins support. I can't see a nice way of doing that yet.
> It's only a nice-to-have anyway, and that's only my opinion which
> generally seems to differ from most others! ;)
>
> Thanks again for all the efforts, I'm really seeing Dick's vision of
> editing the source of the part in the editor as it's so easy to read
> and follow. Well Done All!
>
> Best Regards,
>
> Brian.
>
> ___
> Mailing list: https://launchpad.net/~kicad-developers
> Post to : kicad-developers@lists.launchpad.net
> Unsubscribe : https://launchpad.net/~kicad-developers
> More help   : https://help.launchpad.net/ListHelp
>


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck

> Brian,
>
> Even with the current software, try adding pins to your footprint that share 
> the same
> pin

pad
>  name.  I believe the netlist will know then that these pins

pads
>  are all equivalent and
> are mapped to the very one and the same schematic pin.  I remember doing 
> this, so I
> think its there now.
>
> Dick
>


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck
On 12/16/2010 08:12 AM, Wayne Stambaugh wrote:
> On 12/16/2010 7:18 AM, Brian Sidebotham wrote:
>> On 16 December 2010 02:31, Wayne Stambaugh  wrote:
>>> On 12/15/2010 9:19 PM, Karl Schmidt wrote:
 On 12/15/2010 07:30 PM, Brian Sidebotham wrote:


> When placing components such as passives (mainly R's and C's) you come
> across the common problem that you draw the symbol either horizontally
> or vertically. When you place the component it could be in one of four
> orientations, but generally it's either 0deg rot (horizontal) or 90deg
> rot (vertical).
 This is called Schematic symbol alternatives - usually you only need 2
 versions (bridge circuits need a 45 makes 3 versions) - most CAD systems
 have this - and its nice.  I added this to my wiki's wish list.
>>> This would this not be a feature in the schematic capture program?  An
>>> excellent idea but I don't see it as a requirement of the part file or
>>> the part file editor.
>>>
>>> Wayne
>> It does need a way of telling the schematic capture how to choose a
>> look for a component. However, I think the functionality is allowed
>> for in the current spec already. The different versions can be
>> alternatives, then it is down to the GUI design to make these
>> alternatives easy to select on a per-component instance basis which
>> I'm sure is possible, and if I remember rightly desired by Jean-Pierre
>> for large logic designs too for selecting deMorgan.
>>
>> So I think this is already covered, I hadn't thought about using
>> alternatives for this in the part spec. This also covers different
>> pinouts for processors that are available in different packages.
>>
>> The only thing not covered for me then would be one schematic pin to
>> many footprint pins support. I can't see a nice way of doing that yet.
>> It's only a nice-to-have anyway, and that's only my opinion which
>> generally seems to differ from most others! ;)
> Conceptually its a merge action so the syntax would look like:
>
> (pin_merge PIN_LIST)
>
> The part and schematic editors would only display the first pin in the list.
> The schematic net list generator would electrically connect all of the pins in
> the list.
>
> The other option is to tell the schematic editor to merge all power pins with
> the same name.  So all pins named GND, VCC, etc. would be merged into a single
> pin for display purposes.  This behavior could even be applied per component
> and saved a part of the yet to be written new schematic file format.
>
> My preference would be to make this an option in the schematic editor since it
> doesn't really effect the part itself.  It only effects how the part is
> displayed.  Anyone else have any thoughts.


Its yucky?

Maybe a netlist editor in PCBNEW is an alternative?  Don't know, medicine is 
sometimes
yucky too.

But like medicine, if it can be taken only when you need it, and there is no 
other way...

This is one of those areas where you need multiple solutions to the problem on 
the
table, before chosing what you think is the best of them.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck
On 12/16/2010 08:12 AM, Wayne Stambaugh wrote:
> On 12/16/2010 7:18 AM, Brian Sidebotham wrote:
>> On 16 December 2010 02:31, Wayne Stambaugh  wrote:
>>> On 12/15/2010 9:19 PM, Karl Schmidt wrote:
 On 12/15/2010 07:30 PM, Brian Sidebotham wrote:


> When placing components such as passives (mainly R's and C's) you come
> across the common problem that you draw the symbol either horizontally
> or vertically. When you place the component it could be in one of four
> orientations, but generally it's either 0deg rot (horizontal) or 90deg
> rot (vertical).
 This is called Schematic symbol alternatives - usually you only need 2
 versions (bridge circuits need a 45 makes 3 versions) - most CAD systems
 have this - and its nice.  I added this to my wiki's wish list.
>>> This would this not be a feature in the schematic capture program?  An
>>> excellent idea but I don't see it as a requirement of the part file or
>>> the part file editor.
>>>
>>> Wayne
>> It does need a way of telling the schematic capture how to choose a
>> look for a component. However, I think the functionality is allowed
>> for in the current spec already. The different versions can be
>> alternatives, then it is down to the GUI design to make these
>> alternatives easy to select on a per-component instance basis which
>> I'm sure is possible, and if I remember rightly desired by Jean-Pierre
>> for large logic designs too for selecting deMorgan.
>>
>> So I think this is already covered, I hadn't thought about using
>> alternatives for this in the part spec. This also covers different
>> pinouts for processors that are available in different packages.
>>
>> The only thing not covered for me then would be one schematic pin to
>> many footprint pins support. I can't see a nice way of doing that yet.
>> It's only a nice-to-have anyway, and that's only my opinion which
>> generally seems to differ from most others! ;)
> Conceptually its a merge action so the syntax would look like:
>
> (pin_merge PIN_LIST)

The danger on the mailing list, or in any conversation, is not adequately 
reading or
listening.

This is not a bad idea.  If we can have the above verb, i.e. "_merge" during 
parsing mean:

1) hide all pins but the first by toggling a flag in the pin C++ structure.

2) and control how the netlist is generated later


Then you are done.  The idea may actually be good after all.

We need to avoid having to parse during DRAWING of the part, that would be a bad
design, but I think we've steered clear of that with this option.



Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck
On 12/16/2010 10:33 AM, Wayne Stambaugh wrote:
> On 12/16/2010 10:22 AM, Dick Hollenbeck wrote:
>> On 12/16/2010 08:12 AM, Wayne Stambaugh wrote:
>>> On 12/16/2010 7:18 AM, Brian Sidebotham wrote:
>>>> On 16 December 2010 02:31, Wayne Stambaugh  wrote:
>>>>> On 12/15/2010 9:19 PM, Karl Schmidt wrote:
>>>>>> On 12/15/2010 07:30 PM, Brian Sidebotham wrote:
>>>>>>
>>>>>>
>>>>>>> When placing components such as passives (mainly R's and C's) you come
>>>>>>> across the common problem that you draw the symbol either horizontally
>>>>>>> or vertically. When you place the component it could be in one of four
>>>>>>> orientations, but generally it's either 0deg rot (horizontal) or 90deg
>>>>>>> rot (vertical).
>>>>>> This is called Schematic symbol alternatives - usually you only need 2
>>>>>> versions (bridge circuits need a 45 makes 3 versions) - most CAD systems
>>>>>> have this - and its nice.  I added this to my wiki's wish list.
>>>>> This would this not be a feature in the schematic capture program?  An
>>>>> excellent idea but I don't see it as a requirement of the part file or
>>>>> the part file editor.
>>>>>
>>>>> Wayne
>>>> It does need a way of telling the schematic capture how to choose a
>>>> look for a component. However, I think the functionality is allowed
>>>> for in the current spec already. The different versions can be
>>>> alternatives, then it is down to the GUI design to make these
>>>> alternatives easy to select on a per-component instance basis which
>>>> I'm sure is possible, and if I remember rightly desired by Jean-Pierre
>>>> for large logic designs too for selecting deMorgan.
>>>>
>>>> So I think this is already covered, I hadn't thought about using
>>>> alternatives for this in the part spec. This also covers different
>>>> pinouts for processors that are available in different packages.
>>>>
>>>> The only thing not covered for me then would be one schematic pin to
>>>> many footprint pins support. I can't see a nice way of doing that yet.
>>>> It's only a nice-to-have anyway, and that's only my opinion which
>>>> generally seems to differ from most others! ;)
>>> Conceptually its a merge action so the syntax would look like:
>>>
>>> (pin_merge PIN_LIST)
>> The danger on the mailing list, or in any conversation, is not adequately 
>> reading or
>> listening.
>>
>> This is not a bad idea.  If we can have the above verb, i.e. "_merge" during 
>> parsing mean:
>>
>> 1) hide all pins but the first by toggling a flag in the pin C++ structure.
>>
>> 2) and control how the netlist is generated later
>>
>>
>> Then you are done.  The idea may actually be good after all.
>>
>> We need to avoid having to parse during DRAWING of the part, that would be a 
>> bad
>> design, but I think we've steered clear of that with this option.
> Makes sense to me.  The only question left to answer is do we limit pin merge
> to inherited parts only or do we allow it anywhere.

If in the PART class, we support a list of lists:

i.e. list of merge lists in binary form, then they can be carried forward in the

PART::Inherit( PART* base ) function just fine from base parts.  This function 
is
essentially an application specific

PART:: operator=()

like function.  It needs to copy all the pins, even onces hidden via merge in 
base,
and the already parsed binary merge lists.



PART::Format(?)  should be do-able also, I will put some ideas into design.h 
soon on that.


==

Commas:  not really used in s-expressions, got whitespace for separation of 
list elements.








___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck
On 12/16/2010 12:15 PM, Dick Hollenbeck wrote:
> On 12/16/2010 10:33 AM, Wayne Stambaugh wrote:
>> On 12/16/2010 10:22 AM, Dick Hollenbeck wrote:
>>> On 12/16/2010 08:12 AM, Wayne Stambaugh wrote:
>>>> On 12/16/2010 7:18 AM, Brian Sidebotham wrote:
>>>>> On 16 December 2010 02:31, Wayne Stambaugh  wrote:
>>>>>> On 12/15/2010 9:19 PM, Karl Schmidt wrote:
>>>>>>> On 12/15/2010 07:30 PM, Brian Sidebotham wrote:
>>>>>>>
>>>>>>>
>>>>>>>> When placing components such as passives (mainly R's and C's) you come
>>>>>>>> across the common problem that you draw the symbol either horizontally
>>>>>>>> or vertically. When you place the component it could be in one of four
>>>>>>>> orientations, but generally it's either 0deg rot (horizontal) or 90deg
>>>>>>>> rot (vertical).
>>>>>>> This is called Schematic symbol alternatives - usually you only need 2
>>>>>>> versions (bridge circuits need a 45 makes 3 versions) - most CAD systems
>>>>>>> have this - and its nice.  I added this to my wiki's wish list.
>>>>>> This would this not be a feature in the schematic capture program?  An
>>>>>> excellent idea but I don't see it as a requirement of the part file or
>>>>>> the part file editor.
>>>>>>
>>>>>> Wayne
>>>>> It does need a way of telling the schematic capture how to choose a
>>>>> look for a component. However, I think the functionality is allowed
>>>>> for in the current spec already. The different versions can be
>>>>> alternatives, then it is down to the GUI design to make these
>>>>> alternatives easy to select on a per-component instance basis which
>>>>> I'm sure is possible, and if I remember rightly desired by Jean-Pierre
>>>>> for large logic designs too for selecting deMorgan.
>>>>>
>>>>> So I think this is already covered, I hadn't thought about using
>>>>> alternatives for this in the part spec. This also covers different
>>>>> pinouts for processors that are available in different packages.
>>>>>
>>>>> The only thing not covered for me then would be one schematic pin to
>>>>> many footprint pins support. I can't see a nice way of doing that yet.
>>>>> It's only a nice-to-have anyway, and that's only my opinion which
>>>>> generally seems to differ from most others! ;)
>>>> Conceptually its a merge action so the syntax would look like:
>>>>
>>>> (pin_merge PIN_LIST)
>>> The danger on the mailing list, or in any conversation, is not adequately 
>>> reading or
>>> listening.
>>>
>>> This is not a bad idea.  If we can have the above verb, i.e. "_merge" 
>>> during parsing mean:
>>>
>>> 1) hide all pins but the first by toggling a flag in the pin C++ structure.
>>>
>>> 2) and control how the netlist is generated later
>>>
>>>
>>> Then you are done.  The idea may actually be good after all.
>>>
>>> We need to avoid having to parse during DRAWING of the part, that would be 
>>> a bad
>>> design, but I think we've steered clear of that with this option.
>> Makes sense to me.  The only question left to answer is do we limit pin merge
>> to inherited parts only or do we allow it anywhere.
> If in the PART class, we support a list of lists:
>
> i.e. list of merge lists in binary form, then they can be carried forward in 
> the
>
> PART::Inherit( PART* base ) function just fine from base parts.  This 
> function is
> essentially an application specific
>
> PART:: operator=()
>
> like function.  It needs to copy all the pins, even onces hidden via merge in 
> base,
> and the already parsed binary merge lists.


Well I guess if schematic pins can have non-numeric names, then this is not
necessarily "binary" is it, I guess we are working with strings all the way 
through.

The merge lists do not get used again until netlist generation time that I can 
see, or
unless:


The user wants to add in another pin later in derived part, into an existing 
merge
list.  There's probably a way to do that, sort the pins, create a concatonation 
of all
the names in the list, use that as a lookup into the list of lists.  Parser 
coder
person decides.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck


Some aid comes from making the list of lists be just a simple


std::set


where the contained string is a sorted list of space separated pins.


This gets pretty easy then.



Can you then support:



base class:

(pin_merge  A B)




derived class:

(pin_merge B A C D)


The remaining problem is that you do not know what to look up, there is no 
separator
between AB (old) & CD (new)


The list of lists may not be the only path to persue.

Another idea might be to put an integer "merge_code" in each pin, and tie the 
pins
together that way.  The merge_code is simply a number that increments uniquely 
within
each PART for each *unique*, not additive merge list.

The merge_code for pins not merged could be zero.

Probably still missing something, but again, coder decides.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-16 Thread Dick Hollenbeck
On 12/16/2010 02:50 PM, Simon Rogers wrote:
> Could the schematic support multiple parts lists?
>
> I'm thinking of the problem supporting different builds say a European 
> version or a US version where the schematic is the same but with 
> component value changes due to, for example, 50Hz or 60Hz supply or the 
> different voltages, regulations etc.
>

No, that's a can of worms.




___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-20 Thread Dick Hollenbeck
On 12/14/2010 04:49 PM, Wayne Stambaugh wrote:
> I made some ,inor changes to clarify inherited vs base part and changed
> LPID names reflect local naming convention as suggested by Dick.
>
> Wayne


Wayne and others,


I coded the initial major portion of DIR_LIB_SOURCE this weekend.  I believe 
the design is still
holding water, so far.


The only thing that has come up is this age old issue of content in container, 
and names.

Let me generalize, so you can see it is not specific to this design.

Assume you have a C++ file, and you decide to put the name of the file INTO the 
file as a string.

You load that C++ text file, and save it by another name.

The file now lives in two *containers*. 



1) The text editor is a container, and it assigns a name to the text file in 
memory.


2) The filesystem is a container, and it assigns a name to the text file on 
disk.


Each container has its own understanding of the name of the content (i.e. text 
file).  A
disagreement has happened.  And it is not about the name in the editor and the 
name on disk.

It is about the name IN THE FILE, and the name in the editor and on disk.




Either of the two examples of "content (text file) within container" would 
suffice to make my point:


as long as you put the name of the file in the file, there is always
the potential for a disagreement between what the file's container
thinks the content is named, and what the contained name says.


Therefore, we might want to re-think our Sweet token that we referred to as 
"NAME"

(part NAME [extends LPID]
..
)

and either drop it, since the Sweet string will always be in some kind of 
container, or realize that
this is not *really* the name of the part, the container will always chose that.


A useful comprimize is to conceptually or actually change NAME to 
SHORT_DESCRIPTION, but if you have
a description elsewhere, a short description may not be needed at all.

Think about it.  The only time when the container will not name the content, 
may be on the clipboard.

A fast answer is probably a wrong answer.  I've been thinking about it for a 
day and still need more
time to state the best solution.

I just know that the problem will exist as we now have things, and as stated, 
it is not a problem
unique to this design.

The container's name will always really dominate, since that is the mechanism 
used to find units of
content.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-20 Thread Dick Hollenbeck
On 12/20/2010 02:29 PM, Wayne Stambaugh wrote:
> On 12/20/2010 1:42 PM, Dick Hollenbeck wrote:
>> On 12/14/2010 04:49 PM, Wayne Stambaugh wrote:
>>> I made some ,inor changes to clarify inherited vs base part and changed
>>> LPID names reflect local naming convention as suggested by Dick.
>>>
>>> Wayne
>>
>> Wayne and others,
>>
>>
>> I coded the initial major portion of DIR_LIB_SOURCE this weekend.  I believe 
>> the design is still
>> holding water, so far.
>>
>>
>> The only thing that has come up is this age old issue of content in 
>> container, and names.
>>
>> Let me generalize, so you can see it is not specific to this design.
>>
>> Assume you have a C++ file, and you decide to put the name of the file INTO 
>> the file as a string.
>>
>> You load that C++ text file, and save it by another name.
>>
>> The file now lives in two *containers*. 
>>
>>
>>
>> 1) The text editor is a container, and it assigns a name to the text file in 
>> memory.
>>
>>
>> 2) The filesystem is a container, and it assigns a name to the text file on 
>> disk.
>>
>>
>> Each container has its own understanding of the name of the content (i.e. 
>> text file).  A
>> disagreement has happened.  And it is not about the name in the editor and 
>> the name on disk.
>>
>> It is about the name IN THE FILE, and the name in the editor and on disk.
>>
>>
>>
>>
>> Either of the two examples of "content (text file) within container" would 
>> suffice to make my point:
>>
>>
>> as long as you put the name of the file in the file, there is always
>> the potential for a disagreement between what the file's container
>> thinks the content is named, and what the contained name says.
>>
>>
>> Therefore, we might want to re-think our Sweet token that we referred to as 
>> "NAME"
>>
>> (part NAME [extends LPID]
>> ..
>> )
>>
>> and either drop it, since the Sweet string will always be in some kind of 
>> container, or realize that
>> this is not *really* the name of the part, the container will always chose 
>> that.
> I actually considered this when I wrote the specification.  I don't remember
> why I chose to include NAME in the part syntax.  I think it's a great idea.
> Using the file name as the part name makes sense to me.
>
>>
>> A useful comprimize is to conceptually or actually change NAME to 
>> SHORT_DESCRIPTION, but if you have
>> a description elsewhere, a short description may not be needed at all.
> A description (short or otherwise) seems like a good candidate for a property.
>  I'm not sure if it should be a reserved property or a user definable 
> property.
>
>> Think about it.  The only time when the container will not name the content, 
>> may be on the clipboard.
> Would you even need the name in the clipboard?  If you are pasting into 
> another
> part file, it will take the name of the new part file.  You may need to name
> them when they become components in a schematic but that would be part of the
> schematic file format.
>
>> A fast answer is probably a wrong answer.  I've been thinking about it for a 
>> day and still need more
>> time to state the best solution.
> Let me know so I can update the specification.  I have already made the 
> changes
> for providing pin and gate swapping flags to be passed to external tools.  I
> want to keep the specification synced with the code as much as possible to
> avoid confusion.
>
> Wayne

Another idea to consider, along with others until a decision is made, is:

put a comment into the file to act as a 'hint' only.  The hint is only 
consulted when the part is
outside its container.  Some cases are if you have it on the clipboard or it is 
printed out on
paper, or it in an email message.  Actually with email it might have a filename 
as an attachment. 
Ok, say you email it inline.

The hint might look like this, and the hint can be ignored by any tool not 
interested:

# partname: 7400
# other comments you might have put into the file.
:
(part [extends LPID]
:
)

PART::Format() could output it up at the top as a comment, if requested.


Regarding part "description", it seems like this is worthy of more discussion 
on its own at some
point.  A useful description block could be:

1) potentially more than one line.
2) shown in a multi-line panel [maybe only] during picklist usage.

I don't see it being like properties, all of which can go into the schematic 
view, but maybe I have
to just jam it into my head. 

Not urgent.  If I jam it now, something else will have to fall out to make room.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-20 Thread Dick Hollenbeck
| Another idea to consider, along with others until a decision is made, is:
> put a comment into the file to act as a 'hint' only.  The hint is only 
> consulted when the part is
> outside its container.  Some cases are if you have it on the clipboard or it 
> is printed out on
> paper, or it in an email message.  Actually with email it might have a 
> filename as an attachment. 
> Ok, say you email it inline.
>
> The hint might look like this, and the hint can be ignored by any tool not 
> interested:
>
> # partname: 7400
> # other comments you might have put into the file.
> :
> (part [extends LPID]
> :
> )
>
> PART::Format() could output it up at the top as a comment, if requested.
>
>
> Regarding part "description", it seems like this is worthy of more discussion 
> on its own at some
> point.  A useful description block could be:
>
> 1) potentially more than one line.
> 2) shown in a multi-line panel [maybe only] during picklist usage.
>
> I don't see it being like properties, all of which can go into the schematic 
> view, but maybe I have
> to just jam it into my head. 
>
> Not urgent.  If I jam it now, something else will have to fall out to make 
> room.
>
> Dick

My current leanings are:

1) for (part NAME), leave it in the grammar, but change it to NAME_HINT in the 
documentation, and
describe it as a hint only.


2) Maybe treat the comment text above the (part) element in the sweet string as 
the description text
for eventual use in a picklist side-car panel.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] l-marcantonio wants to join

2010-12-21 Thread Dick Hollenbeck
On 12/21/2010 01:47 AM, KiCad Bug Squad wrote:
> Hello Dick Hollenbeck,
>
> Lorenzo Marcantonio (l-marcantonio) wants to be a member of KiCad Bug
> Squad (kicad-bug-squad), but this is a moderated team, so that
> membership has to be approved.  You can approve, decline or leave it as
> proposed by following the link below.
>
> https://launchpad.net/~kicad-bug-squad/+member/l-marcantonio
>

Lorenzo,

I am denying your request to add you to Kicad-Bug-Squad since you are already a 
member, by virtue of
your membership in kicad-testing-committers.

All members of team kicad-testing-committers are members of team 
Kicad-Bug-Squad since the team is a
member of the other team.

Kicad-Bug-Sqaud will occasionally accept team member, but it only makes sense 
if they are not in
kicad-testing-committers already.

If you find you need more control over your bug servicing efforts, I don't 
think it is related to
team membership, but rather some setting on the "Bugs" page.

Hope this clarifies,

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] reporting bugs against a recent version

2010-12-21 Thread Dick Hollenbeck
On 12/21/2010 01:47 AM, jean-pierre charras wrote:
> (2010-03-14)-final is fully outdated.
> Do not report bugs before testing a recent kicad version (currently 
> 2010-12-18-BZR2668-RC2)
>

Wouldn't that be wonderful.

You even say what is "recent", so nobody has any excuses.

Thanks for all you do Jean-Pierre.

Dick

Let's not forget that we will always need a recent definition of recent.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] New part file format document.

2010-12-26 Thread Dick Hollenbeck
On 12/26/2010 11:14 PM, Chris Giorgi wrote:
> Good evening,
>
> I've been lurking on this thread for quite a while and feel this topic
> is one I should chime in on.
>
> The concept of keeping part names as filenames sounds promising on its
> face, but I can envision several potential pitfalls. First, it
> requires that the parts be stored in a filesystem to have proper
> context, and contain one part per file. This limits the ability to
> store parts in a database conveniently, makes it difficult to
> implement parts archives as flat files for interchange of libraries,
> and makes some names impossible to encode ( how do you handle a '*' in
> a part number?, what about a '/'? Resort to escape codes?). In my
> opinion, the filename should be allowed to be totally random (such as
> automatically downloaded content often is) without loss of important
> information. Filename collisions can be avoided entirely, and
> conflicting parts can be identified even if you have "partnum.part"
> and "partnum (1).part" from downloading two different libraries with
> the same name.
>
>~~~Chris Giorgi~~~


$ grep -r 'DEF ' /usr/local/share/kicad/library/*.lib | grep 'DEF .+/'

turns up nothing.


Please read the actual design document, not merely the Sweet grammar
document and some email postings if you want to be taken seriously.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] lib table format

2010-12-26 Thread Dick Hollenbeck

(lib_table
(lib (logical "LOGICAL")(type "TYPE")(fullURI "FULL_URI")(options
"OPTIONS"))
(lib (logical "LOGICAL")(type "TYPE")(fullURI "FULL_URI")(options
"OPTIONS"))
(lib (logical "LOGICAL")(type "TYPE")(fullURI "FULL_URI")(options
"OPTIONS"))
:
)



Its late, but the above is what I'm thinking will comprize a "library table
fragment".  The overall library table will come from the combination of a
personal table fragment and schematic resident fragment.


In the morning I will be writing a parser for this grammar.  (Somebody else
can do a library table editor if they want.  I would not have time to get to
an editor for awhile, at least not until we start having such a fragment
show up in a new schematic file.)


Same parser will be able to grab a fragment from either a schematic, or from
a separate disk file in the case of a personal table fragment.


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Compiling probems

2010-12-27 Thread Dick Hollenbeck
On 12/27/2010 09:42 PM, Martin wrote:
> since dsnlexer introduced, the same problem appears:
>
> In file included from /home/martin/kicad/include/richio.h:41, 
>
>   from /home/martin/kicad/include/dsnlexer.h:34,
>   from /home/martin/kicad/common/dsnlexer.cpp:33:
> /home/martin/kicad/include/kicad_exceptions.h:54: error: 
> ‘IO_ERROR::IO_ERROR(const char*)’ cannot be overloaded
> /home/martin/kicad/include/kicad_exceptions.h:44: error: with 
> ‘IO_ERROR::IO_ERROR(const wxChar*)’
> make[2]: *** [common/CMakeFiles/common.dir/dsnlexer.cpp.o] Error 1
> make[1]: *** [common/CMakeFiles/common.dir/all] Error 2
> make: *** [all] Error 2
>
>
> greetings
> Martin Kratoska

I'll fix it in a few minutes.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Compiling probems

2010-12-27 Thread Dick Hollenbeck
On 12/27/2010 09:42 PM, Martin wrote:
> since dsnlexer introduced, the same problem appears:
>
> In file included from /home/martin/kicad/include/richio.h:41, 
>
>   from /home/martin/kicad/include/dsnlexer.h:34,
>   from /home/martin/kicad/common/dsnlexer.cpp:33:
> /home/martin/kicad/include/kicad_exceptions.h:54: error: 
> ‘IO_ERROR::IO_ERROR(const char*)’ cannot be overloaded
> /home/martin/kicad/include/kicad_exceptions.h:44: error: with 
> ‘IO_ERROR::IO_ERROR(const wxChar*)’
> make[2]: *** [common/CMakeFiles/common.dir/dsnlexer.cpp.o] Error 1
> make[1]: *** [common/CMakeFiles/common.dir/all] Error 2
> make: *** [all] Error 2

branch testing is now ready for testing.

Sorry about that.  I do not regularly test the 8 bit character (utf8) build.

So I appreciate the report, and the testing.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Compiling probems

2010-12-28 Thread Dick Hollenbeck
On 12/28/2010 02:25 AM, Martin wrote:
> dsnlexer is OK now.
> There are some other problems...
>
> (build 2690 on PCLinuxOS 2010)
>
> /home/martin/kicad/common/richio.cpp: In member function ‘virtual 
> unsigned int FILE_LINE_READER::ReadLine()’:
> /home/martin/kicad/common/richio.cpp:116: error: call of overloaded 
> ‘IO_ERROR(const wxChar*)’ is ambiguous
> /home/martin/kicad/include/kicad_exceptions.h:50: note: candidates are: 
> IO_ERROR::IO_ERROR(const std::string&)
> /home/martin/kicad/include/kicad_exceptions.h:45: note: 
> IO_ERROR::IO_ERROR(const wxString&)
> /home/martin/kicad/common/richio.cpp: In member function ‘virtual 
> unsigned int STRING_LINE_READER::ReadLine()’:
> /home/martin/kicad/common/richio.cpp:167: error: call of overloaded 
> ‘IO_ERROR(const wxChar*)’ is ambiguous
> /home/martin/kicad/include/kicad_exceptions.h:50: note: candidates are: 
> IO_ERROR::IO_ERROR(const std::string&)
> /home/martin/kicad/include/kicad_exceptions.h:45: note: 
> IO_ERROR::IO_ERROR(const wxString&)
> /home/martin/kicad/common/richio.cpp: In member function ‘virtual const 
> char* OUTPUTFORMATTER::Quoted(std::string*)’:
> /home/martin/kicad/common/richio.cpp:306: error: call of overloaded 
> ‘IO_ERROR(const wxChar*)’ is ambiguous
> /home/martin/kicad/include/kicad_exceptions.h:50: note: candidates are: 
> IO_ERROR::IO_ERROR(const std::string&)
> /home/martin/kicad/include/kicad_exceptions.h:45: note: 
> IO_ERROR::IO_ERROR(const wxString&)
> /home/martin/kicad/common/richio.cpp: In member function ‘virtual void 
> STREAM_OUTPUTFORMATTER::write(const char*, int)’:
> /home/martin/kicad/common/richio.cpp:364: error: call of overloaded 
> ‘IO_ERROR(const wxChar*)’ is ambiguous
> /home/martin/kicad/include/kicad_exceptions.h:50: note: candidates are: 
> IO_ERROR::IO_ERROR(const std::string&)
> /home/martin/kicad/include/kicad_exceptions.h:45: note: 
> IO_ERROR::IO_ERROR(const wxString&)
> make[2]: *** [common/CMakeFiles/common.dir/richio.cpp.o] Error 1
> make[1]: *** [common/CMakeFiles/common.dir/all] Error 2
> make: *** [all] Error 2
>
> greetings
>
> Martin Kratoska

Martin,

Either your compiler is at a different version than mine, or you have a
different wxWidgets version or character type (i.e. string type).

1) Please let me know what

$ wx-config --libs

says.  For example if I run a version of wx-config against a wxWidgets
compiled with --disable-unicode, I get:

$ /opt/wx2.8-utf8/bin/wx-config --libs

-L/opt/wx2.8-utf8//lib -pthread   -lwx_gtk2_xrc-2.9 -lwx_gtk2_html-2.9
-lwx_gtk2_qa-2.9 -lwx_gtk2_adv-2.9 -lwx_gtk2_core-2.9 -lwx_base_xml-2.9
-lwx_base_net-2.9 -lwx_base-2.9



2) Try the attached patch.

If it works, you can run with this patch for a few days. 

The testing branch is going to be very dynamic for the next little bit (~2
weeks or so) (but that is a good thing).


Dick

--- /svn/kicad/testing.checkout/include/kicad_exceptions.h	2010-12-27 23:36:14.0 -0600
+++ include/kicad_exceptions.h	2010-12-28 07:26:49.0 -0600
@@ -42,6 +42,15 @@
 {
 wxStringerrorText;
 
+/**
+ * Constructor ( const wxChar* )
+ * handles the case where _() is passed as aMsg.
+ */
+IO_ERROR( const wxChar* aMsg ) :
+errorText( aMsg )
+{
+}
+
 IO_ERROR( const wxString& aMsg ) :
 errorText( aMsg )
 {
___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Compiling probems

2010-12-28 Thread Dick Hollenbeck

> 1) Please let me know what
>
> $ wx-config --libs

Martin,

wx-config --list

seems better output.


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] Sweet parser

2010-12-29 Thread Dick Hollenbeck
Wayne,

You had said that you would want to write the Sweet parser.

Wayne's World:
=

I now have all the /new infrastructure in place to load Sweet strings driven
by test
program test_sch_lib_table.  If you were to mostly confine yourself to
basically that one
function, PART::Parse() for now, we could now work in parallel without
stepping on each other.

Steps to get a build of test_sch_lib_table working:

1) Generate the test input data by running script
make-dir-lib-source-test-data.sh
Edit it as wanted, understand the script.

2) $ cd /new
3) $ mkdir build
4) $ cd build
5) $ cmake -DCMAKE_BUILD_TYPE=Debug ../
6) $ make
7) $ ./test_sch_lib_table

The int main() function is in sch_lib_table.cpp.

You can and should edit the (lib_table ) element to point to a different,
more permanent directory than tmp.
Coordinate this with an edit to make-dir-lib-source-test-data.sh.

The currently loaded part is "meparts:tigers/ears/rev10" at line 410 of
sch_lib_table.cpp.

You can edit the file tigers/ears.part.rev10 with a text editor and build up
your input for the parser.

If you need more help or don't want to do this anymore, please let me know. 
I have raced to get to this point, and will be going back over some things
that need better robustness either way, especially in the area of error
reporting, not so much functionality.

sch_part.h has the new "contains" field we talked about, along with PB() and
PartBits.  You should even be able to write Inherits() as you get to that
point.  Inherits() will only ever be called from Parse().

The Parse() function is in sch_part.cpp, and I just took it far enough get
you a playground.  I am here to help.

Thanks!

Dick

Copying the mailing list too.



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Sweet parser

2010-12-30 Thread Dick Hollenbeck
On 12/30/2010 12:18 PM, Wayne Stambaugh wrote:
> On 12/29/2010 9:06 PM, Dick Hollenbeck wrote:
>> Wayne,
>>
>> You had said that you would want to write the Sweet parser.
>>
>> Wayne's World:
>> =
>>
>> I now have all the /new infrastructure in place to load Sweet strings driven
>> by test
>> program test_sch_lib_table.  If you were to mostly confine yourself to
>> basically that one
>> function, PART::Parse() for now, we could now work in parallel without
>> stepping on each other.
>>
>> Steps to get a build of test_sch_lib_table working:
>>
>> 1) Generate the test input data by running script
>> make-dir-lib-source-test-data.sh
>> Edit it as wanted, understand the script.
>>
>> 2) $ cd /new
>> 3) $ mkdir build
>> 4) $ cd build
>> 5) $ cmake -DCMAKE_BUILD_TYPE=Debug ../
>> 6) $ make
>> 7) $ ./test_sch_lib_table
>>
>> The int main() function is in sch_lib_table.cpp.
>>
>> You can and should edit the (lib_table ) element to point to a different,
>> more permanent directory than tmp.
>> Coordinate this with an edit to make-dir-lib-source-test-data.sh.
>>
>> The currently loaded part is "meparts:tigers/ears/rev10" at line 410 of
>> sch_lib_table.cpp.
>>
>> You can edit the file tigers/ears.part.rev10 with a text editor and build up
>> your input for the parser.
>>
>> If you need more help or don't want to do this anymore, please let me know. 
>> I have raced to get to this point, and will be going back over some things
>> that need better robustness either way, especially in the area of error
>> reporting, not so much functionality.
> I've just started looking over what you've done yesterday and I'm still
> trying to wrap my head around it.  I will have some time over the next
> few days but it will likely be a while before I can finish the task.  If
> it's something you can knock quickly, I would not be offended if you did it.
>
> I have attached the latest sweet specification which includes the name
> hint and router pin and swap flags that we discussed before Christmas.
> I'm not terribly thrilled about using route as part of the token name.
> It seems a bit restrictive.  There may be other tools that could take
> advantage of pin and/or gate swapping.  Maybe hint_pin_swap would be
> more flexible and descriptive than route_pin_swap.

Thanks.  In light of the fact that I only have a tight time slot to work on
this, another few days, I wonder if it would be a good idea for me to just
do the basic parser, cherry picking the important items such as:

1) inheritance.
2) basic drawables

probably not pins for lack of time, and the object action enhancements can
be done by you later, since that requires having paid more attention during
earlier conversations, than I did.

For the next 2 hours or so I am rethinking the exception bucket a little
bit, so up at the UI we can get precise information on all problems.  That
has been my driver since day one, and I don't want to go further until the
foundation is rock solid.  If something goes wrong, you should be able to
tell, where, why, and what.


>> sch_part.h has the new "contains" field we talked about, along with PB() and
>> PartBits.  You should even be able to write Inherits() as you get to that
>> point.  Inherits() will only ever be called from Parse().
> Were you thinking about creating new objects for all of the library part
> drawable items or reusing the existing ones?  I was hoping to reuse the
> existing ones to ease migration to the new format and avoid creating an
> external tool to convert existing libraries.  I was thinking about
> overriding the Save method for the library and all the LIB_ITEM objects
> and adding a compile time option to the library editor to save the
> libraries to the new format.  That would give us some complete libraries
> to work with.

The new PART class will have a Format() function.  I think it would be
easiest to create a new front end to new PART, say an alternative parser
that reads the old parts.  It could even be made into a formal LIB_SOURCE,
one which would dynamically convert old parts to the new API.

In any case, I think it would be prudent to push all the old data though a
new PART object, just to make sure it is convertible, then use the new
PART::Format() function to output it, say back to a new library source, for
which a person could even use DIR_LIB_SINK to do that.

By tying a LIB_SOURCE to a non-matching LIB_SINK, you effectively get a
conversion program, if you simply iterate over all parts.   Well that
sounded better than it will be, only because there is only one LIB_SINK
planned by me, DIR_LIB_SIN

Re: [Kicad-developers] Sweet parser

2010-12-30 Thread Dick Hollenbeck
On 12/30/2010 12:18 PM, Wayne Stambaugh wrote:
> On 12/29/2010 9:06 PM, Dick Hollenbeck wrote:
>> Wayne,
>>
>> You had said that you would want to write the Sweet parser.
>>
>> Wayne's World:
>> =
>>
>> I now have all the /new infrastructure in place to load Sweet strings driven
>> by test
>> program test_sch_lib_table.  If you were to mostly confine yourself to
>> basically that one
>> function, PART::Parse() for now, we could now work in parallel without
>> stepping on each other.
>>
>> Steps to get a build of test_sch_lib_table working:
>>
>> 1) Generate the test input data by running script
>> make-dir-lib-source-test-data.sh
>> Edit it as wanted, understand the script.
>>
>> 2) $ cd /new
>> 3) $ mkdir build
>> 4) $ cd build
>> 5) $ cmake -DCMAKE_BUILD_TYPE=Debug ../
>> 6) $ make
>> 7) $ ./test_sch_lib_table
>>
>> The int main() function is in sch_lib_table.cpp.
>>
>> You can and should edit the (lib_table ) element to point to a different,
>> more permanent directory than tmp.
>> Coordinate this with an edit to make-dir-lib-source-test-data.sh.
>>
>> The currently loaded part is "meparts:tigers/ears/rev10" at line 410 of
>> sch_lib_table.cpp.
>>
>> You can edit the file tigers/ears.part.rev10 with a text editor and build up
>> your input for the parser.
>>
>> If you need more help or don't want to do this anymore, please let me know. 
>> I have raced to get to this point, and will be going back over some things
>> that need better robustness either way, especially in the area of error
>> reporting, not so much functionality.
> I've just started looking over what you've done yesterday and I'm still
> trying to wrap my head around it.  I will have some time over the next
> few days but it will likely be a while before I can finish the task.  If
> it's something you can knock quickly, I would not be offended if you did it.
>
> I have attached the latest sweet specification which includes the name
> hint and router pin and swap flags that we discussed before Christmas.
> I'm not terribly thrilled about using route as part of the token name.
> It seems a bit restrictive.  There may be other tools that could take
> advantage of pin and/or gate swapping.  Maybe hint_pin_swap would be
> more flexible and descriptive than route_pin_swap.
>
>> sch_part.h has the new "contains" field we talked about, along with PB() and
>> PartBits.  You should even be able to write Inherits() as you get to that
>> point.  Inherits() will only ever be called from Parse().
> Were you thinking about creating new objects for all of the library part
> drawable items or reusing the existing ones?  I was hoping to reuse the
> existing ones to ease migration to the new format and avoid creating an
> external tool to convert existing libraries.  I was thinking about
> overriding the Save method for the library and all the LIB_ITEM objects
> and adding a compile time option to the library editor to save the
> libraries to the new format.  That would give us some complete libraries
> to work with.

Wayne,

This last paragraph makes me curious about something, and whether we are on
the same page as to the degree to which this new API affects EESCHEMA.

Really this whole discussion is about an API, and Sweet is literally part of
the API because it is what is returned from the API.

Although you COULD augment existing EESCHEMA to write Sweet files, it
becomes nothing more than a conversion program at that point (but perhaps a
decent conversion program).


Old EESCHEMA will not be able to use the new API because:

The API owns all the PARTs, it only lets the schematic reference them within
the LIB cache.  And then there is the parts list.  So EESCHEMA will need to
be rewritten in effect, at least 60% of it.

This is my perspective.  (And any time we talk about augmenting the existing
code, I will begin to wonder why, I will question why.)

Basically email is starting to suck for this.  We may need to open up an IRC
or use skype if it gets any more involved.

Thanks,


Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Sweet parser

2010-12-30 Thread Dick Hollenbeck




> I think I have a decent understanding of how the API interfaces with
> EESchema.  I can see how the classes fit together to create the part
> library API. I guess I'm thinking of what happens after the part library
> API is loaded by EESchema.  How do the parts get drawn?  Where are the
> arcs, circles, lines, etc. objects that are part of a SCH_PART reside?
> We already have these objects that are fairly robust if less than
> optimally designed (I'm working on that).  Maybe I'm thinking too far
> ahead or am missing something.


They go into the PART of course.

I was going to try out the GAL, and we had agreement on the dimenionless
coordinate system, where the pin to pin distance is one unit.

So I will try and re-use what we have for those drawables where it makes
sense, and I may only get to a few of them before Monday.

TEXT is a big point of departure, since we have that separate EFFECTs concept.

I just completed a IO_ERROR() and PARSE_ERROR() upgrade, and now can capture
the call site info of :

__FILE_  __func__ and __LINE__

through what was a fairly brutal trial and error effort.

To get these you have to use the macros THROW_IO_ERROR() and
THROW_PARSE_ERROR().

When catching it seems we can catch either with

catch( IO_ERROR& ioe )

which works for both only if caught *by reference* only.

If your compiler does not support __func__, richio.h may have to be doctored
until we get some ifdefs in there.





>> Although you COULD augment existing EESCHEMA to write Sweet files, it
>> becomes nothing more than a conversion program at that point (but perhaps a
>> decent conversion program).
> I think that is something most users will want.  Using a script or
> external program to convert from the current file format is something
> most users will frown upon.
>
>>
>> Old EESCHEMA will not be able to use the new API because:
>>
>> The API owns all the PARTs, it only lets the schematic reference them within
>> the LIB cache.  And then there is the parts list.  So EESCHEMA will need to
>> be rewritten in effect, at least 60% of it.
> I order for this to happen we will need to start defining the new
> schematic file format.  I don't think mixing the existing file format
> with sweet would get rather ugly.  I can start putting together a
> preliminary schematic file specification over the next month or so.

Very true.  There is a lot of work that can be done from ground up, for
quite a while yet.

The textual part editor and the parts list UI panel could stand alone on top
of the code we now have.

Before the parts list UI is done, we should not place any large bets.  That
is the riskiest portion of the design.  The spreadsheet view will have to be
able to come into the PARTS_LIST and jam the desired set of
FIELDS/PROPERTIES down the throat of all the PARTS in the PARTS_LIST, so
they all have the same columns.  So this will be one of software
engineering's finest hours if we can pull it off.

It may have to be one with a facade of some kind.

Happy New Year to everyone.


>> This is my perspective.  (And any time we talk about augmenting the existing
>> code, I will begin to wonder why, I will question why.)
>>
>> Basically email is starting to suck for this.  We may need to open up an IRC
>> or use skype if it gets any more involved.
> I have neither a Skype nor an IRC account but it won't take long to
> create one or both.  If (when?) we get to that point, let me know which
> medium you prefer and I will get it set up.
>
> Wayne

Let's keep it in mind, especially if we are active at the same points in time.

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Sweet parser

2011-01-03 Thread Dick Hollenbeck
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.

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.

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.

=

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.


=

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.

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.

This way we simply multiple the Sweet strings coordinates by 1000 as we
parse them into internal units.

1 would also be reasonable, if you wanted to position something between
pins within 1/1th of a pin delta.

What do folks think?

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Sweet parser

2011-01-03 Thread Dick Hollenbeck
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.
>
> 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.
>
> 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.
>
> =
>
> 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.
>
>
> =
>
> 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.


> 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.
>
> This way we simply multiple the Sweet strings coordinates by 1000 as we
> parse them into internal units.
>
> 1 would also be reasonable, if you wanted to position something between
> pins within 1/1th of a pin delta.
>
> What do folks think?
>
> Dick
>


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2011-01-03 Thread Dick Hollenbeck
On 12/14/2010 07:19 AM, "Torsten Hüter" wrote:
> Hi Dick,
>
> thanks, I'll add this patch. 
> I'm doing a lot of restructuring at the moment and write a small demo to test 
> the functions for rubberbanding - have not yet commited. I think I should be 
> ready this or next weekend with the rubberbanding test and then I'll commit 
> and open the repository for write access.
>
> Bye ..
> Torsten

Torsten,

Is this still on your to do list?

Some minor suggestions for improvements:

1)

Also, std::list should be changed to std::deque wherever it is being used. 
std::list is too slow for several reasons:
a separate heap allocation must happen just to store the separate linked
list backbone noes, per content node.
That linkedlist node must store a pointer to real content node, slowing down
again the traversal, due to the dereferencing of the linked-list node pointer.
Heap allocation is by far the slowest issue.  You have twice as many in a
std::list,  I will use std::deque.  Its ten minutes to change it.


2)

I am not a fan of BOOST_FOREACH.  Some in this team are, I am not. It does
not provide enough value for the costs:

1) obscurity about what code it is actually generating.

2) longer compile times.

Suggest simply writing the 3 statements that the macro is replacing, so we
see what the compiler sees.


Again, I will need write access to this repo, if I am going to use it.  I
was thinking of using it for a simple Sweet viewer.  Of course I can always
make my own copy of the repo and make it public, thanks to your generosity
of contributing this code under the GPL.  If you are too busy, let me know
and I will do these items myself.


Thanks!

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Sweet parser

2011-01-03 Thread Dick Hollenbeck
On 01/03/2011 03:59 PM, Wayne Stambaugh wrote:
> 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). 

Beautiful.

>I added a short blurb about
> logical coordinates. 

"pin cell" is another name that came to mind, again like drawing pins on
graph paper.  Logical coordinates are fine too, but requires more
intellectual energy to understand IMO.

Having more than one way to describe the concept is good, whatever we can
can stack up to convey the concept, and it may require a couple of different
approaches for folks to understand.  Logical coordinates are a fine
approach.  I just wouldn't start there with my Mom.  I would start with
graph paper and the notion of a pin cell, which is the same as what she sees
on the graph paper.



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

Well "must have" may be too strong.  But we agree on the concept.  The only
reason to stray from this is to handle the case where an old part was just
so poorly designed, and it needs to be converted, just to get it into a new
editor environment.   The coordinates may not be on a pin cell boundary.  We
can support fractional pin cells, but don't want to as a rule.

>  All non-connectible items (lines, text, etc.) can have non-integer units as
> well. 

Any can have any.  But on the assumption that everyone wants to conform, and
create a maximally re-useable part, then everything should be on a pin cell
boundary, including text.  We can flash a red box on screen if someone
doesn't want to wear the school uniform.


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


Yes, the accumulation of Intellectual Property, is in the growing body of
Sweet specs.

This is our goal, and I think it has the potential to transcend Kicad.  If
we do this right, then this thing will be adopted outside Kicad, no
question.  We will take a bow when some part vendor provides a Kicad library
in Sweet form, and puts it up using HTTP_LIB_SOURCE.


Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2011-01-03 Thread Dick Hollenbeck
On 01/03/2011 05:26 PM, "Torsten Hüter" wrote:
> Hi Dick,
>  
>> Is this still on your to do list?
> Yes, of course, I just had not the time that I thought I would have and the 
> example grows also bigger than expected ..
>
>> Some minor suggestions for improvements:
>>
>> 1)
>>
>> Also, std::list should be changed to std::deque wherever it is being used.
>> std::list is too slow for several reasons:
>> a separate heap allocation must happen just to store the separate linked
>> list backbone noes, per content node.
>> That linkedlist node must store a pointer to real content node, slowing
>> down
>> again the traversal, due to the dereferencing of the linked-list node
>> pointer.
>> Heap allocation is by far the slowest issue.  You have twice as many in a
>> std::list,  I will use std::deque.  Its ten minutes to change it.
> Yes, I agree - this was just an initial choice - I've changed some types 
> already to std::vector but the std::deque is also a good idea.
>
>> 2)
>>
>> I am not a fan of BOOST_FOREACH.  Some in this team are, I am not. It does
>> not provide enough value for the costs:
>>
>> 1) obscurity about what code it is actually generating.
>>
>> 2) longer compile times.
>>
>> Suggest simply writing the 3 statements that the macro is replacing, so we
>> see what the compiler sees.
> The Eclipse CDT formatter has also a lot trouble with it. Good suggestion.
>
>> Again, I will need write access to this repo, if I am going to use it.  I
>> was thinking of using it for a simple Sweet viewer.  Of course I can
>> always
>> make my own copy of the repo and make it public, thanks to your generosity
>> of contributing this code under the GPL.  If you are too busy, let me know
>> and I will do these items myself.
> Shouldn't take much time, I've changed only the directory structure a lot - 
> I'll upload it in the next days.
>
> Bye ..
> Torsten

You da man!

std::vector is better than std::list.  std::deque and std::vector are both
OK.  The only difficulty with std::vector is if you hundreds of thousands of
points in a polyline, in which case the backbone array needs to be very
large.  std::deque uses a segmented backbone, and could be slower than
std::vector for smaller numbers of points.  So std::vector is fine if you
are already there.

Thank you.

Dick





___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2011-01-03 Thread Dick Hollenbeck

>> 2)
>>
>> I am not a fan of BOOST_FOREACH.  Some in this team are, I am not. It does
>> not provide enough value for the costs:
>>
>> 1) obscurity about what code it is actually generating.
>>
>> 2) longer compile times.
>>
>> Suggest simply writing the 3 statements that the macro is replacing, so we
>> see what the compiler sees.
> The Eclipse CDT formatter has also a lot trouble with it. Good suggestion.

Another benefit there is I think you can then remove the findboost from the
CMakeLists.txt file.

I did a grep and it is the only boost dependency you have.  (boost is fine,
but asking the user to tell you where it is comes at a cost to the user. 
The benefit is not there for this.)

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2011-01-03 Thread Dick Hollenbeck
You have twice as many in a
>>> std::list,  I will use std::deque.  Its ten minutes to change it.
>> Yes, I agree - this was just an initial choice - I've changed some types 
>> already to std::vector but the std::deque is also a good idea.
>>
> std::vector is better than std::list.  std::deque and std::vector are both
> OK.  The only difficulty with std::vector is if you hundreds of thousands of
> points in a polyline, in which case the backbone array needs to be very
> large.  std::deque uses a segmented backbone, and could be slower than
> std::vector for smaller numbers of points.

Well even for relatively smaller numbers of POINTS, say 5000, std::deque is
faster than even std::vector.  Here are the results of a test program I
wrote which uses push_back() against all 3 types of lists:

std::list, std::vector, and std::deque.  Even at 5000 elements, deque wins
hands down.  Try it at larger counts, test program attached.


$./test_lists

list duration: 828673

vector duration: 198271

deque duration: 123940

The times are in nanoseconds.

The test program is attached if you want to play with it.

std::deque needs more consideration than what I said in my last email.  I
think the difference will be even more pronounced as the complexity of the
contained object becomes more pronounced, since std::vector must copy all
the objects to the expanded array as it grows.  Makes me wonder if you
should loose the

virtual ~VECTOR2

Just let anyone deriving from VECTOR2<> add in virtual destructors, you
don't need it at this level.  It causes the virtual function table to be
copied and constructed, both of which cost time, for large numbers of points.


Dick


/* Test the speed of insertion into 3 kinds of lists:
std::list, std::vector, std::deque
*/


#include 
#include 
#include 

#include 
#include 
#include 


unsigned GetRunningNSecs()
{
struct timespec	now;

clock_gettime( CLOCK_MONOTONIC, &now );

uint64_t nsecs = now.tv_nsec + now.tv_sec * uint64_t(1000*1000*1000);

return unsigned( nsecs );
}


struct POINT
{
int x;
int y;
};


#define APPEND_COUNT5000
//#define APPEND_COUNT10


int main( int argc, char** argv )
{
std::listmylist;
std::vector  myvector;
std::deque   mydeque;

unsigned  start = GetRunningNSecs();

for( int i=0;  i___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] wxWidgets 2.8 under Graphics Abstraction Layer Lib (GAL)

2011-01-03 Thread Dick Hollenbeck

>  It causes the virtual function table 


pointer
> to be
> copied and constructed, both of which cost time, for large numbers of points.
>
>
> Dick

Its only another pointer, but its one you don't need in the object at this
level.




___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] Sweet parser

2011-01-04 Thread Dick Hollenbeck

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


More of the MSVC shit.  Don't expect me to care.

I may contribute without regard for MSVC.  Think of my contributions as
targeted charitable contributions.

I would prefer not to hear about MSVC again.  I will not give it any
consideration.


Thank you,

Dick



___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


[Kicad-developers] CMake's ExternalProject Support

2011-01-04 Thread Dick Hollenbeck

http://www.kitware.com/products/html/BuildingExternalProjectsWithCMake2.8.html

http://www.cmake.org/cmake/help/cmake-2-8-docs.html#module:ExternalProject

I was recently surprized by the power of the CMake ExternalProject support. 
I have used it once for something very simple, but I obviously mis-judged
the depth of support that is there.  It seems very extensive on second reading.

This may be of interest to Windows or MAC developers who need an external
library and cannot be sure it is there, without something like this to go
get it and make it happen.

Clearly there is some advantage to having a single driver program (CMake)
tie all the pieces together.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Saving plot dialog settings

2011-01-04 Thread Dick Hollenbeck

> The previous patch has a bug. It incorrectly complains about no layers
> being selected. This patch works better.
>
> marco
>
> On Sun, Jan 2, 2011 at 11:40 PM, Marco Mattila  wrote:
>> Hi,
>>
>> During previous discussions about subtracting masks from silkscreen
>> layers when plotting gerbers, Dick mentioned that saving plot settings
>> is not quite up to date. Currently some plot settings to be
>> saved/loaded are defined in pcbnew_config.cpp. However, that requires
>> that corresponding variables in the PCB_PLOT_PARAMS class are public.
>> My proposal is to let the class itself take care of saving/loading the
>> settings. That's mainly what the attached patch changes. In addition,
>> all plot dialog settings should now be included. The wxConfig key
>> names are also edited to start with "Plot", and layer selections are
>> combined into a single bit mask. Moreover, some global variables in
>> pcbplot.cpp have been moved into the class, too. g_PcbPlotOptions
>> itself is still global. However, I think that it could be moved to be
>> a member of the WinEDA_BasePcbFrame. That way it should be accessible
>> where needed without being global. And if necessary, plot settings
>> could still be loaded only once when pcbnew starts (now they are
>> loaded every time the plot dialog constructor is called). In addition
>> drill file generation settings could be included into PCB_PLOT_PARAMS.
>> I can continue working on this if my approach sounds reasonable.
>>
>> marco

I would say the patch looks like an improvement worth committing.

Thanks.  If anyone has concerns they should voice them.

This little bit here is goofy though, for a function comment:

 PCB_PLOT_PARAMS();
+/**
+   Function LoadSettings
+   loads plot settings from wxConfig system.
+   @param aConfig is a pointer to a wxConfig.
+ */
+voidLoadSettings( wxConfig* aConfig );
+/**
+   Function SaveSettings
+   saves current plot settings to wxConfig system.
+   @param aConfig is a pointer to a wxConfig.
+ */
+void 

In the future, please leave a space between these like the coding standard
says, and fill in the vertical stars.

My vote is to commit.

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


Re: [Kicad-developers] [PATCH] Saving plot dialog settings

2011-01-05 Thread Dick Hollenbeck
On 01/05/2011 07:47 AM, Marco Mattila wrote:
> Damn. I always struggle the most with the comments for Doxygen...
>
> I think that we may be able to get rid of the global variable. I'll
> take a look. I'll fix the comments in the next patch, too.
>
> marco

>From a usability standpoint, i.e. user experience, I have a concern about
saving the desired layers, as if I was only ever going to work on one board.

Now that you have a compact bitmap, would it make sense to prefix the Config
key for layers, with the boardname?  Although this might eventually pollute
the configuration space, you'd have to do a lot boards to get there.  This
way it remembers what layers you want for what boards.

The idea would be to put this information in the board, no preference here.

Is this anything worth considering?

Dick


___
Mailing list: https://launchpad.net/~kicad-developers
Post to : kicad-developers@lists.launchpad.net
Unsubscribe : https://launchpad.net/~kicad-developers
More help   : https://help.launchpad.net/ListHelp


  1   2   3   4   5   6   7   8   9   10   >