int CGadgetFont::isUnderlined() { LOGFONT info; getFontInfo(&info); return info.lfUnderline; }
int CGadgetFont::isItalic() { LOGFONT info; getFontInfo(&info); return info.lfItalic; }
bool FontMan::buildComponent(CPM_ES_CEREAL_NS::CerealCore& core, uint64_t entityID, const std::string& assetName) { uint64_t id = getIDForAsset(assetName.c_str()); if (id != 0) { // Go ahead and add a new component for the entityID. If this is the // last promise to fulfill, then systems should automatically start // rendering the data. Font component; component.fontID = id; core.addComponent(entityID, component); // Ensure we look for the texture in the correct directory (the same // directory as the font itself). std::string::size_type slashIdx = assetName.rfind('/'); std::string rootAssetName = ""; if (slashIdx != std::string::npos) { rootAssetName = assetName.substr(0, slashIdx + 1); } TextureMan& texMan = *core.getStaticComponent<StaticTextureMan>()->instance; const FontMan::FontInfo& info = getFontInfo(id); const BMFont::PageBlock& pageBlock = info.fontInfo.getPageBlock(); for (size_t i = 0; i < pageBlock.pages.size(); ++i) { // Extract texture name and replace filename in asset with this // texture name? Or should we just replace this asset's file // extension and make that the thing? std::string textureName = rootAssetName + pageBlock.pages[i]; // Ensure the texture has the appropriate itx extension. std::string::size_type dotIdx = textureName.rfind('.'); if (dotIdx != std::string::npos) { textureName = textureName.substr(0, dotIdx); } textureName += ".itx"; std::stringstream ss; ss << "uTX" << i; texMan.loadTexture(core, entityID, textureName, static_cast<int32_t>(i), ss.str()); } return true; } else { return false; } }
char* CGadgetFont::getFace() { LOGFONT info; char* fontName=new char[32]; getFontInfo(&info); strcpy(fontName,(char*)&info.lfFaceName); return fontName; }
int CGadgetFont::isBold() { LOGFONT info; getFontInfo(&info); if (info.lfWeight > FW_NORMAL) { return 1; } else { return 0; } }
int CGadgetFont::getSize() { float size; HDC screenDC; int pixelsPerInch; LOGFONT info; getFontInfo(&info); screenDC=GetDC(GetDesktopWindow()); pixelsPerInch=GetDeviceCaps(screenDC,LOGPIXELSY); ReleaseDC(GetDesktopWindow(),screenDC); size=(float)((72.0*abs(info.lfHeight))/pixelsPerInch); //Counter flooring effect of int division int sizeInt=(int)(size+0.5); return sizeInt; }