--- /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 <e32base.h>
+#include "MImageFilter.h"
+
+typedef RArray<TUint32> 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