1
0
mirror of git://projects.qi-hardware.com/fped.git synced 2024-11-22 14:44:04 +02:00
Commit Graph

47 Commits

Author SHA1 Message Date
werner
39fef16d1c Got rid of the requirement to have a "package" directive. Fixed a grammar error
found in the process. Also taught the regression test system a new trick: the
path to "fped" can be passed in the environment variable FPED. E.g.,
FPED=fped.r5943 make test

- fped.c (usage, main): duplicating the -T option produces a dump to stdout
  before exiting (like %dump would)
- test/Common: new command fped_dump to invoked fped with a second -T option
- test/Common: if the environment variable FPED is set, use its content to
  invoke fped (default is ../fped)
- test/Common: if the environment variable CWD_PREFIX is set, prepend it to
  $FPED if the latter is a relative path 
- Makefile (test, tests): set CWD_PREFIX to .., so that the path given in FPED
  is valid at the point of invocation
- fpd.y: revised grammar to make "package" optional
- fpd.y: measurements were syntactically allowed inside non-root frame
  (test/structure)
- test/structure: test various combinations of the grammatical file structure
- test/tsort: removed all the now unnecessary "package" directives



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5944 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-26 23:11:22 +00:00
werner
bc27b094af With a little help from m8cutils and abyss, we now have regression tests for
the topological sort. "make test" or "make tests" invokes the regression tests,
"make valgrind" runs them under valgrind's watchful eyes.

- fped.c (usage, main): added option -T to force batch mode (for regression
  testing)
- Makefile, test/Common: added regression test infrastructure
- test/tsort: test cases for the topological sort
- README: added pointer to test/tsort



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5943 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-26 21:30:21 +00:00
werner
190bcaf982 Added a topological sort algorithm, for use when dumping.
- tsort.h, tsort.c, Makefile: stable topological sort with priorities
- fpd.l, fpd.y: added directive %tsort to test-drive the sort algorithm
- README: documented %tsort



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5942 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-26 15:18:01 +00:00
werner
6db067a90f More work on holes: added documentation and Postscript output.
- overlap.c (inside, test_overlap): check for instance type 
- overlap.c (inside, test_overlap): support hole instances
- README: put a pointer to the GUI description at the beginning
- README, gui.html: documented role and creation of holes
- inst.h: holes can now link to pads and vice versa
- hole.c, obj.c (instantiate): connect holes with pads and apply consistency 
  checks
- postscript.c: added output for holes
- icons/hole.fig: make hatched surroundings of hole look more round



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5940 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-25 13:09:36 +00:00
werner
1dda2ac2ae When creating an object in the GUI, its label wasn't initialized. Added
infrastructure for hole objects. (Postscript and KiCad output are still 
missing, and so does sanity checking.)

- gui_tool.c (new_obj_unconnected): set obj->name to NULL
- added hole objects to tool bar, all the various GUI routines, the .fpd
  parser, and the .fpd dumper



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5939 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-25 10:58:07 +00:00
werner
af0d2c78cb Removing the old interface for adding frame refrences. Also updated the
documentation.

- Makefile, icons/frame_locked.fig, icons/frame_ready.fig: removed the icons of
  locked and ready frames 
- gui_tool.c: removed the frame tool and all the image handling associated with
  it, leaving only the bits in place that are used by frame to canvas dragging 
- gui_tool.h, gui_tool.c (tool_frame_update, tool_frame_deleted), gui_canvas.c
  (key_press_event), gui_frame.c (popup_del_frame, select_frame): removed
  the notifications of frame changes
- gui.html: removed the old clumsy frame reference procedure and described the
  new way



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5937 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-25 00:11:45 +00:00
werner
093a34f860 Added support for reordering rows and columns in a table via the GUI. To move
a column, drag the variable or any of its values and drag horizontally. To move
a row, drag one of its value vertically.

- gui_frame.c (table_var_select_event, table_value_select_event): return FALSE
  if dragging is possible
- gui_frame.c (build_table), gui_frame_drag.h, gui_frame_drag.c, Makefile:
  support for rearranging tables using Gtk's drag and drop mechanism
- TODO: two items less



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5929 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-04-23 13:43:19 +00:00
werner
aaba06fb24 Full-page postscript now includes all packages (not just the first one).
Measurement lines now have a fixed size, so they can't scale to invisibility.

- Makefile: don't pass CFLAGS twice when making dependencies
- postscript.c (postscript): moved iteration over packages to new function
  ps_for_all_pkg, for sharing with postscript_fullpage
