// Load FtglOutlineFont
void FtglOutlineFont::loadFont()
{
    if (isLoaded()) return;

    // Check for required parameters
    if( filename() == nullptr ) {
        if (isMessageEnabled(MSG_ERROR)) {
        std::cerr << "No ttf file" << std::endl;
        }
        return;
    }

    // Generate filename
    const size_t FONTPATHNAME_LENGTH = 256;
    char fontPathname[FONTPATHNAME_LENGTH];
    if (fontDirectory() != nullptr) lcStrcpy(fontPathname, FONTPATHNAME_LENGTH, fontDirectory());
    else lcStrcpy(fontPathname, FONTPATHNAME_LENGTH, "./");
    lcStrcat(fontPathname, FONTPATHNAME_LENGTH, filename());

    FTGLOutlineFont* ftglFont = new FTGLOutlineFont(fontPathname);
    if (ftglFont != nullptr && !ftglFont->Error()) {
        // set the face size and return the pointer, then tell our base class that we have a loaded font
        ftglFont->FaceSize(getFaceSize());
        ftgl(ftglFont);
        setFontLoaded();
    }
    else {
        if (isMessageEnabled(MSG_ERROR)) {
            std::cerr << "FtglOutlineFont::loadFont() - font did not load correctly: file: \"";
            std::cerr << fontPathname << "\"";
            std::cerr << std::endl;
        }
        std::exit(1);
    }
}
예제 #2
0
    void testConstructor() {
        buildGLContext();

        FTGLOutlineFont* outlineFont = new FTGLOutlineFont( FONT_FILE);
        CPPUNIT_ASSERT( outlineFont->Error() == 0);

        CPPUNIT_ASSERT( glGetError() == GL_NO_ERROR);
    }
예제 #3
0
    void testBadDisplayList() {
        buildGLContext();

        FTGLOutlineFont* outlineFont = new FTGLOutlineFont( FONT_FILE);
        outlineFont->FaceSize(18);

        int glList = glGenLists(1);
        glNewList( glList, GL_COMPILE);

        outlineFont->Render(GOOD_ASCII_TEST_STRING);

        glEndList();

        CPPUNIT_ASSERT( glGetError() == GL_INVALID_OPERATION);
    }
예제 #4
0
    void testGoodDisplayList() {
        buildGLContext();

        FTGLOutlineFont* outlineFont = new FTGLOutlineFont( FONT_FILE);
        outlineFont->FaceSize(18);

        outlineFont->UseDisplayList(false);
        int glList = glGenLists(1);
        glNewList( glList, GL_COMPILE);

        outlineFont->Render(GOOD_ASCII_TEST_STRING);

        glEndList();

        CPPUNIT_ASSERT( glGetError() == GL_NO_ERROR);
    }
예제 #5
0
    void testRender() {
        buildGLContext();

        FTGLOutlineFont* outlineFont = new FTGLOutlineFont( FONT_FILE);
        outlineFont->Render(GOOD_ASCII_TEST_STRING);

        CPPUNIT_ASSERT( outlineFont->Error() == 0x97);   // Invalid pixels per em
        CPPUNIT_ASSERT( glGetError() == GL_NO_ERROR);

        outlineFont->FaceSize(18);
        outlineFont->Render(GOOD_ASCII_TEST_STRING);

        CPPUNIT_ASSERT( outlineFont->Error() == 0);
        CPPUNIT_ASSERT( glGetError() == GL_NO_ERROR);
    }