示例#1
0
void testApp::keyReleased(int key){
	if (key == 'd') debug = !debug;
	if (key == 'f') ofToggleFullscreen();
	if(key =='t'){
		ofBuffer buffer;
		buffer = ofBufferFromFile("image_bytes");
		printBitmap(100, 100, (uint8_t *)buffer.getBinaryBuffer());
	}
	if(key == 'p') printBitmap(300, 20, adalogo_data);
	
	if(key == ' '){
		takePicture();
	}
}
示例#2
0
int* trace(int *startPoint, int* exitpoint, int width, int heigth, int** bitmap, int** visited, int* way){
    static int depth;
    depth++;
    int x = startPoint[1];
    int y = startPoint[0];
    int routes[4] = {0, 0, 0, 0}; // 0 - вверх, 1 - вправо, 2 - вниз, 3 - влево

    int up[2]    = {y-1, x}; //стартовые точки для передачи в дочерние функции
    int right[2] = {y, x+1};
    int down[2]  = {y+1, x};
    int left[2]  = {y, x-1};

    int* result = NULL;

    usleep(1000);
    //проверка направлений
    if(visited[y-1][x] == 0)   routes[0] = 1; //вверх
    if(visited[y][x+1] == 0)   routes[1] = 1; //вправо
    if(visited[y+1][x] == 0)   routes[2] = 1; //вниз
    if(visited[y][x-1] == 0)   routes[3] = 1; //влево

    visited[y][x] = 1; //закрашиваем текущую точку

    if(y == exitpoint[0] && x == exitpoint[1]){ //записываем найденный выход в way
        increaseWay(way, x, y);
        printBitmap(bitmap, width, heigth, way, startPoint, exitpoint);
        return way;
    }

    if(routes[0] && result == NULL) result = trace(up, exitpoint, width, heigth, bitmap, visited, way); //скармливание дочерним функциям путей из текущей точки.
    if(routes[1] && result == NULL) result = trace(right, exitpoint, width, heigth, bitmap, visited, way);
    if(routes[2] && result == NULL) result = trace(down, exitpoint, width, heigth, bitmap, visited, way);
    if(routes[3] && result == NULL) result = trace(left, exitpoint, width, heigth, bitmap, visited, way);

    if(result != NULL){//записывываем текущую точку, если функция вызывалась на точке, пренадлежащей пути.
        increaseWay(way, x, y);
        printBitmap(bitmap, width, heigth, way, startPoint, exitpoint);
    }

    return result; //возвращаем NULL, если тупик, после путь от выхода.
}
示例#3
0
void Adafruit_Thermal::printBitmap(Stream *stream) {
  uint8_t  tmp;
  uint16_t width, height;

  tmp    =  stream->read();
  width  = (stream->read() << 8) + tmp;

  tmp    =  stream->read();
  height = (stream->read() << 8) + tmp;

  printBitmap(width, height, stream);
}
示例#4
0
void BMMS::mallocBMMS(void** pointer, unsigned int reqSize){


	if(work){
		*pointer = _mallocBMMS(reqSize);

		#ifdef _DEBUG
			printBitmap();
		#endif
	}else
		cudaAssert(cudaMalloc((void**)pointer,reqSize));//cudaMalloc


}
示例#5
0
int main(){
    int width, heigth, i;
    int* startPoint;
    int* exitPoint;
    int* way;
    int** bitmap;
    int** visited;

    getInput(&width, &heigth, &bitmap, &startPoint, &exitPoint); //передаем ссылки на массивы и переменные, чтобы ф-я могла в них писать

    visited = (int**) malloc(heigth * sizeof(int*));
    for(i = 0; i < width; i++)
        visited[i] = (int*) malloc(width * sizeof(int));

    visited = invert(bitmap, width, heigth); //инвертируем карту, чтобы присвоить стенкам статус посещенных точек.

    way = (int*) malloc(sizeof(int) * width * heigth);
    way[0] = 0;
    trace(startPoint, exitPoint, width, heigth, bitmap, visited, way);

    printBitmap(bitmap, width, heigth, way, startPoint, exitPoint);
    return 0;
}