diff -r 000000000000 -r dd21522fd290 webengine/osswebengine/WebKit/s60/webview/WebTextFormatMask.h --- /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 +#include +#include + +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