Fix FBO/Texture/renderbuffer class hierarchy issues
TRAC #14744
Issue=51/52
Delegated format queries to RenderbufferStorage.
Eliminated TextureColorbufferProxy by merging it into Colorbuffer.
Abstracted texture colorbuffer queries.
Moved some conversion functions to the right namespace.
Fixed line-endings in Texture.cpp
Signed-off-by: Daniel Koch

Author:    Nicolas Capens <nicolas@transgaming.com>

git-svn-id: https://angleproject.googlecode.com/svn/trunk@553 736b8ea6-26fd-11df-bfd4-992fa37f6226
diff --git a/src/libGLESv2/Renderbuffer.h b/src/libGLESv2/Renderbuffer.h
index 98510c2..d6415bb 100644
--- a/src/libGLESv2/Renderbuffer.h
+++ b/src/libGLESv2/Renderbuffer.h
@@ -21,7 +21,7 @@
 
 namespace gl
 {
-    class Texture;
+class Texture;
 
 // A class derived from RenderbufferStorage is created whenever glRenderbufferStorage
 // is called. The specific concrete type depends on whether the internal format is
@@ -40,34 +40,40 @@
     virtual IDirect3DSurface9 *getRenderTarget();
     virtual IDirect3DSurface9 *getDepthStencil();
 
-    virtual int getWidth() const;
-    virtual int getHeight() const;
-    virtual GLenum getFormat() const;
-    virtual bool isFloatingPoint() const;
-    D3DFORMAT getD3DFormat() const;
-    GLsizei getSamples() const;
+    virtual GLsizei getWidth() const;
+    virtual GLsizei getHeight() const;
+    virtual GLenum getInternalFormat() const;
+    GLuint getRedSize() const;
+    GLuint getGreenSize() const;
+    GLuint getBlueSize() const;
+    GLuint getAlphaSize() const;
+    GLuint getDepthSize() const;
+    GLuint getStencilSize() const;
+    virtual GLsizei getSamples() const;
+
+    virtual D3DFORMAT getD3DFormat() const;
+
     unsigned int getSerial() const;
 
-    static unsigned int issueSerial();
-
   protected:
-    void setSize(int width, int height);
-    GLenum mFormat;
+    GLsizei mWidth;
+    GLsizei mHeight;
+    GLenum mInternalFormat;
     D3DFORMAT mD3DFormat;
     GLsizei mSamples;
-    const unsigned int mSerial;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(RenderbufferStorage);
 
-    static unsigned int mCurrentSerial;
+    static unsigned int issueSerial();
 
-    int mWidth;
-    int mHeight;
+    const unsigned int mSerial;
+
+    static unsigned int mCurrentSerial;
 };
 
 // Renderbuffer implements the GL renderbuffer object.
-// It's only a wrapper for a RenderbufferStorage, but the internal object
+// It's only a proxy for a RenderbufferStorage instance; the internal object
 // can change whenever glRenderbufferStorage is called.
 class Renderbuffer : public RefCountObject
 {
@@ -83,10 +89,18 @@
     IDirect3DSurface9 *getRenderTarget();
     IDirect3DSurface9 *getDepthStencil();
 
-    int getWidth() const;
-    int getHeight() const;
-    GLenum getFormat() const;
+    GLsizei getWidth() const;
+    GLsizei getHeight() const;
+    GLenum getInternalFormat() const;
     D3DFORMAT getD3DFormat() const;
+    GLuint getRedSize() const;
+    GLuint getGreenSize() const;
+    GLuint getBlueSize() const;
+    GLuint getAlphaSize() const;
+    GLuint getDepthSize() const;
+    GLuint getStencilSize() const;
+    GLsizei getSamples() const;
+
     unsigned int getSerial() const;
 
     void setStorage(RenderbufferStorage *newStorage);
@@ -102,42 +116,43 @@
 {
   public:
     explicit Colorbuffer(IDirect3DSurface9 *renderTarget);
-    explicit Colorbuffer(const Texture* texture);
-    Colorbuffer(int width, int height, GLenum format, GLsizei samples);
+    Colorbuffer(Texture *texture, GLenum target);
+    Colorbuffer(GLsizei width, GLsizei height, GLenum format, GLsizei samples);
 
-    ~Colorbuffer();
+    virtual ~Colorbuffer();
 
-    bool isColorbuffer() const;
+    virtual bool isColorbuffer() const;
 
-    GLuint getRedSize() const;
-    GLuint getGreenSize() const;
-    GLuint getBlueSize() const;
-    GLuint getAlphaSize() const;
+    virtual IDirect3DSurface9 *getRenderTarget();
 
-    IDirect3DSurface9 *getRenderTarget();
+    virtual GLsizei getWidth() const;
+    virtual GLsizei getHeight() const;
+    virtual GLenum getInternalFormat() const;
 
-  protected:
-    IDirect3DSurface9 *mRenderTarget;
+    virtual D3DFORMAT getD3DFormat() const;
+
+    bool isFloatingPoint() const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Colorbuffer);
+
+    IDirect3DSurface9 *mRenderTarget;
+    Texture *mTexture;
+    GLenum mTarget;
 };
 
 class DepthStencilbuffer : public RenderbufferStorage
 {
   public:
     explicit DepthStencilbuffer(IDirect3DSurface9 *depthStencil);
-    DepthStencilbuffer(int width, int height, GLsizei samples);
+    DepthStencilbuffer(GLsizei width, GLsizei height, GLsizei samples);
 
     ~DepthStencilbuffer();
 
     virtual bool isDepthbuffer() const;
     virtual bool isStencilbuffer() const;
 
-    GLuint getDepthSize() const;
-    GLuint getStencilSize() const;
-
-    IDirect3DSurface9 *getDepthStencil();
+    virtual IDirect3DSurface9 *getDepthStencil();
 
   private:
     DISALLOW_COPY_AND_ASSIGN(DepthStencilbuffer);
@@ -148,12 +163,12 @@
 {
   public:
     explicit Depthbuffer(IDirect3DSurface9 *depthStencil);
-    Depthbuffer(int width, int height, GLsizei samples);
+    Depthbuffer(GLsizei width, GLsizei height, GLsizei samples);
 
-    ~Depthbuffer();
+    virtual ~Depthbuffer();
 
-    bool isDepthbuffer() const;
-    bool isStencilbuffer() const;
+    virtual bool isDepthbuffer() const;
+    virtual bool isStencilbuffer() const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Depthbuffer);
@@ -163,12 +178,12 @@
 {
   public:
     explicit Stencilbuffer(IDirect3DSurface9 *depthStencil);
-    Stencilbuffer(int width, int height, GLsizei samples);
+    Stencilbuffer(GLsizei width, GLsizei height, GLsizei samples);
 
-    ~Stencilbuffer();
+    virtual ~Stencilbuffer();
 
-    bool isDepthbuffer() const;
-    bool isStencilbuffer() const;
+    virtual bool isDepthbuffer() const;
+    virtual bool isStencilbuffer() const;
 
   private:
     DISALLOW_COPY_AND_ASSIGN(Stencilbuffer);