void rightOneWheelDegree(float angleDegree, float a, float speed) { // We multiply by 2, because, only one wheel rotates float angleRadius = angleDegree * PI_DIVIDE_1800 * 2.0f; RobotKinematics* robotKinematics = getRobotKinematics(); float rightWheelLengthForOnePulse = getRightWheelLengthForOnePulse(robotKinematics); float wheelsDistanceFromCenter = getWheelsDistanceFromCenter(robotKinematics); float realDistanceLeft = (wheelsDistanceFromCenter * angleRadius) / rightWheelLengthForOnePulse; gotoPosition(realDistanceLeft, 0.0f, a, speed); }
void BookTextView::readBookState(const Book &book) { ReadingState state; if (ZLBooleanOption(ZLCategoryKey::STATE, LAST_STATE_GROUP, STATE_VALID, false).value()) { state.Paragraph = ZLIntegerOption(ZLCategoryKey::STATE, LAST_STATE_GROUP, PARAGRAPH_OPTION_NAME, 0).value(); state.Word = ZLIntegerOption(ZLCategoryKey::STATE, LAST_STATE_GROUP, WORD_OPTION_NAME, 0).value(); state.Character = ZLIntegerOption(ZLCategoryKey::STATE, LAST_STATE_GROUP, CHAR_OPTION_NAME, 0).value(); } else { BooksDB::Instance().loadBookState(book, state); } gotoPosition(state.Paragraph, state.Word, state.Character); }
float rotationDegree(float angleDeciDegree, float a, float speed) { float angleRadius = angleDeciDegree * PI_DIVIDE_1800; RobotKinematics* robotKinematics = getRobotKinematics(); float leftWheelLengthForOnePulse = getLeftWheelLengthForOnePulse(robotKinematics); float rightWheelLengthForOnePulse = getRightWheelLengthForOnePulse(robotKinematics); float wheelsDistanceFromCenter = getWheelsDistanceFromCenter(robotKinematics); float realDistanceLeft = -(wheelsDistanceFromCenter * angleRadius) / leftWheelLengthForOnePulse; float realDistanceRight = (wheelsDistanceFromCenter * angleRadius) / rightWheelLengthForOnePulse; gotoPosition(realDistanceLeft, realDistanceRight, a, speed); return angleDeciDegree; }
float forwardMM(float distanceInMM, float a, float speed) { RobotKinematics* robotKinematics = getRobotKinematics(); float leftWheelLengthForOnePulse = getLeftWheelLengthForOnePulse(robotKinematics); float rightWheelLengthForOnePulse = getRightWheelLengthForOnePulse(robotKinematics); float realDistanceLeft = distanceInMM / leftWheelLengthForOnePulse; float realDistanceRight = distanceInMM / rightWheelLengthForOnePulse; // Go at a position in millimeter gotoPosition(realDistanceLeft, realDistanceRight, a, speed); return distanceInMM; }
bool BooksTextView::nextPage() { BooksPos saved(position()); BooksPos current(saved); do { scrollPage(true, ZLTextAreaController::NO_OVERLAPPING, 1); preparePaintInfo(); const BooksPos pos = position(); if (pos == current) { gotoPosition(saved); return false; } current = pos; } while (!textArea().isVisible()); return true; }
void BookTextView::redoPageMove() { if (canRedoPageMove()) { replaceCurrentPositionInStack(); ++myCurrentPointInStack; Position &pos = myPositionStack[myCurrentPointInStack]; myLockUndoStackChanges = true; gotoPosition(pos.first, pos.second, 0); myLockUndoStackChanges = false; if (myCurrentPointInStack + 1 == myPositionStack.size()) { myPositionStack.pop_back(); } application().refreshWindow(); } }
void BookTextView::redoPageMove() { if (canRedoPageMove()) { replaceCurrentPositionInStack(); ++myCurrentPointInStack; Position &pos = myPositionStack[myCurrentPointInStack]; myLockUndoStackChanges = true; gotoPosition(pos.Paragraph, pos.Word, pos.Character); myLockUndoStackChanges = false; if (myCurrentPointInStack + 1 == myPositionStack.size()) { myPositionStack.pop_back(); myStackChanged = true; } FBReader::Instance().refreshWindow(); } }
void serialGLCD::gotoLine(int line) { /* Uses the gotoPosition function to select "line" 1-8 on the display. Text can be written between these lines using gotoPosition. This function makes it simpler. Example: lcd.gotoLine(2); */ int y; if(line > 8) { line = 8; } else if(line < 1) { line = 1; } else { y = -8 + line * 8; gotoPosition(1,y); } }
void BookTextView::undoPageMove() { if (canUndoPageMove()) { if (myCurrentPointInStack == myPositionStack.size()) { if (!pushCurrentPositionIntoStack(false)) { -- myCurrentPointInStack; } } else { replaceCurrentPositionInStack(); } --myCurrentPointInStack; Position &pos = myPositionStack[myCurrentPointInStack]; myLockUndoStackChanges = true; gotoPosition(pos.Paragraph, pos.Word, pos.Character); myLockUndoStackChanges = false; FBReader::Instance().refreshWindow(); } }
void BookTextView::undoPageMove() { if (canUndoPageMove()) { if (myCurrentPointInStack == myPositionStack.size()) { if (!pushCurrentPositionIntoStack(false)) { -- myCurrentPointInStack; } } else { replaceCurrentPositionInStack(); } --myCurrentPointInStack; Position &pos = myPositionStack[myCurrentPointInStack]; myLockUndoStackChanges = true; gotoPosition(pos.first, pos.second, 0); myLockUndoStackChanges = false; application().refreshWindow(); } }
/************************************************************************* [LUA]Goto a position *************************************************************************/ int Object::Lua_Goto(LuaPlus::LuaState* state) { if(OT_PLAYERMYSELF != getType()) { return 0; } LuaStack args(state); if(!(args[2].IsNumber())) { Util::throwException("Object::Goto[2] param parameter error"); } if(!(args[3].IsNumber())) { Util::throwException("Object::Goto[3] param parameter error"); } gotoPosition((float)args[2].GetNumber(), (float)args[3].GetNumber()); return 0; }
void BookTextView::setModel(shared_ptr<ZLTextModel> model, const std::string &fileName) { FBView::setModel(model); myFileName = fileName; gotoPosition( ZLIntegerOption(ZLCategoryKey::STATE, fileName, PARAGRAPH_OPTION_NAME, 0).value(), ZLIntegerOption(ZLCategoryKey::STATE, fileName, WORD_OPTION_NAME, 0).value(), ZLIntegerOption(ZLCategoryKey::STATE, fileName, CHAR_OPTION_NAME, 0).value() ); myPositionStack.clear(); myCurrentPointInStack = 0; int stackSize = ZLIntegerOption(ZLCategoryKey::STATE, fileName, BUFFER_SIZE, 0).value(); if (stackSize > 0) { if (stackSize > (int)myMaxStackSize) { stackSize = myMaxStackSize; } int pointInStack = ZLIntegerOption(ZLCategoryKey::STATE, fileName, POSITION_IN_BUFFER, 0).value(); if ((pointInStack < 0) || (pointInStack > stackSize)) { pointInStack = stackSize; } myCurrentPointInStack = pointInStack; for (int i = 0; i < stackSize; ++i) { std::string bufferParagraph = BUFFER_PARAGRAPH_PREFIX; std::string bufferWord = BUFFER_WORD_PREFIX; ZLStringUtil::appendNumber(bufferParagraph, i); ZLStringUtil::appendNumber(bufferWord, i); Position pos; pos.first = ZLIntegerOption(ZLCategoryKey::STATE, fileName, bufferParagraph, -1).value(); pos.second = ZLIntegerOption(ZLCategoryKey::STATE, fileName, bufferWord, -1).value(); myPositionStack.push_back(pos); } } }
MainWindow::MainWindow(ModuleLoader &moduleLoader, const ProgramLoader &programLoader, QWidget *parent) : QMainWindow(parent), moduleLoader(moduleLoader), programLoader(programLoader) { createActions(); createMenus(); setAcceptDrops(true); treeWidget = new TreeWidget(programLoader, this); hexFileWidget = new HexFileWidget(this); logWidget = new LogWidget(); setCentralWidget(new QWidget(this)); QHBoxLayout* layout = new QHBoxLayout(centralWidget()); QTabWidget* tab = new QTabWidget(centralWidget()); tab->addTab(hexFileWidget, "hex"); tab->addTab(logWidget, "log"); layout->addWidget(treeWidget, 1); layout->addWidget(tab); layout->setContentsMargins(0,0,0,0); centralWidget()->setLayout(layout); QAction* search = new QAction(this); search->setShortcut(QKeySequence::Find); addAction(search); connect(treeWidget,SIGNAL(pathChanged(QString)), hexFileWidget, SLOT(setFile(QString))); connect(treeWidget,SIGNAL(positionChanged(qint64, qint64)), hexFileWidget, SLOT(gotoPosition(qint64))); connect(treeWidget,SIGNAL(positionChanged(qint64, qint64)), hexFileWidget, SLOT(highlight(qint64,qint64))); connect(treeWidget,SIGNAL(eventDropped(QDropEvent*)),this, SLOT(dropEvent(QDropEvent*))); connect(search, SIGNAL(triggered()), hexFileWidget, SLOT(focusSearch())); connect(treeWidget,SIGNAL(openFragmentedFile(Object&)), this, SLOT(openFragmentedFile(Object&))); connect(hexFileWidget, SIGNAL(selected(qint64)), treeWidget, SLOT(updateByFilePosition(qint64))); }
void maintainPosition(void) { gotoPosition(0.0f, 0.0f, 0.0f, 0.0f); }
float rightSimple(float pulse) { MotionParameter* motionParameter = getDefaultMotionParameters(MOTION_PARAMETER_TYPE_ROTATION); gotoPosition(pulse, pulse, motionParameter->a, motionParameter->speed); return pulse; }
float backwardSimple(float pulse) { MotionParameter* motionParameter = getDefaultMotionParameters(MOTION_PARAMETER_TYPE_FORWARD_OR_BACKWARD); gotoPosition(-pulse, pulse, motionParameter->a, motionParameter->speed); return -pulse; }
float rightOneWheelSimple(float pulse) { MotionParameter* motionParameter = getDefaultMotionParameters(MOTION_PARAMETER_TYPE_ROTATION_ONE_WHEEL); gotoPosition(pulse, 0, motionParameter->a, motionParameter->speed); return pulse; }