void Letter::showLetter() { letterEdit = new QTextEdit(this); letterEdit->setReadOnly(true); letterEdit->setAlignment(Qt::AlignHCenter); letterEdit->setFontPointSize(12); QPalette bgPalette; QPixmap bgPixmap(":/data/letter.png"); bgPalette.setBrush(QPalette::Base, QBrush(bgPixmap)); letterEdit->setPalette(bgPalette); letterTimer = new QTimer(this); connect(letterTimer, SIGNAL(timeout()), this, SLOT(appendLetter())); this->layout()->addWidget(letterEdit); letterTimer->start(200); keySequence.clear(); connect(this, SIGNAL(keyMatched(QByteArray)), this, SLOT(fireworks())); }
/** * Load a font from a font file * * @param filename Font filename * * @return Font struct */ FONT* loadFont(char* filename) { FONT* font = (FONT*)malloc(sizeof(FONT)); LETTER* currentLetter=0; wchar_t wideBuffer[10]; mbstate_t conversionState; font->length=0; font->fontHeight=1; char* buffer = (char*)malloc(200); const char* convStr; size_t len; unsigned int i; FILE* f = fopen(filename, "r"); if (!f) { fprintf(stderr, " * Could not open font %s\n", filename); return 0; } fprintf(stdout, " * Opening font %s", filename); fflush(stdout); while (!feof(f)) { getline(&buffer, &len, f); trim(buffer); if (strlen(buffer)>0) { switch (buffer[0]) { case '[': convStr = buffer; memset(&conversionState, 0, sizeof(mbstate_t)); mbsrtowcs(wideBuffer, &convStr, strlen(buffer), &conversionState); currentLetter = appendLetter(font); currentLetter->letter = wideBuffer[1]; break; case 'b': appendLetterData(currentLetter, fromBinary(&buffer[1])); break; default: break; } } } printf("Done\n"); fclose(f); free(buffer); fprintf(stdout, " => %d characteres loaded\n", font->length); return font; }