1
0
mirror of git://projects.qi-hardware.com/eda-tools.git synced 2024-07-03 00:22:55 +03:00
eda-tools/eeshow
2016-08-16 12:20:27 -03:00
..
test rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
COPYING.GPLv2 eeshow/README, COPYING.GPLv2 2016-08-04 08:11:36 -03:00
cro.c eeshow/cro.c (cr_arc): close the path for filled arcs 2016-08-16 02:33:37 -03:00
cro.h eeshow/: fix offset calculation and also get rid of rounding artefacts 2016-08-09 12:28:21 -03:00
delta.c eeshow/: missing sheets are now flagged in red, instead of failing the revision 2016-08-16 04:07:42 -03:00
delta.h eeshow/delta.c (sheet_eq): sheet comparison, for history compression 2016-08-13 03:16:14 -03:00
DEMO eeshow/DEMO: add c4puter/motherboard as another example 2016-08-16 05:17:05 -03:00
diag.c eeshow/: convert "perror" to diagnostic functions 2016-08-12 14:43:28 -03:00
diag.h eeshow/: convert "perror" to diagnostic functions 2016-08-12 14:43:28 -03:00
diff.c eeshow/diff.c (AREA_FILL): change from yellow to light purple 2016-08-16 03:19:39 -03:00
diff.h eeshow/diff.c (diff_to_canvas): draw pixel differences to canvas (WIP) 2016-08-09 10:14:36 -03:00
dwg.c eeshow/dwg.c (dwg_hlabel): style for tri-state is the same as for bidir 2016-08-11 02:42:37 -03:00
dwg.h eeshow/: make glabels hoverable (WIP) 2016-08-10 21:50:07 -03:00
fig.c eeshow/fig.c: output all user-defined colors 2016-08-16 12:20:27 -03:00
fig.h rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
file.c eeshow/file.c (file_read): use getline instead of fgets 2016-08-16 01:24:04 -03:00
file.h eeshow/file.c, git-file.c: give access to object IDs, for caching 2016-08-10 13:52:56 -03:00
fmt-pango.c eeshow/: use dedicated functions for diagnostics, instead of fprintf and exit 2016-08-12 10:40:55 -03:00
fmt-pango.h eeshow/: use printf-style formatting for overlay text; test mode -F fmt string 2016-08-06 19:14:31 -03:00
gfx.c rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
gfx.h eeshow/: fix some whitespace issues 2016-08-04 19:25:31 -03:00
git-file.c eeshow/git-file.c (find_file): use git_repository_workdir, for submodules 2016-08-16 03:14:50 -03:00
git-file.h eeshow/file.c, git-file.c: give access to object IDs, for caching 2016-08-10 13:52:56 -03:00
git-hist.c eeshow/: convert "perror" to diagnostic functions 2016-08-12 14:43:28 -03:00
git-hist.h eeshow/: hovering over the revision shows more details 2016-08-07 05:09:34 -03:00
git-util.c eeshow/: detect if repo is dirty and add history entry with commit = NULL 2016-08-05 09:24:56 -03:00
git-util.h eeshow/: detect if repo is dirty and add history entry with commit = NULL 2016-08-05 09:24:56 -03:00
gui-aoi.c eeeshow/gui-aoi.c (aoi_down): don't accept click on non-clickable AoI 2016-08-16 00:19:23 -03:00
gui-aoi.h eeshow/: history list can now be dragged 2016-08-14 13:01:58 -03:00
gui-over.c eeshow/gui-over.c: make list doubly-linked; reverse when dy < 0 2016-08-15 04:47:43 -03:00
gui-over.h eeshow/gui-over.c: more fine-grained control over stacking direction 2016-08-14 14:35:57 -03:00
gui-style.c eeshow/gui.c: move style definitions to gui-style.h 2016-08-09 19:21:02 -03:00
gui-style.h eeshow/gui.c: move style definitions to gui-style.h 2016-08-09 19:21:02 -03:00
gui.c eeshow/gui.c (button_press_event): filter out double-click 2016-08-16 00:19:51 -03:00
gui.h eeshow/: option -N depth to limit history depth; -N-depth exits after parsing 2016-08-10 09:08:22 -03:00
lib-parse.c eeshow/lib-parse.c (parse_def): suppress pin name and number if power symbol 2016-08-16 02:14:45 -03:00
lib-render.c eeshow/lib-render.c (draw_arc): support filling 2016-08-16 02:33:35 -03:00
lib.h eeshow/: support selection of "De Morgan" style 2016-08-16 01:47:07 -03:00
main.c eeshow/gui.c: limit = 0 means "no limit", not "no revisions" 2016-08-12 10:42:03 -03:00
main.h eeshow/main.c (verbose): move to new file diag.c 2016-08-11 16:36:24 -03:00
Makefile eeshow/main.c (verbose): move to new file diag.c 2016-08-11 16:36:24 -03:00
misc.c eeshow/: use dedicated functions for diagnostics, instead of fprintf and exit 2016-08-12 10:40:55 -03:00
misc.h rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
neo900-template.fig rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
README eeshow/README: document modes of usage 2016-08-16 00:21:33 -03:00
record.c rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
record.h rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
sch-parse.c eeshow/sch-parse.c (parse_field): accept escaped quotes (WIP) 2016-08-16 05:15:38 -03:00
sch-render.c eeshow/: missing sheets are now flagged in red, instead of failing the revision 2016-08-16 04:07:42 -03:00
sch.h eeshow/: missing sheets are now flagged in red, instead of failing the revision 2016-08-16 04:07:42 -03:00
sch2pdf eeshow/: fix some whitespace issues 2016-08-04 19:25:31 -03:00
style.c eeshow/fig.c: output all user-defined colors 2016-08-16 12:20:27 -03:00
style.h eeshow/fig.c: output all user-defined colors 2016-08-16 12:20:27 -03:00
test.lib rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
test.pro rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
test.sch rename sch2fig to eeshow 2016-08-02 11:00:08 -03:00
text.c eeshow/text.c (text_fig): correct vertical alignment of multi-line text 2016-08-16 02:06:40 -03:00
text.h eeshow/lib-parse.c (decode_style): also recognize "Italic" 2016-08-16 01:00:20 -03:00
TODO eeshow/TODO: update 2016-08-16 05:19:23 -03:00
util.h eeshow/util.h (alloc_type_n): get rid of all these alloc_size(sizeof(foo), n) 2016-08-10 20:28:31 -03:00

