openvg/openvgrefimplementation/sfopenvg/test/inc/tiger.h
author Faisal Memon <faisal.memon@nokia.com>
Thu, 06 May 2010 11:31:11 +0100
branchNewGraphicsArchitecture
changeset 47 48b924ae7197
parent 6 250ac10a3d98
permissions -rw-r--r--
Applied patch 1, to provide a syborg specific minigui oby file. Need to compare this with the "stripped" version currently in the tree. This supplied version applies for Nokia builds, but need to repeat the test for SF builds to see if pruning is needed, or if the file needs to be device-specific.

/*
* 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