Known bugs and plans
--------------------
We don't have any - go away!



List over stuff to fix:
-----------------------

Note that this is our internal list, its not an official bug list or anything.

All platforms:
- Sprite cutter:
  - Add pos and size to the "none"-cutter
  - Add a "serie" cutter - image1 = image0001.tga; image1_method = serie; image1_end = 100;
  - Add CL_Point and CL_Size to CL_SpriteDescription cutter functions ?
- Sprite packer:
  - Fetch max texture size from gl-info
  - Rename to TexturePacker
  - Let users decide if they want to keep existing surface as texture
  - Fix edge artifact
- TextureBank:
  - Add a TextureBank, which stores all textures and available free space in them.
    This will be used by TexturePacker to fit more into textures, and just not
    one sprites per texture as done now.
- Sprites:
  - play_default_speed -> play_fps ?
  - Split CL_Sprite into CL_Sprite and CL_SpriteProvider/Data ?
- Input:
  - Add joystick API and implementation
  - InputEvent: repeat count, right alt/shift/control aren't correctly filled in
  - sig_key_dblclk is not implemented
  - InputButton is not implemented
- Display:
  - Make it possible to extract useful information, like max_texture_size etc
  - Some places we use floats for color (CL_Font::set_color), while other places we use CL_Color
    Make them consistent!
  - Add set_wrapping to CL_Texture/Surface
- Core:
  - Redesign CL_Timer into something alot more useful
  - Add CL_System::get_last_time() if you know you've called get_time() already in this frame,
    and just want the last time reported.
  - Timer bug on some hardware:
    The CL_System time function works like it should all is sweet and dandy, but
    often about 20-40 minutes into a game, it will suddenly jump from 0xE23F or
    something small to 0xFFEE1234. It appears as if the bits are getting
    inverted but never quit exactly just that. I was able to reduce my game loop
    down to just this and STILL get the clock bug:
      while (!CL_Keyboard::get_keycode(CL_KEY_ESCAPE)) {
        theTime = CL_System::get_time();
        if((theTime - oldTime) > 1000) throw CL_Error("Clock Bug!\n");
        CL_System::keep_alive();
      }
- GUI:
  - A more common way for "capture". What for example, if in the future will be
    added yet another capture for Joystick or another Input device (for clicking buttons) ?
  - Keyboard navigation (make it possible to for users to create their own navigation classes?)
  - Clean up the components
	1) make subcomponents behave as parent component (use event_passing)
           CL_ListBox
           CL_ScrollBar
           CL_Window ?
        2) Add .scr and .gui options
           CL_Button: Done and documented
           CL_CheckBox: Done and documented
           CL_Frame: Missing "surface" and "mode" in .scr file
           CL_Image:
           CL_InputBox:
           CL_Label:
           CL_ListBox:
           CL_ProgressBar:
           CL_RadioButton:
           CL_ScrollBar:
           CL_Window:
  - CL_CheckBox: Add sig_checked/unchecked
  - CL_RadioButton: Add sig_checked/unchecked 
  - CL_RadioButton - when checked, make sure CL_RadioGroup is updated as well
  - CL_Window: Closing: Must check if running modal or not - to see if it was runned(), then quit(), else close() ?
  - CL_Button: If user press spacebar button is pressed, but not yet signaled (if user intercept
    sig_clicked signal), then user press TAB and focus changed to another component, but button
    remain pressed
  - Most components: Add set_font();
  - CL_ListBox: Finish the CL_ListItem changes!
    Add a "int insert_item(CL_ListItem *item, index index = -1);", which makes it possible to inherit CL_ListItem,
    and put extra data into each item for custom drawing.
    class MyListItem : public CL_ListItem { etc... CL_Color col; };
    listbox->insert(my_list_item);
  - CL_MessageBox:
	[15:04] <zz|sergant> Imagine a button in gui_manager
	[15:05] <zz|sergant> when button clicked, a CL_MessageBox created
	[15:06] <zz|sergant> then user do mouse click on "OK" button for example
	[15:06] <zz|sergant> dialog is disappeared
	[15:06] <zz|sergant> until this all ok
	[15:07] <zz|sergant> then if you press button in gui_manager again (by keyboard)
	[15:07] <zz|sergant> and don't touch mouse (to keep cursor position)
	[15:07] <zz|sergant> MessageBox appeared at the same position
	[15:08] <zz|sergant> but mouseclicks on "OK" not worked
	[15:08] <zz|sergant> until user change cursor position
  - CL_InputBox: Need a signal to allow user to intercept entered characters to give him control
  - CL_Component: Replace sig_get_preferred_size with get_style()->set_preferred_size();
  - component call sig_preffered() when user not setup width and height in .gui, but it's too early,
    because other options ("text" for button) is not yet setuped, and in button_style::on_preferred_size
    button->get_text() return ""
    this call should be moved from component_generic to component_manager_generic, in
    CL_ComponentManager_Generic::create_components()
  - CL_RadioButton: Remove the concept of CL_RadioGroup, and make all CL_RadioButtons within a
    component work as a group. So, to group RadioButtons, you just put all of them within a
    component, be it CL_Component, CL_Frame or whatever.
    Problems: Where should signals be? Must the user hook into each CL_RadioButtons signals?
  - When creating new GUIManagers, it has to create a state of the previous, so when it gives control
    to the previous manager, it gets for instance mouse_up signalled correctly.
  - Scrollbars: Move mouse outside area, and then within, repeat a couple of times - the position which the bar moves
    is changed. Probably some broken delta values.
  - CL_ListBox: Stop drawing when out of component-range
  - CL_ComboBox: Add this!
- Documentation:
  - Where appropriate, maybe links back to the api overview (eg. There
    should be a reference back to the overview display discusion in CL_Display)
  - Make links from Overviews, back to Home and to Reference.
    (Like Reference has now)
  - The user should be able to click the CL_Color in CL_GraphicContext::clear to go look
    at the CL_Color.
  - It is probably helpful to say that virtual functions actually are virtual.
  - Enums are not shown.
  - glyphbuffer is breaking PCE

[14:13] <Judas`> 1) Implement OpenGL CL_Canvas.
[14:13] <Judas`> 2) Implement nvidia accelerated pbuffer/render_texture OpenGL CL_Canvas
[14:13] <Judas`> 3) Write documentation. Muahauhahaaaaa!
[14:14] <Judas`> 4) Make clanDX7 / clanDX8 compile again.
[14:14] <Judas`> 5) Implement blitting system for DX7 / DX8
[14:15] <Judas`> 6) Write GUI editor
[14:15] <Judas`> 7) Write GUI wizard (cpp/h parser that inserts auto generated code)
[14:15] <Judas`> 8) Add CTCP and DCC support to CL_IRCConnection
[14:15] <Judas`> 9) Implement the browse master system.
[14:16] <Judas`> 10) Play with CTalk :)
[14:16] <Judas`> 11) Walk thru GUI components and polish them