eeshow - Eeschema schematics renderer and viewer
================================================

Eeshow renders schematics made by KiCad Eeschema to FIG, PDF, or PNG,
and generates graphical differences between different versions of
schematics sheets. It can work in plain files but it can also
retrieve design files directly from a git repository. Furthermore,
eeshow has an interactive mode for viewing schematics and differences.

This work is distributed under the terms of the GNU GENERAL PUBLIC
LICENSE, Version 2:

  This program is free software; you can redistribute it and/or modify
  it under the terms of the GNU General Public License as published by
  the Free Software Foundation; either version 2 of the License, or
  (at your option) any later version.

For your convenience, a copy of the complete license has been included
in the file COPYING.GPLv2.


Prerequisites
-------------

libcairo2-dev
libgit2-dev
libgtk-3-dev


Development status
------------------

Eeshow is still incomplete. It should generally be usable, but still has
many limitations, especially in the following areas:

- not all details are rendered, e.g., pin attributes such as "clock input"

- rendering isn't always exactly the same as in KiCad, e.g., text size may
  differ significantly

- interactive use is not streamlined yet, e.g., revision selection

- there may be bugs

More details on pending items can be found in the file TODO.



Non-interactive rendering
=========================

Eeshow can be invoked from the command line to render KiCad schematics
to FIG, PDF, and PNG.


Invocation
----------

The general form of invocation for rendering is as follows:

eeshow [-r] file.lib ... file.sch -- format [options]

Common if using PDF, the option -r can be used (after "eeshow") to
recursively process sub-sheets. For PDF and PNG, the options -s scale
and -o output-file can be used to control the size of the output and
the output file. By default, eeshow writes to standard output.

Examples:

eeshow test.lib test.sch -- png -s 2 -o test.png

eeshow -r neo900.lib kicad-libs/components/powered.lib neo900.sch \
  -- pdf -o neo900.pdf

More details on the above example can be found in the file DEMO.


Revision access
---------------

If the files are stored in a git repository, a revisions can be selected
by prefixing file names with the commit ID, e.g.,

eeshow neo900.lib kicad-libs/components/powered.lib 6a9f71:neo900_SS_5.sch \
  -- png -s 2 -o old.png

Revision selection propagates to dependent files, unless explicitly
overridden. E.g., the above example selects also revision 6a9f71 of
neo900.lib.


Non-interactive differences
===========================

Eeshow can render two versions of a sheet to a bitmap and then compare them
pixel by pixel, highlighting areas where differences are found. The output
is written to a PNG file.


Invocation
----------

The general form of invocation for rendering is as follows:

eeshow file.lib ... file.sch -- diff [options] file.lib ... file.sch

The usual options and revision selection can be used here as well.

Example:

LIBS="neo900.lib kicad-libs/components/powered.lib"
eeshow $LIBS  6a9f71:neo900_SS_5.sch \
  -- diff -s 2 -o diff.png $LIBS neo900_SS_5.sch


GUI mode
========

GUI mode allows exploration of schematics and the comparison of different
git revisions. Compared to eeschema, eeshow currently offers the following
additional features:

- access to the git revision history with visual differences between
  versions.

- on hover, global labels show on which other sheets the label is used.
  Clicking on a name jumps to that sheet.

- fast sheet change with PgUp/PgDn


Invocation
----------

The basic invocation of GUI mode is as follows:

eeshow file.lib ... file.sch

Add the option -r to recursively load sub-sheets of file.sch

If file.sch is in a git repository, eeshow automatically loads the
revision history. The depth of the history can be limited with the
option -N number-of-commits

Examples:

eeshow -N 30 -r neo900.lib kicad-libs/components/powered.lib neo900.sch

eeshow `sed -n '/pcbnew/q;/^LibName[0-9]*=/{s///;s/$/.lib/p;};d' anelok.pro` \
  anelok.sch


Mouse function in GUI mode
--------------------------

Hover			show additional details on revisions, sheets, global
			labels
Left-click		jump to sheet (on sub-sheet, sheet stack, global
			label hover box), open history, select revision
Left-click and drag	scroll history
Middle-click and drag	pan sheet
Scroll wheel		zoom in or out


Key functions in GUI mode
-------------------------

+ or =			zoom in
-			zoom out
*			zoom to extents
Home			go to the top sheet
Delete or Backspace	go to the next higher sheet in hierarchy
PgUp			go to the previous sheet in sequence
PgDn			go to the next sheet in sequence
Up or Down		invoke the revision history (WIP)
Q			quit the viewer