Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
Play with quad-edge data-structure - using PCB as a framework for GL!
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
polygon.c: Add option to include drills holes (from vias / pins) in the board outline
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
hid/gtk (GL): Add hacky code to render outline of board, and mask cutout geometry
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
32bit: Fix GL HID zoom out, due to over-shooting Coord data-type
Nasty NASTY hack this, but it gets me working again.
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
Win32: Disable the SpaceNavigator code
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
Play with locked object rendering
(HACK HACK HACK HACK HACK)
Did I mention this was a hacky pile of rubbish code.. the main point of
the exercise is to determine whether the usability is better or not.
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
More rubberbanding algorithm tweaks
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
First attempts at improved rubberbanding logic
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
Introduce hacky code to switch cursor when over a line we might drag
Peter Clifton [Sat, 10 Jan 2015 13:31:01 +0000 (10 13:31 +0000)]
Tidy up rubberband.c
Peter Clifton [Sat, 10 Jan 2015 13:31:00 +0000 (10 13:31 +0000)]
drc: HACK HACK HACK
Peter Clifton [Sat, 10 Jan 2015 13:31:00 +0000 (10 13:31 +0000)]
Refactor poly_CreateNode() to take a pre-created VNODE structure, not a Vector
This helps to keep consitency with other functions adding vertices to a
contour and will be useful when additional data is added to the VNODE
structure. (Meaning it can be set the same way in all cases).
Peter Clifton [Sat, 10 Jan 2015 13:31:00 +0000 (10 13:31 +0000)]
Fix to ParseGroupString()
Peter Clifton [Thu, 8 Jan 2015 21:29:27 +0000 (8 21:29 +0000)]
Revert "Just make a black background."
This reverts commit
cf6c95ade3be149a5a8659bd13a80eedc4092fd2.
Peter Clifton [Thu, 8 Jan 2015 21:29:27 +0000 (8 21:29 +0000)]
Disable texturing the board's soldermask
Peter Clifton [Thu, 8 Jan 2015 21:29:27 +0000 (8 21:29 +0000)]
Add a load more hacky models for test rendering
Peter Clifton [Thu, 8 Jan 2015 21:29:27 +0000 (8 21:29 +0000)]
Add a demonstration model for rendering ACY series resistors
Play with some lighting effects (SLOW!!!)
Play with shaders and lighting goodness
Oops, nasty hack due to unknown code changes on merge. Left merge comments commented out for now.
Peter Clifton [Thu, 8 Jan 2015 21:29:27 +0000 (8 21:29 +0000)]
Just make a black background.
Peter Clifton [Thu, 8 Jan 2015 21:29:27 +0000 (8 21:29 +0000)]
Re-write ghid_set_layer() for some reason (can't recall why!)
Peter Clifton [Thu, 8 Jan 2015 21:29:26 +0000 (8 21:29 +0000)]
Win32: Fix build for win32
Peter Clifton [Thu, 8 Jan 2015 21:29:26 +0000 (8 21:29 +0000)]
hidgl: Attempt at fixing ORTHO view
Peter Clifton [Thu, 8 Jan 2015 21:29:26 +0000 (8 21:29 +0000)]
Play with perspective
NB: Edit to hidgl.c:
+#if 0
+ glPushAttrib (GL_CURRENT_BIT);
+ glColor4f (1., 1., 1., 1.);
+ glDrawArrays (GL_LINE_STRIP, 0, priv->buffer.vertex_count);
+ glPopAttrib ();
+#endif
Is probably bogus. (Leftover debug?)
Peter Clifton [Thu, 8 Jan 2015 21:29:26 +0000 (8 21:29 +0000)]
Draw polygons in a more intelligent order
A sub-compositing stencil bit "S" is used to avoid overlapping polygons.
PASS 1a. Draw all non holed "SOLID" polygons which don't clear other
geometry.
PASS 1b. Draw all "SOLID" polygons with holes.
--
In addition to "S", A second stencil bit, "H" is required for
each of these polygons. Both are masked against. After each
polygon drawn, a new "S" stencil bit is required.
PASS 2. Mask out all clearance holes from other geometry.
--
As this is a polygon ONLY layer being subcomposited, this masking
can be done directly on the "S" bit-plane.
PASS 3a. Draw all polygons which only feature clearance holes
PASS 3b. Draw all polygons which have user-defined holes.
--
In addition to "S", a second stencil bit, "H" is required for
each of these polygons. Both are masked against. After each
polygon drawn, a new "S" stencil bit is required.
NB: In this version. PASS 2 and 3 are carried out concurrently, although
for boards with heavily overlapping polygons, it may be faster to
mask out clearance for everything at once.
V2: We have to force a new stencil bit for each piece of a "fullpoly" polygon
as a hole in the first POLYAREA should not prevent a second POLYAREA of the
same polygon being drawn inside that hole. In this regard, we need to treat
"fullpoly" polygons as if they contained user holes.
Peter Clifton [Thu, 8 Jan 2015 21:29:26 +0000 (8 21:29 +0000)]
Try a new, different sized VBO buffer for each upload.
Peter Clifton [Thu, 8 Jan 2015 21:29:26 +0000 (8 21:29 +0000)]
Cache polygon contour tri-strip tesselations (HACK: IN THE CORE!)
This is a bit of a KLUDGE really, we should not push data
into the core like this.
Peter Clifton [Sat, 10 Jan 2015 13:20:15 +0000 (10 13:20 +0000)]
Add sweep.h to borast-bentley-ottman.c
Lets the compiler check the function prototypes.
Peter Clifton [Sat, 10 Jan 2015 13:10:10 +0000 (10 13:10 +0000)]
Play with GLSL shader for rendering line caps and circles
And of course.. typically, a million other little fixes:
- Primitive rendering object changed from GL_TRIANGLES to GL_TRIANGLE_STRIP
- Cache of tristrip data per contour (HACK: in the core)
- Rendering using mapped VBOs rather than just arrays
- Updated layer depth code, so we render with "z" in world coordinates
- Space navigator joystick support fixes against later kernels
Bugs:
- Layer depths will be wrong for reversed layer group numbering
- Pixel shader ought to be switched off for polygon fill?
- hidgl_draw_rect stubbed out (for benchmarking)
- Draw Element mark stubbed out (for benchmarking)
- Draw crosshair stubbed out (for benchmarking)
- Draw crosshair not updated to render in world coordinates
Notes:
- Apparently it can be better to do glVertexPointer last (so we do):
From: http://sdickinson.com/wordpress/?p=122
""
Make sure you put glVertexPointer at the end as there is a lot of work that
goes on behind the scenes with it, and if it's set at the start, it has to
do all that work for each gl*Pointer call, rather than once at the end.
""
- We set up the array pointers before calling glEnableClientState():
I'm not sure, but if we do this the other way around, it might cause
the driver to hang onto our old buffers longer, or perform state setup,
only to have to discard that work shortly after.
- DARN: Seems that using VBOs is not a win, even on Intel 965:
Certainly seems to fail miserably (v. low FPS) on my NVidia card.
On Intel, sysprof shows a huge amount of time spent clflushing
buffers, or copying to the graphics card (uncached).
Set to use glBufferSubData by default for now.
Peter Clifton [Thu, 8 Jan 2015 21:29:22 +0000 (8 21:29 +0000)]
hid/gtk (GL): I think the polygon renderer works in mask mode now
Peter Clifton [Thu, 8 Jan 2015 21:29:22 +0000 (8 21:29 +0000)]
Put back layer opacity to its old behaviour
The exact details of this setting aren't right yet,
so revert them so I can build a release.
Peter Clifton [Thu, 8 Jan 2015 21:29:22 +0000 (8 21:29 +0000)]
PCB+GL: Fix GL headers for Win32
Peter Clifton [Thu, 8 Jan 2015 21:29:22 +0000 (8 21:29 +0000)]
hid/common/hidgl: Debug out of context rendering
Peter Clifton [Thu, 8 Jan 2015 21:29:22 +0000 (8 21:29 +0000)]
Hack to avoid GL calls when we're out of context
Peter Clifton [Thu, 8 Jan 2015 21:29:21 +0000 (8 21:29 +0000)]
Add cache for board-outline
This adds a cache of the board outline, to improve rendering speed
when plotting the board with an outline.
The cache is invalidated when the "outline" or "route" layer is
updated. We catch this by bodging the ClearFromPolygon() routine,
which is called for almost all layer geometry changes which might
affect us.
XXX: We really need to add a nicer place to be notified of board
layer changes!
Peter Clifton [Thu, 8 Jan 2015 21:29:21 +0000 (8 21:29 +0000)]
Board outline polygon generation
FIXME: Make this work with the GL masking polygon drawing routines, rather
than relying on the dicer.
Peter Clifton [Thu, 8 Jan 2015 21:29:21 +0000 (8 21:29 +0000)]
Add routines to render just a single contour
Use them rather than the GLU tessellator
Peter Clifton [Fri, 9 Jan 2015 23:48:32 +0000 (9 23:48 +0000)]
BORAST: Fixup to only draw the passed POLYAREA, not walk the linked list of POLYAREA and draw them all!
Peter Clifton [Thu, 8 Jan 2015 21:29:21 +0000 (8 21:29 +0000)]
borast: Win32: Comment #define in borast-compiler-private.h
Peter Clifton [Thu, 8 Jan 2015 21:29:21 +0000 (8 21:29 +0000)]
Fix borast not to build for non-GL enabled builds
Peter Clifton [Fri, 9 Jan 2015 23:39:18 +0000 (9 23:39 +0000)]
Fixup borast to build
Peter Clifton [Thu, 8 Jan 2015 21:29:21 +0000 (8 21:29 +0000)]
Bentley-Ottann test implementation
Code from cairo - intersection routines stripped out
XXX: Appears to be some breakage in demo.pcb (See top LHS component layer polygons)
Peter Clifton [Thu, 8 Jan 2015 21:29:20 +0000 (8 21:29 +0000)]
Silly space navigator interface to allow funky views
Peter Clifton [Thu, 8 Jan 2015 21:29:20 +0000 (8 21:29 +0000)]
Draw pin / pad names first, so they don't get masked by the pad
Since we use stencil masking to ensure we don't redraw an area
multiple times, confusingly, we need to draw the text first to
ensure it isn't occluded by the pad its-self.
HACK:
We probably draw the names multiple times - as we still use the
common draw.c code which assumes it can draw labels on top of
the pads.
Peter Clifton [Thu, 8 Jan 2015 21:29:20 +0000 (8 21:29 +0000)]
gtk/gl: Play with layer translucency
Peter Clifton [Thu, 8 Jan 2015 21:29:20 +0000 (8 21:29 +0000)]
Add support for drawing objects from the soldermask layer
Peter Clifton [Fri, 9 Jan 2015 23:30:54 +0000 (9 23:30 +0000)]
Fixup code to determine whether we draw pins/vias on a given layer
The net change of this patch is that we consider whether to draw pins/vias
for each layer within the layer group. Previously, if we encoundered a layer
named "outline" or "route" within the layer group, all _subsequent_ layers
within that group would not have their pins/vias rendered.
As ordering of the layers within the group should not be important like this,
change behaviour to apply test on a per-layer basis.
Peter Clifton [Thu, 8 Jan 2015 21:29:20 +0000 (8 21:29 +0000)]
draw_funcs.c: Don't draw pins/vias in layer for non GUI exporters
The non-gui paths render pins and vias with draw_ppv, so no need to
also render them for each layer.
Peter Clifton [Fri, 9 Jan 2015 23:29:31 +0000 (9 23:29 +0000)]
Fixup gtkhid-gl to build
Peter Clifton [Thu, 8 Jan 2015 21:29:20 +0000 (8 21:29 +0000)]
Major re-write to drawing routines
FIXME: FULLY OF NASTY API HACKS TO draw.c
Notes from squashed patches:
Pin and via hole cores are drawn in the appropriate colour
Playing with stack rendering order
Fix mask display in 3D (Allow both side masks to display at once)
Fix rendering depths for silk and mask layers
Fixup depth for layers and element marks
Move more rendering to world coordinates
Fix get_coords function
Re-write parts of the PCB+GL set_layer function
Fix layer on/off rendering after commit
9768e060fad7bc3dfc366da76ea1db8154005018
Only assign stencil planes where sub-compositing is required - that is, not the far-side, mask, rat or switched off layers.
Pass an explicit graphics context to DrawAttached and DrawMark
Peter Clifton [Thu, 8 Jan 2015 21:29:19 +0000 (8 21:29 +0000)]
TMP FIXES
Peter Clifton [Thu, 8 Jan 2015 21:29:19 +0000 (8 21:29 +0000)]
DRAW_FUNCS: Attempt at different render order for PCB+GL
Peter Clifton [Fri, 9 Jan 2015 23:26:51 +0000 (9 23:26 +0000)]
Fixup gtkhid-gl.c to accomodate depth being set per hidgl context
Peter Clifton [Fri, 9 Jan 2015 23:12:10 +0000 (9 23:12 +0000)]
Shiny 3D eye-candy
Experiments in progress - don't expect this to work yet!
Squashed:
Fix grid extents in 3D view
Peter Clifton [Fri, 9 Jan 2015 23:12:10 +0000 (9 23:12 +0000)]
Crasy test
Peter Clifton [Fri, 9 Jan 2015 23:10:11 +0000 (9 23:10 +0000)]
Remove unused parameter SetDefaultNames from CreateNewPCB
The SetDefaultNames parameter to CreateNewPCB was not used (despite various
callers passing both true and false), so remove it.
Peter Clifton [Fri, 9 Jan 2015 23:10:11 +0000 (9 23:10 +0000)]
Always set default layernames for silk and mask layers
This avoids incorrect layernames being left over from our layer stack
should a board be loaded with missing layers (e.g. an old file format
board with no solder-mask layers).
XXX: Check what happens if we load a board with LOTS of defined layers
(more than our default layer stack), but has Layer() definitions missing!
Does it crash?
Peter Clifton [Fri, 9 Jan 2015 23:10:11 +0000 (9 23:10 +0000)]
Fixup some bugs from the added soldermask layers
(TODO: Finish this fixup and merge it down into the relevant patches)
Peter Clifton [Fri, 9 Jan 2015 23:10:11 +0000 (9 23:10 +0000)]
draw.c: Opencode the mask layer object drawing functions
Calling DrawLayer() did not render using the correct graphics context / colors.
NB: We're still using the "wrong" GC, but we now avoid selecting inappropriate
colors which prevent (say) PS export working correctly for mask layer objects.
Peter Clifton [Fri, 9 Jan 2015 23:10:11 +0000 (9 23:10 +0000)]
Add support for a two soldermask layers, defining regions of removed mask
File-format wise, these work similarly to how silk layers are supported now:
Layer (1 to n "[NAME]") # "ordinary" design layers
Layer (n+1 "silk") # bottom side silk
Layer (n+2 "silk") # top side silk
Layer (n+3 "bottom soldermask") # bottom side soldermask
Layer (n+4 "top soldermask") # top side soldermask
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
Avoid hard-coding the number of extra layers in use (for 2x silkscreen)
We will shorty add support for soldermask layers, so this will need changing
NOTE....... IF THE parse_y.y patch in the stg series before this gets
dropped, there is one more case where + 2 needs to be replaced with EXTRA_LAYERS
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
find.c: The User varaible needs to die...
Reduce its usage to where absolutely necessary... oh, what a surprise,
another variable passing state down into add_object_to_list ()
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
Add the drc flag as a parameter
Ok, this is nasty.. I'm obscuring setting of the global varaible... be careful!
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
Add the bloat as a parameter
Ok, this is nasty.. I'm obscuring setting of the global varaible... be careful!
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
find.c: Refactor some common sequences into a helper function
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
parse_y.y: Try to avoid two shift/reduce and reduce/reduce warnings
TODO: Check this matches up against our expected behavior.
Removing the parsedata section ("I think") has no effect, as elements
hit the alternative | element clause within parsepcb.
HOWEVER... I need to check whether there is any other valid syntax
inside an element file, or any backwards compatibility with old formats
which we may miss with the loss of parsedata.
Peter Clifton [Fri, 9 Jan 2015 23:10:10 +0000 (9 23:10 +0000)]
Play with grid snapping heuristics a little
Require the pointer to be inside the bounding box of a pin / pad / via before snapping.
This makse it MUCH easier to place vias in a regular grid spaced at the PCB grid spacing.
Peter Clifton [Fri, 9 Jan 2015 23:10:09 +0000 (9 23:10 +0000)]
Add hysteresis to grid-snapping
Peter Clifton [Fri, 9 Jan 2015 22:55:21 +0000 (9 22:55 +0000)]
Temp play of splitting out hidgl API changes from big refactor
Peter Clifton [Thu, 8 Jan 2015 21:02:02 +0000 (8 21:02 +0000)]
Use calling wrappers rather than accessing HID_DRAW* vfunc tables directly
Peter Clifton [Thu, 8 Jan 2015 21:02:02 +0000 (8 21:02 +0000)]
Add calling wrappers for HID_DRAW virtual functions
NB: hid_draw_make_gc() and hid_draw_use_mask() take a HID_DRAW * pointer,
not a hidGC pointer like all the other hid_draw_*() functions..
Ugly inconsistency, but avoids making the change too disruptive.
Peter Clifton [Thu, 8 Jan 2015 21:02:01 +0000 (8 21:02 +0000)]
Add a pointer in hid_gc_struct to link a gc and the relevant HID_DRAW vfunc table
Peter Clifton [Thu, 8 Jan 2015 21:02:01 +0000 (8 21:02 +0000)]
Rename hidGC "me_pointer" to "hid"
The pointer provides a link between a HID specific graphics context and HID
in question, name it accordingly.
Peter Clifton [Thu, 8 Jan 2015 21:02:01 +0000 (8 21:02 +0000)]
Expose a base hidGC structure for HIDs to inherit from.
Have each HID inherit from a common base structure, which will later allow us
to store enough reference to the HID / HID_DRAW code owning the hidGC to
wrap up the API calls (rather than calling directly into the vfunc table).
Peter Clifton [Thu, 8 Jan 2015 20:52:23 +0000 (8 20:52 +0000)]
hid/gtk: Improve accuracy of "Benchmark" action somewhat
Divide by the actual time taken, not exactly 10. (To get _good_
accuracy we'd also need to use timers more accurate than 1s!)
Marco Ciampa [Wed, 7 Jan 2015 18:41:52 +0000 (7 19:41 +0100)]
Small fix in text source.
Signed-off-by: bert <bert.timmerman@xs4all.nl>
Peter Clifton [Sat, 3 Jan 2015 23:49:36 +0000 (3 23:49 +0000)]
Update "missing" (automake) script to a later version
Avoids some warnings at configure time noted with automake 1.14
Peter Clifton [Sat, 3 Jan 2015 14:24:53 +0000 (3 14:24 +0000)]
Pass an explicit graphics context to DrawAttached and DrawMark
Peter Clifton [Sat, 3 Jan 2015 12:57:26 +0000 (3 12:57 +0000)]
lesstif: Fix lesstif_use_mask and associated state to use the mask_mode enum
Peter Clifton [Sat, 3 Jan 2015 12:51:46 +0000 (3 12:51 +0000)]
hid/hidint.h: Remove header guard check, it appears not to be required
Peter Clifton [Sat, 3 Jan 2015 12:52:32 +0000 (3 12:52 +0000)]
Update header guard macro check in hidint.h to match rename
The header guard in global.h was renamed in
commit
f6c2d4907583614a10918a121f45670620f1946e
Fixes an implicitly defined function warning in lesstif/main.c
Peter Clifton [Sat, 3 Jan 2015 12:55:58 +0000 (3 12:55 +0000)]
lesstif: Silence two set but unused variable warnings
Peter Clifton [Sat, 3 Jan 2015 12:13:04 +0000 (3 12:13 +0000)]
lesstif: Silence set but unused variable warning
Peter Clifton [Sat, 3 Jan 2015 12:11:39 +0000 (3 12:11 +0000)]
lesstif: Silence set but unused variable warning
Peter Clifton [Sat, 3 Jan 2015 12:08:42 +0000 (3 12:08 +0000)]
lesstif: Silence set but unused variable warning
Peter Clifton [Sat, 3 Jan 2015 11:57:19 +0000 (3 11:57 +0000)]
Fix typo converting request_debug_draw to return a HID_DRAW structure
Fixes GTK HID built without OpenGL
Peter Clifton [Fri, 2 Jan 2015 22:55:48 +0000 (2 22:55 +0000)]
hid.h: Update comment to reflect change in API
Peter Clifton [Thu, 1 Jan 2015 16:35:27 +0000 (1 16:35 +0000)]
Pass a HID_DRAW structure for debug drawing, not HID
Avoids passing the caller access to more functionality than required.
Peter Clifton [Thu, 1 Jan 2015 16:55:07 +0000 (1 16:55 +0000)]
autoroute.c: Add missing include required for debug drawing
Peter Clifton [Thu, 1 Jan 2015 15:57:16 +0000 (1 15:57 +0000)]
Don't use abuse mask drawing of pin/via drawing routines to show DRC clearance during placement
Explicitly call the graphical drawing routines as necessary.
Roland Lutz [Tue, 9 Dec 2014 18:53:13 +0000 (9 19:53 +0100)]
Don't put generated i18n helper files under version control
Reported-by: Sergey Alyoshin <alyoshin.s@gmail.com>
Roland Lutz [Mon, 8 Dec 2014 20:55:06 +0000 (8 21:55 +0100)]
Skip prompt on `make distcheck'
Roland Lutz [Mon, 8 Dec 2014 20:32:28 +0000 (8 21:32 +0100)]
Fix menus not being translated
Eugene Mikhantiev [Wed, 12 Nov 2014 04:33:11 +0000 (12 11:33 +0700)]
PCB make distcheck
Roland Lutz [Wed, 12 Nov 2014 13:42:31 +0000 (12 14:42 +0100)]
List real source files, not generated C files, in po/POTFILES.in
Roland Lutz [Wed, 29 Oct 2014 14:43:10 +0000 (29 15:43 +0100)]
Add support for arbitrary-depth footprint libraries
Tested-by: Kai-Martin Knaak <knaak@iqo.uni-hannover.de>
Roland Lutz [Sun, 21 Sep 2014 12:02:13 +0000 (21 14:02 +0200)]
Don't recurse into relatively-specified library directories
When PCB is run from the user's home directory and "." is specified
as a library directory (which may be a valid use case), PCB tries to
read the user's whole home directory. There is no easy way to tell
if a given relative path should be searched recursively or not, so
don't do it at all.
Roland Lutz [Wed, 10 Sep 2014 19:08:56 +0000 (10 21:08 +0200)]
Remove 509-character limit on configuration values
Tested-by: Kai-Martin Knaak <knaak@iqo.uni-hannover.de>
Roland Lutz [Thu, 11 Sep 2014 11:52:20 +0000 (11 13:52 +0200)]
If there is only one library root node, keep it expanded
Roland Lutz [Thu, 11 Sep 2014 11:17:52 +0000 (11 13:17 +0200)]
Load footprints recursively from subdirectories
Roland Lutz [Thu, 11 Sep 2014 10:57:39 +0000 (11 12:57 +0200)]
Add support for recursive directories to GTK library dialog
Roland Lutz [Thu, 11 Sep 2014 10:39:48 +0000 (11 12:39 +0200)]
Store full library path with menus