зеркало из https://github.com/mozilla/gecko-dev.git
60 строки
1.9 KiB
Rust
60 строки
1.9 KiB
Rust
/* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at https://mozilla.org/MPL/2.0/. */
|
|
|
|
//! This module contains conversion helpers between Servo and Gecko types
|
|
//! Ideally, it would be in geckolib itself, but coherence
|
|
//! forces us to keep the traits and implementations here
|
|
//!
|
|
//! FIXME(emilio): This file should generally just die.
|
|
|
|
#![allow(unsafe_code)]
|
|
|
|
use crate::gecko_bindings::structs::{nsresult, Matrix4x4Components};
|
|
use crate::stylesheets::RulesMutateError;
|
|
use crate::values::computed::transform::Matrix3D;
|
|
|
|
impl From<RulesMutateError> for nsresult {
|
|
fn from(other: RulesMutateError) -> Self {
|
|
match other {
|
|
RulesMutateError::Syntax => nsresult::NS_ERROR_DOM_SYNTAX_ERR,
|
|
RulesMutateError::IndexSize => nsresult::NS_ERROR_DOM_INDEX_SIZE_ERR,
|
|
RulesMutateError::HierarchyRequest => nsresult::NS_ERROR_DOM_HIERARCHY_REQUEST_ERR,
|
|
RulesMutateError::InvalidState => nsresult::NS_ERROR_DOM_INVALID_STATE_ERR,
|
|
}
|
|
}
|
|
}
|
|
|
|
impl<'a> From<&'a Matrix4x4Components> for Matrix3D {
|
|
fn from(m: &'a Matrix4x4Components) -> Matrix3D {
|
|
Matrix3D {
|
|
m11: m[0],
|
|
m12: m[1],
|
|
m13: m[2],
|
|
m14: m[3],
|
|
m21: m[4],
|
|
m22: m[5],
|
|
m23: m[6],
|
|
m24: m[7],
|
|
m31: m[8],
|
|
m32: m[9],
|
|
m33: m[10],
|
|
m34: m[11],
|
|
m41: m[12],
|
|
m42: m[13],
|
|
m43: m[14],
|
|
m44: m[15],
|
|
}
|
|
}
|
|
}
|
|
|
|
impl From<Matrix3D> for Matrix4x4Components {
|
|
fn from(matrix: Matrix3D) -> Self {
|
|
[
|
|
matrix.m11, matrix.m12, matrix.m13, matrix.m14, matrix.m21, matrix.m22, matrix.m23,
|
|
matrix.m24, matrix.m31, matrix.m32, matrix.m33, matrix.m34, matrix.m41, matrix.m42,
|
|
matrix.m43, matrix.m44,
|
|
]
|
|
}
|
|
}
|