aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSamuel Freilich <sfreilich@google.com>2023-03-31 16:28:44 -0700
committerCopybara-Service <copybara-worker@google.com>2023-03-31 16:29:19 -0700
commitc3c144536340980ad0f2f2deff40ee86629fc92f (patch)
tree4bd5c74b314c058684d504320d9fd653233bfdff
parentd00e811abe8a3b942ccc69a2e227849b3d260967 (diff)
downloadink-stroke-modeler-c3c144536340980ad0f2f2deff40ee86629fc92f.tar.gz
Make Save/Restore void
Currently, these return an error absl::Status if called before the model is initialized. But they don't really do anything in that case anyways, and it's redundant with the validation done elsewhere, in places where StrokeModelParams is actually used (e.g. in Update). It doesn't really make sense to use Save/Restore without Update, so just do validation there. PiperOrigin-RevId: 521038524
-rw-r--r--ink_stroke_modeler/stroke_modeler.cc18
-rw-r--r--ink_stroke_modeler/stroke_modeler.h4
-rw-r--r--ink_stroke_modeler/stroke_modeler_test.cc21
3 files changed, 10 insertions, 33 deletions
diff --git a/ink_stroke_modeler/stroke_modeler.cc b/ink_stroke_modeler/stroke_modeler.cc
index 0138482..741ced6 100644
--- a/ink_stroke_modeler/stroke_modeler.cc
+++ b/ink_stroke_modeler/stroke_modeler.cc
@@ -288,12 +288,7 @@ absl::Status StrokeModeler::ProcessMoveEvent(const Input &input,
return absl::OkStatus();
}
-absl::Status StrokeModeler::Save() {
- if (!stroke_model_params_.has_value()) {
- return absl::FailedPreconditionError(
- "Stroke model has not yet been initialized");
- }
-
+void StrokeModeler::Save() {
wobble_smoother_.Save();
position_modeler_.Save();
stylus_state_modeler_.Save();
@@ -302,16 +297,10 @@ absl::Status StrokeModeler::Save() {
saved_predictor_ = predictor_->MakeCopy();
}
save_active_ = true;
- return absl::OkStatus();
}
-absl::Status StrokeModeler::Restore() {
- if (!stroke_model_params_.has_value()) {
- return absl::FailedPreconditionError(
- "Stroke model has not yet been initialized");
- }
-
- if (!save_active_) return absl::OkStatus();
+void StrokeModeler::Restore() {
+ if (!save_active_) return;
wobble_smoother_.Restore();
position_modeler_.Restore();
@@ -320,7 +309,6 @@ absl::Status StrokeModeler::Restore() {
if (saved_predictor_ != nullptr) {
predictor_ = saved_predictor_->MakeCopy();
}
- return absl::OkStatus();
}
} // namespace stroke_model
diff --git a/ink_stroke_modeler/stroke_modeler.h b/ink_stroke_modeler/stroke_modeler.h
index 8fa67df..be5584d 100644
--- a/ink_stroke_modeler/stroke_modeler.h
+++ b/ink_stroke_modeler/stroke_modeler.h
@@ -94,14 +94,14 @@ class StrokeModeler {
//
// Subsequent updates can be undone by calling Restore(), until a call to
// Reset() clears the stroke or a call to Save() sets a new saved state.
- absl::Status Save();
+ void Save();
// Restores the saved state of the modeler.
//
// Discards the portion of input after the last call to Save(). This does not
// clear or modify the saved state. Does nothing if Save() has not been called
// for this stroke.
- absl::Status Restore();
+ void Restore();
private:
void ResetInternal();
diff --git a/ink_stroke_modeler/stroke_modeler_test.cc b/ink_stroke_modeler/stroke_modeler_test.cc
index 88eb288..10ac752 100644
--- a/ink_stroke_modeler/stroke_modeler_test.cc
+++ b/ink_stroke_modeler/stroke_modeler_test.cc
@@ -1626,17 +1626,6 @@ TEST(StrokeModelerTest, ResetKeepsParamsAndResetsStroke) {
ASSERT_TRUE(modeler.Update(pointer_down, results).ok());
}
-TEST(StrokeModelerTest, SaveAndRestoreWithoutInit) {
- {
- StrokeModeler modeler;
- EXPECT_EQ(modeler.Save().code(), absl::StatusCode::kFailedPrecondition);
- }
- {
- StrokeModeler modeler;
- EXPECT_EQ(modeler.Restore().code(), absl::StatusCode::kFailedPrecondition);
- }
-}
-
TEST(StrokeModelerTest, SaveAndRestore) {
StrokeModeler modeler;
ASSERT_TRUE(modeler.Reset(kDefaultParams).ok());
@@ -1644,7 +1633,7 @@ TEST(StrokeModelerTest, SaveAndRestore) {
std::vector<Result> results;
// Create a save that will be overwritten.
- EXPECT_TRUE(modeler.Save().ok());
+ modeler.Save();
EXPECT_TRUE(modeler
.Update({.event_type = Input::EventType::kDown,
@@ -1658,7 +1647,7 @@ TEST(StrokeModelerTest, SaveAndRestore) {
{.position = {-6, -2}, .velocity = {0, 0}, .time = Time(4)}, kTol)));
// Save a second time and then finish the stroke.
- EXPECT_TRUE(modeler.Save().ok());
+ modeler.Save();
results.clear();
EXPECT_TRUE(modeler
@@ -1713,7 +1702,7 @@ TEST(StrokeModelerTest, SaveAndRestore) {
kTol)));
// Restore and finish the stroke again.
- EXPECT_TRUE(modeler.Restore().ok());
+ modeler.Restore();
results.clear();
EXPECT_TRUE(modeler
.Update({.event_type = Input::EventType::kUp,
@@ -1767,7 +1756,7 @@ TEST(StrokeModelerTest, SaveAndRestore) {
kTol)));
// Restoring should not have cleared the save, so repeat one more time.
- EXPECT_TRUE(modeler.Restore().ok());
+ modeler.Restore();
results.clear();
EXPECT_TRUE(modeler
.Update({.event_type = Input::EventType::kUp,
@@ -1842,7 +1831,7 @@ TEST(StrokeModelerTest, SaveAndRestore) {
results)
.ok());
- EXPECT_TRUE(modeler.Restore().ok());
+ modeler.Restore();
// Restore should have no effect so we cannot finish the line again.
results.clear();