summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Andrew Walbran <qwandor@google.com> 2024-09-27 16:43:10 +0100
committer Andrew Walbran <qwandor@google.com> 2024-09-27 18:50:45 +0100
commitcd6e4e69ca5a0f2dd0974aa33d9710e51d6a61b7 (patch)
tree46bfabfa7ebc24fd51d1af9f8ab93fefce317f81
parent30262985975cc8fadebe71f2681846e57cdf5d8f (diff)
Add methods to get properties of Buffer.
Bug: 307535208 Test: atest libnativewindow_rs-internal_test Change-Id: Id07eb850ad1db7fbb25ef2a563d1f212ea7145f7
-rw-r--r--libs/nativewindow/rust/src/surface/buffer.rs24
1 files changed, 23 insertions, 1 deletions
diff --git a/libs/nativewindow/rust/src/surface/buffer.rs b/libs/nativewindow/rust/src/surface/buffer.rs
index 91f5de5343..a2d74d4ed6 100644
--- a/libs/nativewindow/rust/src/surface/buffer.rs
+++ b/libs/nativewindow/rust/src/surface/buffer.rs
@@ -13,7 +13,7 @@
// limitations under the License.
use super::{ErrorCode, Surface};
-use nativewindow_bindgen::ANativeWindow_Buffer;
+use nativewindow_bindgen::{AHardwareBuffer_Format, ANativeWindow_Buffer};
use std::ptr::null_mut;
/// An empty `ANativeWindow_Buffer`.
@@ -43,4 +43,26 @@ impl<'a> Buffer<'a> {
pub fn unlock_and_post(self) -> Result<(), ErrorCode> {
self.surface.unlock_and_post()
}
+
+ /// The number of pixels that are shown horizontally.
+ pub fn width(&self) -> i32 {
+ self.buffer.width
+ }
+
+ /// The number of pixels that are shown vertically.
+ pub fn height(&self) -> i32 {
+ self.buffer.height
+ }
+
+ /// The number of pixels that a line in the buffer takes in memory.
+ ///
+ /// This may be greater than the width.
+ pub fn stride(&self) -> i32 {
+ self.buffer.stride
+ }
+
+ /// The pixel format of the buffer.
+ pub fn format(&self) -> Result<AHardwareBuffer_Format::Type, ErrorCode> {
+ self.buffer.format.try_into().map_err(|_| ErrorCode(self.buffer.format))
+ }
}