We are planning to release an iphone game, which is a port of an existing game coded in c++/opengl/sdl/cegui. The version is much more simpler and we want to get rid of cegui, and eventually SDL.
This first project is to :
1- build a set of openGL ES based widgets that will run on top of iphone OS.(and will replace some of the current widget)
2. translate a small 2d lib opengl based (using very few opengL 2d API like glColor, glLine, glVertex, glTexImage2D) into a 2d openGL ES based (to work on iphone). Maybe there is nothing much to do in this 2 parts as the API are very basic and may just work with openGL ES drivers.
**NOTE**: if you know an opengl ES based GUI lib you can propose it and just build a wrapper around it that matches our requirements (see detailled description). (For ex Clutter or even GLUT ES look good candidates for this)
**NOTE2 (update)**: In fact we dont need windowing, you can consider that there is always only one window active at same time, so we can just use he main 2d scene to display the text and list of buttons etc, keep this in mind when you read the detailled spec.
**1. provide a flexible set of opengles widgets, essentially:**
a- ***Window Class:*** an opengles window that is displayed at a x,y (screen pos), with dimension X,Y. Can have a picture as a background and can set transparency.
can contains other windows.
can receive a click or double click, and must route click to correct childwindow
can be associated to a callback for click, and double click
can be hiden/showed
can be "closed" (destoyed completly
can have a name.
All other windows will derive from this base class.
type of derived window:
b- ***Item List***: window that contain a icon/item list (bmp or tga or what u feel more suitable) : the icon list has N lines x M columns. Icon means that a texture is asscoiated to the item.
- Ability to add arrow to navigate* the list if M or N exceed screen size. (like to have either N OR M exceeding the screen size, not both).
(when u click a naviguate arrow a new "page is display", meaning a the next set of icon of the list
(* if you can add specific iphone scrolling (with finger that u move) then we can discuss it, but as its not portable we are not sure. must be dicussed)
- Ability to add a void* to a icon/item in the list.
- Ability to set an item/icon in the list disable/enable, disable mean icon is greyed
- ability to add text to an item(text would be displayed in a new window that contains a text window and a set of buttons),
- posibility to "select" a item/icon, in this case some visual effect indicates that objet is selected (borderline?)
- ability to define callback when a item is selected
- ability derived from the window class: callback when clicking / double click on an item
c- ***Button***: a button has a texture, with a void *, provide call back with click
or double click (do we have double click on iphone?)
d- ***Text Window***: text is displayed, and can be scrollable/or pagable trhough button if we dont support iphone smooth finger scroll (for ex if text is too high, a small arrow button is displayed to allow move to next page of lines)
e- ***Picture Window***: a window that will contain some tga . ability to add some buttons on top of those tgas at x,y.(must be discussed a bit i will explain what we want, it is very simple. we need a window with some tgas we will display at diferent z order, and we want user to see some "icon" on top of those tga that he could click). Maybe this window is not needed (if we use main 2d scene as the window, and just place button above it.
**2- 2d lib convertion**:
a- convert our small 2d libs opengl based into opengl es based. (4 main files), discuss as well if we can bare with the design (for ex in our code animation are displayed using tga containing all frames,and at each tick we display part of the tga (the current frame).
b- get rid of sdl if needed, if we get rid write small api to play sound (sdl_mixer) and display opengl es text (replacing ttf, but something very simple, just write text on screen), get rid of sdl_image (use tga only?)
* * *This broadcast message was sent to all bidders on Friday Jul 2, 2010 8:10:51 AM:
we have updated the summary specifications. In fact as only one active window will be active at same time, we are not obliged to use a windowing system. The 2d scene can be used to display the actives widgets,