HardyShine

Please check the status of this specification in Launchpad before editing it. If it is Approved, contact the Assignee or another knowledgeable person before making changes.

  • Launchpad Entry: hardy-shine

  • Packages affected: gnome-about, gnome-desktop

Summary

shine is meant to be an addition to gnome-about (kind of an easter-egg), presenting the list of contributors with a higher visual impact than the default gnome-about. It is a fun and spare-time hack of low priority, so don't hold you breath.

Release Note

None, because it's an Easter egg.

Rationale

Have a little easter-egg as a surprise for users.

Use Cases

A user wants to learn more about the desktop s/he is using. When selecting "About GNOME" from the menu the gnome-about dialog is opened. Should the user then happen to click once in the area occupied by the GnomeCanvas drawing area the external binary of shine will be started.

Assumptions

shine will require OpenGL 1.3 and the following extensions:

  • GL_ARB_multitexture
  • GL_ARB_fragment_program
  • GL_ARB_texture_rectangle

Required OpenGL-limits are:

  • GL_MAX_TEXTURE_SIZE >= 2048

Design/Mockups

Intended look (inspired by the movie-credits of the Superman and Star-Trek).

http://people.ubuntu.com/~mmueller/shine-mockup-1.png

Implementation

The names of contributors will come flying on the screen (rather: the window) in a movie-credits-like fashion. To achive that a combination of...

  • gtk+
  • libgtkglext
  • OpenGL
  • pango
  • cairo
  • librsvg (perhaps)

... will be used.

shine will be written in C++. It will create a new window with an OpenGL drawing-context filling up the whole window. By default it will read the file /usr/share/gnome-about/foundation-members.list for names to display. An alternative text-file (e.g. list of debian-developers) can be passed to it via the command-line. Each name will then be displayed in an animation where the name comes flying from the background to the foreground and finally disappears, followed by the next name appearing from the background. Each animation path will be slightly different. The duration of an animation-phase for one name will be three seconds. The list of names will be treated like a ring-buffer. Once the last name is reached it will start with the first name again until the user closes the window. It should look a bit like moving in outter space.

Each name will be a texture generated from pango/cairo and mapped onto an OpenGL-quad. The texture-generation has to happen in a separate thread. The rendering itself will only happen in the main thread. There will only be two textures kept in video-memory at a time. The currently used texture and the next one.

The windows width and height will default to 640x480, but can be overridden with command-line arguments.

The refresh-rate of the animation-loop will be 60Hz.

Should the system not support all needed OpenGL-features and extensions or should no valid text-file be found or passed, shine will quietly exit right away.

UI Changes

There are no needed changes to the UI of any existing program.

Code Changes

gnome-about needs a small addition. A single click on the area currently occupied by the GnomeCanvas area should trigger the external shine-binary with desired parameters using the system()-call. This is meant as a kind of an easter-egg. I wonder how much of an easter-egg this will be, since this is a publicly visible spec Smile :)

Migration

There is no migration to take care of.

Test/Demo Plan

It's important that we are able to test new features, and demonstrate them to users. Use this section to describe a short plan that anybody can follow that demonstrates the feature is working. This can then be used during CD testing, and to show off after release.

This need not be added or completed until the specification is nearing beta.


CategorySpec

DesktopTeam/Specs/HardyShine (last edited 2008-08-06 16:28:45 by localhost)