diff options
Diffstat (limited to 'xfa/fde/css/cfde_cssvaluelistparser.cpp')
-rw-r--r-- | xfa/fde/css/cfde_cssvaluelistparser.cpp | 87 |
1 files changed, 0 insertions, 87 deletions
diff --git a/xfa/fde/css/cfde_cssvaluelistparser.cpp b/xfa/fde/css/cfde_cssvaluelistparser.cpp deleted file mode 100644 index 79a79818dc..0000000000 --- a/xfa/fde/css/cfde_cssvaluelistparser.cpp +++ /dev/null @@ -1,87 +0,0 @@ -// Copyright 2017 PDFium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -// Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com - -#include "xfa/fde/css/cfde_cssvaluelistparser.h" - -#include "core/fxcrt/fx_extension.h" - -CFDE_CSSValueListParser::CFDE_CSSValueListParser(const wchar_t* psz, - int32_t iLen, - wchar_t separator) - : m_Separator(separator), m_pCur(psz), m_pEnd(psz + iLen) { - ASSERT(psz && iLen > 0); -} - -bool CFDE_CSSValueListParser::NextValue(FDE_CSSPrimitiveType& eType, - const wchar_t*& pStart, - int32_t& iLength) { - while (m_pCur < m_pEnd && (*m_pCur <= ' ' || *m_pCur == m_Separator)) - ++m_pCur; - - if (m_pCur >= m_pEnd) - return false; - - eType = FDE_CSSPrimitiveType::Unknown; - pStart = m_pCur; - iLength = 0; - wchar_t wch = *m_pCur; - if (wch == '#') { - iLength = SkipTo(' ', false, false); - if (iLength == 4 || iLength == 7) - eType = FDE_CSSPrimitiveType::RGB; - } else if (std::iswdigit(wch) || wch == '.' || wch == '-' || wch == '+') { - while (m_pCur < m_pEnd && (*m_pCur > ' ' && *m_pCur != m_Separator)) - ++m_pCur; - - iLength = m_pCur - pStart; - eType = FDE_CSSPrimitiveType::Number; - } else if (wch == '\"' || wch == '\'') { - pStart++; - m_pCur++; - iLength = SkipTo(wch, false, false); - m_pCur++; - eType = FDE_CSSPrimitiveType::String; - } else if (m_pEnd - m_pCur > 5 && m_pCur[3] == '(') { - if (FXSYS_wcsnicmp(L"rgb", m_pCur, 3) == 0) { - iLength = SkipTo(')', false, false) + 1; - m_pCur++; - eType = FDE_CSSPrimitiveType::RGB; - } - } else { - iLength = SkipTo(m_Separator, true, true); - eType = FDE_CSSPrimitiveType::String; - } - return m_pCur <= m_pEnd && iLength > 0; -} - -int32_t CFDE_CSSValueListParser::SkipTo(wchar_t wch, - bool breakOnSpace, - bool matchBrackets) { - const wchar_t* pStart = m_pCur; - int32_t bracketCount = 0; - while (m_pCur < m_pEnd && *m_pCur != wch) { - if (breakOnSpace && *m_pCur <= ' ') - break; - if (!matchBrackets) { - m_pCur++; - continue; - } - - if (*m_pCur == '(') - bracketCount++; - else if (*m_pCur == ')') - bracketCount--; - - m_pCur++; - } - - while (bracketCount > 0 && m_pCur < m_pEnd) { - if (*m_pCur == ')') - bracketCount--; - m_pCur++; - } - return m_pCur - pStart; -} |