qulonglong WritingSystems::get(FcPattern *pat) const { qulonglong ws(0); FcLangSet *langset(0); if (FcResultMatch==FcPatternGetLangSet(pat, FC_LANG, 0, &langset)) { for (int i = 0; constLanguageForWritingSystem[i].lang; ++i) if (FcLangDifferentLang!=FcLangSetHasLang(langset, constLanguageForWritingSystem[i].lang)) ws|=toBit(constLanguageForWritingSystem[i].ws); } else ws|=toBit(QFontDatabase::Other); FcCharSet *cs(0); if (FcResultMatch == FcPatternGetCharSet(pat, FC_CHARSET, 0, &cs)) { // some languages are not supported by FontConfig, we rather check the // charset to detect these for (int i = 0; QFontDatabase::Any!=sampleCharForWritingSystem[i].ws; ++i) if (FcCharSetHasChar(cs, sampleCharForWritingSystem[i].ch)) ws|=toBit(sampleCharForWritingSystem[i].ws); } return ws; }
void SceneRenderState::renderMask(U32 mask) { constexpr bool validateRenderMask = false; if (validateRenderMask) { auto validateMask = [mask]() -> U32 { U32 validMask = 0; for (U32 stateIt = 1; stateIt <= to_base(RenderOptions::COUNT); ++stateIt) { U32 bitState = toBit(stateIt); if (BitCompare(mask, bitState)) { DIVIDE_ASSERT(static_cast<RenderOptions>(bitState) != RenderOptions::PLAY_ANIMATIONS, "SceneRenderState::renderMask error: can't update animation state directly!"); SetBit(validMask, bitState); } } return validMask; }; U32 parsedMask = validateMask(); DIVIDE_ASSERT(parsedMask != 0 && parsedMask == mask, "SceneRenderState::renderMask error: Invalid state specified!"); _stateMask = parsedMask; } else { _stateMask = mask; } }