webengine/osswebengine/WebKit/s60/webview/WebTextFormatMask.h
changeset 0 dd21522fd290
child 16 a359256acfc6
--- /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