Re: [Kicad-developers] [RFC] Symbol library file format

2019-01-05 Thread Andrew Lutsenko
With the amount of data that KiCad handles performance of particular parser
has minuscule impact. File IO delays would thwart any processing time.
What Simon talked about is as he said a separate discussion and is
orthogonal to the decision of how to define data model and what file format
to use. Also I don't agree that there is a dichotomy of "save full memory
state" or "save only bare protocol data". There is lots of room for
compromise on what things on top of bare data you want to save to disk to
speed up restoring full memory state on load. Spatial indexes, if you
choose to save them, would have to be described in terms of another
structure in the IDL, it's not generator's responsibility to understand
what the index represents. But anyway - that's a separate discussion.

I understand that you are cautious to bring in new dependency that most
devs are not familiar with. Is there anything I can do to break the ice?
I was planning to translate the current schematic file format proposal into
proto definitions to show how easy they are to use. I could also try to add
a cmake target that would compile those proto definitions in ready to use
.h and .cpp files. Will you reconsider if I show these examples?

Do you have other concerns about requirements that are potentially not met
aside from performance? I can try to answer any questions you have.
If perf is the only one I could also possibly write some sort of benchmark
comparing parsing performance of KiCad's current s-expr parser and
protobufs. But that is not a small commitment so I don't want to do it if I
can't change your mind.

Regards,
Andrew


On Sat, Jan 5, 2019 at 5:17 AM Wayne Stambaugh  wrote:

> On 1/3/19 11:24 PM, Simon Richter wrote:
> > Hi,
> >
> > On 03.01.19 19:06, José Ignacio wrote:
> >
> >> I
> >> think useful comments to the proposed format should see beyond the
> >> actual low level representation of the data and talk about the overall
> >> model being used to store it.
> >
> > tl;dr: That's a separate discussion.
> >
> > There are two schools of thought here, one that treats saved data as a
> > protocol between two black box instances, and one that treats it as a
> > serialization of the internal state.
> >
> > Both have advantages and disadvantages. The "protocol" approach allows
> > changing internals more easily, and gives better compatibility between
> > versions as changes to the file format have to be made deliberately,
> > while the "serialization" approach gives us load/save basically for
> > free, so we need a lot less code.
> >
> > The "serialization" model also requires us to generate the internal data
> > structures from a more constrained language like IDL, as the marshaller
> > needs to know when to follow pointers, and what members of an array are
> > actually valid.
> >
> > I'm not sure there are generators that include support for spatial
> > indexes, though, which is pretty much a requirement for fast rendering,
> > so this is pretty much impossible at the moment, which places us in
> > "hand written load/save code" territory anyway.
> >
> > We have also ignored diff/merge capability so far, which I believe is a
> > good thing because it cannot really be done on a textual level (schemas
> > are two-dimensional, PCBs are three-dimensional, so there is no normal
> > form with a consistent ordering of elements that will make the files
> > diffable).
> >
> > I fully expect both the internal model and the file format to change
> > significantly in the coming years as new features are added. The main
> > requirement for the file format is that it always needs to be possible
> > to read older files in some way, and to recognize when a file is newer
> > than the current parser understands.
> >
> > It might be a good idea to also have an "extension" mechanism, where we
> > don't increase the version number when adding a new feature, but rather
> > mark files that actually use the new feature, so files written by newer
> > versions that don't use one of the newer functions can be read by older
> > versions. This would also be another point for "hand written" load/save.
> >
> >Simon
> >
>
> I've done some more investigation on this and I'm not convinced that
> this is any better than our current implementation due to some of the
> issues Simon mentioned above.  I've also discovered there is also a
> significant performance hit[1] with the JSON reader.  This is important
> due to the overhead required when loading libraries.  I appreciate the
> information and protobufs are interesting but I am going to stick with
> what we have and know versus what we don't know because I don't think we
> have the extra manpower to experiment only to find out it doesn't suite
> our requirements.
>
> Cheers,
>
> Wayne
>
> [1]:
>
> https://groups.google.com/forum/#!searchin/protobuf/JSON|sort:date/protobuf/23Slq4AX7oE/xuwQX_ZXAAAJ
>
> ___
> Mailing list: https://launchpad.net/~kicad-developers
> 