- postscript.c (postscript_fullpage): print all packages
- postscript.c (ps_meas): use real size for measurement lines
- postscript.c (PS_MEAS_LINE): changed measurement line width from 0.015 scaled
  mm to 0.1 real mm



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5851 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-02-23 01:02:19 +00:00
werner
140b60d074 Generating full dependencies for each and every change slowed down development
quite a bit. We now use per-file granularity for dependencies, reducing the
overhead by about a factor of 30.

- Makefile: generate per-file dependencies (.d) when compiling, based on
  http://scottmcpeak.com/autodepend/autodepend.html
- Makefile: "depend" target is no longer used



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5850 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-02-20 05:10:24 +00:00
werner
3ba5a476b8 - Makefile (SVN_VERSION): use "svn info -R" to get the correct SVN revision
git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5846 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-02-18 14:18:30 +00:00
werner
53a01182a3 Show fped's SVN revision in the title bar.
- Makefile: pass SVN version and commit status to CPP
- gui.c (gui_main): show SVN revision in the title bar, if available



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5845 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-02-18 14:03:14 +00:00
werner
feabeb73f4 The build process used dependencies only if they were explicitly generated.
This often caused accidental builds without proper dependencies.

- Makefile: include .depend also if it doesn't exist yet. This way, GNU make
  will build it and all is fine.
- Makefile: use "-include" instead of "include" to avoid unnecessary nagging
- Makefile: make .depend depend on *.h and *.c, so that we catch all changes
  that _might_ affect the dependencies (this is a little inefficient but better
  safe than sorry)
- README: "make dep" is no longer needed
- TODO: added thoughts for more improvements



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5774 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-01-02 23:58:03 +00:00
werner
14f21c0aee More work on tooltips and a build fix.
- Makefile: use PID in temporary file name in PPM to XPM conversion, so that we
  don't get mysterious failures in parallel builds
- gui_util.c (debug_save_pixbuf, debug_save_widget): helper functions to debug
  pixbuf and widget content
- Makefile: added target "montage" to show the images recorded with
  debug_save_pixbuf and debug_save_widget
