Example #1
0
SimpleString Test::getFormattedName() const
{	
    const char* format = "%s(%s, %s)";
    char *stage = new char [strlen(format) - (3 * strlen("%s"))
        + getMacroName().size()
		+ group_.size () 
		+ name_.size ()
		+ 1];
	
	sprintf(stage, format,
		getMacroName().asCharString(),
		      group_.asCharString(), 
			  name_.asCharString());
	
	SimpleString formattedName(stage);
	
    delete[] stage;
	return formattedName;
}
Example #2
0
SimpleString UtestShell::getFormattedName() const
{
    SimpleString formattedName(getMacroName());
    formattedName += "(";
    formattedName += group_;
    formattedName += ", ";
    formattedName += name_;
    formattedName += ")";

    return formattedName;
}
Example #3
0
//功能:处理无用宏
void uselessMacro()
{
	int i=0;
	string temp = "";
	string single[255] = {""};
	string macroName = "";

	for(i=0; i<cmdCount; i++)
	{
		temp = command[i];
		
		if(checkDef(temp)) // 如果是宏定义语句
		{
			macroName = getMacroName(temp);  // 得到宏名
			if(1 == getMacroCount(macroName))  // 宏出现次数等于1则是没有用过
			{
				errNum[errLen] = i+1;
				errType[errLen] = 5;
				errLen++;
			}
		}
	}
}
bool SpriteState::exportSprite(const QString& filename, const QString& outputDir_,
                               const QString &postpScript, SpriteStateError* err) const
{
    setError(err, ErrNone);

    QFileInfo fileInfo(filename);

    QString outputDir;
    if (!outputDir_.isEmpty()) {
        outputDir = outputDir_;
    } else {
        outputDir = fileInfo.path();
    }

    QString binFileName  = outputDir + QDir::separator() + fileInfo.baseName() + ".lkob";
    QString textFileName = outputDir + QDir::separator() + fileInfo.baseName() + ".lkot";
    QString headerFileName = outputDir + QDir::separator() + "AnimNameDef_" + fileInfo.baseName() + ".h";

    QFile binOutput(binFileName);
    QFile textOutput(textFileName);
    QFile headerOutput(headerFileName);

    if (binOutput.exists()) {
        if (!binOutput.remove()) {
            qDebug() <<  "Error: SpriteState::exportSprite():"
                     << binOutput.fileName() << "already exists and cannot be removed";
            setError(err, ErrCantOpenReadWriteMode);
            return false;
        }
    }

    if (!binOutput.open(QFile::WriteOnly | QFile::Append)) {
        qDebug() <<  "Error: SpriteState::exportSprite(): could not open "
                 << binOutput.fileName() << " in WriteOnly mode";
        setError(err, ErrCantOpenReadWriteMode);
        return false;
    }

    if (!textOutput.open(QFile::WriteOnly | QFile::Text)) {
        qDebug() <<  "Error: SpriteState::exportSprite(): could not open "
                 << textOutput.fileName() << " in WriteOnly mode";
        setError(err, ErrCantOpenReadWriteMode);
        return false;
    }

    if (!headerOutput.open(QFile::WriteOnly | QFile::Text)) {
        qDebug() <<  "Error: SpriteState::exportSprite(): could not open "
                 << headerOutput.fileName() << " in WriteOnly mode";
        setError(err, ErrCantOpenReadWriteMode);
        return false;
    }

    /////////////////////////////////////////////////////////////////////////////////
    // Export bin and text file

    QTextStream textStream(&textOutput);
    textStream << "### Exported LvkSprite ################################\n";
    textStream << "Exported LvkSprite version 0.1\n\n";

    textStream << "# Frame Pixmaps\n";
    textStream << "# format: frameId,offset(bytes),length(bytes)\n";
    textStream << "fpixmaps(\n";

    qint64 prevOffset = 0; /* previous offset */
    qint64 offset = 0;

    for (QMapIterator<Id, LvkFrame> it(_frames); it.hasNext();) {
        LvkFrame frame = it.next().value();

        // export only those frames that are used at least in one animation
        if (!isFrameUnused(frame.id)) {
            prevOffset = offset;
            writeImageWithPostprocessing(binOutput, frame, postpScript);
            offset = binOutput.size();
            textStream << "\t" <<  frame.id << "," <<  prevOffset << "," << (offset - prevOffset) << "\n";
        }
        else
        {
            qDebug() << "Omitting unused frame " << frame.id;
        }
    }
    textStream << ")\n\n";

    binOutput.close();

    textStream << "# Animations\n";
    textStream << "# format: animationId,name\n";
    textStream << "# Animation frames\n";
    textStream << "# format: aframeId,frameId,delay,ox,oy,sticky\n";
    textStream << "animations(\n";
    for (QMapIterator<Id, LvkAnimation> it(_animations); it.hasNext();) {
        it.next();
        textStream << "\t" << it.value().toString() << "\n";
        textStream << "\taframes(\n";
        for (QListIterator<LvkAframe> it2(it.value()._aframes); it2.hasNext();) {
            textStream << "\t\t" << it2.next().toString() << "\n";
        }
        textStream << "\t)\n\n";
    }
    textStream << ")\n\n";

    textStream << "### End Exported LvkSprite ############################\n";

    textOutput.close();

    /////////////////////////////////////////////////////////////////////////////////
    // Export header file

    QString headerFileMacroName = "__" + getMacroName(headerFileName) + "__";

    QTextStream headerStream(&headerOutput);
    headerStream << "// File autogenerated by " HEADER_LATEST "\n";
    headerStream << "// -- DO NOT EDIT OR MODIFY THIS FILE --\n\n";
    headerStream << "#ifndef " << headerFileMacroName << "\n";
    headerStream << "#define " << headerFileMacroName << "\n\n";

    for (QMapIterator<Id, LvkAnimation> it(_animations); it.hasNext();) {
        it.next();
        headerStream << "#define ANIM_" << getMacroName(it.value().name) << "\t\t\t\"" << it.value().name << "\"\n";
        headerStream << "#define ANIM_" << getMacroName(it.value().name) << "_FLAGS\t\t\t 0x" << QString::number(it.value().flags, 16) << "\n";
    }
    headerStream << "\n";

    if (!_customHeader.isEmpty()) {
        headerStream << "////////////////////////////////////////////////\n";
        headerStream << "// starting custom header data\n\n";
        headerStream << _customHeader << "\n";
        headerStream << "// end custom header data\n";
        headerStream << "////////////////////////////////////////////////\n";
        headerStream << "\n";
        headerStream << "\n";
    }

    headerStream << "#endif //" << headerFileMacroName << "\n";

    headerOutput.close();

    return true;
}