Yep, I wasn't going to try implementing that.

On Mon, 12 Aug 2024 at 16:49, Jon Evans <[email protected]> wrote:

> > Offset the highlight slightly so that it does not touch the beginning or
> end of the wire: it stays away from the component symbol.
>
> This is not trivial.  I'd advise against spending time on this personally.
>
> On Mon, Aug 12, 2024 at 11:20 AM exlabs <[email protected]>
> wrote:
>
>> Hi James,
>>
>> Yes, this is exactly what I was hoping for! Wow, you did that so fast. It
>> would be great to see your Commit to learn how you accomplished this.
>>
>> This is totally usable to my eye, but here are some ascetic suggestions
>> you might consider:
>>
>>    1. Swap the layer order to place the highlight on top of the wire:
>>    this will be more natural-looking as the wire has been highlighted by a 
>> pen.
>>    2. Offset the highlight slightly so that it does not touch the
>>    beginning or end of the wire: it stays away from the component symbol.
>>
>> That's all I got—great job!
>>
>> Regards,
>>
>> Daniel
>> On Monday, August 12, 2024 at 3:18:25 PM UTC+1 [email protected]
>> wrote:
>>
>>> Daniel,
>>>
>>> Something like this? Need to tidy up some UI stuff (and make it apply to
>>> buses with netclass colours) but is this the kind of thing you're looking
>>> for?
>>>
>>> [image: NetHighlights.png]
>>>
>>> Yours,
>>> James.
>>>
>>>
>>> On Mon, 12 Aug 2024 at 13:05, James Jackson <[email protected]>
>>> wrote:
>>>
>>>> Hi Daniel,
>>>>
>>>> Aha - I read too much in to your screenshot! In which case, ignore most
>>>> of what I said, and listen to Jon ;-)
>>>>
>>>> Sounds like a separate rendering layer is the way forwards. Let me see
>>>> if I can knock something up as a proof of concept.
>>>>
>>>> Yours,
>>>> James.
>>>>
>>>> On Mon, 12 Aug 2024 at 10:31, exlabs <[email protected]> wrote:
>>>>
>>>>> Hi James, John,
>>>>>
>>>>> Thank you both for the welcoming discussion.
>>>>>
>>>>> I won't comment too much on the technical implementation side here -
>>>>> but I will get a workspace setup and search the terms you mentioned.
>>>>>
>>>>> Just to clarify, yes, I'm mainly interested in adding a new way of
>>>>> rendering netclass colours in the schematic.
>>>>>
>>>>> For example, I have used my incredible Photoshop skills to add a
>>>>> checkbox to the Schematic Setup Window.
>>>>>
>>>>> [image: Kicad_netclass_highlight.png]
>>>>>
>>>>> Checkbox disable: No rendering changes; color is the line color.
>>>>> Checkbox enabled: line color is a default value, and the color is
>>>>> drawn in a highlighter pen style.
>>>>>
>>>>> I don't want to suggest that this is best UI, or the best way of
>>>>> implementing it because I don't know the codebase at all! Please take this
>>>>> purely at a functional level - you can imagine how the feature would work.
>>>>>
>>>>> By posting the Altium screenshot, I didn't mean to imply anything more
>>>>> complicated than what is written above; it illustrated the highlighter pen
>>>>> rendering style quite nicely.
>>>>>
>>>>> I will watch the discussion develop and chime in when I have something
>>>>> useful to say.
>>>>>
>>>>> Daniel
>>>>>
>>>>> On Monday, August 12, 2024 at 6:16:58 AM UTC+1 [email protected]
>>>>> wrote:
>>>>>
>>>>>> (For further clarity - I'm looking specifically at how to do this in
>>>>>> eeschema. We do have the net colouring mechanisms in pcbnew we could
>>>>>> integrate this with to handle that side of things.).
>>>>>>
>>>>>> On Mon, 12 Aug 2024 at 05:50, James Jackson <[email protected]>
>>>>>> wrote:
>>>>>>
>>>>>>> Jon,
>>>>>>>
>>>>>>> I think we've interpreted the feature differently (but not
>>>>>>> necessarily orthogonally...). I read the ask as being able to colour 
>>>>>>> nets
>>>>>>> (be that rendered as you say with a new highlight layer, or as we 
>>>>>>> currently
>>>>>>> do). As far as I can see, the only way to currently colour a net is 
>>>>>>> through
>>>>>>> netclasses. We can also set the colour of individual schematic wires, 
>>>>>>> but
>>>>>>> that (to my mind) doesn't hit the 'colour a net' request. Have I missed
>>>>>>> another method of colouring nets?
>>>>>>>
>>>>>>> I think the request here is twofold: a way to colour nets (not just
>>>>>>> individual wires, and not just be using netclass directives), and a new 
>>>>>>> UI
>>>>>>> method of quickly assigning colour to nets (which looks like an 
>>>>>>> extension
>>>>>>> of the net highlighting tool - i.e a. 'colour this net please' tool)..
>>>>>>>
>>>>>>> I haven't used the equivalent Altium feature referred to in the
>>>>>>> original email, but the way I read the docs is if I add another wire to 
>>>>>>> a
>>>>>>> coloured net, that wire will also pick up the net colour. I don't think,
>>>>>>> without assigning a netclass, we have a way to do this at the moment 
>>>>>>> (nor,
>>>>>>> as you say, do we have a way to transfer anything other than a
>>>>>>> netclass-defined colour to the PCB, which seems an integral part of this
>>>>>>> feature for assisting in laying out complex boards).
>>>>>>>
>>>>>>> Yours,
>>>>>>> James.
>>>>>>>
>>>>>>> On Mon, 12 Aug 2024 at 01:01, Jon Evans <[email protected]> wrote:
>>>>>>>
>>>>>>>> Hi Daniel,
>>>>>>>>
>>>>>>>> KiCad nightly (for V9) already has a feature to transfer schematic
>>>>>>>> netclass colors to the board (this isn't done automatically because
>>>>>>>> sometimes you want different colors in each place). This seems to 
>>>>>>>> address
>>>>>>>> one of your desires.
>>>>>>>>
>>>>>>>> It seems like the crux of what you want is a rendering change:
>>>>>>>> instead of showing net colors as a change in the line color, you show 
>>>>>>>> them
>>>>>>>> as a "highlight", or in other words, a different line that is thicker 
>>>>>>>> and
>>>>>>>> underneath the wire/bus.
>>>>>>>>
>>>>>>>> I think this should be done as an option (either a user preference,
>>>>>>>> or a schematic/project option -- I would lean towards user preference 
>>>>>>>> here,
>>>>>>>> but don't feel strongly) to change how netclass colors are rendered.
>>>>>>>>
>>>>>>>> As for the technical implementation -- it would require a new
>>>>>>>> virtual rendering layer, I think.  Search the code for
>>>>>>>> LAYER_SELECTION_SHADOWS to see an example of how it is done.  These
>>>>>>>> rendering layers are used for Z-ordering since there cannot be 
>>>>>>>> different
>>>>>>>> Z-order within a single layer.
>>>>>>>>
>>>>>>>> @James -- unless I'm missing something, I think this may be simpler
>>>>>>>> than you put it.  Schematic line color is not limited to netclasses, 
>>>>>>>> but
>>>>>>>> netclasses are the only mechanism for transferring line color to the 
>>>>>>>> PCB.
>>>>>>>> I don't think the proposed feature should be tied to any structural 
>>>>>>>> changes
>>>>>>>> to how color works or how netclasses work -- it's really just a 
>>>>>>>> preference
>>>>>>>> for how lines are drawn in the schematic editor, I think.
>>>>>>>>
>>>>>>>> Best,
>>>>>>>> Jon
>>>>>>>>
>>>>>>>> On Sun, Aug 11, 2024 at 12:11 PM 'James Jackson' via KiCad
>>>>>>>> Developers <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> Hi Daniel,
>>>>>>>>>
>>>>>>>>> JamesJ from the forum here!
>>>>>>>>>
>>>>>>>>> I've been thinking about how one would implement this feature
>>>>>>>>> given the internals of KiCad since your forum post. The devil is, as 
>>>>>>>>> you
>>>>>>>>> say, in the detail. I'd offer up the following thoughts:
>>>>>>>>>
>>>>>>>>> 1. Currently all net / trace colouring is tied to netclasses. Do
>>>>>>>>> we want another (parallel) method of colouring nets? (That's one for 
>>>>>>>>> us to
>>>>>>>>> come to a consensus on)
>>>>>>>>> 2. 'Just changing the rendering' is not entirely trivial - the
>>>>>>>>> question is from where (and how) is the colour information getting to 
>>>>>>>>> the
>>>>>>>>> right place (this includes schematic rendering of various object 
>>>>>>>>> classes,
>>>>>>>>> pcb rendering of various object classes, and ratsnest rendering)? As a
>>>>>>>>> rough guide, have a look through the codebase for calls to
>>>>>>>>> GetEffectiveNetClass(); lots of these are to do with finding out 
>>>>>>>>> rendering
>>>>>>>>> colours / line widths. If adding a bespoke method (see Approach 2 
>>>>>>>>> below),
>>>>>>>>> we'd have to add something to each of these to extract the connection 
>>>>>>>>> for
>>>>>>>>> the object, grab the connection's net name, and query against some 
>>>>>>>>> net ->
>>>>>>>>> colour lookup.
>>>>>>>>>
>>>>>>>>> I think there are two ways I'd look to implement this, if we
>>>>>>>>> decided we'd like it:
>>>>>>>>>
>>>>>>>>> Approach 1:
>>>>>>>>> Leverage the existing netclass mechanisms. The new tool could
>>>>>>>>> create a new netclass per colour requested, with a high priority 
>>>>>>>>> value set,
>>>>>>>>> and also add a netclass pattern assignment to match the netclass to 
>>>>>>>>> the
>>>>>>>>> selected net names.
>>>>>>>>> Advantages: Uses existing rendering infrastructure, so the tool
>>>>>>>>> only needs to insert netclasses and pattern assignments (which is 
>>>>>>>>> very easy
>>>>>>>>> to do)
>>>>>>>>> Disadvantages: The new netclasses will show up in the status bars
>>>>>>>>> (a net with no other netclass assignments with show as: "Netclass: 
>>>>>>>>> Green
>>>>>>>>> and Default", for example). The new netclasses will 'clog up' the 
>>>>>>>>> netclass
>>>>>>>>> setup dialog list. These could both be mitigated by special-casing 
>>>>>>>>> the net
>>>>>>>>> colouring netclasses / pattern matching rules to not be displayed in 
>>>>>>>>> the
>>>>>>>>> netclass setup UI, and to not count them for DRC constraint netclass
>>>>>>>>> matching (but this feels a little messy).
>>>>>>>>>
>>>>>>>>> Approach 2:
>>>>>>>>> Add a new data structure which maps netclass names to colour
>>>>>>>>> overrides. Where we check nets for colour from netclasses, we also 
>>>>>>>>> add a
>>>>>>>>> check to see if there is a net colour override.
>>>>>>>>> Advantages: Doesn't impact on the netclass asignments
>>>>>>>>> Disadvantages: Another layer of complexity in rendering colour
>>>>>>>>> choice
>>>>>>>>>
>>>>>>>>> Both of these have a shared disadvantage in that the only
>>>>>>>>> consistent identifier for a net is its name. And these are mutable 
>>>>>>>>> if, for
>>>>>>>>> example, one adds a higher priority driver to a net, or changes a 
>>>>>>>>> driving
>>>>>>>>> component designation or pin. As far as I can think, there's no easy 
>>>>>>>>> way to
>>>>>>>>> map changes in net names on schematic edits, so sometimes colours 
>>>>>>>>> might
>>>>>>>>> just drop on net name changes.
>>>>>>>>>
>>>>>>>>> UI considerations aside, either method actually wouldn't be that
>>>>>>>>> hard to do (famous last words...), and I'd be happy to implement it 
>>>>>>>>> (I've
>>>>>>>>> had my head buried deep in the rendering code for the multiple 
>>>>>>>>> netclass
>>>>>>>>> work I recently implemented). I'd welcome comment from the other lead 
>>>>>>>>> devs
>>>>>>>>> on if we want another way to colour nets though. FWIW, I think this 
>>>>>>>>> would
>>>>>>>>> be a useful addition, but that's a weakly held view.
>>>>>>>>>
>>>>>>>>> Yours,
>>>>>>>>> James.
>>>>>>>>>
>>>>>>>>> On Sun, 11 Aug 2024 at 15:58, Daniel Farrell <
>>>>>>>>> [email protected]> wrote:
>>>>>>>>>
>>>>>>>>>> Dear KiCad developers,
>>>>>>>>>>
>>>>>>>>>>  I’ve been using KiCad for a number of years now, and I have a
>>>>>>>>>> background in software and electronics. I enjoy doing both backend 
>>>>>>>>>> and
>>>>>>>>>> frontend development. For example, here is a clone of a UI color 
>>>>>>>>>> picker in
>>>>>>>>>> macOS that I wrote a while ago,
>>>>>>>>>> https://github.com/danieljfarrell/DFColorWell 100% of the widget
>>>>>>>>>> is rendered using the native drawing API.
>>>>>>>>>>
>>>>>>>>>> Anyway, to the point!
>>>>>>>>>>
>>>>>>>>>> There is an enhancement to the schematic editor I’d like to add
>>>>>>>>>> and ask for some advice on how it might be implemented, if it is 
>>>>>>>>>> something
>>>>>>>>>> you are interested in having.
>>>>>>>>>>
>>>>>>>>>> I really like to use netlist colors in the schematic editor; for
>>>>>>>>>> me, it improves readability. The enhancement I’d like to make is to 
>>>>>>>>>> add a
>>>>>>>>>> net “highlight pen” effect color option.
>>>>>>>>>>
>>>>>>>>>> Altium implements this quite nicely; they render a transparent
>>>>>>>>>> highlight as if it has been drawn by a highlighter pen over the 
>>>>>>>>>> line, and
>>>>>>>>>> the same colors appear in the PCB editors. See image.
>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> That’s the proposal at a high level.
>>>>>>>>>>
>>>>>>>>>> But the devil is in the details. Some immediate questions that
>>>>>>>>>> spring to mind are: 1) Does the highlight pen color appear as an 
>>>>>>>>>> addition
>>>>>>>>>> color option in the Schematic Setup Window? 2) Does everything 
>>>>>>>>>> remain the
>>>>>>>>>> same, but we just change the rendering?
>>>>>>>>>>
>>>>>>>>>> I think I prefer option 2, with a caveat:
>>>>>>>>>>
>>>>>>>>>> Imagine a text box on the schematic setup window, something like
>>>>>>>>>> "Highlight." When not enabled, everything is the same as now: the 
>>>>>>>>>> color
>>>>>>>>>> corresponds to the line color. However, when enabled, the line color 
>>>>>>>>>> is set
>>>>>>>>>> to a default, and the color is drawn over the line like a 
>>>>>>>>>> highlighter pen.
>>>>>>>>>>
>>>>>>>>>> This has the nice feature that it’s automatically backwards
>>>>>>>>>> compatible, as it can be made an opt-in rendering feature. It also 
>>>>>>>>>> means
>>>>>>>>>> that no changes are needed to how colors are brought across to the 
>>>>>>>>>> PCB;
>>>>>>>>>> there is only one color in both cases; all that changes is how it is
>>>>>>>>>> rendered. Finally, in terms of persistence in the document, it is 
>>>>>>>>>> just a
>>>>>>>>>> single Boolean.
>>>>>>>>>>
>>>>>>>>>> It would be very interesting to get your ideas, comments,
>>>>>>>>>> suggestions on how to implement it, and feedback on whether this is
>>>>>>>>>> something that would be welcomed.
>>>>>>>>>>
>>>>>>>>>> Regards
>>>>>>>>>>
>>>>>>>>>> Daniel
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> You received this message because you are subscribed to the
>>>>>>>>>> Google Groups "KiCad Developers" group.
>>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>>> send an email to [email protected].
>>>>>>>>>> To view this discussion on the web visit
>>>>>>>>>> https://groups.google.com/a/kicad.org/d/msgid/devlist/CADXPdTxuUDf-RpTsizXvsydrUbVfHQXY%2BgMU9WybBzwajGYYvg%40mail.gmail.com
>>>>>>>>>> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CADXPdTxuUDf-RpTsizXvsydrUbVfHQXY%2BgMU9WybBzwajGYYvg%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>>>> .
>>>>>>>>>>
>>>>>>>>> --
>>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>>> Groups "KiCad Developers" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>>> send an email to [email protected].
>>>>>>>>> To view this discussion on the web visit
>>>>>>>>> https://groups.google.com/a/kicad.org/d/msgid/devlist/CAMVX%3DtbaP%2B%3DLVTzWQB5qG%2BChN%3DknxQybyU_NC8zGDwkzewTriw%40mail.gmail.com
>>>>>>>>> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CAMVX%3DtbaP%2B%3DLVTzWQB5qG%2BChN%3DknxQybyU_NC8zGDwkzewTriw%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>> --
>>>>>>>> You received this message because you are subscribed to the Google
>>>>>>>> Groups "KiCad Developers" group.
>>>>>>>> To unsubscribe from this group and stop receiving emails from it,
>>>>>>>> send an email to [email protected].
>>>>>>>> To view this discussion on the web visit
>>>>>>>> https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCDdzEb%3D3StBbmbSd2Vsi5PcKkMAwJ5gYNYcaTq%2B36TCBQ%40mail.gmail.com
>>>>>>>> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCDdzEb%3D3StBbmbSd2Vsi5PcKkMAwJ5gYNYcaTq%2B36TCBQ%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>>>>>> .
>>>>>>>>
>>>>>>> --
>> You received this message because you are subscribed to the Google Groups
>> "KiCad Developers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an
>> email to [email protected].
>> To view this discussion on the web visit
>> https://groups.google.com/a/kicad.org/d/msgid/devlist/3e53ffbc-bcc8-4138-af99-482b37d244a2n%40kicad.org
>> <https://groups.google.com/a/kicad.org/d/msgid/devlist/3e53ffbc-bcc8-4138-af99-482b37d244a2n%40kicad.org?utm_medium=email&utm_source=footer>
>> .
>>
> --
> You received this message because you are subscribed to the Google Groups
> "KiCad Developers" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To view this discussion on the web visit
> https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCC5qTZE6huxCmKgq%3D-XrMJouFwZBvtgsm3E5gf-J9RBRA%40mail.gmail.com
> <https://groups.google.com/a/kicad.org/d/msgid/devlist/CA%2BqGbCC5qTZE6huxCmKgq%3D-XrMJouFwZBvtgsm3E5gf-J9RBRA%40mail.gmail.com?utm_medium=email&utm_source=footer>
> .
>

-- 
You received this message because you are subscribed to the Google Groups 
"KiCad Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/a/kicad.org/d/msgid/devlist/CAMVX%3Dtam-8F3PtMqGeuQbu-sVDPezo9jT%3D0WEpDhmKLKLapJWg%40mail.gmail.com.

Reply via email to