3
3
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
4
4
5
5
use app_units:: Au ;
6
- use euclid:: { Point2D , Point3D , Rect , Size2D } ;
6
+ use euclid:: Point3D ;
7
7
use fnv:: FnvHasher ;
8
8
use geometry:: ray_intersects_rect;
9
9
use internal_types:: { ANGLE_FLOAT_TO_FIXED , AxisDirection } ;
@@ -22,8 +22,8 @@ use webrender_traits::{ClipRegion, ColorF, DisplayItem, StackingContext, FilterO
22
22
use webrender_traits:: { ScrollEventPhase , ScrollLayerInfo , ScrollLocation , SpecificDisplayItem , ScrollLayerState } ;
23
23
use webrender_traits:: { LayerRect , LayerPoint , LayerSize } ;
24
24
use webrender_traits:: { ServoScrollRootId , ScrollLayerRect , as_scroll_parent_rect, ScrollLayerPixel } ;
25
- use webrender_traits:: WorldPoint4D ;
26
- use webrender_traits:: { LayerTransform , LayerToScrollTransform , ScrollToWorldTransform } ;
25
+ use webrender_traits:: { WorldPoint , WorldPoint4D } ;
26
+ use webrender_traits:: { LayerToScrollTransform , ScrollToWorldTransform } ;
27
27
28
28
#[ cfg( target_os = "macos" ) ]
29
29
const CAN_OVERSCROLL : bool = true ;
@@ -38,7 +38,7 @@ static DEFAULT_SCROLLBAR_COLOR: ColorF = ColorF { r: 0.3, g: 0.3, b: 0.3, a: 0.6
38
38
39
39
struct FlattenContext < ' a > {
40
40
scene : & ' a Scene ,
41
- pipeline_sizes : & ' a mut HashMap < PipelineId , Size2D < f32 > > ,
41
+ pipeline_sizes : & ' a mut HashMap < PipelineId , LayerSize > ,
42
42
builder : & ' a mut FrameBuilder ,
43
43
}
44
44
@@ -234,7 +234,7 @@ impl Frame {
234
234
old_layer_scrolling_states
235
235
}
236
236
237
- pub fn get_scroll_layer ( & self , cursor : & Point2D < f32 > , scroll_layer_id : ScrollLayerId )
237
+ pub fn get_scroll_layer ( & self , cursor : & WorldPoint , scroll_layer_id : ScrollLayerId )
238
238
-> Option < ScrollLayerId > {
239
239
self . layers . get ( & scroll_layer_id) . and_then ( |layer| {
240
240
for child_layer_id in layer. children . iter ( ) . rev ( ) {
@@ -286,7 +286,7 @@ impl Frame {
286
286
result. push ( ScrollLayerState {
287
287
pipeline_id : scroll_layer. pipeline_id ,
288
288
scroll_root_id : servo_scroll_root_id,
289
- scroll_offset : scroll_layer. scrolling . offset . to_untyped ( ) ,
289
+ scroll_offset : scroll_layer. scrolling . offset ,
290
290
} )
291
291
}
292
292
ScrollLayerInfo :: Fixed => { }
@@ -297,7 +297,7 @@ impl Frame {
297
297
298
298
/// Returns true if any layers actually changed position or false otherwise.
299
299
pub fn scroll_layers ( & mut self ,
300
- origin : Point2D < f32 > ,
300
+ origin : LayerPoint ,
301
301
pipeline_id : PipelineId ,
302
302
scroll_root_id : ServoScrollRootId )
303
303
-> bool {
@@ -330,7 +330,7 @@ impl Frame {
330
330
/// Returns true if any layers actually changed position or false otherwise.
331
331
pub fn scroll ( & mut self ,
332
332
scroll_location : ScrollLocation ,
333
- cursor : Point2D < f32 > ,
333
+ cursor : WorldPoint ,
334
334
phase : ScrollEventPhase )
335
335
-> bool {
336
336
let root_scroll_layer_id = match self . root_scroll_layer_id {
@@ -460,7 +460,7 @@ impl Frame {
460
460
461
461
pub fn create ( & mut self ,
462
462
scene : & Scene ,
463
- pipeline_sizes : & mut HashMap < PipelineId , Size2D < f32 > > ,
463
+ pipeline_sizes : & mut HashMap < PipelineId , LayerSize > ,
464
464
device_pixel_ratio : f32 ) {
465
465
let root_pipeline_id = match scene. root_pipeline_id {
466
466
Some ( root_pipeline_id) => root_pipeline_id,
@@ -497,9 +497,9 @@ impl Frame {
497
497
// Insert global position: fixed elements layer
498
498
debug_assert ! ( self . layers. is_empty( ) ) ;
499
499
let root_fixed_layer_id = ScrollLayerId :: create_fixed ( root_pipeline_id) ;
500
- let root_viewport = LayerRect :: new ( LayerPoint :: zero ( ) , LayerSize :: from_untyped ( & root_pipeline. viewport_size ) ) ;
500
+ let root_viewport = LayerRect :: new ( LayerPoint :: zero ( ) , root_pipeline. viewport_size ) ;
501
501
let layer = Layer :: new ( & root_viewport,
502
- LayerSize :: from_untyped ( & root_clip. main . size ) ,
502
+ root_clip. main . size ,
503
503
& LayerToScrollTransform :: identity ( ) ,
504
504
root_pipeline_id) ;
505
505
self . layers . insert ( root_fixed_layer_id, layer. clone ( ) ) ;
@@ -589,7 +589,7 @@ impl Frame {
589
589
LayerSize :: new ( content_size. width + clip. origin . x ,
590
590
content_size. height + clip. origin . y ) ) ;
591
591
context. builder . push_layer ( layer_rect,
592
- & ClipRegion :: simple ( & layer_rect. to_untyped ( ) ) ,
592
+ & ClipRegion :: simple ( & layer_rect) ,
593
593
LayerToScrollTransform :: identity ( ) ,
594
594
pipeline_id,
595
595
current_scroll_layer_id,
@@ -640,14 +640,11 @@ impl Frame {
640
640
}
641
641
}
642
642
643
- // TODO(nical): make them LayerTransforms in the public API.
644
- let sc_transform: LayerTransform = unsafe { :: std:: mem:: transmute ( stacking_context. transform ) } ;
645
- let sc_perspective: LayerTransform = unsafe { :: std:: mem:: transmute ( stacking_context. perspective ) } ;
646
643
let transform = layer_relative_transform. pre_translated ( stacking_context. bounds . origin . x ,
647
644
stacking_context. bounds . origin . y ,
648
645
0.0 )
649
- . pre_mul ( & sc_transform )
650
- . pre_mul ( & sc_perspective ) ;
646
+ . pre_mul ( & stacking_context . transform )
647
+ . pre_mul ( & stacking_context . perspective ) ;
651
648
652
649
// Build world space transform
653
650
let scroll_layer_id = match stacking_context. scroll_policy {
@@ -676,7 +673,7 @@ impl Frame {
676
673
677
674
// Adding a dummy layer for this rectangle in order to disable clipping.
678
675
let no_clip = ClipRegion :: simple ( & clip_region. main ) ;
679
- context. builder . push_layer ( LayerRect :: from_untyped ( & clip_region. main ) ,
676
+ context. builder . push_layer ( clip_region. main ,
680
677
& no_clip,
681
678
transform,
682
679
pipeline_id,
@@ -685,7 +682,7 @@ impl Frame {
685
682
686
683
//Note: we don't use the original clip region here,
687
684
// it's already processed by the layer we just pushed.
688
- context. builder . add_solid_rectangle ( & LayerRect :: from_untyped ( & clip_region. main ) ,
685
+ context. builder . add_solid_rectangle ( & clip_region. main ,
689
686
& no_clip,
690
687
& root_background_color,
691
688
PrimitiveFlags :: None ) ;
@@ -694,7 +691,7 @@ impl Frame {
694
691
}
695
692
696
693
// TODO(gw): Int with overflow etc
697
- context. builder . push_layer ( LayerRect :: from_untyped ( & clip_region. main ) ,
694
+ context. builder . push_layer ( clip_region. main ,
698
695
& clip_region,
699
696
transform,
700
697
pipeline_id,
@@ -712,7 +709,7 @@ impl Frame {
712
709
if level == 0 && self . frame_builder_config . enable_scrollbars {
713
710
let scrollbar_rect = LayerRect :: new ( LayerPoint :: zero ( ) , LayerSize :: new ( 10.0 , 70.0 ) ) ;
714
711
context. builder . add_solid_rectangle ( & scrollbar_rect,
715
- & ClipRegion :: simple ( & scrollbar_rect. to_untyped ( ) ) ,
712
+ & ClipRegion :: simple ( & scrollbar_rect) ,
716
713
& DEFAULT_SCROLLBAR_COLOR ,
717
714
PrimitiveFlags :: Scrollbar ( self . root_scroll_layer_id . unwrap ( ) ,
718
715
4.0 ) ) ;
@@ -723,7 +720,7 @@ impl Frame {
723
720
724
721
fn flatten_iframe < ' a > ( & mut self ,
725
722
pipeline_id : PipelineId ,
726
- bounds : & Rect < f32 > ,
723
+ bounds : & LayerRect ,
727
724
context : & mut FlattenContext ,
728
725
current_scroll_layer_id : ScrollLayerId ,
729
726
layer_relative_transform : LayerToScrollTransform ) {
@@ -750,7 +747,7 @@ impl Frame {
750
747
751
748
self . pipeline_epoch_map . insert ( pipeline_id, pipeline. epoch ) ;
752
749
753
- let iframe_rect = & LayerRect :: new ( LayerPoint :: zero ( ) , LayerSize :: from_untyped ( & bounds. size ) ) ;
750
+ let iframe_rect = & LayerRect :: new ( LayerPoint :: zero ( ) , bounds. size ) ;
754
751
let transform = layer_relative_transform. pre_translated ( bounds. origin . x ,
755
752
bounds. origin . y ,
756
753
0.0 ) ;
@@ -759,7 +756,7 @@ impl Frame {
759
756
let iframe_scroll_layer_id = ScrollLayerId :: root ( pipeline_id) ;
760
757
761
758
let layer = Layer :: new ( iframe_rect,
762
- LayerSize :: from_untyped ( & iframe_clip. main . size ) ,
759
+ iframe_clip. main . size ,
763
760
& transform,
764
761
pipeline_id) ;
765
762
self . layers . insert ( iframe_fixed_layer_id, layer. clone ( ) ) ;
@@ -790,27 +787,27 @@ impl Frame {
790
787
while let Some ( item) = traversal. next ( ) {
791
788
match item. item {
792
789
SpecificDisplayItem :: WebGL ( ref info) => {
793
- context. builder . add_webgl_rectangle ( LayerRect :: from_untyped ( & item. rect ) ,
790
+ context. builder . add_webgl_rectangle ( item. rect ,
794
791
& item. clip , info. context_id ) ;
795
792
}
796
793
SpecificDisplayItem :: Image ( ref info) => {
797
- context. builder . add_image ( LayerRect :: from_untyped ( & item. rect ) ,
794
+ context. builder . add_image ( item. rect ,
798
795
& item. clip ,
799
- & LayerSize :: from_untyped ( & info. stretch_size ) ,
800
- & LayerSize :: from_untyped ( & info. tile_spacing ) ,
796
+ & info. stretch_size ,
797
+ & info. tile_spacing ,
801
798
info. image_key ,
802
799
info. image_rendering ) ;
803
800
}
804
801
SpecificDisplayItem :: YuvImage ( ref info) => {
805
- context. builder . add_yuv_image ( LayerRect :: from_untyped ( & item. rect ) ,
802
+ context. builder . add_yuv_image ( item. rect ,
806
803
& item. clip ,
807
804
info. y_image_key ,
808
805
info. u_image_key ,
809
806
info. v_image_key ,
810
807
info. color_space ) ;
811
808
}
812
809
SpecificDisplayItem :: Text ( ref text_info) => {
813
- context. builder . add_text ( LayerRect :: from_untyped ( & item. rect ) ,
810
+ context. builder . add_text ( item. rect ,
814
811
& item. clip ,
815
812
text_info. font_key ,
816
813
text_info. size ,
@@ -819,30 +816,30 @@ impl Frame {
819
816
text_info. glyphs ) ;
820
817
}
821
818
SpecificDisplayItem :: Rectangle ( ref info) => {
822
- context. builder . add_solid_rectangle ( & LayerRect :: from_untyped ( & item. rect ) ,
819
+ context. builder . add_solid_rectangle ( & item. rect ,
823
820
& item. clip ,
824
821
& info. color ,
825
822
PrimitiveFlags :: None ) ;
826
823
}
827
824
SpecificDisplayItem :: Gradient ( ref info) => {
828
- context. builder . add_gradient ( LayerRect :: from_untyped ( & item. rect ) ,
825
+ context. builder . add_gradient ( item. rect ,
829
826
& item. clip ,
830
- LayerPoint :: from_untyped ( & info. start_point ) ,
831
- LayerPoint :: from_untyped ( & info. end_point ) ,
827
+ info. start_point ,
828
+ info. end_point ,
832
829
info. stops ) ;
833
830
}
834
831
SpecificDisplayItem :: BoxShadow ( ref box_shadow_info) => {
835
- context. builder . add_box_shadow ( & LayerRect :: from_untyped ( & box_shadow_info. box_bounds ) ,
832
+ context. builder . add_box_shadow ( & box_shadow_info. box_bounds ,
836
833
& item. clip ,
837
- & LayerPoint :: from_untyped ( & box_shadow_info. offset ) ,
834
+ & box_shadow_info. offset ,
838
835
& box_shadow_info. color ,
839
836
box_shadow_info. blur_radius ,
840
837
box_shadow_info. spread_radius ,
841
838
box_shadow_info. border_radius ,
842
839
box_shadow_info. clip_mode ) ;
843
840
}
844
841
SpecificDisplayItem :: Border ( ref info) => {
845
- context. builder . add_border ( LayerRect :: from_untyped ( & item. rect ) , & item. clip , info) ;
842
+ context. builder . add_border ( item. rect , & item. clip , info) ;
846
843
}
847
844
SpecificDisplayItem :: PushStackingContext ( ref info) => {
848
845
self . flatten_stacking_context ( traversal,
@@ -863,8 +860,8 @@ impl Frame {
863
860
current_scroll_layer_id,
864
861
layer_relative_transform,
865
862
level,
866
- & LayerRect :: from_untyped ( & item. rect ) ,
867
- & LayerSize :: from_untyped ( & info. content_size ) ,
863
+ & item. rect ,
864
+ & info. content_size ,
868
865
info. id ) ;
869
866
}
870
867
SpecificDisplayItem :: Iframe ( ref info) => {
0 commit comments