From 40beb7744a61248de82a6077996c83c14e0122c2 Mon Sep 17 00:00:00 2001 From: Raph Levien Date: Mon, 6 Apr 2015 16:21:10 -0700 Subject: Add functions for measuring cursor positioning New functions for computing the correspondence between cursor position and advance, respecting grapheme boundaries. Change-Id: I620378d5f64cd74300cd43db522adeb555825dff --- include/minikin/Layout.h | 6 +++++- include/minikin/Measurement.h | 31 +++++++++++++++++++++++++++++++ 2 files changed, 36 insertions(+), 1 deletion(-) create mode 100644 include/minikin/Measurement.h (limited to 'include') diff --git a/include/minikin/Layout.h b/include/minikin/Layout.h index 543f553..930407a 100644 --- a/include/minikin/Layout.h +++ b/include/minikin/Layout.h @@ -106,9 +106,13 @@ public: float getAdvance() const; // Get advances, copying into caller-provided buffer. The size of this - // buffer must match the length of the string (nchars arg to doLayout). + // buffer must match the length of the string (count arg to doLayout). void getAdvances(float* advances); + // The i parameter is an offset within the buf relative to start, it is < count, where + // start and count are the parameters to doLayout + float getCharAdvance(size_t i) const { return mAdvances[i]; } + void getBounds(MinikinRect* rect); // Purge all caches, useful in low memory conditions diff --git a/include/minikin/Measurement.h b/include/minikin/Measurement.h new file mode 100644 index 0000000..fc47fa3 --- /dev/null +++ b/include/minikin/Measurement.h @@ -0,0 +1,31 @@ +/* + * Copyright (C) 2015 The Android Open Source Project + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#ifndef MINIKIN_MEASUREMENT_H +#define MINIKIN_MEASUREMENT_H + +#include + +namespace android { + +float getRunAdvance(Layout& layout, const uint16_t* buf, size_t start, size_t count, size_t offset); + +size_t getOffsetForAdvance(Layout& layout, const uint16_t* buf, size_t start, size_t count, + float advance); + +} + +#endif // MINIKIN_MEASUREMENT_H -- cgit v1.2.3