[Kicad-developers] [PATCH] Remove unused code from legacy_gal

2019-01-05 Thread John Beard
Hi,

Here is a really silly (since it's in legacy code) small patch for
some unused code I was alerted to by Clang. But might as well get it
off my patch stack!

Cheers,

John
From 3f7aaef50dc0cc51d995450c6c6a7c5fca85f8d1 Mon Sep 17 00:00:00 2001
From: John Beard 
Date: Fri, 4 Jan 2019 14:20:47 +
Subject: [PATCH] Remove unused VIRT_MIN/MAX from legacy_gal

---
 common/legacy_gal/eda_draw_frame.cpp | 7 ---
 1 file changed, 7 deletions(-)

diff --git a/common/legacy_gal/eda_draw_frame.cpp b/common/legacy_gal/eda_draw_frame.cpp
index b9a8eba41..1e22efda0 100644
--- a/common/legacy_gal/eda_draw_frame.cpp
+++ b/common/legacy_gal/eda_draw_frame.cpp
@@ -1018,13 +1018,6 @@ bool EDA_DRAW_FRAME::HandleBlockBegin( wxDC* aDC, EDA_KEY aKey, const wxPoint& a
 }
 
 
-// I am not seeing a problem with this size yet:
-static const double MAX_AXIS = INT_MAX - 100;
-
-#define VIRT_MIN(-MAX_AXIS/2.0) ///< min X or Y coordinate in virtual space
-#define VIRT_MAX(MAX_AXIS/2.0)  ///< max X or Y coordinate in virtual space
-
-
 void EDA_DRAW_FRAME::AdjustScrollBars( const wxPoint& aCenterPositionIU )
 {
 }
-- 
2.20.1

___
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 unit test framework

2019-01-05 Thread Nick Østergaard
I just did git am 000* and it worked fine for me, on master.

On Sun, 6 Jan 2019 at 01:20, John Beard  wrote:

> On Sat, Jan 5, 2019 at 4:23 PM Seth Hillbrand  wrote:
>
> > Patch 0002 does not apply cleanly to qa/CMakeLists.txt even after
> > applying 0001
>
> Hmm, that's odd: I can apply this with "git am 0002". I'm applying
> on top of 69fc301bf. Where are you applying it to? Do you still have
> the triangulation test code in your tree? IIRC there is a conflict in
> that file.
>
> Cheers,
>
> John
>
> ___
> 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 unit test framework

2019-01-05 Thread John Beard
On Sat, Jan 5, 2019 at 4:23 PM Seth Hillbrand  wrote:

> Patch 0002 does not apply cleanly to qa/CMakeLists.txt even after
> applying 0001

Hmm, that's odd: I can apply this with "git am 0002". I'm applying
on top of 69fc301bf. Where are you applying it to? Do you still have
the triangulation test code in your tree? IIRC there is a conflict in
that file.

Cheers,

John

___
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] 5.1 string freeze

2019-01-05 Thread Jeff Young
I’m not aware of anything pending.

Cheers,
Jeff.


> On 5 Jan 2019, at 21:21, Wayne Stambaugh  wrote:
> 
> Is there any reason not to start the 5.1 string freeze?  If so, please
> let me know.  Otherwise we can officially freeze the strings so our
> translators can start work towards the 5.1 stable release.
> 
> Cheers,
> 
> 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


___
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] 5.1 string freeze

2019-01-05 Thread Seth Hillbrand

Am 2019-01-05 16:21, schrieb Wayne Stambaugh:

Is there any reason not to start the 5.1 string freeze?  If so, please
let me know.  Otherwise we can officially freeze the strings so our
translators can start work towards the 5.1 stable release.


For 5.0, the string freeze was RC2.  Are we tagging that here as well?  
There are no string holds from my perspective atm.


-Seth

___
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] 5.1 string freeze

