Fork us on GitHub Follow us on Google+ Follow us on Facebook Follow us on Twitter

Opened 3 years ago

Last modified 3 months ago

#652 accepted enhancement

Graphics stack (GUI) improvements

Reported by: Jakub Jermář Owned by: Jiri Svoboda
Priority: major Milestone:
Component: helenos/gui Version: mainline
Keywords: gsoc16, gsoc17, gsoc18 Cc:
Blocker for: Depends on:
See also:

Description (last modified by Jakub Jermář)

The HelenOS native GUI environment should be further improved and extended.

Details
HelenOS features a compositing GUI described in Petr Koupy's master thesis (see below). The GUI is fairly basic and offers vast room for improvements. The goal of this project is to implement a reasonable subset of the following.
  • support for direct rendering in graphic driver infrastructure
  • more drawing operations in drawing library (lines, curves, polygons, circles, etc.)
  • retained scene description in drawing library
  • hardware acceleration of drawing library
  • better quality of drawing library output (advanced filtering, antialiasing)
  • better precision of drawing library output (floating point coordinates and pixels)
  • support for more image and font formats in drawing library
  • more widgets in widget toolkit (menu bars, scrolls bars, edit boxes, list boxes, etc.)
  • support to minimize and maximize windows
  • desktop environment (task bar, icons)
  • improvements of terminal emulator (resizing, scrolling, history)
  • console applications awareness of resizing and termination of their terminal emulator
What Gains and Benefits will this bring?
HelenOS will become more usable and more user-friendly and visually appealing.
Difficulty
medium
Required skills
A successful applicant will have good skills of programming in the C language and the ability to survive in a non-standard non-POSIX environment. Previous experience with a graphics stack implementation would be beneficial.
Documentation
Possible mentors
HelenOS Core Team, Martin Decky

Change History (8)

comment:1 Changed 3 years ago by Jakub Jermář

Description: modified (diff)

comment:2 Changed 3 years ago by Jakub Jermář

Description: modified (diff)
Summary: Graphical stack (GUI) improvementsGraphics stack (GUI) improvements

comment:3 Changed 3 years ago by Jakub Jermář

Description: modified (diff)

comment:4 Changed 3 years ago by Jakub Jermář

Description: modified (diff)

comment:5 Changed 14 months ago by Jakub Jermář

Keywords: gsoc18 added

comment:6 Changed 3 months ago by Jiri Svoboda

Owner: set to Jiri Svoboda
Status: newaccepted

comment:7 Changed 3 months ago by Jiri Svoboda

This ticket calls for incremental improvements, but the GUI needs more fundamental changes. Here are my high-level goals:

  • An abstract rendering API and window update protocol that can be used both for App ↔ Display server and Display Server ↔ Display Driver communication and other things
  • This makes the communication protocol more independent of the applications.
  • Make it possible to conserve memory (compared to all windows being always fully memory-backed)
  • Make the memory retention and communication mode a decision of the display server, not an inherent property of the display protocol / API
  • Display protocol should explicitly denote frame boundaries and frame timing
  • Support a wider range of pixel formats (<32 bpp, >32bpp) including text
  • Sound follows picture
Last edited 3 months ago by Jiri Svoboda (previous) (diff)

comment:8 Changed 3 months ago by Jiří Zárevúcky

The GUI should also correctly handle various #pixels-per-line/character settings (not the same as "DPI", which were probably invented by people who never noticed that not all screens are the same size).
Also, input devices should be associated with display/output, same as sound.

Last edited 3 months ago by Jiří Zárevúcky (previous) (diff)
Note: See TracTickets for help on using tickets.