Skip to content

Commit 96597fb

Browse files
Ink Open Sourcecopybara-github
authored andcommitted
Make SlidingWindowModel non-experimental
PiperOrigin-RevId: 813370022
1 parent 80626b4 commit 96597fb

File tree

10 files changed

+56
-66
lines changed

10 files changed

+56
-66
lines changed

ink/brush/brush_family.cc

Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include "ink/brush/brush_coat.h"
2929
#include "ink/brush/brush_paint.h"
3030
#include "ink/brush/brush_tip.h"
31+
#include "ink/types/duration.h"
3132

3233
namespace ink {
3334

@@ -108,20 +109,17 @@ absl::Status ValidateInputModel(
108109
return absl::OkStatus();
109110
}
110111

111-
absl::Status ValidateInputModel(
112-
const BrushFamily::ExperimentalSlidingWindowModel& model) {
112+
absl::Status ValidateInputModel(const BrushFamily::SlidingWindowModel& model) {
113113
if (!model.window_size.IsFinite() ||
114114
model.window_size <= Duration32::Zero()) {
115-
return absl::InvalidArgumentError(
116-
absl::StrCat("`ExperimentalSlidingWindowModel::window_size` must be "
117-
"finite and positive. Got: ",
118-
model.window_size));
115+
return absl::InvalidArgumentError(absl::StrCat(
116+
"`SlidingWindowModel::window_size` must be finite and positive. Got: ",
117+
model.window_size));
119118
}
120119
if (model.upsampling_period <= Duration32::Zero()) {
121-
return absl::InvalidArgumentError(
122-
absl::StrCat("`ExperimentalSlidingWindowModel::upsampling_period` must "
123-
"be positive. Got: ",
124-
model.upsampling_period));
120+
return absl::InvalidArgumentError(absl::StrCat(
121+
"`SlidingWindowModel::upsampling_period` must be positive. Got: ",
122+
model.upsampling_period));
125123
}
126124
return absl::OkStatus();
127125
}
@@ -140,11 +138,9 @@ std::string ToFormattedString(
140138
return "ExperimentalNaiveModel";
141139
}
142140

143-
std::string ToFormattedString(
144-
const BrushFamily::ExperimentalSlidingWindowModel& model) {
145-
return absl::StrCat(
146-
"ExperimentalSlidingWindowModel(window_size=", model.window_size,
147-
", upsampling_period=", model.upsampling_period, ")");
141+
std::string ToFormattedString(const BrushFamily::SlidingWindowModel& model) {
142+
return absl::StrCat("SlidingWindowModel(window_size=", model.window_size,
143+
", upsampling_period=", model.upsampling_period, ")");
148144
}
149145

150146
} // namespace

ink/brush/brush_family.h

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ class BrushFamily {
5757
// period must be strictly positive (but may be infinte, to completely disable
5858
// upsampling). This is an experimental configuration which may be adjusted or
5959
// removed later.
60-
struct ExperimentalSlidingWindowModel {
60+
struct SlidingWindowModel {
6161
// The duration over which to average together nearby raw inputs. Typically
6262
// this should be somewhere in the 1 ms to 100 ms range, with 20 ms being a
6363
// reasonable default.
@@ -74,9 +74,8 @@ class BrushFamily {
7474
// inputs. Raw hardware inputs tend to be noisy, and must be smoothed before
7575
// being passed into a brush's behaviors and extruded into a mesh in order to
7676
// get a good-looking stroke.
77-
using InputModel =
78-
std::variant<SpringModel, ExperimentalRawPositionModel,
79-
ExperimentalNaiveModel, ExperimentalSlidingWindowModel>;
77+
using InputModel = std::variant<SpringModel, ExperimentalRawPositionModel,
78+
ExperimentalNaiveModel, SlidingWindowModel>;
8079

8180
// LINT.ThenChange(../strokes/internal/stroke_input_modeler_test.cc:input_model_types)
8281

ink/brush/brush_family_test.cc

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -118,12 +118,11 @@ TEST(BrushFamilyTest, StringifyInputModel) {
118118
EXPECT_EQ(absl::StrCat(
119119
BrushFamily::InputModel{BrushFamily::ExperimentalNaiveModel{}}),
120120
"ExperimentalNaiveModel");
121-
EXPECT_EQ(absl::StrCat(BrushFamily::InputModel{
122-
BrushFamily::ExperimentalSlidingWindowModel{
123-
.window_size = Duration32::Millis(125),
124-
.upsampling_period = Duration32::Infinite()}}),
125-
"ExperimentalSlidingWindowModel(window_size=125ms, "
126-
"upsampling_period=inf)");
121+
EXPECT_EQ(
122+
absl::StrCat(BrushFamily::InputModel{BrushFamily::SlidingWindowModel{
123+
.window_size = Duration32::Millis(125),
124+
.upsampling_period = Duration32::Infinite()}}),
125+
"SlidingWindowModel(window_size=125ms, upsampling_period=inf)");
127126
}
128127

129128
TEST(BrushFamilyTest, StringifyWithNoId) {
@@ -217,8 +216,7 @@ TEST(BrushFamilyTest, CreateWithTooManyCoats) {
217216
TEST(BrushFamilyTest, CreateWithInvalidInputModel) {
218217
std::vector<BrushCoat> coats = {CreateTestCoat()};
219218
BrushFamily::InputModel input_model = {
220-
BrushFamily::ExperimentalSlidingWindowModel{.window_size =
221-
Duration32::Zero()}};
219+
BrushFamily::SlidingWindowModel{.window_size = Duration32::Zero()}};
222220
EXPECT_THAT(
223221
BrushFamily::Create(coats, "", input_model),
224222
StatusIs(absl::StatusCode::kInvalidArgument, HasSubstr("window_size")));

ink/brush/fuzz_domains.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -555,7 +555,7 @@ Domain<BrushFamily::InputModel> ValidBrushFamilyInputModel() {
555555
return VariantOf(StructOf<BrushFamily::SpringModel>(),
556556
StructOf<BrushFamily::ExperimentalRawPositionModel>(),
557557
StructOf<BrushFamily::ExperimentalNaiveModel>(),
558-
StructOf<BrushFamily::ExperimentalSlidingWindowModel>(
558+
StructOf<BrushFamily::SlidingWindowModel>(
559559
FinitePositiveDuration32(), PositiveDuration32()));
560560
}
561561

ink/brush/internal/jni/brush_family_jni.cc

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ using ::ink::jni::ThrowExceptionFromStatus;
5252
constexpr jint kSpringModel = 1;
5353
constexpr jint kExperimentalRawPositionModel = 2;
5454
constexpr jint kExperimentalNaiveModel = 3;
55-
constexpr jint kExperimentalSlidingWindowModel = 4;
55+
constexpr jint kSlidingWindowModel = 4;
5656

5757
BrushFamily::InputModel TypeToInputModel(jint input_model_value) {
5858
switch (input_model_value) {
@@ -62,8 +62,8 @@ BrushFamily::InputModel TypeToInputModel(jint input_model_value) {
6262
return BrushFamily::ExperimentalRawPositionModel();
6363
case kExperimentalNaiveModel:
6464
return BrushFamily::ExperimentalNaiveModel();
65-
case kExperimentalSlidingWindowModel:
66-
return BrushFamily::ExperimentalSlidingWindowModel();
65+
case kSlidingWindowModel:
66+
return BrushFamily::SlidingWindowModel();
6767
default:
6868
ABSL_CHECK(false) << "Unknown input model value: " << input_model_value;
6969
}
@@ -78,8 +78,8 @@ jint InputModelType(const BrushFamily::InputModel& input_model) {
7878
[](const BrushFamily::ExperimentalNaiveModel&) {
7979
return kExperimentalNaiveModel;
8080
},
81-
[](const BrushFamily::ExperimentalSlidingWindowModel&) {
82-
return kExperimentalSlidingWindowModel;
81+
[](const BrushFamily::SlidingWindowModel&) {
82+
return kSlidingWindowModel;
8383
},
8484
};
8585
return std::visit(visitor, input_model);
@@ -156,7 +156,7 @@ JNI_METHOD(brush, InputModelNative, jlong, createNoParametersModel)
156156
JNI_METHOD(brush, InputModelNative, jlong, createSlidingWindowModel)
157157
(JNIEnv* env, jobject object, jlong window_size_millis,
158158
jint upsampling_frequency_hz) {
159-
return NewNativeInputModel({BrushFamily::ExperimentalSlidingWindowModel{
159+
return NewNativeInputModel({BrushFamily::SlidingWindowModel{
160160
.window_size = Duration32::Millis(window_size_millis),
161161
.upsampling_period = upsampling_frequency_hz > 0
162162
? Duration32::Seconds(1) /
@@ -177,18 +177,16 @@ JNI_METHOD(brush, InputModelNative, jint, getType)
177177

178178
JNI_METHOD(brush, InputModelNative, jlong, getSlidingWindowDurationMillis)
179179
(JNIEnv* env, jobject object, jlong native_pointer) {
180-
return static_cast<jlong>(
181-
std::get<BrushFamily::ExperimentalSlidingWindowModel>(
182-
CastToInputModel(native_pointer))
183-
.window_size.ToMillis());
180+
return static_cast<jlong>(std::get<BrushFamily::SlidingWindowModel>(
181+
CastToInputModel(native_pointer))
182+
.window_size.ToMillis());
184183
}
185184

186185
JNI_METHOD(brush, InputModelNative, jint, getSlidingUpsamplingFrequencyHz)
187186
(JNIEnv* env, jobject object, jlong native_pointer) {
188-
float upsampling_period_seconds =
189-
std::get<BrushFamily::ExperimentalSlidingWindowModel>(
190-
CastToInputModel(native_pointer))
191-
.upsampling_period.ToSeconds();
187+
float upsampling_period_seconds = std::get<BrushFamily::SlidingWindowModel>(
188+
CastToInputModel(native_pointer))
189+
.upsampling_period.ToSeconds();
192190
return static_cast<jint>(
193191
std::min(1.0f / upsampling_period_seconds,
194192
static_cast<float>(std::numeric_limits<jint>::max())));

ink/brush/type_matchers.cc

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -405,10 +405,10 @@ Matcher<BrushFamily::InputModel> BrushFamilyInputModelEqMatcher(
405405
}
406406

407407
Matcher<BrushFamily::InputModel> BrushFamilyInputModelEqMatcher(
408-
const BrushFamily::ExperimentalSlidingWindowModel& input_model) {
409-
return VariantWith<BrushFamily::ExperimentalSlidingWindowModel>(Field(
410-
"window_size", &BrushFamily::ExperimentalSlidingWindowModel::window_size,
411-
Duration32Eq(input_model.window_size)));
408+
const BrushFamily::SlidingWindowModel& input_model) {
409+
return VariantWith<BrushFamily::SlidingWindowModel>(
410+
Field("window_size", &BrushFamily::SlidingWindowModel::window_size,
411+
Duration32Eq(input_model.window_size)));
412412
}
413413

414414
[[maybe_unused]] Matcher<BrushFamily::InputModel> BrushFamilyInputModelEq(

ink/storage/brush.cc

Lines changed: 9 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1322,12 +1322,12 @@ void EncodeBrushFamilyInputModel(
13221322
}
13231323

13241324
void EncodeBrushFamilyInputModel(
1325-
const BrushFamily::ExperimentalSlidingWindowModel& model,
1325+
const BrushFamily::SlidingWindowModel& model,
13261326
proto::BrushFamily::InputModel& model_proto_out) {
1327-
proto::BrushFamily::ExperimentalSlidingWindowModel* sliding_window_model =
1328-
model_proto_out.mutable_experimental_sliding_window_model();
1327+
proto::BrushFamily::SlidingWindowModel* sliding_window_model =
1328+
model_proto_out.mutable_sliding_window_model();
13291329
sliding_window_model->set_window_size_seconds(model.window_size.ToSeconds());
1330-
sliding_window_model->set_upsampling_period_seconds(
1330+
sliding_window_model->set_experimental_upsampling_period_seconds(
13311331
model.upsampling_period.ToSeconds());
13321332
}
13331333

@@ -1350,14 +1350,13 @@ absl::StatusOr<BrushFamily::InputModel> DecodeBrushFamilyInputModel(
13501350
return BrushFamily::ExperimentalRawPositionModel{};
13511351
case proto::BrushFamily::InputModel::kExperimentalNaiveModel:
13521352
return BrushFamily::ExperimentalNaiveModel{};
1353-
case proto::BrushFamily::InputModel::kExperimentalSlidingWindowModel:
1354-
return BrushFamily::ExperimentalSlidingWindowModel{
1353+
case proto::BrushFamily::InputModel::kSlidingWindowModel:
1354+
return BrushFamily::SlidingWindowModel{
13551355
.window_size = Duration32::Seconds(
1356-
model_proto.experimental_sliding_window_model()
1357-
.window_size_seconds()),
1356+
model_proto.sliding_window_model().window_size_seconds()),
13581357
.upsampling_period = Duration32::Seconds(
1359-
model_proto.experimental_sliding_window_model()
1360-
.upsampling_period_seconds()),
1358+
model_proto.sliding_window_model()
1359+
.experimental_upsampling_period_seconds()),
13611360
};
13621361
case proto::BrushFamily::InputModel::INPUT_MODEL_NOT_SET:
13631362
break;

ink/storage/proto/brush_family.proto

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -42,11 +42,8 @@ message BrushFamily {
4242
// version of the code that has removed this feature.
4343
message ExperimentalNaiveModel {}
4444

45-
// Averages nearby inputs together within a sliding time window. This is an
46-
// experimental configuration which may be adjusted or removed later. Strokes
47-
// generated with this input model might change shape if read with a later
48-
// version of the code that has removed this feature.
49-
message ExperimentalSlidingWindowModel {
45+
// Averages nearby inputs together within a sliding time window.
46+
message SlidingWindowModel {
5047
// The duration over which to average together nearby raw inputs. Typically
5148
// this should be somewhere in the 1 ms to 100 ms range. The default value
5249
// is 20 ms.
@@ -55,15 +52,18 @@ message BrushFamily {
5552
// more than this far apart in time, then additional modeled inputs will be
5653
// inserted between them. Set this to infinity to disable upsampling. The
5754
// default value is 1/180 seconds.
58-
optional float upsampling_period_seconds = 2 [default = 0.00555555555];
55+
//
56+
// This is an experimental field which may be removed later.
57+
optional float experimental_upsampling_period_seconds = 2
58+
[default = 0.00555555555];
5959
}
6060

6161
message InputModel {
6262
oneof input_model {
6363
SpringModel spring_model = 2;
6464
ExperimentalRawPositionModel experimental_raw_position_model = 3;
6565
ExperimentalNaiveModel experimental_naive_model = 4;
66-
ExperimentalSlidingWindowModel experimental_sliding_window_model = 5;
66+
SlidingWindowModel sliding_window_model = 5;
6767
}
6868
// Was legacy InputModel type, reserved needs to be outside oneof
6969
reserved 1;

ink/strokes/internal/stroke_input_modeler.cc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ absl_nonnull std::unique_ptr<StrokeInputModeler> CreateInputModeler(
4444
}
4545

4646
absl_nonnull std::unique_ptr<StrokeInputModeler> CreateInputModeler(
47-
const BrushFamily::ExperimentalSlidingWindowModel& sliding_window_model) {
47+
const BrushFamily::SlidingWindowModel& sliding_window_model) {
4848
return std::make_unique<SlidingWindowInputModeler>(
4949
sliding_window_model.window_size, sliding_window_model.upsampling_period);
5050
}

ink/strokes/internal/stroke_input_modeler_test.cc

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -406,11 +406,11 @@ INSTANTIATE_TEST_SUITE_P(
406406
{"RawPositionModel", {BrushFamily::ExperimentalRawPositionModel{}}},
407407
{"NaiveModel", {BrushFamily::ExperimentalNaiveModel{}}},
408408
{"SlidingWindowModel_250ms_100ms",
409-
{BrushFamily::ExperimentalSlidingWindowModel{
409+
{BrushFamily::SlidingWindowModel{
410410
.window_size = Duration32::Millis(250),
411411
.upsampling_period = Duration32::Millis(100)}}},
412412
{"SlidingWindowModel_1500ms_inf",
413-
{BrushFamily::ExperimentalSlidingWindowModel{
413+
{BrushFamily::SlidingWindowModel{
414414
.window_size = Duration32::Millis(1500),
415415
.upsampling_period = Duration32::Infinite()}}},
416416
}),

0 commit comments

Comments
 (0)