void AppendToString(std::stringstream& aStream, TextureFlags flags, const char* pfx, const char* sfx) { aStream << pfx; if (flags == TextureFlags::NO_FLAGS) { aStream << "NoFlags"; } else { #define AppendFlag(test) \ { \ if (!!(flags & test)) { \ if (previous) { \ aStream << "|"; \ } \ aStream << #test; \ previous = true; \ } \ } bool previous = false; AppendFlag(TextureFlags::USE_NEAREST_FILTER); AppendFlag(TextureFlags::ORIGIN_BOTTOM_LEFT); AppendFlag(TextureFlags::DISALLOW_BIGIMAGE); #undef AppendFlag } aStream << sfx; }
nsACString& AppendToString(nsACString& s, TextureFlags flags, const char* pfx, const char* sfx) { s += pfx; if (!flags) { s += "NoFlags"; } else { #define AppendFlag(test) \ { \ if (flags & test) { \ if (previous) { \ s += "|"; \ } \ s += #test; \ previous = true; \ } \ } bool previous = false; AppendFlag(TEXTURE_USE_NEAREST_FILTER); AppendFlag(TEXTURE_NEEDS_Y_FLIP); AppendFlag(TEXTURE_DISALLOW_BIGIMAGE); AppendFlag(TEXTURE_ALLOW_REPEAT); AppendFlag(TEXTURE_NEW_TILE); #undef AppendFlag } return s += sfx; }
/** * Calcs the flags for a code point. * @returns true if there is a flag. * @returns false if the isn't. */ static bool CalcFlags(struct CPINFO *pInfo, char *pszFlags) { pszFlags[0] = '\0'; /** @todo read the specs on this other vs standard stuff, and check out the finer points */ if (pInfo->fAlphabetic || pInfo->fOtherAlphabetic) AppendFlag(pszFlags, "RTUNI_ALPHA"); if (pInfo->fHexDigit || pInfo->fASCIIHexDigit) AppendFlag(pszFlags, "RTUNI_XDIGIT"); if (!strcmp(pInfo->pszGeneralCategory, "Nd")) AppendFlag(pszFlags, "RTUNI_DDIGIT"); if (pInfo->fWhiteSpace) AppendFlag(pszFlags, "RTUNI_WSPACE"); if (pInfo->fUppercase || pInfo->fOtherUppercase) AppendFlag(pszFlags, "RTUNI_UPPER"); if (pInfo->fLowercase || pInfo->fOtherLowercase) AppendFlag(pszFlags, "RTUNI_LOWER"); //if (pInfo->???) // AppendFlag(pszFlags, "RTUNI_BSPACE"); #if 0 if (pInfo->fInvNFD_QC != 0 || pInfo->fInvNFC_QC != 0) { AppendFlag(pszFlags, "RTUNI_QC_NFX"); if (!pInfo->paDecompositionMapping && pInfo->fInvNFD_QC) fprintf(stderr, "uniread: U+%05X is QC_NFD but has no mappings.\n", pInfo->CodePoint); else if (*pInfo->pszDecompositionType && pInfo->fInvNFD_QC) fprintf(stderr, "uniread: U+%05X is QC_NFD but has no canonical mappings.\n", pInfo->CodePoint); } else if (pInfo->paDecompositionMapping && !*pInfo->pszDecompositionType) fprintf(stderr, "uniread: U+%05X is not QC_NFX but has canonical mappings.\n", pInfo->CodePoint); #endif if (!*pszFlags) { pszFlags[0] = '0'; pszFlags[1] = '\0'; return false; } return true; }