
                       ___                            __      
                      /\_ \                          /\ \__   
                   __ \//\ \     ___     ___     ____\ \  _\  
                 /'_ `\ \ \ \   / __`\  / __`\  /  __\\ \ \/  
                /\ \ \ \ \_\ \_/\ \ \ \/\ \ \ \/\__   \\ \ \_ 
                \ \____ \/\____\ \____/\ \____/\/\____/ \ \__\
                 \/___/\ \/____/\/___/  \/___/  \/___/   \/__/
                   /\____/                                    
                   \_/__/     
                
                     OpenGL framework for fast demo programming

///////////////////////////////////////////////////////////////////////////////
                                 \** CHANGES **/
///////////////////////////////////////////////////////////////////////////////


  2009.06.17 otaco

  Many changes today.

  ### Math:
  
  The math part is more mathlike. So
   
   point3-point3=vector3
   vector3.length() but point3.distanceToOrigin()
   ... and many more changes...
   
   Th whole math part can be compiled with double or float as value type. This
   can be set in <gloost>/src/gloostConfig.h. Choose one of the two defines:
   
      #define GLOOST_MATH_WITH_DOUBLE
    or
      #define GLOOST_MATH_WITH_FLOAT
      
   A type <mathType> is defined wich is used by all math-related classes in
   gloost. You can use gloost::mathType in your own applications to be type-
   conform with the framework.
   
   To avoid problems with OpenGL functions taking pointers to arrays like
   glGetDoublev use gloostGetv which replaces the function call with the version
   of the right type. (include gloostConfig.h to use this macro)
   
   Examples:
   
    gloostMultMatrix  will replace  glMultMatrixf  and  glMultMatrixd
    gloostLoadMatrix  will replace  glLoadMatrixf  and  glLoadMatrixd
    gloostGetv        will replace  glGetFloatv    and  glGetDoublev
    ...
    
    For all macros look in <gloost>/src/gloostConfig.h.
    
    
    ### EasyFbo and RenderTargetCore:
    
    gloost::EasyFbo is largely extended but I forgot wich things I change.
    
    gloost::RenderTargetCore now sets his viewport to the size of his
    color attachment. You can set your own viewport with setViewPort(viewport*).
    Different vieports for all attachments is not implented for now but will
    be soon.
    
    
    ### New Examples:
    
    gloost_gpgpu_example shows how to create a 16bits per value texture to
    use it as color attachment in a fbo. Two of these textures are used to
    create a doublebuffer wich is used for a wave simulation.
    
    The intergalactic example is now up to date :-)
    
    The stardust_demo was rewritten. It now uses the scenegraph.
    
    
////////////////////////////////////////////////////////////////////////////////


  2009.01.14 otaco

1. gloost is now gcc 4.3 compatible and therefore more ANSI-like.

2. gloost::Gui is no singelton anymore. To adapt your application just replace
     gloost::Gui* myGui = gloost::Gui::getInstance();
   with
     gloost::Gui* myGui = new gloost::Gui();
     
3. Animation system is in. New classes are
     Keyframe ... - Keyframe with time and value (and much more)
     
     Envelope ... - Holds Keyframes
                  - is able to load/save Newtek Lightwave envelope files
                  - supports only linear interpolation for now
                  
     EnvelopeSet  - Holds 9 Envelopes to support 9 degrees of freedom
                  - is able to load/save Newtek Lightwave motion files
                  
4. New widget gloost::Pad which is a 2D input pad. Look into the gloost_widget
   demo. There is another widget class called gloost::PropertyInspector which
   shows automaticly all properties of any widgets you touch with the mouse.
   This is also shown in the gloost_widget demo.
   
   
////////////////////////////////////////////////////////////////////////////////


  2008.10.02 otaco

Classes Widget, Slider, Button and Toggle added. Compile the gloost_widgets demo
to get an idea...


////////////////////////////////////////////////////////////////////////////////


  2008.08.05 otaco

I removed all remaining puppets names and comments from the source.


////////////////////////////////////////////////////////////////////////////////


  2008.06.25 otaco

New handy gloost::TextLog class. TextLog is basicly a on screen log where you
can see your messages or debug output. It can completely replace your shell
during runtime (as long as your program runs with render output) and is a lot
faster then the shell. You can also scroll up and down within the log and write
it to a file. It's implemented as an singleton so you can reach it from all over
your objects with gloost::TextLog::getInstance().

Here a little reference:

    /// get an instance to the Textlog
    static TextLog* const getInstance();

    /// class destructor
	  ~TextLog();

	  /// add a line of text
	  void addLine(const std::string& textLine = " ");
	  /// add a line of text with color
	  void addLine(const std::string& textLine, const vec3 color);
	  /// add a line of text as message
	  void addLine(const TextLogMessage& message);

    /// clear log
    void clear();

    /// write log
    void writeLog (std::string filename);

	  /// scroll up
    void scrollUp(unsigned int lines = 1);

    /// scroll down
    void scrollDown(unsigned int lines = 1);

    /// render the log to the screen
    void draw();

    /// get a pointer to the gloost::TextureText object to configure it
    TextureText* getTextureTextObject();

    /// get Position of the log
    const vec2& getPosition();

    /// set Position of the log
    void setPosition(const vec2& position);

    /// set number of lines to view
    void setLinesToView(unsigned int number);


////////////////////////////////////////////////////////////////////////////////


  2008.06.12 otaco

Renamed gloost::TextureManager::getTextureWithoutReference(unsigned int id) in

  gloost::TextureManager::getTextureWithoutRefcount(unsigned int id).

The new name is now what the methode really does. Alternatively there is the
function with the shorter name
  
  gloost::TextureManager::getTextureWOR(unsigned int id)
  
that does the same job.


////////////////////////////////////////////////////////////////////////////////


  2008.06.12 otaco

gloost::TextureManager::createTexture(std::string fileName) has now a "shared"
flag:
  gloost::TextureManager::createTexture(std::string fileName, bool shared=1);

If you set shared to TRUE and load the texture a several times, the texture will
not be loaded again but the TextureManager will return the id of the Texture
with the same filename that was loaded at first. Talking LightWeight pattern
here...


////////////////////////////////////////////////////////////////////////////////


  2008.06.11 otaco

gloost::PI is now defined as
  static const float PI = 3.1415926535;
instead of
  float PI = 3.1415926535;


////////////////////////////////////////////////////////////////////////////////


  2008.06.10 otaco

I removed two redundant multiplications from gloost::frand() and gloost::crand().
This two functions are now pretty random.


////////////////////////////////////////////////////////////////////////////////


  2008.06.08 otaco

Fixed incorrect mousespeed per frame with Linux/SDL in gloost::EventHandler::update().
Instead of generating one mousemove event per frame, linux seems to send more then one.
This issue was adulterating the field gloost::Mouse::_speed.


////////////////////////////////////////////////////////////////////////////////


  2008.06.06 otaco


Changed name of gloost::TextureText::bind() into
  gloost::TextureText::bindFontTexture();




