← Back to team overview

kicad-developers team mailing list archive

Re: [FEATURE] Partial selection in pcbnew

 

Tomasz,

I would be happy to put my new code in a more generic location. I was not
aware of common/geometry and simply fixed the ::HitTest() functions that
were already present for each shape.

I am a little confused by the numerous duplication of the "Rectangle" class
(SHAPE_RECT, EDA_RECT, BOX_2I, etc).

My guess as to how I should implement each HitTest is:

a) Construct a SHAPE_RECT from the EDA_RECT
b) Write generic SHAPE_RECT comparison classes for each other shape (arc,
circle, etc) where they do not already exist
c) Code each HitTest() function as a comindation of SHAPE_RECT tests as
defined in common/geometry?

Regards,
Oliver

On Fri, May 5, 2017 at 7:42 AM, Tomasz Wlostowski <tomasz.wlostowski@xxxxxxx
> wrote:

> On 02.05.2017 09:25, Oliver Walters wrote:
> > I have attached a patch-set that implements "partial selection" of
> > objects when the selection box is dragged right-to-left.
> >
> > L -> R = Objects must be completely enclosed to be selected
> > R -> L = Objects that intersect the selection rectangle will be selected.
> >
>
> Hi Olivier,
>
> I tested your patch and I like the way it works. As somebody suggested,
> changing the color of the selection area depending on the selection mode
> would make it easier to discover the new selection mode.
>
> > this was broken for most shapes, under a variety of edge cases (some
> > HitTest code did not work at all).
> >
> One remark about the HitTest() functions. We would prefer collision
> tests to be implemented in the geometry library (common/geometry) and so
> decoupled from the board objects to make these functions reusable. As a
> matter of a fact, the geometry library already does most collision
> checks between rectangles and other shapes (except for arcs and
> polysets). I noticed you're good with computational geometry, would you
> be able to move the features you wrote to the geometry library?
>
> Best,
> Tom
>
> > To achieve this I had to fix a lot of the HitTest implementations as
> > There are two issues I see as outstanding, and am unsure how to proceed:
> >
> > 1. When editing a PCB, selecting part of a footprint (e.g. a line of the
> > courtyard) selects both that line and the entire footprint. This causes
> > some issues when the footprint is dragged around the PCB. I believe that
> > the line should not be selected separately, but the entire footprint
> should.
> >
> > 2. The inverse of 1. In the footprint editor, selecting a single
> > graphical item selects the entire footprint. Somehow I would like to
> > filter the selection such that individual items are selected but NOT the
> > entire footprint.
> >
> > Feedback please! :)
> >
> > I have fixed hit testing (both for wxPoint and EDA_RECT comparison) for:
> >
> > - Pads (all shapes)
> > - Lines
> > - Circles
> > - Arcs
> > - Text items
> > - Zones
> > - Footprints
> >
> > Cheers,
> > Oliver
> >
> >
> >
> >
> > _______________________________________________
> > Mailing list: https://launchpad.net/~kicad-developers
> > Post to     : kicad-developers@xxxxxxxxxxxxxxxxxxx
> > Unsubscribe : https://launchpad.net/~kicad-developers
> > More help   : https://help.launchpad.net/ListHelp
> >
>
>

Follow ups

References