I’ve been programming for several years now (Java primarily, with lots of Processing recently as it is the language we use at the university where I work). I earned an undergraduate degree in computer science. Nowhere in my education did I receive any instruction on how toolkits like GTK+, or Qt work. As a HCI researcher I commonly use GUI toolkits, but if asked I couldn’t tell you how the work. Recently, I have found that to create the interfaces that I design I need to better understand the fundamental concepts of GUIs and window managers
How do modern GUI toolkits like GTK+, Qt, or Swing work? Can you point me to papers or websites where I can learn? I understand this is a huge topic and there are different approaches, so links to architectural descriptions are fine. I’m willing to read a few different descriptions to figure out how they work. I’d like to avoid having to work through a library like GTK+ line by line.
Some of the specific questions I’d like to answer for myself are:
- How do components detect interaction like mouse clicks, touches, etc?
- How does data flow from the hardware through the OS to the application?
- How is the geometry of a component rendered? How can I tell if it is rendered on the CPU or GPU?
- How are UI animations achieved? What is the render cycle for the animation.
I have looked around, but can’t find a good summary. There is lots of library or toolkit specific stuff out there. I primarily interested in the core concepts that all toolkits have in common. Can anyone point me in the right direction?