2019-01-05 Thread Wayne Stambaugh
Is there any reason not to start the 5.1 string freeze?  If so, please
let me know.  Otherwise we can officially freeze the strings so our
translators can start work towards the 5.1 stable release.

Cheers,

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] Pcbnew unit test framework

2019-01-05 Thread Seth Hillbrand

Hi John-

Patch 0002 does not apply cleanly to qa/CMakeLists.txt even after 
applying 0001


-S

Am 2019-01-04 09:36, schrieb John Beard:

Hi,

I have worked out how to do unit tests of the Pcbnew code.

The first example test is a pretty unexciting one about the import
plugin manager (which is what I was doing at the time).

This is followed by a fix for a minor 5.1 bug with a unit test on the
logic (numbered NPTH pads in arrays)

Also a small bunch of small Boost helpers which should allow to use
some nicer boost test code without causing breakage on older boosts.

After these patches, there will be 4 unit test executable run by "make 
test".


Cheers,

John

___
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] grammar.c not found,

2019-01-05 Thread Seth Hillbrand

I've pushed your patch.  Thanks for tracking this down John!

Best-
Seth

Am 2018-12-23 16:32, schrieb John Beard:

Hi,

It seems "make clean" might be the trigger here. The target for the
libeval grammar is done with CMake add_custom_command with an OUTPUT.
This means the output file will be cleaned on "make clean", but as the
grammar.c is not then regenerated by default, it will be missing until
checked out from Git.

Here's a patch to use add_custom_target instead. Any CMake wizards are
invited to criticise if I have misunderstood. At least from my tests,
"make clean" no longer removes grammar.c and the target can still be
used to (re)generate it.

Here's a bug report so we can tie back with the Fixes: line and find
this issue in future: https://bugs.launchpad.net/kicad/+bug/1809610

Cheers,

John
On Sun, Dec 23, 2018 at 1:27 AM Nick Østergaard  
wrote:


Hi Lachlan,

Are you sure that your workspace is clean? I don't see any issues on
any platform.

Nick

On Sat, 22 Dec 2018 at 06:53, Lachlan Audas  wrote:
>
> Hi,  just pull the lest-est developer build from git-hub for KiCad
> and tried compiling it.  But but get this Error, missing file  "grammar.c"
> >kicad-source-mirror/common/libeval/numeric_evaluator.cpp:36:21: fatal error: 
grammar.c: No such file or directory
>  #include "grammar.c"
>
> the 5.0.2 version has the file,  but not  the developers version
> Any one else seen this ?
>
> Lachlan
>
> ___
> 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


___
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] Hoping to contribute but I have some questions

2019-01-05 Thread Brian Piccioni
Wayne

My prior approach was to 
1) verify that the was/is change list produces no errors on the schematic 
(since it is derived from the PCB there can be discrepancies).
2) if there were no errors, update the PCB and schematic reference designations
3) update the netlist with the new reference designations.
4) direct the user to re-import the netlist, which rebuilds the associations.


Obviously 3) and 4) can be problematic for a variety of reasons. What I would 
propose is to simply regenerate the netlist from within eeSchema and reimport 
that into PCBNew. 

I should point out that what I am proposing is currently done manually. In 
other words, somebody would manually change all the reference designations in 
PCBNew and either simultaneously make the change in eeSchema or keep a 
handwritten was/is list to do it subsequently. The manual approach is not only 
a huge amount of work, it is fraught with the potential for error. The way to 
test coherency between the PCB and schematic is to update the netlist, reimport 
it, and, if possible, run a DRC. Once a schematic's reference designations get 
out of whack with the PCB it can be really hard to fix. I don't make large 
boards and these two issues were why I wrote my utility in the first place. 

Automating the process is not only a huge timesaver but it greatly reduces the 
odds of an error. 

In any event, regardless of the approach, netlist coherency can be resolved by 
re-creating the netlist from the updated schematic in eeSchema and re-importing 
it into PCBNew. This is what would have to be done if somebody did the 
reannotation manually.

