2 * Copyright (c) 2019 Samsung Electronics Co., Ltd.
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
8 * http://www.apache.org/licenses/LICENSE-2.0
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
19 #include <dali-toolkit/internal/text/markup-processor-embedded-item.h>
22 #include <dali/public-api/common/dali-vector.h>
26 #include <dali-toolkit/internal/text/embedded-item.h>
27 #include <dali-toolkit/internal/text/markup-processor-helper-functions.h>
40 const std::string XHTML_URL_ATTRIBUTE("url");
41 const std::string XHTML_WIDTH_ATTRIBUTE("width");
42 const std::string XHTML_HEIGHT_ATTRIBUTE("height");
43 const std::string XHTML_COLOR_BLENDING_ATTRIBUTE("color-blending");
45 const std::string NONE("none");
46 const std::string MULTIPLY("multiply");
49 void ProcessEmbeddedItem( const Tag& tag, EmbeddedItem& embeddedItem )
51 embeddedItem.url = nullptr;
52 embeddedItem.urlLength = 0u;
53 embeddedItem.width = 0u;
54 embeddedItem.height = 0u;
55 embeddedItem.colorBlendingMode = ColorBlendingMode::NONE;
57 for( Vector<Attribute>::ConstIterator it = tag.attributes.Begin(),
58 endIt = tag.attributes.End();
62 const Attribute& attribute( *it );
63 if( TokenComparison(XHTML_URL_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength ) )
65 embeddedItem.urlLength = attribute.valueLength;
66 embeddedItem.url = new char[embeddedItem.urlLength];
67 memcpy(embeddedItem.url, attribute.valueBuffer, embeddedItem.urlLength);
68 // The memory is freed when the font run is removed from the logical model.
70 else if (TokenComparison(XHTML_WIDTH_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
72 embeddedItem.width = StringToUint(attribute.valueBuffer);
74 else if (TokenComparison(XHTML_HEIGHT_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
76 embeddedItem.height = StringToUint(attribute.valueBuffer);
78 else if (TokenComparison(XHTML_COLOR_BLENDING_ATTRIBUTE, attribute.nameBuffer, attribute.nameLength))
80 if (TokenComparison(MULTIPLY, attribute.valueBuffer, attribute.valueLength))
82 embeddedItem.colorBlendingMode = ColorBlendingMode::MULTIPLY;
90 } // namespace Toolkit