HID rework
A place to collect ideas for updating and reworking the GUI HIDs
Blueprint information
- Status:
- Not started
- Approver:
- None
- Priority:
- Undefined
- Drafter:
- Chad Parker
- Direction:
- Needs approval
- Assignee:
- Chad Parker
- Definition:
- New
- Series goal:
- None
- Implementation:
- Unknown
- Milestone target:
- None
- Started by
- Completed by
Related branches
Related bugs
Sprints
Whiteboard
This is just a list of features for now.
* lesstif, gtk-gdk, and gtk-gl hids should be compatible and be selectable at run-time. This shouldn't have to be a compile time choice.
UI:
* need to be able to display a list of available keystroke actions
* non-board related layers
* rulers
* dimensions
* constraints (?)
Rendering:
* presently, the hid redraws the entire screen every time the crosshair moves. This is not efficient. We should render each layer individually into a buffer and then draw the buffers in succession. We only need to redraw each layer when something changes, like, a track is drawn, or a component is removed, or the zoom of the view port changes. The GL HID can do this by rendering into textures and then applying those textures to surfaces at different depths. The gdk hid can render into a pixbuf. I don't know yet about how to make the lesstif HID do this.
* In the GTK HID there are three different places where we render pcb data: the main window, the DRC window, and the pinout preview. As nearly as I can tell, they all do this differently. They're all doing basically the same thing, so, we ought to try to combine this code.
Backend:
* Interaction should be a state machine of sorts. It already is partially, consider the various STATE_FIRST etc. things that show up in action.c. I can't articulate it, but it seems like it might be easier in general if this were to be implemented. You could have a state structure that defined things like, what modifier keys were valid and what shortcuts keys would do, hooks for functions, etc.