bool Crack::move() { m_ptIndex++; // continue cracking if(m_bCurved) { /* m_x += ((float) m_ys * cos(m_angle * DEG_TO_RAD)); m_y += ((float) m_ys * sin(m_angle * DEG_TO_RAD)); m_x += ((float) m_xs * cos(m_angle * DEG_TO_RAD - HALF_PI)); m_y += ((float) m_xs * sin(m_angle* DEG_TO_RAD - HALF_PI)); m_angle += m_angleStep; m_degreesDrawn += abs(m_angleStep); */ } // draw black crack if(m_ptIndex != m_pts.size()) { int ptX = m_pts[m_ptIndex].x(); int ptY = m_pts[m_ptIndex].y(); m_image.draw_point(ptX, ptY, 0, Artist::black.colour()); regionColor(); // safe to check if(m_bCurved && (m_degreesDrawn > 360) ) { findStart(); return false; } else if(m_cgrid[ptY*m_image.width() + ptX] == UNCRACKED) { // continue cracking m_cgrid[ptY*m_image.width() + ptX] = m_line.angle(); } else { // crack encountered (not self), stop cracking findStart(); return false; } } else { // out of bounds, stop cracking findStart(); return false; } return true; }
ZLTextWordCursor ZLTextAreaController::findStart(const ZLTextWordCursor &end, SizeUnit unit, int size) { ZLTextWordCursor start = end; size -= paragraphHeight(start, true, unit); bool positionChanged = !start.isStartOfParagraph(); start.moveToParagraphStart(); while (size > 0) { if (positionChanged && start.paragraphCursor().isEndOfSection()) { break; } if (!start.previousParagraph()) { break; } if (!start.paragraphCursor().isEndOfSection()) { positionChanged = true; } size -= paragraphHeight(start, false, unit); } skip(start, unit, -size); if (unit != LINE_UNIT) { bool sameStart = start == end; if (!sameStart && start.isEndOfParagraph() && end.isStartOfParagraph()) { ZLTextWordCursor startCopy = start; startCopy.nextParagraph(); sameStart = startCopy == end; } if (sameStart) { start = findStart(end, LINE_UNIT, 1); } } return start; }
void Loader::calculatePath(){ // gre po potki, start more bit na levi strani Path = {}; std::vector<int> last = {-1, -1}; start = findStart(); int i = start, j = 0; assert(i >= 0 && "Start of the map must be on the left side!"); Path.push_back(RIGHT); while(i>=0 && j>=0 && i<mapSize && j<mapSize){ if(last[0]!=i+1 && i<mapSize-1 && MAPOFTHEGAME[i+1][j] == '#'){ Path.push_back(DOWN); last = {i, j}; i++; }else if(last[0]!=i-1 && i>0 && MAPOFTHEGAME[i-1][j] == '#'){ Path.push_back(UP); last = {i, j}; i--; }else if(last[1]!=j+1 && j<mapSize-1 && MAPOFTHEGAME[i][j+1] == '#'){ Path.push_back(RIGHT); last = {i, j}; j++; }else if(last[1]!=j-1 && j>0 && MAPOFTHEGAME[i][j-1] == '#'){ Path.push_back(LEFT); last = {i, j}; j--; }else{ break; } } }
int search(int A[], int n, int target) { if(n == 0) return -1; int start = findStart(A, n); if(start == 0){ return binarySearch(A, 0, n - 1, target); } else{ int index = binarySearch(A, 0, start - 1, target); if(index != -1) return index; return binarySearch(A, start, n - 1, target); } }
bool ZLTextAreaController::preparePaintInfo() { if ((myPaintState == NOTHING_TO_PAINT) || (myPaintState == READY)) { return false; } myArea.myLineInfoCache.insert(myArea.myLineInfos.begin(), myArea.myLineInfos.end()); switch (myPaintState) { default: break; case TO_SCROLL_FORWARD: if (!myArea.myEndCursor.paragraphCursor().isLast() || !myArea.myEndCursor.isEndOfParagraph()) { ZLTextWordCursor startCursor; switch (myScrollingMode) { case NO_OVERLAPPING: break; case KEEP_LINES: startCursor = findLineFromEnd(myOverlappingValue); break; case SCROLL_LINES: startCursor = findLineFromStart(myOverlappingValue); if (startCursor.isEndOfParagraph()) { startCursor.nextParagraph(); } break; case SCROLL_PERCENTAGE: startCursor = findPercentFromStart(myOverlappingValue); break; } if (!startCursor.isNull() && (startCursor == myArea.myStartCursor)) { startCursor = findLineFromStart(1); } if (!startCursor.isNull()) { ZLTextWordCursor endCursor = buildInfos(startCursor); if (!visiblePageIsEmpty() && ((myScrollingMode != KEEP_LINES) || (endCursor != myArea.myEndCursor))) { myArea.myStartCursor = startCursor; myArea.myEndCursor = endCursor; break; } } myArea.myStartCursor = myArea.myEndCursor; myArea.myEndCursor = buildInfos(myArea.myStartCursor); } break; case TO_SCROLL_BACKWARD: if (!myArea.myStartCursor.paragraphCursor().isFirst() || !myArea.myStartCursor.isStartOfParagraph()) { switch (myScrollingMode) { case NO_OVERLAPPING: myArea.myStartCursor = findStart(myArea.myStartCursor, PIXEL_UNIT, myArea.height()); break; case KEEP_LINES: { ZLTextWordCursor endCursor = findLineFromStart(myOverlappingValue); if (!endCursor.isNull() && (endCursor == myArea.myEndCursor)) { endCursor = findLineFromEnd(1); } if (!endCursor.isNull()) { ZLTextWordCursor startCursor = findStart(endCursor, PIXEL_UNIT, myArea.height()); myArea.myStartCursor = (startCursor != myArea.myStartCursor) ? startCursor : findStart(myArea.myStartCursor, PIXEL_UNIT, myArea.height()); } else { myArea.myStartCursor = findStart(myArea.myStartCursor, PIXEL_UNIT, myArea.height()); } break; } case SCROLL_LINES: myArea.myStartCursor = findStart(myArea.myStartCursor, LINE_UNIT, myOverlappingValue); break; case SCROLL_PERCENTAGE: myArea.myStartCursor = findStart(myArea.myStartCursor, PIXEL_UNIT, myArea.height() * myOverlappingValue / 100); break; } myArea.myEndCursor = buildInfos(myArea.myStartCursor); if (visiblePageIsEmpty()) { myArea.myStartCursor = findStart(myArea.myStartCursor, LINE_UNIT, 1); myArea.myEndCursor = buildInfos(myArea.myStartCursor); } } break; case START_IS_KNOWN: myArea.myEndCursor = buildInfos(myArea.myStartCursor); if (visiblePageIsEmpty()) { ZLTextWordCursor startCursor = findLineFromStart(1); if (!startCursor.isNull()) { myArea.myStartCursor = startCursor; if (myArea.myStartCursor.isEndOfParagraph()) { myArea.myStartCursor.nextParagraph(); } myArea.myEndCursor = buildInfos(myArea.myStartCursor); } } break; case END_IS_KNOWN: myArea.myStartCursor = findStart(myArea.myEndCursor, PIXEL_UNIT, myArea.height()); myArea.myEndCursor = buildInfos(myArea.myStartCursor); break; } myPaintState = READY; myArea.myLineInfoCache.clear(); return true; }
int main(void){ InitDevice(); setup_Interrupt(); CANSetup(); I2CSetup(); heartBeatCounter = 0; FIRST_SEND = 1; I2C_FLAG = 0; CHIP_ALIVE_DIODE = 1; HEARTBEAT_DIODE = 0; ERROR_DIODE = 0; #ifdef TEST_RFID while(1){ int start_condition = multiToSingle(); if(start_condition == 1){ singleToBit(); int start = findStart(); bitToCode(start); } Delay(10); } #endif while(1){ if(ECAN_Receive()){ FIRST_SEND = 0; HEARTBEAT_DIODE = 1; i2c_reg_map[REC_BATTERYSTATUS0] = MAP_REC_BATTERYSTATUS0; i2c_reg_map[REC_BATTERYSTATUS1] = MAP_REC_BATTERYSTATUS1; i2c_reg_map[REC_BATTERYSTATUS2] = 0;//not used i2c_reg_map[REC_BATTERYSTATUS3] = 0;//not used i2c_reg_map[REC_VELOCITY] = MAP_REC_VELOCITY; i2c_reg_map[REC_HEARTBEAT] = temp_D2;//always one (heartbeat) i2c_reg_map[6] = temp_D6; i2c_reg_map[7] = temp_D7; heartBeatCounter = 0; } if(heartBeatCounter > 35){ //danger i2c_reg_map[2] = 0; } if(I2C_FLAG){ I2C_FLAG = 0; zipCAN(); ECAN_Transmit(0x32,0xC0, 0x02, MAP_BITDATA,//zipped data i2c_reg_map[SEND_ACCELERATOR], i2c_reg_map[10],//dummy values i2c_reg_map[11],//dummy values i2c_reg_map[12],//dummy values i2c_reg_map[13],//dummy values i2c_reg_map[14],//dummy values i2c_reg_map[15]);//dummy values } //checkRFID(); Delay(ONE_MS * 5); } return 0; }
void TextView::preparePaintInfo() { context().setLeftMargin(TextStyleCollection::instance().baseStyle().LeftMarginOption.value()); context().setRightMargin(TextStyleCollection::instance().baseStyle().RightMarginOption.value()); context().setTopMargin(TextStyleCollection::instance().baseStyle().TopMarginOption.value()); context().setBottomMargin(TextStyleCollection::instance().baseStyle().BottomMarginOption.value()); int newWidth = context().width(); int newHeight = myStyle.textAreaHeight(); if ((newWidth != myOldWidth) || (newHeight != myOldHeight)) { myOldWidth = newWidth; myOldHeight = newHeight; rebuildPaintInfo(false); } if ((myPaintState == NOTHING_TO_PAINT) || (myPaintState == READY)) { return; } myLineInfoCache.insert(myLineInfos.begin(), myLineInfos.end()); switch (myPaintState) { default: break; case TO_SCROLL_FORWARD: if (!myEndCursor.paragraphCursor().isLast() || !myEndCursor.isEndOfParagraph()) { WordCursor startCursor; switch (myScrollingMode) { case NO_OVERLAPPING: break; case KEEP_LINES: startCursor = findLineFromEnd(myOverlappingValue); break; case SCROLL_LINES: startCursor = findLineFromStart(myOverlappingValue); break; case SCROLL_PERCENTAGE: startCursor = findPercentFromStart(myOverlappingValue); break; } if (!startCursor.isNull() && (startCursor == myStartCursor)) { startCursor = findLineFromStart(1); } if (!startCursor.isNull()) { WordCursor endCursor = buildInfos(startCursor); if (!pageIsEmpty() && ((myScrollingMode != KEEP_LINES) || (endCursor != myEndCursor))) { myStartCursor = startCursor; myEndCursor = endCursor; break; } } myStartCursor = myEndCursor; myEndCursor = buildInfos(myStartCursor); } break; case TO_SCROLL_BACKWARD: if (!myStartCursor.paragraphCursor().isFirst() || !myStartCursor.isStartOfParagraph()) { switch (myScrollingMode) { case NO_OVERLAPPING: myStartCursor = findStart(myStartCursor, PIXEL_UNIT, myStyle.textAreaHeight()); break; case KEEP_LINES: { WordCursor endCursor = findLineFromStart(myOverlappingValue); if (!endCursor.isNull() && (endCursor == myEndCursor)) { endCursor = findLineFromEnd(1); } if (!endCursor.isNull()) { WordCursor startCursor = findStart(endCursor, PIXEL_UNIT, myStyle.textAreaHeight()); myStartCursor = (startCursor != myStartCursor) ? startCursor : findStart(myStartCursor, PIXEL_UNIT, myStyle.textAreaHeight()); } else { myStartCursor = findStart(myStartCursor, PIXEL_UNIT, myStyle.textAreaHeight()); } break; } case SCROLL_LINES: myStartCursor = findStart(myStartCursor, LINE_UNIT, myOverlappingValue); break; case SCROLL_PERCENTAGE: myStartCursor = findStart(myStartCursor, PIXEL_UNIT, myStyle.textAreaHeight() * myOverlappingValue / 100); break; } myEndCursor = buildInfos(myStartCursor); } break; case START_IS_KNOWN: myEndCursor = buildInfos(myStartCursor); break; case END_IS_KNOWN: myStartCursor = findStart(myEndCursor, PIXEL_UNIT, myStyle.textAreaHeight()); myEndCursor = buildInfos(myStartCursor); break; } myPaintState = READY; myLineInfoCache.clear(); }
Crack::Crack(Image& image, std::vector<uint>& cgrid, const Colour& colour, float curvedPercentage, float degreesFromPerpendicular) : m_image(image), m_cgrid(cgrid), m_perlinPainter(image, colour), m_curvedPercentage(curvedPercentage), m_degreesFromPerpendicular(degreesFromPerpendicular) { findStart(); }