From 206048558c673c235350c330c6a2cf3f40ab5da2 Mon Sep 17 00:00:00 2001 From: "taeyoon0.lee" Date: Wed, 11 Oct 2017 18:07:10 +0900 Subject: [PATCH] Revert "[4.0] Supported XHTML entitites(Named & Numeric(hex/decimal)) in Markup Language." This reverts commit 7ac7999a95c2c44bffbaae309f04871c57f016ba. Change-Id: I2023a4bd5facb05470196c9dfe1b51049b4bc1aa --- .../dali-toolkit-internal/utc-Dali-Text-Markup.cpp | 79 ----- dali-toolkit/internal/file.list | 3 +- dali-toolkit/internal/text/markup-processor.cpp | 177 +---------- dali-toolkit/internal/text/xhtml-entities.cpp | 331 --------------------- dali-toolkit/internal/text/xhtml-entities.h | 45 --- .../images/text-controls/SpecialCharacter1.png | Bin 1689 -> 0 bytes .../images/text-controls/SpecialCharacters.png | Bin 3681 -> 0 bytes docs/content/images/text-controls/XHTML_entity.png | Bin 4367 -> 0 bytes .../markup-style.md | 52 ---- 9 files changed, 12 insertions(+), 675 deletions(-) mode change 100755 => 100644 automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Markup.cpp mode change 100755 => 100644 dali-toolkit/internal/file.list mode change 100755 => 100644 dali-toolkit/internal/text/markup-processor.cpp delete mode 100755 dali-toolkit/internal/text/xhtml-entities.cpp delete mode 100755 dali-toolkit/internal/text/xhtml-entities.h delete mode 100755 docs/content/images/text-controls/SpecialCharacter1.png delete mode 100755 docs/content/images/text-controls/SpecialCharacters.png delete mode 100755 docs/content/images/text-controls/XHTML_entity.png mode change 100755 => 100644 docs/content/shared-javascript-and-cpp-documentation/markup-style.md diff --git a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Markup.cpp b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Markup.cpp old mode 100755 new mode 100644 index 7007170..87db667 --- a/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Markup.cpp +++ b/automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Markup.cpp @@ -166,34 +166,6 @@ namespace return true; } - /////////////////////////////////////////////////////////// - - - struct XHTMLEntityToUTF8Data - { - std::string description; - std::string xHTMLEntityString; - std::string expectedString; - }; - - bool XHTMLEntityToUTF8Test( const XHTMLEntityToUTF8Data& data ) - { - std::cout << " testing " << data.description << std::endl; - - Vector colorRuns; - Vector fontRuns; - MarkupProcessData markupProcessData( colorRuns, fontRuns ); - ProcessMarkupString( data.xHTMLEntityString, markupProcessData ); - - if( markupProcessData.markupProcessedText != data.expectedString ) - { - std::cout << " different output string : " << markupProcessData.markupProcessedText << ", expected : " << data.expectedString << " " << std::endl; - return false; - } - - return true; - } - } // namespace int UtcDaliTextTokenComparison(void) @@ -479,54 +451,3 @@ int UtcDaliTextVector2ToString(void) tet_result(TET_PASS); END_TEST; } - -int UtcDaliTextXHTMLEntityToUTF8(void) -{ - tet_infoline(" UtcDaliTextXHTMLEntityToUTF8"); - const XHTMLEntityToUTF8Data data[] = - { - { - "Text Without XHTML Entity", - "Checking XHTML Entitities", - "Checking XHTML Entitities" - }, - { - "Text With XHTML Entity in Numeric form", - "Checking Numeric Entitities & ' < > ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å æ Ç È É Ê Ë Ì Í Î Ï ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ý þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω … € ← ↑ → ↓ ↔ ← → ∀ ∃ ∇ ∏ ∑ ∧ ∨ ∫ ≠ ≡ ⊕ ⊥ † ‡ • ", - "Checking Numeric Entitities & ' < > ¡ ¢ £ ¤ Â¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å æ Ç È É Ê Ë Ì Í Î Ï ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ý þ ß à á â ã ä Ã¥ æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω … € ← ↑ → ↓ ↔ ← → ∀ ∃ ∇ ∏ ∑ ∧ ∨ ∫ ≠ ≡ ⊕ ⊥ † ‡ • " - }, - { - "Text With XHTML Named Entities", - "Checking Named Entitities & ' < > ¡ ¢ £ ¤ ¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å æ Ç È É Ê Ë Ì Í Î Ï ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ý þ ß à á â ã ä å æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω … € ← ↑ → ↓ ↔ ← → ∀ ∃ ∇ ∏ ∑ ∧ ∨ ∫ ≠ ≡ ⊕ ⊥ † ‡ • ", - "Checking Named Entitities & ' < > ¡ ¢ £ ¤ Â¥ ¦ § ¨ © ª « ¬ ­ ® ¯ ° ± ² ³ ´ µ ¶ · ¸ ¹ º » ¼ ½ ¾ ¿ À Á Â Ã Ä Å æ Ç È É Ê Ë Ì Í Î Ï ð Ñ Ò Ó Ô Õ Ö × Ø Ù Ú Û Ý þ ß à á â ã ä Ã¥ æ ç è é ê ë ì í î ï ð ñ ò ó ô õ ö ÷ ø ù ú û ü ý þ ÿ α β γ δ ε ζ η θ ι κ λ μ ν ξ ο π ρ σ τ υ φ χ ψ ω … € ← ↑ → ↓ ↔ ← → ∀ ∃ ∇ ∏ ∑ ∧ ∨ ∫ ≠ ≡ ⊕ ⊥ † ‡ • " - }, - { - "Testing of < special character", - "Testing of < special character", - "Testing of " - }, - { - "Testing of & special character", - "Testing of & special character", - "Testing of " - }, - { - "Testing of & < > special character", - "Testing of \\& \\< \\> special character", - "Testing of & < > special character" - } - }; - const unsigned int numberOfTests = 6u; - - for( unsigned int index = 0u; index < numberOfTests; ++index ) - { - ToolkitTestApplication application; - if( !XHTMLEntityToUTF8Test( data[index] ) ) - { - tet_result(TET_FAIL); - } - } - - tet_result(TET_PASS); - END_TEST; -} diff --git a/dali-toolkit/internal/file.list b/dali-toolkit/internal/file.list old mode 100755 new mode 100644 index 1170687..5c4db55 --- a/dali-toolkit/internal/file.list +++ b/dali-toolkit/internal/file.list @@ -153,5 +153,4 @@ toolkit_src_files = \ $(toolkit_src_dir)/transition-effects/cube-transition-fold-effect-impl.cpp \ $(toolkit_src_dir)/transition-effects/cube-transition-wave-effect-impl.cpp \ $(toolkit_src_dir)/scripting/script-impl.cpp \ - $(toolkit_src_dir)/scripting/script-plugin-proxy.cpp \ - $(toolkit_src_dir)/text/xhtml-entities.cpp + $(toolkit_src_dir)/scripting/script-plugin-proxy.cpp diff --git a/dali-toolkit/internal/text/markup-processor.cpp b/dali-toolkit/internal/text/markup-processor.cpp old mode 100755 new mode 100644 index 5bbe5ad..6ea6352 --- a/dali-toolkit/internal/text/markup-processor.cpp +++ b/dali-toolkit/internal/text/markup-processor.cpp @@ -18,18 +18,11 @@ // FILE HEADER #include -// EXTERNAL INCLUDES -#include // for ULONG_MAX -#include - // INTERNAL INCLUDES #include #include #include #include -#include - - namespace Dali { @@ -60,26 +53,12 @@ const char EQUAL = '='; const char QUOTATION_MARK = '\''; const char SLASH = '/'; const char BACK_SLASH = '\\'; -const char AMPERSAND = '&'; -const char HASH = '#'; -const char SEMI_COLON = ';'; -const char CHAR_ARRAY_END = '\0'; -const char HEX_CODE = 'x'; const char WHITE_SPACE = 0x20; // ASCII value of the white space. -// Range 1 0x0u < XHTML_DECIMAL_ENTITY_RANGE <= 0xD7FFu -// Range 2 0xE000u < XHTML_DECIMAL_ENTITY_RANGE <= 0xFFFDu -// Range 3 0x10000u < XHTML_DECIMAL_ENTITY_RANGE <= 0x10FFFFu -const unsigned long XHTML_DECIMAL_ENTITY_RANGE[] = { 0x0u, 0xD7FFu, 0xE000u, 0xFFFDu, 0x10000u, 0x10FFFFu }; - const unsigned int MAX_NUM_OF_ATTRIBUTES = 5u; ///< The font tag has the 'family', 'size' 'weight', 'width' and 'slant' attrubutes. const unsigned int DEFAULT_VECTOR_SIZE = 16u; ///< Default size of run vectors. -#if defined(DEBUG_ENABLED) -Debug::Filter* gLogFilter = Debug::Filter::New(Debug::NoLogging, true, "LOG_MARKUP_PROCESSOR"); -#endif - /** * @brief Struct used to retrieve the style runs from the mark-up string. */ @@ -375,88 +354,6 @@ bool IsTag( const char*& markupStringBuffer, return isTag; } -/** - * @brief Returns length of XHTML entity by parsing the text. It also determines if it is XHTML entity or not. - * - * @param[in] markupStringBuffer The mark-up string buffer. It's a const iterator pointing the current character. - * @param[in] markupStringEndBuffer Pointing to end of mark-up string buffer. - * - * @return Length of markupText in case of XHTML entity otherwise return 0. - */ -unsigned int GetXHTMLEntityLength( const char*& markupStringBuffer, - const char* const markupStringEndBuffer ) -{ - char character = *markupStringBuffer; - if( AMPERSAND == character ) // '&' - { - // if the iterator is pointing to a '&' character, then check for ';' to find end to XHTML entity. - ++markupStringBuffer; - if( markupStringBuffer < markupStringEndBuffer ) - { - unsigned int len = 1u; - for( ; markupStringBuffer < markupStringEndBuffer ; ++markupStringBuffer ) - { - character = *markupStringBuffer; - ++len; - if( SEMI_COLON == character ) // ';' - { - // found end of XHTML entity - ++markupStringBuffer; - return len; - } - else if( ( AMPERSAND == character ) || ( BACK_SLASH == character ) || ( LESS_THAN == character )) - { - return 0; - } - } - } - } - return 0; -} - -/** - * @brief It parses a XHTML string which has hex/decimal entity and fill its corresponging utf-8 string. - * - * @param[in] markupText The mark-up text buffer. - * @param[out] utf-8 text Corresponding to markup Text - * - * @return true if string is successfully parsed otherwise false - */ -bool XHTMLNumericEntityToUtf8 ( const char* markupText, char* utf8 ) -{ - bool result = false; - - if( NULL != markupText ) - { - bool isHex = false; - - // check if hex or decimal entity - if( ( CHAR_ARRAY_END != *markupText ) && ( HEX_CODE == *markupText ) ) - { - isHex = true; - ++markupText; - } - - char* end = NULL; - unsigned long l = strtoul( markupText, &end, ( isHex ? 16 : 10 ) ); // l contains UTF-32 code in case of correct XHTML entity - - // check for valid XHTML numeric entities (between '#' or "#x" and ';') - if( ( l > 0 ) && ( l < ULONG_MAX ) && ( *end == SEMI_COLON ) ) // in case wrong XHTML entity is set eg. "abcdefs;" in that case *end will be 'a' - { - /* characters XML 1.1 permits */ - if( ( ( XHTML_DECIMAL_ENTITY_RANGE[0] < l ) && ( l <= XHTML_DECIMAL_ENTITY_RANGE[1] ) ) || - ( ( XHTML_DECIMAL_ENTITY_RANGE[2] <= l ) && ( l <= XHTML_DECIMAL_ENTITY_RANGE[3] ) ) || - ( ( XHTML_DECIMAL_ENTITY_RANGE[4] <= l ) && ( l <= XHTML_DECIMAL_ENTITY_RANGE[5] ) ) ) - { - // Convert UTF32 code to UTF8 - Utf32ToUtf8( reinterpret_cast( &l ), 1, reinterpret_cast( utf8 ) ); - result = true; - } - } - } - return result; -} - } // namespace void ProcessMarkupString( const std::string& markupString, MarkupProcessData& markupProcessData ) @@ -650,84 +547,32 @@ void ProcessMarkupString( const std::string& markupString, MarkupProcessData& ma } } // } // end if( IsTag() ) - else if( markupStringBuffer < markupStringEndBuffer ) + else { unsigned char character = *markupStringBuffer; - const char* markupBuffer = markupStringBuffer; - unsigned char count = GetUtf8Length( character ); - char utf8[8]; if( ( BACK_SLASH == character ) && ( markupStringBuffer + 1u < markupStringEndBuffer ) ) { - // Adding < , > or & special character. + // Adding < or > special character. const unsigned char nextCharacter = *( markupStringBuffer + 1u ); - if( ( LESS_THAN == nextCharacter ) || ( GREATER_THAN == nextCharacter ) || ( AMPERSAND == nextCharacter ) ) + if( ( LESS_THAN == nextCharacter ) || ( GREATER_THAN == nextCharacter ) ) { character = nextCharacter; ++markupStringBuffer; - - count = GetUtf8Length( character ); - markupBuffer = markupStringBuffer; } } - else // checking if conatins XHTML entity or not - { - const unsigned int len = GetXHTMLEntityLength( markupStringBuffer, markupStringEndBuffer); - - // Parse markupStringTxt if it contains XHTML Entity between '&' and ';' - if( len > 0 ) - { - char* entityCode = NULL; - bool result = false; - count = 0; - // Checking if XHTML Numeric Entity - if( HASH == *( markupBuffer + 1u ) ) - { - entityCode = &utf8[0]; - // markupBuffer is currently pointing to '&'. By adding 2u to markupBuffer it will point to numeric string by skipping "&#' - result = XHTMLNumericEntityToUtf8( ( markupBuffer + 2u ), entityCode ); - } - else // Checking if XHTML Named Entity - { - entityCode = const_cast ( NamedEntityToUtf8( markupBuffer, len ) ); - result = ( entityCode != NULL ); - } - if ( result ) - { - markupBuffer = entityCode; //utf8 text assigned to markupBuffer - character = markupBuffer[0]; - } - else - { - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Not valid XHTML entity : (%.*s) \n", len, markupBuffer ); - markupBuffer = NULL; - } - } - else // in case string conatins Start of XHTML Entity('&') but not its end character(';') - { - if( character == AMPERSAND ) - { - markupBuffer = NULL; - DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Not Well formed XHTML content \n" ); - } - } - } + const unsigned char numberOfBytes = GetUtf8Length( character ); - if( markupBuffer != NULL ) + markupProcessData.markupProcessedText.push_back( character ); + for( unsigned char i = 1u; i < numberOfBytes; ++i ) { - const unsigned char numberOfBytes = GetUtf8Length( character ); - markupProcessData.markupProcessedText.push_back( character ); - - for( unsigned char i = 1u; i < numberOfBytes; ++i ) - { - ++markupBuffer; - markupProcessData.markupProcessedText.push_back( *markupBuffer ); - } - - ++characterIndex; - markupStringBuffer += count; + ++markupStringBuffer; + markupProcessData.markupProcessedText.push_back( *markupStringBuffer ); } + + ++characterIndex; + ++markupStringBuffer; } } diff --git a/dali-toolkit/internal/text/xhtml-entities.cpp b/dali-toolkit/internal/text/xhtml-entities.cpp deleted file mode 100755 index 3ee7215..0000000 --- a/dali-toolkit/internal/text/xhtml-entities.cpp +++ /dev/null @@ -1,331 +0,0 @@ -/* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -// EXTERNAL INCLUDES -#include // for strlen() - -// FILE HEADER -#include "xhtml-entities.h" - -namespace Dali -{ - -namespace Toolkit -{ - -namespace Text -{ - -namespace -{ -/** - * Implementation of the XHTML Entity matching - */ -struct XHTMLEntityLookup -{ - const char* const entityName; // XHTML Named Entity string - const char* const entityCode; // Corresponding UTF-8 -}; - -/* table of html name entities supported in DALi - * - * these are stored as pair with Named entity as Key and - * its utf 8 as value - */ -const XHTMLEntityLookup XHTMLEntityLookupTable[] = - { - { ""\0" ,"\x22\0" }, - { "&\0" ,"\x26\0" }, - { "'\0" ,"\x27\0" }, - { "<\0" ,"\x3c\0" }, - { ">\0" ,"\x3e\0" }, - { " \0" ,"\xc2\xa0\0" }, - { "¡\0" ,"\xc2\xa1\0" }, - { "¢\0" ,"\xc2\xa2\0" }, - { "£\0" ,"\xc2\xa3\0" }, - { "¤\0" ,"\xc2\xa4\0" }, - { "¥\0" ,"\xc2\xa5\0" }, - { "¦\0" ,"\xc2\xa6\0" }, - { "§\0" ,"\xc2\xa7\0" }, - { "¨\0" ,"\xc2\xa8\0" }, - { "©\0" ,"\xc2\xa9\0" }, - { "ª\0" ,"\xc2\xaa\0" }, - { "«\0" ,"\xc2\xab\0" }, - { "¬\0" ,"\xc2\xac\0" }, - { "­\0" ,"\xc2\xad\0" }, - { "®\0" ,"\xc2\xae\0" }, - { "¯\0" ,"\xc2\xaf\0" }, - { "°\0" ,"\xc2\xb0\0" }, - { "±\0" ,"\xc2\xb1\0" }, - { "²\0" ,"\xc2\xb2\0" }, - { "³\0" ,"\xc2\xb3\0" }, - { "´\0" ,"\xc2\xb4\0" }, - { "µ\0" ,"\xc2\xb5\0" }, - { "¶\0" ,"\xc2\xb6\0" }, - { "·\0" ,"\xc2\xb7\0" }, - { "¸\0" ,"\xc2\xb8\0" }, - { "¹\0" ,"\xc2\xb9\0" }, - { "º\0" ,"\xc2\xba\0" }, - { "»\0" ,"\xc2\xbb\0" }, - { "¼\0" ,"\xc2\xbc\0" }, - { "½\0" ,"\xc2\xbd\0" }, - { "¾\0" ,"\xc2\xbe\0" }, - { "¿\0" ,"\xc2\xbf\0" }, - { "À\0" ,"\xc3\x80\0" }, - { "Á\0" ,"\xc3\x81\0" }, - { "Â\0" ,"\xc3\x82\0" }, - { "Ã\0" ,"\xc3\x83\0" }, - { "Ä\0" ,"\xc3\x84\0" }, - { "Å\0" ,"\xc3\x85\0" }, - { "Æ\0" ,"\xc3\x86\0" }, - { "Ç\0" ,"\xc3\x87\0" }, - { "È\0" ,"\xc3\x88\0" }, - { "É\0" ,"\xc3\x89\0" }, - { "Ê\0" ,"\xc3\x8a\0" }, - { "Ë\0" ,"\xc3\x8b\0" }, - { "Ì\0" ,"\xc3\x8c\0" }, - { "Í\0" ,"\xc3\x8d\0" }, - { "Î\0" ,"\xc3\x8e\0" }, - { "Ï\0" ,"\xc3\x8f\0" }, - { "Ð\0" ,"\xc3\x90\0" }, - { "Ñ\0" ,"\xc3\x91\0" }, - { "Ò\0" ,"\xc3\x92\0" }, - { "Ó\0" ,"\xc3\x93\0" }, - { "Ô\0" ,"\xc3\x94\0" }, - { "Õ\0" ,"\xc3\x95\0" }, - { "Ö\0" ,"\xc3\x96\0" }, - { "×\0" ,"\xc3\x97\0" }, - { "Ø\0" ,"\xc3\x98\0" }, - { "Ù\0" ,"\xc3\x99\0" }, - { "Ú\0" ,"\xc3\x9a\0" }, - { "Û\0" ,"\xc3\x9b\0" }, - { "Ü\0" ,"\xc3\x9c\0" }, - { "Ý\0" ,"\xc3\x9d\0" }, - { "Þ\0" ,"\xc3\x9e\0" }, - { "ß\0" ,"\xc3\x9f\0" }, - { "à\0" ,"\xc3\xa0\0" }, - { "á\0" ,"\xc3\xa1\0" }, - { "â\0" ,"\xc3\xa2\0" }, - { "ã\0" ,"\xc3\xa3\0" }, - { "ä\0" ,"\xc3\xa4\0" }, - { "å\0" ,"\xc3\xa5\0" }, - { "æ\0" ,"\xc3\xa6\0" }, - { "ç\0" ,"\xc3\xa7\0" }, - { "è\0" ,"\xc3\xa8\0" }, - { "é\0" ,"\xc3\xa9\0" }, - { "ê\0" ,"\xc3\xaa\0" }, - { "ë\0" ,"\xc3\xab\0" }, - { "ì\0" ,"\xc3\xac\0" }, - { "í\0" ,"\xc3\xad\0" }, - { "î\0" ,"\xc3\xae\0" }, - { "ï\0" ,"\xc3\xaf\0" }, - { "ð\0" ,"\xc3\xb0\0" }, - { "ñ\0" ,"\xc3\xb1\0" }, - { "ò\0" ,"\xc3\xb2\0" }, - { "ó\0" ,"\xc3\xb3\0" }, - { "ô\0" ,"\xc3\xb4\0" }, - { "õ\0" ,"\xc3\xb5\0" }, - { "ö\0" ,"\xc3\xb6\0" }, - { "÷\0" ,"\xc3\xb7\0" }, - { "ø\0" ,"\xc3\xb8\0" }, - { "ù\0" ,"\xc3\xb9\0" }, - { "ú\0" ,"\xc3\xba\0" }, - { "û\0" ,"\xc3\xbb\0" }, - { "ü\0" ,"\xc3\xbc\0" }, - { "ý\0" ,"\xc3\xbd\0" }, - { "þ\0" ,"\xc3\xbe\0" }, - { "ÿ\0" ,"\xc3\xbf\0" }, - { "Œ\0" ,"\xc5\x92\0" }, - { "œ\0" ,"\xc5\x93\0" }, - { "Š\0" ,"\xc5\xa0\0" }, - { "š\0" ,"\xc5\xa1\0" }, - { "Ÿ\0" ,"\xc5\xb8\0" }, - { "ƒ\0" ,"\xc6\x92\0" }, - { "ˆ\0" ,"\xcb\x86\0" }, - { "˜\0" ,"\xcb\x9c\0" }, - { "Α\0" ,"\xce\x91\0" }, - { "Β\0" ,"\xce\x92\0" }, - { "Γ\0" ,"\xce\x93\0" }, - { "Δ\0" ,"\xce\x94\0" }, - { "Ε\0" ,"\xce\x95\0" }, - { "Ζ\0" ,"\xce\x96\0" }, - { "Η\0" ,"\xce\x97\0" }, - { "Θ\0" ,"\xce\x98\0" }, - { "Ι\0" ,"\xce\x99\0" }, - { "Κ\0" ,"\xce\x9a\0" }, - { "Λ\0" ,"\xce\x9b\0" }, - { "Μ\0" ,"\xce\x9c\0" }, - { "Ν\0" ,"\xce\x9d\0" }, - { "Ξ\0" ,"\xce\x9e\0" }, - { "Ο\0" ,"\xce\x9f\0" }, - { "Π\0" ,"\xce\xa0\0" }, - { "Ρ\0" ,"\xce\xa1\0" }, - { "Σ\0" ,"\xce\xa3\0" }, - { "Τ\0" ,"\xce\xa4\0" }, - { "Υ\0" ,"\xce\xa5\0" }, - { "Φ\0" ,"\xce\xa6\0" }, - { "Χ\0" ,"\xce\xa7\0" }, - { "Ψ\0" ,"\xce\xa8\0" }, - { "Ω\0" ,"\xce\xa9\0" }, - { "α\0" ,"\xce\xb1\0" }, - { "β\0" ,"\xce\xb2\0" }, - { "γ\0" ,"\xce\xb3\0" }, - { "δ\0" ,"\xce\xb4\0" }, - { "ε\0" ,"\xce\xb5\0" }, - { "ζ\0" ,"\xce\xb6\0" }, - { "η\0" ,"\xce\xb7\0" }, - { "θ\0" ,"\xce\xb8\0" }, - { "ι\0" ,"\xce\xb9\0" }, - { "κ\0" ,"\xce\xba\0" }, - { "λ\0" ,"\xce\xbb\0" }, - { "μ\0" ,"\xce\xbc\0" }, - { "ν\0" ,"\xce\xbd\0" }, - { "ξ\0" ,"\xce\xbe\0" }, - { "ο\0" ,"\xce\xbf\0" }, - { "π\0" ,"\xcf\x80\0" }, - { "ρ\0" ,"\xcf\x81\0" }, - { "ς\0" ,"\xcf\x82\0" }, - { "σ\0" ,"\xcf\x83\0" }, - { "τ\0" ,"\xcf\x84\0" }, - { "υ\0" ,"\xcf\x85\0" }, - { "φ\0" ,"\xcf\x86\0" }, - { "χ\0" ,"\xcf\x87\0" }, - { "ψ\0" ,"\xcf\x88\0" }, - { "ω\0" ,"\xcf\x89\0" }, - { "ϑ\0","\xcf\x91\0" }, - { "ϒ\0" ,"\xcf\x92\0" }, - { "ϖ\0" ,"\xcf\x96\0" }, - { " \0" ,"\xe2\x80\x82\0" }, - { " \0" ,"\xe2\x80\x83\0" }, - { " \0" ,"\xe2\x80\x89\0" }, - { "‌\0" ,"\xe2\x80\x8c\0" }, - { "‍\0" ,"\xe2\x80\x8d\0" }, - { "‎\0" ,"\xe2\x80\x8e\0" }, - { "‏\0" ,"\xe2\x80\x8f\0" }, - { "–\0" ,"\xe2\x80\x93\0" }, - { "—\0" ,"\xe2\x80\x94\0" }, - { "‘\0" ,"\xe2\x80\x98\0" }, - { "’\0" ,"\xe2\x80\x99\0" }, - { "‚\0" ,"\xe2\x80\x9a\0" }, - { "“\0" ,"\xe2\x80\x9c\0" }, - { "”\0" ,"\xe2\x80\x9d\0" }, - { "„\0" ,"\xe2\x80\x9e\0" }, - { "†\0" ,"\xe2\x80\xa0\0" }, - { "‡\0" ,"\xe2\x80\xa1\0" }, - { "•\0" ,"\xe2\x80\xa2\0" }, - { "…\0" ,"\xe2\x80\xa6\0" }, - { "‰\0" ,"\xe2\x80\xb0\0" }, - { "′\0" ,"\xe2\x80\xb2\0" }, - { "″\0" ,"\xe2\x80\xb3\0" }, - { "‹\0" ,"\xe2\x80\xb9\0" }, - { "›\0" ,"\xe2\x80\xba\0" }, - { "‾\0" ,"\xe2\x80\xbe\0" }, - { "⁄\0" ,"\xe2\x81\x84\0" }, - { "€\0" ,"\xe2\x82\xac\0" }, - { "ℑ\0" ,"\xe2\x84\x91\0" }, - { "℘\0" ,"\xe2\x84\x98\0" }, - { "ℜ\0" ,"\xe2\x84\x9c\0" }, - { "™\0" ,"\xe2\x84\xa2\0" }, - { "ℵ\0" ,"\xe2\x84\xb5\0" }, - { "←\0" ,"\xe2\x86\x90\0" }, - { "↑\0" ,"\xe2\x86\x91\0" }, - { "→\0" ,"\xe2\x86\x92\0" }, - { "↓\0" ,"\xe2\x86\x93\0" }, - { "↔\0" ,"\xe2\x86\x94\0" }, - { "↵\0" ,"\xe2\x86\xb5\0" }, - { "⇐\0" ,"\xe2\x87\x90\0" }, - { "⇑\0" ,"\xe2\x87\x91\0" }, - { "⇒\0" ,"\xe2\x87\x92\0" }, - { "⇓\0" ,"\xe2\x87\x93\0" }, - { "⇔\0" ,"\xe2\x87\x94\0" }, - { "∀\0" ,"\xe2\x88\x80\0" }, - { "∂\0" ,"\xe2\x88\x82\0" }, - { "∃\0" ,"\xe2\x88\x83\0" }, - { "∅\0" ,"\xe2\x88\x85\0" }, - { "∇\0" ,"\xe2\x88\x87\0" }, - { "∈\0" ,"\xe2\x88\x88\0" }, - { "∉\0" ,"\xe2\x88\x89\0" }, - { "∋\0" ,"\xe2\x88\x8b\0" }, - { "∏\0" ,"\xe2\x88\x8f\0" }, - { "∑\0" ,"\xe2\x88\x91\0" }, - { "−\0" ,"\xe2\x88\x92\0" }, - { "∗\0" ,"\xe2\x88\x97\0" }, - { "√\0" ,"\xe2\x88\x9a\0" }, - { "∝\0" ,"\xe2\x88\x9d\0" }, - { "∞\0" ,"\xe2\x88\x9e\0" }, - { "∠\0" ,"\xe2\x88\xa0\0" }, - { "∧\0" ,"\xe2\x88\xa7\0" }, - { "∨\0" ,"\xe2\x88\xa8\0" }, - { "∩\0" ,"\xe2\x88\xa9\0" }, - { "∪\0" ,"\xe2\x88\xaa\0" }, - { "∫\0" ,"\xe2\x88\xab\0" }, - { "∴\0" ,"\xe2\x88\xb4\0" }, - { "∼\0" ,"\xe2\x88\xbc\0" }, - { "≅\0" ,"\xe2\x89\x85\0" }, - { "≈\0" ,"\xe2\x89\x88\0" }, - { "≠\0" ,"\xe2\x89\xa0\0" }, - { "≡\0" ,"\xe2\x89\xa1\0" }, - { "≤\0" ,"\xe2\x89\xa4\0" }, - { "≥\0" ,"\xe2\x89\xa5\0" }, - { "⊂\0" ,"\xe2\x8a\x82\0" }, - { "⊃\0" ,"\xe2\x8a\x83\0" }, - { "⊄\0" ,"\xe2\x8a\x84\0" }, - { "⊆\0" ,"\xe2\x8a\x86\0" }, - { "⊇\0" ,"\xe2\x8a\x87\0" }, - { "⊕\0" ,"\xe2\x8a\x95\0" }, - { "⊗\0" ,"\xe2\x8a\x97\0" }, - { "⊥\0" ,"\xe2\x8a\xa5\0" }, - { "⋅\0" ,"\xe2\x8b\x85\0" }, - { "⌈\0" ,"\xe2\x8c\x88\0" }, - { "⌉\0" ,"\xe2\x8c\x89\0" }, - { "⌊\0" ,"\xe2\x8c\x8a\0" }, - { "⌋\0" ,"\xe2\x8c\x8b\0" }, - { "◊\0" ,"\xe2\x97\x8a\0" }, - { "♠\0" ,"\xe2\x99\xa0\0" }, - { "♣\0" ,"\xe2\x99\xa3\0" }, - { "♥\0" ,"\xe2\x99\xa5\0" }, - { "♦\0" ,"\xe2\x99\xa6\0" }, - { "⟨\0" ,"\xe2\x9f\xa8\0" }, - { "⟩\0" ,"\xe2\x9f\xa9\0" } -}; - -const std::size_t XHTMLENTITY_LOOKUP_COUNT = (sizeof( XHTMLEntityLookupTable))/ (sizeof(XHTMLEntityLookup)); - -} // unnamed namespace - -const char* const NamedEntityToUtf8( const char* const markupText, unsigned int len ) -{ - // finding if given XHTML named entity is supported or not - for( size_t i = 0; i < XHTMLENTITY_LOOKUP_COUNT ; ++i ) - { - unsigned int entityLen = strlen(XHTMLEntityLookupTable[i].entityName); - if( len == entityLen ) - { - if( strncmp( markupText, XHTMLEntityLookupTable[i].entityName, len ) == 0 ) // if named Entity found in table - { - return XHTMLEntityLookupTable[i].entityCode; - } - } - } - return NULL; -} - -} // namespace Text - -} // namespace Toolkit - -} // namespace Dali diff --git a/dali-toolkit/internal/text/xhtml-entities.h b/dali-toolkit/internal/text/xhtml-entities.h deleted file mode 100755 index 523dd53..0000000 --- a/dali-toolkit/internal/text/xhtml-entities.h +++ /dev/null @@ -1,45 +0,0 @@ -#ifndef __DALI_TOOLKIT_TEXT_XHTML_ENTITIES_H__ -#define __DALI_TOOLKIT_TEXT_XHTML_ENTITIES_H__ - -/* - * Copyright (c) 2017 Samsung Electronics Co., Ltd. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - * - */ - -namespace Dali -{ - -namespace Toolkit -{ - -namespace Text -{ -/** - * @brief Retrieves UTF8 entity code for corresponding XHTML named Entity. - * - * @param[in] markupText The XHTML named entity. - * @param[int] len Length of markupText. - * - * @return pointer to UTF8 entity code if namedEntity found in table otherwise NULL - */ -const char* const NamedEntityToUtf8( const char* const markupText, unsigned int len ); - -} // namespace Text - -} // namespace Toolkit - -} // namespace Dali - -#endif // __DALI_TOOLKIT_TEXT_XHTML_ENTITIES_H__ diff --git a/docs/content/images/text-controls/SpecialCharacter1.png b/docs/content/images/text-controls/SpecialCharacter1.png deleted file mode 100755 index 6515a8be1a4700212524b3ca747c630cdddbb536..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1689 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 diff --git a/docs/content/images/text-controls/XHTML_entity.png b/docs/content/images/text-controls/XHTML_entity.png deleted file mode 100755 index b656a5f7bf6548682abdc87c6bcb3c2692a5a136..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4367 zcmd5h_7&3-4de1q(bDe+BKfmvFeV6BXzSrm8KKK3HPrQYh0mnJOIVL714kJTd zOD3k%VvKLZ*;9;X=54KB#)~=F(mqRkc@$>QTo*Rl@iodR_&3*Br&NW?a-D|3bhKA1#qx-aUb#D&iD@_gwxj0L=1z@<&GxIW;9jTv_1nGE!e9r?F_ zQE&f9=#lyOGZKAwtL5Hu5Y*QVrzcS4m7WJ{mO7c1FY9>! zt$g}nqubQA}Am2V;^T8DA$_1gN zS%U)na4VS}e&9n6d_XB1YthTM<13s}-Qyy=z$x-%jjY>Sw|ZLr=rjmMbuT*DE_QX6 zc1Sy`26ddCiq(8hmmpu=Vjr(vn5waFz1$AyHa$N%>AcBT5py(*SiJ2C^^70ypU%Df z^Vac!5EK*^3!4anB!}jDP2q+_0`($tGnMWF|B6tMmNA=3UfAY3+jNs-k2_C+tQPhn zc=SM%{{v#K)m_JA*aFt>_T!Ih9&H&SGjR#6H%*1cHEa{FW;|4K8wTaz-d}K-y5i;b zU?|R{@Iw`3ImU@F+y4k0x_4eq0STDq{O1~S0}1i(Dut|lC`UUoWH~m z=jIF0>)zff4pN`?&7mK`so~u>I_<%b+Or#R_H>|;sT3gPhIYZi9^ZDBT-fWn`4qTc z<$#88#cf-v2NaYAm(^E_BQY-`Jtmu#yT|J$AqXQuzFY6@}AN(&OkUP7Y3 zXAGmaiHp>&O9+N}5eY~uI!6(Rcx!5b23Y#)*d|l~^z|Q~KnDWGKe0N?T({)=xD_So zJb%<>=fFR~@P0GxFsddTA3VB0V4|bv`m%ihXj+7W00CSA$UHzf72V5|*AOr3Vd}*?#+CsZP0;#FeFK3bx!bMGm zK0am<;4*Fn*p_0AksKVwYC%-a;@?g~`ww+y4ipBLiErE3!!EZo8ygA{Uqxs1MslqX zrP^(iRt=|m`bx;4y>#mg5FKW>=nLON3wqo$jnpt|t4{76m$!KR(p zT6slQ7rYf&?Z_N6cL9mpuY(;t%vRgqu}=?+K}q`yTJw8CS1X!5r1mADtEt4uD4ZDY zEZV<{1u?GTd>P64D;6_4?}6G$C){~W69_2%x(nM3bkf6#N&DDN>N29A?&J1?nA79| zCXgPx6nxHdZ%4(=r`3NRHtg#${2+K%mha}%jWgv=9B2rT7<>Qh#Cp5V@^yCNdOOg) zEAOSae)FWtL31pe9AH`U?3;Y;*t?R4=tlyr!%UHZUvb^#DST5yhq`01HM9;nM9A4`srgFok{ z>{9f7*+Mx&D&F2YMk8tj4I_wtHeP$88(3*yqXw)P;M{znDbJc>M2Ba!L>tMxL)uh& z=+Ozf^<{bMSsof=d6q%jO?~8RwvzxPR7<1r_~P(_wj_k-Bgvv0YDJ? zGib8sdyO?<(^#t8`a5UZ;u{J;TS>YRe(vfCTsBLp@UJs*xSisXa`Wwmc{H}kXl~7p zk|;O9^B=~~@9p#a@Y9%1c;~{op|$x2IbSxPs9rlIQokK5JJSln=?clYbLquZqQ(JA zu{p+dtKY=3A3d0~W_y(vN%oFGJzFna`2_Wa3U4*^ZW)q}voVC{7mm5t=Q^VpvrD{5 zCk(H-B8YNXbDdEHuSOxkyN!Z25DOG{^+8KH@@l@4%~Q|q=!^sIq=M$FTvq8xmnC96 zUwVSAVFOge=7p+pjc6pJrULDENslI*N&9?1gs2~BExN!*H7~TEK3F> z(V5hyCQgA&Gyvt|T)x@`u>#tA88Z=*o7632O@!$Zq^dGAs?wI1B>R}0x4EucJ(Fav zDZ~@gBbH?Fs6a-Bmz~J&{!&NkFKhQ~6iXJ^iuFa5?|z{id@Q{KxffdX;q+tb4!f1w z0FB;3j|fxrC`t>@LbS6CqtmJ?ax#<%30-$*J{J0&gk=#zo;LB3Mi~T_#IIFX^@#9JU)C2|BViBNP zo8QFxR&rRzE~)Qe)8_YY*Pg7C+Uz8kXwYOKPjp)S&ovr-P3jI`S?-(eB87(NKGE_M z?82WIM}<+10+nkU4JGnJ)=vkKsHej`8l4?L*U=KYUqkpPUyV{pY1#o{#|W(esq%cql4 zjwRZx0X*(gLR4k2>ZA@b&1>6oK??gVM=U8S z;SVqvdGC_F;s3FSYE=mfF^87Z&*Fp``{_V#Wj#tEI`9xUwHPj{);jaho$!Q8`dfJW zrtDCoTwZ(0dHef@@-vFLOQA(qan4yWuP)-3()^NHQt>#ArGqpC*IhEk4mT+qBK6%3 zZHc|RqNDeOennT+C9>jq23E}1|KJJ2`SDO)NNvhG-C?Y#nF=9X@d9;u631Ahr7rn5 z9&h|)7C$hYYr=d5EEsLd5 zR_ti0N^3Tmyh&A&a;G@!L*b)H5o{ZaflbF~`;VCJIj=?1N!(>bFCT!7*(TO@7vs`d?CW(`+kCy#vw+Gc~A|mX7 zwBjitcR#D~E!(KbzKf*pGRL%I)vchpc*PedcETQYny<15BD4&s`+n7$(WuVHQ;U<7 z*79Y&gMu%2{~`a1f|C-NQB--)C9ebaG>;aFZxv(7F2=(MT3;NUOxoabF*^K3ktJcN zUiaSS7c21_E4F@|S{?$tg&;qNoCh;Hs0gbFWYeC+b=+%f2#=C7Sm~eA(&F#%^R~QkqGSQ>?_lB0Sd0L^ms&wP zMs@BT!l@vAJCw>DAEZblP^5`1^h>sW;WxjpdiEb8vz+jv%!xAJzK+h&%V^KDL+4P= z3e_8enBY{=m}jqp6Hdapq#aOCKU|&tsGGX%;a40SniFJ zVrBpl9(FrbVgfORsB$2GL)_fcIVQGQ>c3JVlz`Q?)+iPTL)dXfbfrR)qPc< zaK<64jFGp^J_S7EqVC}&E~T)8{6tMDg|eXPRKhbi6Y~?65XUaG#b!BSk51e5%r{zc zn%)n|{M{E : Greater Than. It means end of tag. -- & : Ampersand. It means beginning of XHTML Entity. - -> "&" usage in markup style changed from Tizen 4.0. -"To display special character needs as regular, prepend it with two backslashes in the string." - -Below are some examples - -~~~{.cpp} -// C++ ( Wrong usage to print text "Testing of < special character" ) -field.SetProperty( TextLabel::Property::TEXT, "Testing of < special character" ); -~~~ - -![ ](SpecialCharacter1.png) - -~~~{.cpp} -// C++ ( Wrong usage to print text "Testing of & special character" ) -field.SetProperty( TextLabel::Property::TEXT, "Testing of & special character" ); -~~~ - -![ ](SpecialCharacter1.png) - -~~~{.cpp} -// C++ ( Correct usage to print text "Testing of & < > special characters" ) -field.SetProperty( TextLabel::Property::TEXT, "Testing of \\& \\< \\> special characters" ); -~~~ - -![ ](SpecialCharacters.png) - */ -- 2.7.4