HardyShine

Differences between revisions 1 and 2
Revision 1 as of 2007-11-27 18:38:45
Size: 1792
Editor: dslb-084-063-116-058
Comment:
Revision 2 as of 2007-12-17 00:11:09
Size: 4118
Editor: dslb-084-063-104-056
Comment:
Deletions are marked like this. Additions are marked like this.
Line 5: Line 5:
 * '''Launchpad Entry''': UbuntuSpec:HardyShine
 * '''Packages affected''': gnome-about
 * '''Launchpad Entry''': UbuntuSpec:hardy-shine
 * '''Packages affected''': gnome-about, gnome-desktop
Line 10: Line 10:
shine is meant to be an addition to gnome-about, 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. 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.
Line 14: Line 14:
Superfluous bling for gnome-about. Superfluous bling-heavy easter-egg for gnome-about.
Line 18: Line 18:
It will be a lot of fun writing that. Have a little easter-egg as a surprise for users.
Line 22: Line 22:
Are you kidding me? 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.
Line 26: Line 26:
It will look cool! shine will require OpenGL 1.3 and the following extensions:
Line 28: Line 28:
== Design ==     * GL_ARB_multitexture
    * GL_ARB_fragment_program
    * GL_ARB_texture_rectangle

Required OpenGL-limits are:

    * GL_MAX_TEXTURE_SIZE >= 1024

== Design/Mockups ==



== Implementation ==
Line 41: Line 53:
== Implementation == 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.
Line 43: Line 55:
shine will be written in C++ 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. Also the text- and background-color will default to GNOMEs default text-color and the currently selected gtk+-themes background-color. These will also be overridden by 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.
Line 47: Line 65:
Should cover changes required to the UI, or specific UI that is required to implement this There are no needed changes to the UI of any existing program.
Line 51: Line 69:
Code changes should include an overview of what needs to change, and in some cases even the specific details. 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 :)

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

Superfluous bling-heavy easter-egg for gnome-about.

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 >= 1024

Design/Mockups

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.

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. Also the text- and background-color will default to GNOMEs default text-color and the currently selected gtk+-themes background-color. These will also be overridden by 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)