- gui_over.c: when debugging, record the saves pixbuf in files
- gui_tool.c (tool_hover): removed unnecessary initialization
- added infrastructure for tooltips on the canvas (doesn't work properly yet)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5769 99fdad57-331a-0410-800a-d7fa5415bdb3
2010-01-02 12:55:34 +00:00
werner
aca443f566 Make the icon for the currently selected instance transparent so that it better
blends in and won't be mistaken for a button.

- Makefile: generate icon XPMs with transparent background
- gui_util.c (make_image): set transparency color to white
- gui_util.c (make_transparent_image): new function to return a transparent
  image created from an XPM
- gui_tool.c (get_icon_by_inst): make the returned image transparent instead of
  opaque
- icons/vec.fig, icons/arc.fig, icons/line.fig, icons/rect.fig, icons/circ.fig:
  darkened to increase contrast on grey background



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5758 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-12-16 17:25:13 +00:00
werner
b37a8599d9 It can sometimes be unclear what exactly has been selected. To improve this,
we now display an icon for the currently selected instance in the status area.



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5757 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-12-15 21:24:30 +00:00
werner
cd830046fa Drawing all the pad layers as filled areas can cause confusion. Now we draw
the solder mask with lines.

- gui_inst.c: draw solder mask with lines, not with filled rectangles and arcs
- gui_style.c: increase line width for solder mask from 1 to 2 pixels
- Makefile: added manual/concept-inst.png (forgot to commit this before)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5696 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-10-19 15:00:30 +00:00
werner
c172870dfd - README: added link to the GUI manual
- added a conceptual explanation of instantiation (with picture)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5636 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-09-13 13:16:39 +00:00
werner
8df866ab2f - the set of layers of a pad is now maintained in the instance, so that we can
make adjustments when removing layers provided by specialized pads
- gui_inst.c: moved gc construction from gui_draw_pad and gui_draw_rpad to
  shared pad_gc
- layer.h: new home of all definitions related to pads and layers
- layer.c: 
- overlap.c: functions to test for overlaps of pad shapes (in progress)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5634 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-09-13 09:58:30 +00:00
werner
f054cdd7d5 - added "make update" that combines "svn update" with remaking the dependencies
git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5628 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-09-12 07:34:02 +00:00
werner
2c9a359c0c - renamed directory screens/ to manual/
- convert icons in the manual from XPM to PNG so that Firefox can display them
  too



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5534 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-24 16:53:47 +00:00
werner
d9b7ad94ec - when displaying loop iterations, we now use the active count, not just the
last count
- loop iterations now show the actual value, not the zero-based iteration 
  number
- gui.html: added a GUI manual (in progress)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5531 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-22 22:55:39 +00:00
werner
63e60182bb - new visualization option: show all frames or show only current frame
- new visualization option: highlight pads and silk ("final" view)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5527 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-22 19:00:55 +00:00
werner
5a2eb77629 Made life in mil-land a little less painful.
- .fpd file format: new directive "unit" to set the default unit
- new selection was too aggressive - make it only rearrange settings if we also
  fail the second vector search
- gui_draw_pad_text: calculation of height vs. width lost too much precision,
  causing pad text to be rotated arbitrarily
- drag_new_vec: display distance in mil if unit is mil
- end_new_raw_vec: store distance in mil if unit is mil
- gridify: use a 10 mil grid if unit is mil
- ps_hline: corrected gsave/grestore mismatch
- Makefile: made "all" a prerequisite of "install"
- Postscript output now mentions the default unit (if set)
- ps_package: height and width were swapped, oopsie !



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5525 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-22 15:58:58 +00:00
werner
4db1ade3bd - Makefile: now requires /bin/bash (for PIPESTATUS)
- Makefile: use PIPESTATUS to catch errors in the icon conversion pipe
- Makefile: whitespace and comment cleanup
- gui_style.c: removed no longer needed definition of INVALID



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5487 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-19 14:38:59 +00:00
werner
5a86125002 Added Postscript outout for measurements, plus assorted changes.
- postscript.c: added patterns backhatchpath and crosspath (for pad overlaid 
  with solder paste)
- postscript.c: added measurements
- postscript.c: prefixed style parameters with PS_ to avoid future conflicts
  with gui_style.h
- when changing the default unit, we now cancel the selection, and refresh 
  canvas and current position
- on-screen measurements now suppress the unit if set to anything but "auto"
- use  __attribute__((format(printf, ...))) for printf-like functions
- the unit selector now has a white background to make it clearer that it can 
  be clicked



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5461 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-16 11:21:48 +00:00
werner
230de72552 - Makefile: fixed odd indentation of "clean" target
- Makfile: added "install" and "uninstall" targets
- when deleting the currently active frame reference, reset active_ref of the
  frame, so that it can be set to a new value later
- during instantiation, circles were classified as arcs
- end point of KiCad circle didn't mirror the Y axis



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5457 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-15 23:25:05 +00:00
werner
ef58598695 - added -std=gnu99 so that we can use "round" and M_PI
- added unit status and selection (in lower right corner)
- added automatic unit selection
- pointer coordinates are now shown with their unit
- updated display of X, Y, width, offset, and radius for unit selection



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5454 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-15 20:52:08 +00:00
werner
d39ae30f6e - added rounded pads
- initialize item_widget to NULL if not showing items or bad things happen



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5440 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-14 10:18:40 +00:00
werner
fe5f824b9e Make delete feel "safer".
- objects are now deleted by selecting them, then clicking on the delete icon
- removed tool_ops.click, which was only there because of delete



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5419 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-11 20:52:33 +00:00
werner
57e76aeb9e - vector labels are already in a per-frame namespace, so we don't need to add
the frame name when auto-generating them
- moved file I/O from gui.c to file.c
- ps_line used the wrong endpoint coordinate
- option -k makes fped write KiCad non-interactively
- option -p makes fped write Postscript non-interactively



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5418 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-11 20:17:39 +00:00
werner
1dfb8da99a - change file save logic to write to a temporary file first, so that we don't
leave an empty/corrupt main file if we crash during saving
- started adding Postscript output
- renamed "Save as KiCad" to "Write KiCad"
- switched from "manual" menu bar creation to GtkItemFactory



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5417 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-11 01:20:15 +00:00
werner
6f307d6ae7 - added KiCad output
- when saving a file, we now make a backup of any existing file with the same
  name



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5416 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-10 21:02:26 +00:00
werner
851c82af6f - simplified tool_button and moved it from gui_tool.c to into gui_util.c
- moved make_image from gui_tool.c to into gui_util.c as well
- generalized set_frame_image and moved it to gui_util.c as set_image
- tool_button_press_event didn't check which button was pressed
- added buttons to switch visibility of frames, vectors, and measurements
- when creating a measurement through the GUI, don't invert if both points are
  minima (otherwise, one could never get the text point the other way)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5411 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-08 21:59:33 +00:00
werner
e677ee1691 - for consistency, renamed gui_tools to gui_tool
git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5410 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-08 19:44:17 +00:00
werner
a1de1ee2d9 - moved handling of frame area from gui.c to gui_frame.c and cleaned up their
includes



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5409 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-08 19:35:16 +00:00
werner
751e845250 New-style measurements are coming to the GUI soon !
- moved measurement operations from gui_tools.c to new file gui_meas.c
- added support for creating new-style measurements through the GUI
- the offset is optional in new-style expressions



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5407 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-08 18:50:17 +00:00
werner
39690c9cb2 - to simplify communication between the various modules, renamed "ctx" to
draw_ctx, moved it to gui_util.c, and made it a global variable
- moved drawing logic for hovering and dragging into dedicated state machine
  in gui_over.c
- hovering now uses a pixmap to restore the background instead of redrawing
- moved hover drawing functions from gui_inst.c to gui_tools.c
- made hover circle thicker



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5405 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-08 14:11:26 +00:00
werner
1a18292883 - added icons for new-style measurements (on-going)
- increased default window size for make room for new icons
- switch the canvas to dark blue when instantiation fails
- modularized point lookup logic of instantiate_meas
- added highlight mode (on-going)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5404 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-07 21:47:51 +00:00
werner
bb7355d84b - gui_tools.c:new_vec didn't initialize vec->samples, causing fped to crash
- we didn't dehover before deleting, which could cause a crash
- added delete tool to canvas. Thus ...
- we no longer need the Delete key on the canvas, so we can ...
- always focus the (first) entry field, and ...
- removed "focus" parameter to edit functions



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5403 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-07 19:42:57 +00:00
werner
d046f9306c - fpd.y: fixed check for empty part name
- added new-style measurements (experimental)



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5400 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-07 13:37:51 +00:00
werner
5d989a3e28 - GUI: added creation and moving of vectors, measurements, and frame references
git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5389 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-05 14:44:36 +00:00
werner
cdcd2f36b3 - started functions to dump .fpd files (automatic labeling doesn't quite work
yet)
- don't pass argc, argv to gui_main. They've been harvested before.



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5388 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-05 10:35:48 +00:00
werner
3db91b5c1b Added delete/undelete.
- when moving a point, we no longer restrict the area around the original
  position once the drag radius has been left
- objects can now be deleted by selecting them and pressing Delete
- deleted objects can be restored by pressing "u"



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5387 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-05 00:32:38 +00:00
werner
5d7ab083a3 - README: described use of semicolons
- README: added that loops can also execute zero times
- accept labels only at the beginning of a line
- rectangles and lines no longer use the bounding box for drawing (caused
  offset problems since we now correct for the line width)
- dist_rect and inside_rect no longer require their input pre-sorted
- pad instances now have their own structure and no longer abuse the bounding
  box to know the pad coordinates
- Makefile: use $(GEN) for fig2dev, to reduce chattiness
- when dragging a point, the symbol is now adjusted accordingly
- added moving of rects, pads, circles, and arcs
- added creation of pads 
- moved rotate_r from gui_inst.c to coord.c
- new function "theta" that combines most of the angle calculations
- save_pix_buf: y < 0 clipping changed width, not height



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5386 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-04 21:45:33 +00:00
werner
5add8b5229 GUI can create silk screen objects.
- made xpm name manipulation compatible with older versions of ImageMagick
  (reported by Alvaro Lopes)
- corrected all lines beginning with five or more spaces
- Makefile
- README: fixed loop example (reported by Joerg Reisenweber)
- moved draw_arc and draw_circle from gui_inst.c to gui_util.c
- added dragging and hovering
- added creation of lines, rectangles, and arcs via GUI
- removed arc tool (use circle instead)
- fixed reference counting in vectors



git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5384 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-04 12:06:04 +00:00
werner
0015f96f14 - renamed gui_icons to gui_tools
git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5383 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-04 07:24:13 +00:00
werner
e455b37abb Moved fped over to /trunk/eda
git-svn-id: http://svn.openmoko.org/trunk/eda/fped@5374 99fdad57-331a-0410-800a-d7fa5415bdb3
2009-08-03 16:12:47 +00:00