[PDF Ink Signatures] Refactor PdfInkModule code that records strokes
Every time a new position gets added to a stroke, the following happens: 1) The position gets converted to a canonical position. 2) A time stamp is calculated. 3) The result of (1) and (2) gets appended to a vector. Since this happens in several places, consolidate the repeated code that performs the above actions into PdfInkModule::RecordStrokePosition(). Change-Id: I676bc66af7c8b9d085c2df82138ec85d1563d4f9 Reviewed-on: https://chromium-review.googlesource.com/c/chromium/src/+/5750615 Reviewed-by: Andy Phan <andyphan@chromium.org> Reviewed-by: Alan Screen <awscreen@chromium.org> Code-Coverage: findit-for-me@appspot.gserviceaccount.com <findit-for-me@appspot.gserviceaccount.com> Commit-Queue: Lei Zhang <thestig@chromium.org> Cr-Commit-Position: refs/heads/main@{#1335829}
This commit is contained in:

committed by
Chromium LUCI CQ

parent
708304a827
commit
30991981df
@ -359,16 +359,7 @@ bool PdfInkModule::ContinueStroke(const gfx::PointF& position) {
|
||||
if (boundary_position != last_position) {
|
||||
// Record the last point before leaving the page, if `last_position` was
|
||||
// not already on the page boundary.
|
||||
gfx::PointF canonical_boundary_position =
|
||||
ConvertEventPositionToCanonicalPosition(boundary_position,
|
||||
state.page_index);
|
||||
base::TimeDelta time_diff = base::Time::Now() - state.start_time.value();
|
||||
state.inputs.back().push_back({
|
||||
.position = InkPoint{canonical_boundary_position.x(),
|
||||
canonical_boundary_position.y()},
|
||||
.elapsed_time_seconds = static_cast<float>(time_diff.InSecondsF()),
|
||||
});
|
||||
|
||||
RecordStrokePosition(boundary_position);
|
||||
client_->Invalidate(
|
||||
state.brush->GetInvalidateArea(last_position, boundary_position));
|
||||
}
|
||||
@ -389,26 +380,12 @@ bool PdfInkModule::ContinueStroke(const gfx::PointF& position) {
|
||||
last_position);
|
||||
if (boundary_position != position) {
|
||||
// Record the first point after entering the page.
|
||||
gfx::PointF canonical_boundary_position =
|
||||
ConvertEventPositionToCanonicalPosition(boundary_position,
|
||||
state.page_index);
|
||||
base::TimeDelta time_diff = base::Time::Now() - state.start_time.value();
|
||||
state.inputs.back().push_back({
|
||||
.position = InkPoint{canonical_boundary_position.x(),
|
||||
canonical_boundary_position.y()},
|
||||
.elapsed_time_seconds = static_cast<float>(time_diff.InSecondsF()),
|
||||
});
|
||||
RecordStrokePosition(boundary_position);
|
||||
invalidation_position = boundary_position;
|
||||
}
|
||||
}
|
||||
|
||||
gfx::PointF canonical_position =
|
||||
ConvertEventPositionToCanonicalPosition(position, state.page_index);
|
||||
base::TimeDelta time_diff = base::Time::Now() - state.start_time.value();
|
||||
state.inputs.back().push_back({
|
||||
.position = InkPoint{canonical_position.x(), canonical_position.y()},
|
||||
.elapsed_time_seconds = static_cast<float>(time_diff.InSecondsF()),
|
||||
});
|
||||
RecordStrokePosition(position);
|
||||
|
||||
// Invalidate area covering a straight line between this position and the
|
||||
// previous one.
|
||||
@ -670,6 +647,18 @@ gfx::PointF PdfInkModule::ConvertEventPositionToCanonicalPosition(
|
||||
client_->GetZoom());
|
||||
}
|
||||
|
||||
void PdfInkModule::RecordStrokePosition(const gfx::PointF& position) {
|
||||
CHECK(is_drawing_stroke());
|
||||
DrawingStrokeState& state = drawing_stroke_state();
|
||||
gfx::PointF canonical_position =
|
||||
ConvertEventPositionToCanonicalPosition(position, state.page_index);
|
||||
base::TimeDelta time_diff = base::Time::Now() - state.start_time.value();
|
||||
state.inputs.back().push_back({
|
||||
.position = InkPoint{canonical_position.x(), canonical_position.y()},
|
||||
.elapsed_time_seconds = static_cast<float>(time_diff.InSecondsF()),
|
||||
});
|
||||
}
|
||||
|
||||
void PdfInkModule::ApplyUndoRedoCommands(
|
||||
const PdfInkUndoRedoModel::Commands& commands) {
|
||||
switch (PdfInkUndoRedoModel::GetCommandsType(commands)) {
|
||||
|
@ -266,6 +266,10 @@ class PdfInkModule {
|
||||
const gfx::PointF& position,
|
||||
int page_index);
|
||||
|
||||
// Helper to convert `position` to a canonical position and record it into
|
||||
// `current_tool_state_`. Can only be called when drawing.
|
||||
void RecordStrokePosition(const gfx::PointF& position);
|
||||
|
||||
void ApplyUndoRedoCommands(const PdfInkUndoRedoModel::Commands& commands);
|
||||
void ApplyUndoRedoCommandsHelper(std::set<size_t> ids, bool should_draw);
|
||||
|
||||
|
Reference in New Issue
Block a user