--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/webengine/osswebengine/WebKit/s60/webview/WebTextFormatMask.h Mon Mar 30 12:54:55 2009 +0300
@@ -0,0 +1,148 @@
+/*
+* Copyright (c) 2006 Nokia Corporation and/or its subsidiary(-ies).
+* All rights reserved.
+* 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:
+* Nokia Corporation - initial contribution.
+*
+* Contributors:
+*
+* Description:
+*
+*/
+
+#ifndef __WEBTEXTFORMATMASK_H__
+#define __WEBTEXTFORMATMASK_H__
+
+#include <unicode/umachine.h>
+#include <e32cmn.h>
+#include <ctype.h>
+
+typedef enum {
+
+ ELeLoSymPuc,
+ ELeUpSymPuc,
+ ENumSymPuc,
+ ENumChar,
+ ELeLoNumSymPuc,
+ ELeUpNumSymPuc,
+ EAnyLow,
+ EAnyUpper,
+ EStatic,
+ ENoFormat
+
+}TInputFormatMaskType;
+
+namespace WebCore
+{
+ class Frame;
+ class String;
+}
+
+class WebTextFormatMask;
+
+class MaskBase
+{
+public:
+ friend class WebTextFormatMask;
+
+ MaskBase() : m_next(0) {}
+ virtual ~MaskBase() { m_next=NULL; }
+
+ virtual bool check(UChar) = 0;
+ virtual TInputFormatMaskType getInputFormatMaskType() = 0;
+ virtual MaskBase* nextMask() { return m_next; }
+ virtual bool isComposite() { return false; }
+ virtual int multitude() const { return 1; }
+
+protected:
+ MaskBase* m_next;
+
+private:
+ MaskBase(const MaskBase&); // not implemented
+ MaskBase& operator=(const MaskBase&); // not implemented
+};
+
+class MaskSingle : public MaskBase
+{
+public:
+ MaskSingle(TInputFormatMaskType t) : m_type(t) {}
+ bool check(UChar);
+ TInputFormatMaskType getInputFormatMaskType() { return m_type; };
+
+private:
+ TInputFormatMaskType m_type;
+};
+
+class MaskStatic : public MaskBase
+{
+public:
+ MaskStatic(UChar ch) : m_char(ch) {}
+ bool check(UChar);
+ UChar getStatic() { return m_char; }
+ TInputFormatMaskType getInputFormatMaskType() { return EStatic; };
+
+private:
+ UChar m_char;
+};
+
+class MaskComposite : public MaskSingle
+{
+public:
+ MaskComposite(TInputFormatMaskType, int);
+
+ MaskBase* nextMask();
+ bool isComposite() { return true; }
+ int multitude() const { return m_length; }
+
+private:
+ int m_offset;
+ int m_length;
+};
+
+class WebTextFormatMask
+{
+public:
+ struct ErrorBlock
+ {
+ int m_start;
+ int m_extent;
+
+ ErrorBlock() : m_start(-1), m_extent(-1) {}
+ void set(int s, int e) { m_start = s; m_extent = e; }
+ };
+
+ WebTextFormatMask(const WebCore::String&, bool);
+ ~WebTextFormatMask();
+
+ bool checkText(const WebCore::String&, ErrorBlock&);
+
+public:
+ int getMultitude();
+ TInputFormatMaskType getInputFormatMaskType(WebCore::Frame *frame, int aOffset);
+
+public:
+ static bool checkTelWtaiNumber(const WebCore::String&, bool);
+
+private:
+ void buildMaskList(const WebCore::String&);
+ bool appendMask(MaskBase* m);
+
+ void clearMaskList();
+
+ bool createMask(TInputFormatMaskType, int&);
+ bool createStaticMask(const UChar*&);
+ int parseMultitude(const UChar*&, bool&);
+
+private:
+ MaskBase* m_masks;
+ MaskBase* m_currentMask;
+ bool m_acceptAll;
+ bool m_inputRequired;
+};
+
+#endif