Something went wrong. Try again.
This repository has no description
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374// Admitted candidate `model_22` (qwen3.8-27b-fast, 110/110); provenance: transform.provenance.jsonuse crate::transform::{TransformInputs, TransformOutputs};use dom::computed::{LengthPercentage, TransformFunction};
pub fn resolve(inputs: &TransformInputs) -> TransformOutputs { let resolved_origin_x = resolve_length_percentage(inputs.origin_x, inputs.border_box_width); let resolved_origin_y = resolve_length_percentage(inputs.origin_y, inputs.border_box_height);
let mut result = [1.0, 0.0, 0.0, 1.0, 0.0, 0.0];
for func in &inputs.functions { let func_matrix = function_matrix(func, inputs.border_box_width, inputs.border_box_height); result = compose(result, func_matrix); }
let origin_matrix = [1.0, 0.0, 0.0, 1.0, resolved_origin_x, resolved_origin_y]; let inverse_origin_matrix = [1.0, 0.0, 0.0, 1.0, -resolved_origin_x, -resolved_origin_y];
let matrix = compose(origin_matrix, compose(result, inverse_origin_matrix));
TransformOutputs { matrix }}
fn resolve_length_percentage(lp: LengthPercentage, reference: f64) -> f64 { match lp { LengthPercentage::Length(v) => v, LengthPercentage::Percentage(p) => p * reference, LengthPercentage::Unresolved => 0.0, }}
fn function_matrix( func: &TransformFunction, border_box_width: f64, border_box_height: f64,) -> [f64; 6] { match func { TransformFunction::Translate { x, y } => { let tx = resolve_length_percentage(*x, border_box_width); let ty = resolve_length_percentage(*y, border_box_height); [1.0, 0.0, 0.0, 1.0, tx, ty] } TransformFunction::Scale { x, y } => { [*x, 0.0, 0.0, *y, 0.0, 0.0] } TransformFunction::Rotate { radians } => { let c = radians.cos(); let s = radians.sin(); [c, s, -s, c, 0.0, 0.0] } TransformFunction::Skew { x_radians, y_radians } => { let tx = x_radians.tan(); let ty = y_radians.tan(); [1.0, ty, tx, 1.0, 0.0, 0.0] } TransformFunction::Matrix { a, b, c, d, e, f } => { [*a, *b, *c, *d, *e, *f] } TransformFunction::Unsupported => [1.0, 0.0, 0.0, 1.0, 0.0, 0.0], }}
fn compose(outer: [f64; 6], inner: [f64; 6]) -> [f64; 6] { let [a1, b1, c1, d1, e1, f1] = outer; let [a2, b2, c2, d2, e2, f2] = inner; [ a1 * a2 + c1 * b2, b1 * a2 + d1 * b2, a1 * c2 + c1 * d2, b1 * c2 + d1 * d2, a1 * e2 + c1 * f2 + e1, b1 * e2 + d1 * f2 + f1, ]}