示例#1
0
HTRecord* HTRecord::getInstance(Symbols* symbols, CARD16 index, CARD16 lastSSIndex) {
    // 0
	CARD16 word = symbols->file->getCARD16();
    bool   anyInternal = bitField(word, 0);
    bool   anyPublic   = bitField(word, 1);
    CARD16 link        = bitField(word, 2, 15);
    // 1
    CARD16 ssIndex     = symbols->file->getCARD16();
    // ss.substring(lastSSIndex, data.ssIndex);
    QString value       = symbols->ss.mid(lastSSIndex, ssIndex - lastSSIndex);

    return new HTRecord(symbols, index, anyInternal, anyPublic, link, ssIndex, value);
}
示例#2
0
文件: qpf2.cpp 项目: husninazer/qt
static QByteArray getWritingSystems(QFontEngine *fontEngine)
{
    QByteArray os2Table = fontEngine->getSfntTable(MAKE_TAG('O', 'S', '/', '2'));
    if (os2Table.isEmpty())
        return QByteArray();

    const uchar *data = reinterpret_cast<const uchar *>(os2Table.constData());

    quint32 unicodeRange[4] = {
        qFromBigEndian<quint32>(data + 42),
        qFromBigEndian<quint32>(data + 46),
        qFromBigEndian<quint32>(data + 50),
        qFromBigEndian<quint32>(data + 54)
    };
    quint32 codePageRange[2] = { qFromBigEndian<quint32>(data + 78), qFromBigEndian<quint32>(data + 82) };
    QList<QFontDatabase::WritingSystem> systems = determineWritingSystemsFromTrueTypeBits(unicodeRange, codePageRange);

    QByteArray bitField((QFontDatabase::WritingSystemsCount + 7) / 8, 0);

    for (int i = 0; i < systems.count(); ++i) {
        int bitPos = systems.at(i);
        bitField[bitPos / 8] = bitField.at(bitPos / 8) | (1 << (bitPos % 8));
    }

    return bitField;
}
int
TimeCode::binaryGroup (int group) const
{
    if (group < 1 || group > 8)
	throw Iex::ArgExc ("Cannot extract binary group from time code "
		           "user data.  Group number is out of range.");

    int minBit = 4 * (group - 1);
    int maxBit = minBit + 3;
    return int (bitField (_user, minBit, maxBit));
}
bool
TimeCode::bgf2 () const
{
    return bool (bitField (_time, 31, 31));
}
bool
TimeCode::bgf1 () const
{
    return bool (bitField (_time, 30, 30));
}
bool
TimeCode::bgf0 () const
{
    return bool (bitField (_time, 23, 23));
}
bool
TimeCode::fieldPhase () const
{
    return bool (bitField (_time, 15, 15));
}
bool
TimeCode::colorFrame () const
{
    return bool (bitField (_time, 7, 7));
}
bool
TimeCode::dropFrame () const
{
    return bool (bitField (_time, 6, 6));
}
int
TimeCode::frame () const
{
    return bcdToBinary (bitField (_time, 0, 5));
}
int
TimeCode::seconds () const
{
    return bcdToBinary (bitField (_time, 8, 14));
}
int
TimeCode::minutes () const
{
    return bcdToBinary (bitField (_time, 16, 22));
}
int
TimeCode::hours () const
{
    return bcdToBinary (bitField (_time, 24, 29));
}
示例#14
0
Symbols::Symbols(BCD* bcd_, int symbolBase_) : bcd(bcd_) {
	bcd             = bcd_;
	file            = bcd->file;

    symbolBase      = symbolBase_;
    offsetBase      = (symbolBase - ALTO_BIAS) * WORDS_PER_PAGE;

    file->position(offsetBase);

	versionIdent = file->getCARD16();
	if (versionIdent != VersionID) {
		logger.fatal("versionIdent %d", versionIdent);
		logger.fatal("symbolBase   %d", symbolBase);
		ERROR();
	}

	version       = Stamp::getInstance(bcd) ;
	creator       = Stamp::getInstance(bcd) ;
	sourceVersion = Stamp::getInstance(bcd) ;
	logger.info("version        %s", version->toString().toLocal8Bit().constData());
	logger.info("creator        %s", creator->toString().toLocal8Bit().constData());
	logger.info("source         %s", sourceVersion->toString().toLocal8Bit().constData());

    CARD16 word = file->getCARD16();
    definitionsFile = bitField(word, 15);
    logger.info("definitionFile %d", definitionsFile);

    directoryCtx    = CTXIndex::getInstance(this, bitField(word, 1, 15));
    logger.info("directoryCtx   %s", directoryCtx->toString().toLocal8Bit().constData());
    importCtx       = CTXIndex::getInstance(this, file->getCARD16());
    logger.info("importCtx      %s", importCtx->toString().toLocal8Bit().constData());
    outerCtx        = CTXIndex::getInstance(this, file->getCARD16());
    logger.info("outerCtx       %s", outerCtx->toString().toLocal8Bit().constData());


    hvBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("hvBlock        %s", hvBlock->toString().toLocal8Bit().constData());
    htBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("htBlock        %s", htBlock->toString().toLocal8Bit().constData());
    ssBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("ssBlock        %s", ssBlock->toString().toLocal8Bit().constData());
    outerPackBlock  = BlockDescriptor::getInstance(bcd);
//    logger.info("outerPackBlock %s", outerPackBlock->toString().toLocal8Bit().constData());
    innerPackBlock  = BlockDescriptor::getInstance(bcd);
//    logger.info("innerPackBlock %s", innerPackBlock->toString().toLocal8Bit().constData());
    constBlock      = BlockDescriptor::getInstance(bcd);
//    logger.info("constBlock     %s", constBlock->toString().toLocal8Bit().constData());
    seBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("seBlock        %s", seBlock->toString().toLocal8Bit().constData());
    ctxBlock        = BlockDescriptor::getInstance(bcd);
    logger.info("ctxBlock       %s", ctxBlock->toString().toLocal8Bit().constData());
    mdBlock         = BlockDescriptor::getInstance(bcd);
    logger.info("mdBlock        %s", mdBlock->toString().toLocal8Bit().constData());
    bodyBlock       = BlockDescriptor::getInstance(bcd);
    logger.info("bodyBlock      %s", bodyBlock->toString().toLocal8Bit().constData());
    extBlock        = BlockDescriptor::getInstance(bcd);
//    logger.info("extBlock       %s", extBlock->toString().toLocal8Bit().constData());
    treeBlock       = BlockDescriptor::getInstance(bcd);
//    logger.info("treeBlock      %s", treeBlock->toString().toLocal8Bit().constData());
    litBlock        = BlockDescriptor::getInstance(bcd);
//    logger.info("litBlock       %s", litBlock->toString().toLocal8Bit().constData());
    sLitBlock       = BlockDescriptor::getInstance(bcd);
//    logger.info("sLitBlock      %s", sLitBlock->toString().toLocal8Bit().constData());
    epMapBlock      = BlockDescriptor::getInstance(bcd);
//    logger.info("epMapBlock     %s", epMapBlock->toString().toLocal8Bit().constData());
    spareBlock      = BlockDescriptor::getInstance(bcd);
//    logger.info("spareBlock     %s", spareBlock->toString().toLocal8Bit().constData());

    fgRelPgBase     = file->getCARD16();
//    logger.info("fgRelPgBase    %d", fgRelPgBase);
    fgPgCount       = file->getCARD16();
//    logger.info("fgPgCount      %d", fgPgCount);

    // Read block
    initializeSS(ssBlock);
    initializeHT(htBlock);
    initializeMD(mdBlock);
    initializeCTX(ctxBlock);
    initializeSE(seBlock);
    initializeBT(bodyBlock);
    initializeLT(litBlock);
    initializeExt(extBlock);
    initializeTree(treeBlock);

    BTIndex::checkAll();
    CTXIndex::checkAll();
    ExtIndex::checkAll();
    HTIndex::checkAll();
    LTIndex::checkAll();
    MDIndex::checkAll();
    SEIndex::checkAll();
    TreeIndex::checkAll();
};