diff -r 57d4cdd99204 -r edfc90759b9f imageeditorengine/filters/FilterCartoon/Inc/CFilterCartoon.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imageeditorengine/filters/FilterCartoon/Inc/CFilterCartoon.h Fri Jan 29 13:53:17 2010 +0200 @@ -0,0 +1,121 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "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: +* Nokia Corporation - Initial contribution +* +* Contributors: +* Ixonos Plc +* +* Description: +* +*/ + + +#ifndef __CFilterCartoon_H__ +#define __CFilterCartoon_H__ + +#include +#include "MImageFilter.h" + +typedef RArray RPalette; + +// Class: Octree node +//============================================================================= +class CNode : public CBase +{ + +public: + + CNode(); + virtual ~CNode(); + +public: + /// If ETrue, has no leaves + TBool iIsLeaf; + /// Number of pixels represented by this leaf + TInt iPixels; + /// Sum of red components + TInt iRedSum; + /// Sum of green components + TInt iGreenSum; + /// Sum of blue components + TInt iBlueSum; + /// Children + CNode * iChild[8]; + /// Next reducible node + CNode * iNext; +}; + +// Class: Octree +//============================================================================= +class COTreeQuant : public CBase +{ + +public: + + COTreeQuant(); + virtual ~COTreeQuant(); + + void AddColorL (TUint32 aRgb); + TInt GetColorCount() const; + void GetColorTable (); + void ReduceTree (); + +public: + + /// Amount of leaves + TInt iLeaves; + /// Tree struct + CNode * iTree; + /// Reducible nodes + CNode * iReducibleNodes[9]; + /// Palette + RPalette iPalette; + +private: + + void DoAddColorL (CNode ** aNode, TUint32 aRgb, TInt aLevel); + void GetPaletteColors (const CNode & aNode); + +}; + +// Class: Cartoon filter +//============================================================================= +class CFilterCartoon + : public CBase + , public MImageFilter + { + public: + IMPORT_C static TInt Create(); + virtual ~CFilterCartoon(); + + public: // MImageFilter + virtual TRect Rect(); + virtual TReal Scale(); + virtual TSize ViewPortSize(); + virtual TBlock * GetBlockL ( const TRect & aRect ); + virtual void SetParent ( MImageFilter * aParent ); + virtual void SetChild ( MImageFilter * aChild ); + virtual TInt CmdL( const TDesC16& aCmd ); + virtual const char* Type(); + + private: + static CFilterCartoon* NewL(); + CFilterCartoon(); + void ConstructL(); + void CreateOctreePaletteL(); + + private: // data + + TInt* i16BitIndLut; + TUint32* iRGB; + TInt iCount; + }; + +#endif