I have been looking at cross-probing.cpp and I see a clear path to the solution 
by adding a small number of additional message types. This could include 
directing the eeSchema to generate a netlist, cross-application error 
reporting, etc..

Does that make sense or am I missing something?


Thanks

Brian

-Original Message-
From: Kicad-developers 
 On 
Behalf Of Wayne Stambaugh
Sent: January 5, 2019 8:07 AM
To: kicad-developers@lists.launchpad.net
Subject: Re: [Kicad-developers] Hoping to contribute but I have some questions

On 1/4/19 6:18 PM, Tomasz Wlostowski wrote:
> On 04/01/2019 18:51, Brian Piccioni wrote:
>> I am still keen to attempt to incorporate geographical component annotation 
>> into KiCad. In general, it is preferable for component annotation to be done 
>> relative to the PCB and in some logical order (left/right, top to bottom, 
>> etc). Thereafter this information is imported to the schematic. I wrote a 
>> standalone utility (RenumKicadPCB) which does this but ideally, we’d want 
>> the function built into Kicad.
>>
>> I understand this would be viewed as a “rogue effort” but lack of 
>> geographical component annotation is a major missing feature and my hope is 
>> that if my code works the developers might consider adding it or something 
>> like it into the project. Otherwise I’ll just maintain my own variant of the 
>> two affected applications for limited use.
>>
>> I am not used to working in c++ or working on large projects. Nevertheless, 
>> I figured I’d give it a try. I have been studying the source for a few weeks 
>> and have developed a strategy which would be very simple to implement if I 
>> had more skill/experience. 
>>
>> The first thing I want to do is to add the ability for eeSchema to import a 
>> “was/is” file to update schematic annotation. Since renumbering the PCB can 
>> be done manually or with a plugin this seems like a good first step. Since 
>> an annotation function already exists in eeSchema, all I would have to do it 
>> provide an option for replacing annotation with a was/is rather than the 
>> annotation generated by eeSchema’s annotate function. 
>>
>> I see a clear path to doing so however, the scope of Kicad and my limited 
>> experience with c++ and large projects mean it is not going to be easy for 
>> me. I am not that adept at navigating Doxygen files so I have a few 
>> questions regarding the source code (these are limited to eeSchema at the 
>> moment).
>>
>> 1)   Where are the file IO functions? I have searched for (for example) 
>> LoadProjectFIle and find the prototype but not the actual function. 
>> Similarly I find the prototype for SaveEEFile() but not the actual function.
>>
>> 2)   I would like to copy as much of the existing code and dialogs as 
>> possible (i.e. make new dialog based off another dialog) but when I open, 
>> for example, dialog_annotate_base.h I see
>>
>>  
>> ///
>>  // C++ code generated with wxFormBuilder (version Jun  5 2018)
>>  // http://www.wxformbuilder.org/
>>  //
>>  // PLEASE DO *NOT* EDIT THIS FILE!
>>  
>> /
>> //
>>  
>> But I can’t find the “source” from which this file is generated. Where is it?
>>
>> 3)   There is a guide 

Re: [Kicad-developers] [RFC] Symbol library file format

2019-01-05 Thread Thomas Pointhuber
My ERC Proposal was more like a: we should at least think about it a bit
instead of writing the pin type near style and number/name. We can
specify ERC hints in a future-proof way without extending the current
implementation. Like:

(erc_hints (pin_type power_in))

This would allow us to specify new erc hints in the future without
splitting them up at different places in KiCad 7.

I'm in favor of pin properties. In fact I would like to have the ability
to specify properties for all important items. (Pin, Symbol, Net,
Sub-schematic, Label,...). Those can be used by users and 3rd-party
programs, as well as to quickly prototype new stuff like ERC rules.

Regards,
Thomas

