render: Fix types depending on `tessellator` feature

This commit is contained in:
Mike Welsh 2023-03-19 20:47:58 -07:00 committed by Nathan Adams
parent de44c5494e
commit 1d12fc6169
5 changed files with 30 additions and 16 deletions

View File

@ -12,8 +12,7 @@ use crate::avm2_stub_method;
use crate::display_object::TDisplayObject;
use crate::drawing::Drawing;
use crate::string::{AvmString, WStr};
use ruffle_render::shape_utils::DrawCommand;
use ruffle_render::tessellator::GradientType;
use ruffle_render::shape_utils::{DrawCommand, GradientType};
use std::f64::consts::FRAC_1_SQRT_2;
use swf::{
Color, FillStyle, Fixed16, Fixed8, Gradient, GradientInterpolation, GradientRecord,

View File

@ -1,8 +1,30 @@
use crate::matrix::Matrix;
use enum_map::Enum;
use smallvec::SmallVec;
use swf::{CharacterId, FillStyle, LineStyle, Rectangle, Shape, ShapeRecord, Twips};
pub use lyon::path::FillRule;
#[derive(Copy, Clone, Debug, PartialEq)]
pub enum FillRule {
EvenOdd,
NonZero,
}
#[derive(Copy, Clone, PartialEq, Eq, Debug, Enum)]
pub enum GradientType {
Linear,
Radial,
Focal,
}
#[cfg(feature = "tessellator")]
impl From<FillRule> for lyon::path::FillRule {
fn from(rule: FillRule) -> lyon::path::FillRule {
match rule {
FillRule::EvenOdd => lyon::path::FillRule::EvenOdd,
FillRule::NonZero => lyon::path::FillRule::NonZero,
}
}
}
pub fn calculate_shape_bounds(shape_records: &[swf::ShapeRecord]) -> swf::Rectangle<Twips> {
let mut bounds = swf::Rectangle {

View File

@ -1,6 +1,5 @@
use crate::bitmap::BitmapSource;
use crate::shape_utils::{DistilledShape, DrawCommand, DrawPath};
use enum_map::Enum;
use crate::shape_utils::{DistilledShape, DrawCommand, DrawPath, GradientType};
use lyon::path::Path;
use lyon::tessellation::{
self,
@ -137,7 +136,7 @@ impl ShapeTessellator {
let result = match path {
DrawPath::Fill { winding_rule, .. } => self.fill_tess.tessellate_path(
&lyon_path,
&FillOptions::default().with_fill_rule(winding_rule),
&FillOptions::default().with_fill_rule(winding_rule.into()),
&mut buffers_builder,
),
DrawPath::Stroke { style, .. } => {
@ -407,10 +406,3 @@ impl StrokeVertexConstructor<Vertex> for RuffleVertexCtor {
}
}
}
#[derive(Copy, Clone, PartialEq, Eq, Debug, Enum)]
pub enum GradientType {
Linear,
Radial,
Focal,
}

View File

@ -16,9 +16,9 @@ use ruffle_render::bitmap::{
use ruffle_render::commands::{CommandHandler, CommandList};
use ruffle_render::error::Error as BitmapError;
use ruffle_render::quality::StageQuality;
use ruffle_render::shape_utils::DistilledShape;
use ruffle_render::shape_utils::{DistilledShape, GradientType};
use ruffle_render::tessellator::{
Gradient as TessGradient, GradientType, ShapeTessellator, Vertex as TessVertex,
Gradient as TessGradient, ShapeTessellator, Vertex as TessVertex,
};
use ruffle_render::transform::Transform;
use ruffle_web_common::{JsError, JsResult};

View File

@ -16,7 +16,8 @@ use enum_map::Enum;
use once_cell::sync::OnceCell;
use ruffle_render::bitmap::{BitmapHandle, BitmapHandleImpl, RgbaBufRead, SyncHandle};
use ruffle_render::color_transform::ColorTransform;
use ruffle_render::tessellator::{Gradient as TessGradient, GradientType, Vertex as TessVertex};
use ruffle_render::shape_utils::GradientType;
use ruffle_render::tessellator::{Gradient as TessGradient, Vertex as TessVertex};
use std::cell::Cell;
use std::sync::Arc;
use swf::GradientSpread;