// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void ConvertOrientations::dataCheck() { setErrorCondition(0); if(getInputType() == getOutputType()) { QString ss = QObject::tr("Input and output orientation representation types must be different"); setErrorCondition(-1000); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if( getInputType() < OrientationConverter<float>::GetMinIndex() || getInputType() > OrientationConverter<float>::GetMaxIndex() ) { QString ss = QObject::tr("There was an error with teh selection of the input orientation type. The valid values range from 0 to %1").arg(OrientationConverter<float>::GetMaxIndex()); setErrorCondition(-1001); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } if( getOutputType() < OrientationConverter<float>::GetMinIndex() || getOutputType() > OrientationConverter<float>::GetMaxIndex() ) { QString ss = QObject::tr("There was an error with the selection of the output orientation type. The valid values range from 0 to %1").arg(OrientationConverter<float>::GetMaxIndex()); setErrorCondition(-1002); notifyErrorMessage(getHumanLabel(), ss, getErrorCondition()); } // We need to return NOW because the next lines assume we have and index that is within // the valid bounds if(getErrorCondition() < 0) { return; } // Figure out what kind of Array the user selected // Get the input data and create the output Data appropriately IDataArray::Pointer iDataArrayPtr = getDataContainerArray()->getPrereqIDataArrayFromPath<IDataArray, AbstractFilter>(this, getInputOrientationArrayPath()); DataArrayPath outputArrayPath = getInputOrientationArrayPath(); outputArrayPath.setDataArrayName(getOutputOrientationArrayName()); FloatArrayType::Pointer fArray = std::dynamic_pointer_cast<FloatArrayType>(iDataArrayPtr); if(NULL != fArray.get()) { QVector<int32_t> componentCounts = OrientationConverter<float>::GetComponentCounts(); QVector<size_t> outputCDims(1, componentCounts[getOutputType()]); getDataContainerArray()->createNonPrereqArrayFromPath<DataArray<float>, AbstractFilter, float>(this, outputArrayPath, 0, outputCDims); } DoubleArrayType::Pointer dArray = std::dynamic_pointer_cast<DoubleArrayType>(iDataArrayPtr); if(NULL != dArray.get()) { QVector<int32_t> componentCounts = OrientationConverter<double>::GetComponentCounts(); QVector<size_t> outputCDims(1, componentCounts[getOutputType()]); getDataContainerArray()->createNonPrereqArrayFromPath<DataArray<double>, AbstractFilter, double>(this, outputArrayPath, 0, outputCDims); } }
bool EDITOR::handleInputColumnSetUsingPattern(int joy, int button) { if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return false; RowsSelection* current_selection = selection.getCopyOfCurrentRowsSelection(); if (current_selection->size() == 0) return false; RowsSelection::iterator current_selection_begin(current_selection->begin()); RowsSelection::iterator current_selection_end(current_selection->end()); int pattern_offset = 0, current_pattern = taseditorConfig.currentPattern; for(RowsSelection::iterator it(current_selection_begin); it != current_selection_end; it++) { // skip lag frames if (taseditorConfig.autofirePatternSkipsLag && greenzone.lagLog.getLagInfoAtFrame(*it) == LAGGED_YES) continue; currMovieData.records[*it].setBitValue(joy, button, patterns[current_pattern][pattern_offset] != 0); pattern_offset++; if (pattern_offset >= (int)patterns[current_pattern].size()) pattern_offset -= patterns[current_pattern].size(); } int first_changes = history.registerChanges(MODTYPE_PATTERN, *current_selection_begin, *current_selection->rbegin(), 0, patternsNames[current_pattern].c_str()); if (first_changes >= 0) { greenzone.invalidateAndUpdatePlayback(first_changes); return true; } else return false; }
// ---------------------------------------------------------------------------------------------- // following functions use function parameters to determine range of frames void EDITOR::toggleInput(int start, int end, int joy, int button, int consecutivenessTag) { if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return; int check_frame = end; if (start > end) { // swap int temp_start = start; start = end; end = temp_start; } if (start < 0) start = end; if (end >= currMovieData.getNumRecords()) return; if (currMovieData.records[check_frame].checkBit(joy, button)) { // clear range for (int i = start; i <= end; ++i) currMovieData.records[i].clearBit(joy, button); greenzone.invalidateAndUpdatePlayback(history.registerChanges(MODTYPE_UNSET, start, end, 0, NULL, consecutivenessTag)); } else { // set range for (int i = start; i <= end; ++i) currMovieData.records[i].setBit(joy, button); greenzone.invalidateAndUpdatePlayback(history.registerChanges(MODTYPE_SET, start, end, 0, NULL, consecutivenessTag)); } }
int HISTORY::registerImport(MovieData& md, char* filename) { // create new snapshot SNAPSHOT snap; snap.init(md, taseditorConfig.enableHotChanges, getInputType(currMovieData)); // check if there are Input differences from latest snapshot int real_pos = (historyStartPos + historyCursorPos) % historySize; int first_changes = snap.inputlog.findFirstChange(snapshots[real_pos].inputlog); if (first_changes >= 0) { // differences found snap.keyFrame = first_changes; snap.startFrame = 0; snap.endFrame = snap.inputlog.size - 1; // fill description: snap.modificationType = MODTYPE_IMPORT; strcat(snap.description, modCaptions[snap.modificationType]); // add filename to description strcat(snap.description, " "); strncat(snap.description, filename, SNAPSHOT_DESCRIPTION_MAX_LEN - strlen(snap.description) - 1); if (taseditorConfig.enableHotChanges) { // do not inherit old hotchanges, because imported Input (most likely) doesn't have direct connection with recent edits, so old hotchanges are irrelevant and should not be copied snap.inputlog.fillHotChanges(snapshots[real_pos].inputlog, first_changes); } addItemToHistoryLog(snap); // Replace current movie data with this snapshot's InputLog, not changing Greenzone's LagLog snap.inputlog.toMovie(currMovieData); pianoRoll.updateLinesCount(); branches.setChangesMadeSinceBranch(); project.setProjectChanged(); } return first_changes; }
// ----------------------------------------------------------------------------- // // ----------------------------------------------------------------------------- void ConvertOrientations::readFilterParameters(AbstractFilterParametersReader* reader, int index) { reader->openFilterGroup(this, index); setInputType(reader->readValue("InputType", getInputType() ) ); setOutputType(reader->readValue("OutputType", getOutputType() ) ); setInputOrientationArrayPath(reader->readDataArrayPath("InputOrientationArrayPath", getInputOrientationArrayPath())); setOutputOrientationArrayName(reader->readString("OutputOrientationArrayName", getOutputOrientationArrayName())); reader->closeFilterGroup(); }
void generate(Lumix::OutputBlob& blob) override { if(!m_inputs[0]) return; if(!m_inputs[1]) return; m_inputs[0]->generate(blob); m_inputs[1]->generate(blob); auto input0_type = getInputType(0); bool is_matrix = input0_type == ShaderEditor::ValueType::MATRIX3 || input0_type == ShaderEditor::ValueType::MATRIX4; blob << "\t" << getValueTypeName(getInputType(1)) << " v" << m_id << " = "; if (m_operation == MULTIPLICATION && is_matrix) { blob << "mul("; m_inputs[0]->printReference(blob); blob << (", "); m_inputs[1]->printReference(blob); blob << (");\n"); } else { m_inputs[0]->printReference(blob); switch (m_operation) { case MULTIPLICATION: blob << " * "; break; case DIVISION: blob << " / "; break; case ADDITION: blob << " + "; break; case SUBTRACTION: blob << " - "; break; default: ASSERT(false); blob << " * "; break; } m_inputs[1]->printReference(blob); blob << (";\n"); } }
int main() { srand(time(NULL)); int outputType = 0; int inputType = 0; int wordsInStream = 0; ifstream inFile; ofstream outFile; char fileContents[MAXFILECONTENTSLENGTH]; inputType = getInputType(inFile); outputType = getOutputType(outFile); //user selected to read from file if (inputType == 1) readFileContents(inFile, fileContents); //user selected to read from keyboard if (inputType == 2) readKeyboardContents(fileContents); wordsInStream = countInputStreamWords(fileContents); //just send a 0 to start it convertEs(fileContents, 0, outFile); //replace(fileContents, "s ", "es"); //user selected to output to a file /*if (outputType == 1) toFile(outFile, fileContents); //user selected to putput to the screen if (outputType == 2) toScreen(fileContents);*/ inFile.close(); outFile.close(); return 0; }
bool EDITOR::handleInputColumnSet(int joy, int button) { if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return false; RowsSelection* current_selection = selection.getCopyOfCurrentRowsSelection(); if (current_selection->size() == 0) return false; RowsSelection::iterator current_selection_begin(current_selection->begin()); RowsSelection::iterator current_selection_end(current_selection->end()); //inspect the selected frames, if they are all set, then unset all, else set all bool newValue = false; for(RowsSelection::iterator it(current_selection_begin); it != current_selection_end; it++) { if (!(currMovieData.records[*it].checkBit(joy,button))) { newValue = true; break; } } // apply newValue for(RowsSelection::iterator it(current_selection_begin); it != current_selection_end; it++) currMovieData.records[*it].setBitValue(joy,button,newValue); int first_changes; if (newValue) { first_changes = history.registerChanges(MODTYPE_SET, *current_selection_begin, *current_selection->rbegin()); } else { first_changes = history.registerChanges(MODTYPE_UNSET, *current_selection_begin, *current_selection->rbegin()); } if (first_changes >= 0) { greenzone.invalidateAndUpdatePlayback(first_changes); return true; } else return false; }
void EDITOR::setInputUsingPattern(int start, int end, int joy, int button, int consecutivenessTag) { if (joy < 0 || joy >= joysticksPerFrame[getInputType(currMovieData)]) return; if (start > end) { // swap int temp_start = start; start = end; end = temp_start; } if (start < 0) start = end; if (end >= currMovieData.getNumRecords()) return; int pattern_offset = 0, current_pattern = taseditorConfig.currentPattern; bool changes_made = false; bool value; for (int i = start; i <= end; ++i) { // skip lag frames if (taseditorConfig.autofirePatternSkipsLag && greenzone.lagLog.getLagInfoAtFrame(i) == LAGGED_YES) continue; value = (patterns[current_pattern][pattern_offset] != 0); if (currMovieData.records[i].checkBit(joy, button) != value) { changes_made = true; currMovieData.records[i].setBitValue(joy, button, value); } pattern_offset++; if (pattern_offset >= (int)patterns[current_pattern].size()) pattern_offset -= patterns[current_pattern].size(); } if (changes_made) greenzone.invalidateAndUpdatePlayback(history.registerChanges(MODTYPE_PATTERN, start, end, 0, patternsNames[current_pattern].c_str(), consecutivenessTag)); }
Attribute Parser::getAttributes(wstring tag, wstring content) { Attribute attrs; wstring page = content; wstring onetag = L""; int foundS = 0; int foundE = 0; //초기화 attrs.identity.isPre = false; attrs.identity.isP = false; attrs.identity.isCenter = false; attrs.identity.isAddress = false; attrs.font.isBold = false; attrs.font.isCursive = false; attrs.font.underscore = false; attrs.font.size = 20; if (tag == L"h1") attrs.font.size = 40; else if (tag == L"h2") attrs.font.size = 35; else if (tag == L"h3") attrs.font.size = 30; else if (tag == L"h4") attrs.font.size = 25; else if (tag == L"h5") attrs.font.size = 21; else if (tag == L"h6") attrs.font.size = 15; if (tag == L"pre") attrs.identity.isPre = true; if (tag == L"p") attrs.identity.isP = true; if (tag == L"center") attrs.identity.isCenter = true; if (tag == L"address") attrs.identity.isAddress = true; if (tag == L"address") attrs.font.isCursive = true; if (tag == L"b") attrs.font.isBold = true; //태그 전체를 읽어 parsing한다. foundS = page.find(L"<" + tag); foundE = page.find(L">"); onetag = page.substr(foundS, foundE - foundS + 1); //form 속성 if (tag == L"form") { attrs.form.action = getFormAction(onetag); attrs.form.method = getFormMethod(onetag); } //input 속성 if (tag == L"input") { attrs.input.value = getInputValue(onetag); attrs.input.type = getInputType(onetag); attrs.input.name = getInputName(onetag); } //img 속성 if (tag == L"img") attrs.img = getImgInfo(onetag); //span 속성 if (tag == L"span") attrs.font.style = getSpanstyle(onetag); //a 속성 if (tag == L"a") { attrs.hyper.href = getHyperRef(onetag); attrs.font.underscore = true; attrs.font.style = L"color:blue"; } return attrs; }
ShaderEditor::ValueType getOutputType(int) const override { if (m_inputs[0]) return getInputType(0); return ShaderEditor::ValueType::VEC4; }
ShaderEditor::ValueType getOutputType(int) const override { return m_inputs[1] ? getInputType(1) : ShaderEditor::ValueType::NONE; }
ShaderEditor::ValueType getOutputType(int) const override { return getInputType(1); }
QString SetupWizard::getSummaryText() { QString summary = ""; summary.append("<b>").append(tr("Controller type: ")).append("</b>"); switch(getControllerType()) { case CONTROLLER_CC: summary.append(tr("OpenPilot CopterControl")); break; case CONTROLLER_CC3D: summary.append(tr("OpenPilot CopterControl 3D")); break; case CONTROLLER_REVO: summary.append(tr("OpenPilot Revolution")); break; case CONTROLLER_PIPX: summary.append(tr("OpenPilot PipX Radio Modem")); break; default: summary.append(tr("Unknown")); break; } summary.append("<br>"); summary.append("<b>").append(tr("Vehicle type: ")).append("</b>"); switch (getVehicleType()) { case VEHICLE_MULTI: summary.append(tr("Multirotor")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: summary.append(tr("Tricopter")); break; case SetupWizard::MULTI_ROTOR_QUAD_X: summary.append(tr("Quadcopter X")); break; case SetupWizard::MULTI_ROTOR_QUAD_PLUS: summary.append(tr("Quadcopter +")); break; case SetupWizard::MULTI_ROTOR_HEXA: summary.append(tr("Hexacopter")); break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: summary.append(tr("Hexacopter Coax (Y6)")); break; case SetupWizard::MULTI_ROTOR_HEXA_H: summary.append(tr("Hexacopter X")); break; case SetupWizard::MULTI_ROTOR_OCTO: summary.append(tr("Octocopter")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: summary.append(tr("Octocopter Coax X")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: summary.append(tr("Octocopter Coax +")); break; case SetupWizard::MULTI_ROTOR_OCTO_V: summary.append(tr("Octocopter V")); break; default: summary.append(tr("Unknown")); break; } break; case VEHICLE_FIXEDWING: summary.append(tr("Fixed wing")); break; case VEHICLE_HELI: summary.append(tr("Helicopter")); break; case VEHICLE_SURFACE: summary.append(tr("Surface vehicle")); break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("Input type: ")).append("</b>"); switch (getInputType()) { case INPUT_PWM: summary.append(tr("PWM (One cable per channel)")); break; case INPUT_PPM: summary.append(tr("PPM (One cable for all channels)")); break; case INPUT_SBUS: summary.append(tr("Futaba S.Bus")); break; case INPUT_DSM2: summary.append(tr("Spektrum satellite (DSM2)")); break; case INPUT_DSMX10: summary.append(tr("Spektrum satellite (DSMX10BIT)")); break; case INPUT_DSMX11: summary.append(tr("Spektrum satellite (DSMX11BIT)")); break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("ESC type: ")).append("</b>"); switch (getESCType()) { case ESC_LEGACY: summary.append(tr("Legacy ESC (50 Hz)")); break; case ESC_RAPID: summary.append(tr("Rapid ESC (400 Hz)")); break; default: summary.append(tr("Unknown")); } /* summary.append("<br>"); summary.append("<b>").append(tr("Reboot required: ")).append("</b>"); summary.append(isRestartNeeded() ? tr("<font color='red'>Yes</font>") : tr("<font color='green'>No</font>")); */ return summary; }
QString SetupWizard::getSummaryText() { QString summary = ""; summary.append("<b>").append(tr("Controller type: ")).append("</b>"); switch (getControllerType()) { case CONTROLLER_CC: summary.append(tr("OpenPilot CopterControl")); break; case CONTROLLER_CC3D: summary.append(tr("OpenPilot CopterControl 3D")); break; case CONTROLLER_REVO: summary.append(tr("OpenPilot Revolution")); break; case CONTROLLER_NANO: summary.append(tr("OpenPilot Nano")); break; case CONTROLLER_OPLINK: summary.append(tr("OpenPilot OPLink Radio Modem")); break; case CONTROLLER_DISCOVERYF4: summary.append(tr("OpenPilot DiscoveryF4 Development Board")); break; default: summary.append(tr("Unknown")); break; } summary.append("<br>"); summary.append("<b>").append(tr("Vehicle type: ")).append("</b>"); switch (getVehicleType()) { case VEHICLE_MULTI: summary.append(tr("Multirotor")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::MULTI_ROTOR_TRI_Y: summary.append(tr("Tricopter")); break; case SetupWizard::MULTI_ROTOR_QUAD_X: summary.append(tr("Quadcopter X")); break; case SetupWizard::MULTI_ROTOR_QUAD_PLUS: summary.append(tr("Quadcopter +")); break; case SetupWizard::MULTI_ROTOR_HEXA: summary.append(tr("Hexacopter")); break; case SetupWizard::MULTI_ROTOR_HEXA_COAX_Y: summary.append(tr("Hexacopter Coax (Y6)")); break; case SetupWizard::MULTI_ROTOR_HEXA_H: summary.append(tr("Hexacopter H")); break; case SetupWizard::MULTI_ROTOR_HEXA_X: summary.append(tr("Hexacopter X")); break; case SetupWizard::MULTI_ROTOR_OCTO: summary.append(tr("Octocopter")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_X: summary.append(tr("Octocopter Coax X")); break; case SetupWizard::MULTI_ROTOR_OCTO_COAX_PLUS: summary.append(tr("Octocopter Coax +")); break; case SetupWizard::MULTI_ROTOR_OCTO_V: summary.append(tr("Octocopter V")); break; default: summary.append(tr("Unknown")); break; } break; case VEHICLE_FIXEDWING: summary.append(tr("Fixed wing")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::FIXED_WING_DUAL_AILERON: summary.append(tr("Dual Aileron")); break; case SetupWizard::FIXED_WING_AILERON: summary.append(tr("Aileron")); break; case SetupWizard::FIXED_WING_ELEVON: summary.append(tr("Elevon")); break; default: summary.append(tr("Unknown")); break; } break; case VEHICLE_HELI: summary.append(tr("Helicopter")); break; case VEHICLE_SURFACE: summary.append(tr("Surface vehicle")); summary.append("<br>"); summary.append("<b>").append(tr("Vehicle sub type: ")).append("</b>"); switch (getVehicleSubType()) { case SetupWizard::GROUNDVEHICLE_CAR: summary.append(tr("Car")); break; case SetupWizard::GROUNDVEHICLE_DIFFERENTIAL: summary.append(tr("Tank")); break; case SetupWizard::GROUNDVEHICLE_MOTORCYCLE: summary.append(tr("Motorcycle")); break; default: summary.append(tr("Unknown")); break; } break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("Input type: ")).append("</b>"); switch (getInputType()) { case INPUT_PWM: summary.append(tr("PWM (One cable per channel)")); break; case INPUT_PPM: summary.append(tr("PPM (One cable for all channels)")); break; case INPUT_SBUS: summary.append(tr("Futaba S.Bus")); break; case INPUT_DSM: summary.append(tr("Spektrum Satellite")); break; default: summary.append(tr("Unknown")); } summary.append("<br>"); summary.append("<b>").append(tr("Speed Controller (ESC) type: ")).append("</b>"); switch (getEscType()) { case ESC_STANDARD: summary.append(tr("Standard ESC (%1 Hz)").arg(VehicleConfigurationHelper::LEGACY_ESC_FREQUENCY)); break; case ESC_RAPID: summary.append(tr("Rapid ESC (%1 Hz)").arg(VehicleConfigurationHelper::RAPID_ESC_FREQUENCY)); break; case ESC_SYNCHED: summary.append(tr("Synched ESC")); break; case ESC_ONESHOT: summary.append(tr("Oneshot ESC")); break; default: summary.append(tr("Unknown")); } // If Tricopter show tail servo speed if (getVehicleSubType() == MULTI_ROTOR_TRI_Y || getVehicleType() == VEHICLE_FIXEDWING || getVehicleSubType() == GROUNDVEHICLE_MOTORCYCLE || getVehicleSubType() == GROUNDVEHICLE_CAR) { summary.append("<br>"); summary.append("<b>").append(tr("Servo type: ")).append("</b>"); switch (getServoType()) { case SERVO_ANALOG: summary.append(tr("Analog Servos (50 Hz)")); break; case SERVO_DIGITAL: summary.append(tr("Digital Servos (333 Hz)")); break; default: summary.append(tr("Unknown")); } } // Show GPS Type if (getControllerType() == CONTROLLER_REVO || getControllerType() == CONTROLLER_NANO) { summary.append("<br>"); summary.append("<b>").append(tr("GPS type: ")).append("</b>"); switch (getGpsType()) { case GPS_PLATINUM: summary.append(tr("OpenPilot Platinum")); break; case GPS_UBX: summary.append(tr("OpenPilot v8 or Generic UBLOX GPS")); break; case GPS_NMEA: summary.append(tr("Generic NMEA GPS")); break; default: summary.append(tr("None")); } } // Show Airspeed sensor type if ((getControllerType() == CONTROLLER_REVO || getControllerType() == CONTROLLER_NANO) && getVehicleType() == VEHICLE_FIXEDWING) { summary.append("<br>"); summary.append("<b>").append(tr("Airspeed Sensor: ")).append("</b>"); switch (getAirspeedType()) { case AIRSPEED_ESTIMATE: summary.append(tr("Software Estimated")); break; case AIRSPEED_EAGLETREE: summary.append(tr("EagleTree on Flexi-Port")); break; case AIRSPEED_MS4525: summary.append(tr("MS4525 based on Flexi-Port")); break; default: summary.append(tr("Unknown")); } } return summary; }
// virtual, so subclasses can be more descriptive CString CProcess::getInputTypeDisplayName() { return getFileTypeDisplayName(getInputType()); }