Am 04.01.19 um 19:55 schrieb Wayne Stambaugh:
> I'm willing to add properties which are already defined to pins.  There
> has been talk about adding about adding electrical constraints for
> advance ERC testing to symbols but that will not be part of the v6
> implementation of the new file format.  It's going to be a lot of work
> to implement the features we've added to v6 so this would be outside the
> scope of the first version of the new file format.  I'm certainly open
> to discussing this as part of a later version of kicad.
> 
> On 1/2/19 3:52 PM, mark.vandoesb...@hetnet.nl wrote:
>> One thing I would like to have is user defined pin properties, just like
>> the part properties. Currently I use the BOM generator to generate a
>> software header file from the netlist. I have to use an additional file
>> to store the information I need. It would be nice if this information
>> can be stored in the symbol. This could be any kind of information, for
>> example bank number or clock region for an FPGA. Or driver strenght/speed
>> setting for a microcontroller.
>>
>> regards,
>>
>> Mark.
>>
>> Wayne Stambaugh  wrote:
>>
>>  I have updated and published the symbol file format[1] for comment.
>>  Hopefully there isn't too much to change.  The only thing to really
>>  finalize is the internal units.  The initial concept was unitless but
>>  the more I think about it and discuss with other developers, it makes
>>  more sense to use units for the following reasons:
>>
>>  1. It's easier to visualize in your head how the symbols on a given page
>>  size will layout.
>>
>>  2. Converting from other file formats (Eagle, Altium, etc) will be
>>  easier since most if not all of them have a defined unit.
>>
>>  I'm thinking 10u (or possibly 100u) will make a good internal units
>>  value.  Once we nail down the units, I will update the file format
>>  document accordingly.
>>
>>  Please keep in mind that this is the symbol library file format document
>>  so things like constraints belong in the schematic file format.  I will
>>  be posting the schematic file format as soon as I finish updating it.
>>
>>  Cheers,
>>
>>  Wayne
>>
>>  [1]:
>>  
>> https://docs.google.com/document/d/1lyL_8FWZRouMkwqLiIt84rd2Htg4v1vz8_2MzRKHRkc/edit
>>
>>
>>  ___
>>  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
> 



signature.asc
Description: OpenPGP digital signature
___
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] [RFC] Symbol library file format

2019-01-05 Thread Wayne Stambaugh
Hi Mario,

On 1/4/19 10:53 AM, Mário Luzeiro wrote:
>> Now if you create a unique part number for every
>> resistance value, tolerance, temperature coefficient, manufacturer, etc.
>> that would be tens if not hundreds of thousands of unique part numbers.
> 
> I know my intervention may be a bit offtopic, but it may add some other 
> elements to discussion:
> 
> On such case of the 3D variants, it could be considered a 3D parametric 
> generation but KiCad would need to support it internally somehow.
> Since a 3D file is only need at export time (eg: when user exports the 
> project to STEP) or for 3D Viewer proposes ( generated on the fly ), there 
> was no need to storage any 3D data for share a project as it will always be 
> generated by KiCad.
> 
> Parametric / procedural generation is the easiest part:
> https://github.com/KammutierSpule/kicad3Dmodels
> 
> Mario Luzeiro

This is an interesting idea but I'm not sure I want kicad to be a
parametric 3D model generator.  I think this is best left to tools that
are specialized for this purpose such as FreeCAD.  Although this could
be scripted using python since a lot of this work is already done.  This
is a discussion after v6.

Cheers,

Wayne

