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.
