Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit cd6e4e69 authored by Andrew Walbran's avatar Andrew Walbran
Browse files

Add methods to get properties of Buffer.

Bug: 307535208
Test: atest libnativewindow_rs-internal_test
Change-Id: Id07eb850ad1db7fbb25ef2a563d1f212ea7145f7
parent 30262985
Loading
Loading
Loading
Loading
+23 −1
Original line number Diff line number Diff line
@@ -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))
    }
}