> 
> 
> From: Kicad-developers 
>  on behalf of 
> Wayne Stambaugh 
> Sent: 04 January 2019 14:03
> To: kicad-developers@lists.launchpad.net
> Subject: Re: [Kicad-developers] [RFC] Symbol library file format
> 
> On 1/2/2019 2:55 PM, Vesa Solonen wrote:
>> kristoffer Ödmark kirjoitti 2.1.2019 klo 12.32:
>>
>>> I would rather have a new atomic file-format or storage format, so one
>>> could actually send a complete part in an easy way, that would include
>>> 3D-Files, SPICE data, symbol and footprints, and it would also mean that
>>> one could do the mapping to pins in that directory or file instead.
> 
> I can somewhat see the utility in this but it really doesn't make a lot
> of sense to me.  Lets assume for a second that it would be useful to
> create a separate atomic part for every 0603 resistor part number
> currently available.  Given that the 0603 footprint file is 1.7K, the
> step 3D model is 39.6K, the wrl 3D model is 14.4K, and the fully defined
> symbol file would be about 1.5K so that's a total of 57.2K per atomic
> part number.  Now if you create a unique part number for every
> resistance value, tolerance, temperature coefficient, manufacturer, etc.
> that would be tens if not hundreds of thousands of unique part numbers.
>  100K unique atomic part numbers would require 5.72G of storage just for
> the 0603 resistors.  Add all of the other resistors footprints including
> THT and your talking about several 100G.  Add all of the other passive
> components like capacitors, inductors, etc and you are talking about
> several terabytes of storage.  Maybe I'm missing something but even with
> modern storage systems, this doesn't scale well.
> 
> ___
> 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] [RFC] Symbol library file format

2019-01-05 Thread Wayne Stambaugh
On 1/3/19 11:24 PM, Simon Richter wrote:
> Hi,
> 
> On 03.01.19 19:06, José Ignacio wrote:
> 
>> I
>> think useful comments to the proposed format should see beyond the
>> actual low level representation of the data and talk about the overall
>> model being used to store it.
> 
> tl;dr: That's a separate discussion.
> 
> There are two schools of thought here, one that treats saved data as a
> protocol between two black box instances, and one that treats it as a
> serialization of the internal state.
> 
> Both have advantages and disadvantages. The "protocol" approach allows
> changing internals more easily, and gives better compatibility between
> versions as changes to the file format have to be made deliberately,
> while the "serialization" approach gives us load/save basically for
> free, so we need a lot less code.
> 
> The "serialization" model also requires us to generate the internal data
> structures from a more constrained language like IDL, as the marshaller
> needs to know when to follow pointers, and what members of an array are
> actually valid.
> 
> I'm not sure there are generators that include support for spatial
> indexes, though, which is pretty much a requirement for fast rendering,
> so this is pretty much impossible at the moment, which places us in
> "hand written load/save code" territory anyway.
> 
> We have also ignored diff/merge capability so far, which I believe is a
> good thing because it cannot really be done on a textual level (schemas
> are two-dimensional, PCBs are three-dimensional, so there is no normal
> form with a consistent ordering of elements that will make the files
> diffable).
> 
> I fully expect both the internal model and the file format to change
> significantly in the coming years as new features are added. The main
> requirement for the file format is that it always needs to be possible
> to read older files in some way, and to recognize when a file is newer
> than the current parser understands.
> 
> It might be a good idea to also have an "extension" mechanism, where we
> don't increase the version number when adding a new feature, but rather
> mark files that actually use the new feature, so files written by newer
> versions that don't use one of the newer functions can be read by older
> versions. This would also be another point for "hand written" load/save.
> 
>Simon
> 

I've done some more investigation on this and I'm not convinced that
this is any better than our current implementation due to some of the
issues Simon mentioned above.  I've also discovered there is also a
significant performance hit[1] with the JSON reader.  This is important
due to the overhead required when loading libraries.  I appreciate the
information and protobufs are interesting but I am going to stick with
what we have and know versus what we don't know because I don't think we
have the extra manpower to experiment only to find out it doesn't suite
our requirements.

Cheers,

Wayne

[1]:
https://groups.google.com/forum/#!searchin/protobuf/JSON|sort:date/protobuf/23Slq4AX7oE/xuwQX_ZXAAAJ



signature.asc
Description: OpenPGP digital signature
___
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] Hoping to contribute but I have some questions

