30 lines
547 B
C++
30 lines
547 B
C++
#pragma once
|
|
|
|
#include <Arduino.h>
|
|
#include <vector>
|
|
|
|
struct Token {
|
|
uint32_t offset;
|
|
uint16_t length;
|
|
uint32_t paragraph;
|
|
};
|
|
|
|
class Reader {
|
|
public:
|
|
bool load(const String& book);
|
|
void restoreAtParagraphStart(uint32_t savedWord);
|
|
const String currentWord() const;
|
|
bool advance();
|
|
bool previousParagraph();
|
|
bool nextParagraph();
|
|
uint32_t currentIndex() const;
|
|
uint32_t delayMs(uint16_t wpm) const;
|
|
|
|
private:
|
|
String book_;
|
|
std::vector<Token> tokens_;
|
|
std::vector<uint32_t> paragraphStarts_;
|
|
uint32_t index_ = 0;
|
|
};
|
|
|