openvg/openvgrefimplementation/sfopenvg/test/inc/tiger.h
changeset 43 7579f232bae7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/openvg/openvgrefimplementation/sfopenvg/test/inc/tiger.h	Fri Apr 30 17:15:32 2010 +0100
@@ -0,0 +1,153 @@
+/*
+* Copyright (c) 2009 Symbian Foundation Ltd
+* This component and the accompanying materials are made available
+* under the terms of the License "Eclipse Public License v1.0"
+* which accompanies this distribution, and is available
+* at the URL "http://www.eclipse.org/legal/epl-v10.html".
+*
+* Initial Contributors:
+* Symbian Foundation Ltd - initial contribution.
+* 
+* Contributors:
+*
+* Description:
+* CTiger class declaration to render OpenVG tiger image
+*/
+
+#ifndef TIGER_H
+#define TIGER_H
+
+//  INCLUDES
+#include <e32base.h> // for CBase definition
+#include <egl.h>
+#include <openvg.h>
+//#include <vgu.h>
+#include <eglosnativewindowtype.h>
+
+////////////////////////////////////////////
+//Copied from ri_package_11\samples\tiger\tiger.h
+extern const int KtigerCommandCount;
+extern const char KtigerCommands[];
+extern const float KtigerMinX;
+extern const float KtigerMaxX;
+extern const float KtigerMinY;
+extern const float KtigerMaxY;
+extern const int KtigerPointCount;
+extern const float KtigerPoints[];
+
+// CLASS DECLARATION
+
+/**
+ * Class that does the actual OpenGL ES rendering.
+ */
+typedef struct
+{
+	VGFillRule		m_fillRule;
+	VGPaintMode		m_paintMode;
+	VGCapStyle		m_capStyle;
+	VGJoinStyle		m_joinStyle;
+	float			m_miterLimit;
+	float			m_strokeWidth;
+	VGPaint			m_fillPaint;
+	VGPaint			m_strokePaint;
+	VGPath			m_path;
+} PathData;
+
+typedef struct
+{
+	PathData*			m_paths;
+	int					m_numPaths;
+} PS;
+
+/////////////////////////////////////////////////////////////
+
+class RWindow;
+
+class CTiger : public CBase
+    {
+    public:  // Constructors and destructor
+
+        /**
+         * Factory method for creating a new CTiger object.
+         */
+        static CTiger* NewL( TUint aWidth, TUint aHeight);
+
+        /**
+         * Destructor. Does nothing.
+         */
+        virtual ~CTiger();
+
+    public: // New functions
+
+        /**
+         * Initializes OpenGL ES, sets the vertex and color
+         * arrays and pointers. Also selects the shading mode.
+         */
+        void AppInit( RWindow& aWindow, CFbsBitmap* aBitmapToDraw=NULL );
+        
+        /**
+         * Called upon application exit. Does nothing.
+         */
+        void AppExit( void );
+
+        /**
+         * Notifies that the screen size has dynamically changed during execution of
+         * this program. Resets the viewport to this new size.
+         * @param aWidth New width of the screen.
+         * @param aHeight New height of the screen.
+         */
+        void SetScreenSize( TUint aWidth, TUint aHeight );
+        
+        void AppRender( const TRect& aRect, CFbsBitmap* aDst=NULL);
+
+    protected: // New functions
+
+        /**
+         * Standard constructor that must never Leave.
+         * Stores the given screen width and height.
+         * @param aWidth Width of the screen.
+         * @param aHeight Height of the screen.
+         */
+        CTiger(TUint aWidth, TUint aHeight);
+
+        /**
+         * Second phase contructor. Does nothing.
+         */
+        void ConstructL( void );
+        
+        //fucntions copied from ri_package_11\samples\tiger\main.c - no attempt to Symbianise!!
+        void PS_destruct(PS* ps);
+        void render(int w, int h);
+        void PS_render(PS* ps);
+        PS* PS_construct(const char* commands, int commandCount, const float* points, int pointCount);
+        void init(NativeWindowType window, CFbsBitmap* aBitmapToDraw=NULL);
+        void CreateImage(CFbsBitmap* aBitmapToDraw);
+        void renderFromBitmap(int w, int h);
+        
+
+    private: // Data
+
+        /** Width of the screen */
+        TUint           iScreenWidth;
+
+        /** Height of the screen */
+        TUint           iScreenHeight;
+
+    private: //OpenVG structures
+    	
+    	//copied from ri_package_11\samples\tiger\main.c - no attempt to symbianise
+    	PS* 				iTiger;
+    	int					iRenderWidth;
+    	int					iRenderHeight;
+    	EGLDisplay			iEgldisplay;
+    	EGLConfig			iEglconfig;
+    	EGLSurface			iEglsurface;
+    	EGLContext			iEglcontext;
+    	TNativeWindowType iNativeWindowType;
+    	VGImage iImage;
+    	CFbsBitmap* iBitmapToDraw;
+   	
+    };
+#endif // TIGER_H
+
+// End of File