2019-01-05 Thread Wayne Stambaugh
On 1/4/19 6:18 PM, Tomasz Wlostowski wrote:
> On 04/01/2019 18:51, Brian Piccioni wrote:
>> I am still keen to attempt to incorporate geographical component annotation 
>> into KiCad. In general, it is preferable for component annotation to be done 
>> relative to the PCB and in some logical order (left/right, top to bottom, 
>> etc). Thereafter this information is imported to the schematic. I wrote a 
>> standalone utility (RenumKicadPCB) which does this but ideally, we’d want 
>> the function built into Kicad.
>>
>> I understand this would be viewed as a “rogue effort” but lack of 
>> geographical component annotation is a major missing feature and my hope is 
>> that if my code works the developers might consider adding it or something 
>> like it into the project. Otherwise I’ll just maintain my own variant of the 
>> two affected applications for limited use.
>>
>> I am not used to working in c++ or working on large projects. Nevertheless, 
>> I figured I’d give it a try. I have been studying the source for a few weeks 
>> and have developed a strategy which would be very simple to implement if I 
>> had more skill/experience. 
>>
>> The first thing I want to do is to add the ability for eeSchema to import a 
>> “was/is” file to update schematic annotation. Since renumbering the PCB can 
>> be done manually or with a plugin this seems like a good first step. Since 
>> an annotation function already exists in eeSchema, all I would have to do it 
>> provide an option for replacing annotation with a was/is rather than the 
>> annotation generated by eeSchema’s annotate function. 
>>
>> I see a clear path to doing so however, the scope of Kicad and my limited 
>> experience with c++ and large projects mean it is not going to be easy for 
>> me. I am not that adept at navigating Doxygen files so I have a few 
>> questions regarding the source code (these are limited to eeSchema at the 
>> moment).
>>
>> 1)   Where are the file IO functions? I have searched for (for example) 
>> LoadProjectFIle and find the prototype but not the actual function. 
>> Similarly I find the prototype for SaveEEFile() but not the actual function.
>>
>> 2)   I would like to copy as much of the existing code and dialogs as 
>> possible (i.e. make new dialog based off another dialog) but when I open, 
>> for example, dialog_annotate_base.h I see
>>
>>  
>> ///
>>  // C++ code generated with wxFormBuilder (version Jun  5 2018)
>>  // http://www.wxformbuilder.org/
>>  //
>>  // PLEASE DO *NOT* EDIT THIS FILE!
>>  
>> ///
>>  
>> But I can’t find the “source” from which this file is generated. Where is it?
>>
>> 3)   There is a guide on the Kicad documentation “Tool framework” which 
>> describes adding a tool to PCBNew. Is there a similar guide to adding a 
>> tool/function to eeSchema? How do I go about this?
>>
> 
> Hi Brian,
> 
> Others have already answered to your questions so here's my offer: I
> believe geographical annotation is a very useful feature so I can offer
> a bit of my help. Point me to:
> - the latest sources of your tool,
> - a sketch of the user interface (dialogs), can be a hand-made drawing
> - a brief description of how you want all this to work (in terms of user
> experience).
> 
> Once I have this information, I'll try making a basic port of your code
> to Kicad codebase to the stage where you could take it over and
> contribute further features/fixes on your own.
> 
> Tom
> 

There is a lower level piece of the puzzle that is missing and that is
back annotation from the board editor to the schematic editor.  This is
non-trivial because you have create a netlist from the board information
and pass it back to the schematic editor.  This would be the only
solution that I would accept.  I want to avoid multiple ad-hoc solutions
for back annotation purposes.

Cheers,

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] "Fuzzy" antialiasing in eeschema

2019-01-05 Thread Vesa Solonen
Alex Lockwood kirjoitti 4.1.2019 klo 4.14:
> I know this is solidly within in realm of minor complaints, but I
> wonder, is there anything "easy" that can be done about this?
> 
> https://misc.c4757p.com/fuzzy-wires.png
> 
> A simple answer, I think, is to give eeschema and pcbnew separate
> settings for antialiasing (as the sort of things pcbnew renders benefit
> much more from it), but... can anybody explain to someone who doesn't
> know jack about antialiasing algorithms why this happens? The
> corners/junctions "spreading out" so far really strikes me as odd from
> how I understand AA normally working. Are we doing anything...weird?

There is a pretty rambling thread about it here:

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

Essentially it boils down to lack of development manpower and
compatibility/performance/OpenGL-version (2.1) limitations.

-Vesa

___
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