bool CGUIDialogSmartPlaylistRule::OnMessage(CGUIMessage& message) { switch ( message.GetMessage() ) { case GUI_MSG_CLICKED: { int iControl = message.GetSenderId(); if (iControl == CONTROL_OK) OnOK(); else if (iControl == CONTROL_CANCEL) OnCancel(); else if (iControl == CONTROL_VALUE) { std::string parameter; OnEditChanged(iControl, parameter); m_rule.SetParameter(parameter); } else if (iControl == CONTROL_OPERATOR) OnOperator(); else if (iControl == CONTROL_FIELD) OnField(); else if (iControl == CONTROL_BROWSE) OnBrowse(); return true; } break; case GUI_MSG_VALIDITY_CHANGED: CONTROL_ENABLE_ON_CONDITION(CONTROL_OK, message.GetParam1()); break; } return CGUIDialog::OnMessage(message); }
void CPDF_StreamContentParser::EndKeyword() { CPDF_Object *pObj = NULL; if (m_WordSize == 4) { if (*(FX_DWORD*)m_pWordBuf == FXDWORD_TRUE) { pObj = CPDF_Boolean::Create(TRUE); if (!SetToCurObj(pObj)) { pObj->Release(); } return; } else if (*(FX_DWORD*)m_pWordBuf == FXDWORD_NULL) { pObj = CPDF_Null::Create(); if (!SetToCurObj(pObj)) { pObj->Release(); } return; } } else if (m_WordSize == 5) { if (*(FX_DWORD*)m_pWordBuf == FXDWORD_FALS && m_pWordBuf[4] == 'e') { pObj = CPDF_Boolean::Create(FALSE); if (!SetToCurObj(pObj)) { pObj->Release(); } return; } } m_pWordBuf[m_WordSize] = 0; OnOperator((char*)m_pWordBuf); ClearAllParams(); }
FX_DWORD CPDF_StreamContentParser::Parse(const uint8_t* pData, FX_DWORD dwSize, FX_DWORD max_cost) { if (m_Level > _FPDF_MAX_FORM_LEVEL_) { return dwSize; } FX_DWORD InitObjCount = m_pObjectList->CountObjects(); CPDF_StreamParser syntax(pData, dwSize); CPDF_StreamParserAutoClearer auto_clearer(&m_pSyntax, &syntax); m_CompatCount = 0; while (1) { FX_DWORD cost = m_pObjectList->CountObjects() - InitObjCount; if (max_cost && cost >= max_cost) { break; } switch (syntax.ParseNextElement()) { case CPDF_StreamParser::EndOfData: return m_pSyntax->GetPos(); case CPDF_StreamParser::Keyword: OnOperator((char*)syntax.GetWordBuf()); ClearAllParams(); break; case CPDF_StreamParser::Number: AddNumberParam((char*)syntax.GetWordBuf(), syntax.GetWordSize()); break; case CPDF_StreamParser::Name: AddNameParam((const FX_CHAR*)syntax.GetWordBuf() + 1, syntax.GetWordSize() - 1); break; default: AddObjectParam(syntax.GetObject()); } } return m_pSyntax->GetPos(); }
FX_DWORD CPDF_StreamContentParser::Parse(FX_LPCBYTE pData, FX_DWORD dwSize, FX_DWORD max_cost) { if (m_Level > _FPDF_MAX_FORM_LEVEL_) { return dwSize; } FX_DWORD InitObjCount = m_pObjectList->CountObjects(); CPDF_StreamParser syntax(pData, dwSize); m_pSyntax = &syntax; m_CompatCount = 0; while (1) { FX_DWORD cost = m_pObjectList->CountObjects() - InitObjCount; if (max_cost && cost >= max_cost) { break; } switch (syntax.ParseNextElement()) { case CPDF_StreamParser::EndOfData: return m_pSyntax->GetPos(); case CPDF_StreamParser::Keyword: if(!OnOperator((char*)syntax.GetWordBuf()) && _PDF_HasInvalidOpChar((char*)syntax.GetWordBuf())) { m_bAbort = TRUE; } if (m_bAbort) { return m_pSyntax->GetPos(); } ClearAllParams(); break; case CPDF_StreamParser::Number: AddNumberParam((char*)syntax.GetWordBuf(), syntax.GetWordSize()); break; case CPDF_StreamParser::Name: AddNameParam((FX_LPCSTR)syntax.GetWordBuf() + 1, syntax.GetWordSize() - 1); break; default: AddObjectParam(syntax.GetObject()); } } return m_pSyntax->GetPos(); }