浏览代码

Remove redundant viewport parameter from draw fns

Johannes Hofmann 7 年前
父节点
当前提交
b3dc228f1e
共有 3 个文件被更改,包括 10 次插入16 次删除
  1. 3
    7
      src/map_view_gl.rs
  2. 5
    6
      src/marker_layer.rs
  3. 2
    3
      src/mercator_tile_layer.rs

+ 3
- 7
src/map_view_gl.rs 查看文件

140
             self.mercator_tile_layer.prepare_draw(cx, &self.tile_atlas);
140
             self.mercator_tile_layer.prepare_draw(cx, &self.tile_atlas);
141
         }
141
         }
142
 
142
 
143
-        //TODO remove viewport_size parameter
144
         self.mercator_tile_layer.draw(
143
         self.mercator_tile_layer.draw(
145
             cx,
144
             cx,
146
             &self.map_view,
145
             &self.map_view,
147
             source,
146
             source,
148
             &mut self.tile_cache,
147
             &mut self.tile_cache,
149
             &mut self.tile_atlas,
148
             &mut self.tile_atlas,
150
-            self.viewport_size,
151
             snap_to_pixel
149
             snap_to_pixel
152
         )
150
         )
153
     }
151
     }
154
 
152
 
155
-    fn draw_marker(&mut self, cx: &mut Context, snap_to_pixel: bool) {
153
+    fn draw_mercator_marker(&mut self, cx: &mut Context, snap_to_pixel: bool) {
156
         if self.last_draw_type != DrawType::Markers {
154
         if self.last_draw_type != DrawType::Markers {
157
             self.last_draw_type = DrawType::Markers;
155
             self.last_draw_type = DrawType::Markers;
158
             self.marker_layer.prepare_draw(cx);
156
             self.marker_layer.prepare_draw(cx);
159
         }
157
         }
160
 
158
 
161
-        //TODO remove viewport_size parameter
162
-        self.marker_layer.draw(
159
+        self.marker_layer.draw_mercator(
163
             cx,
160
             cx,
164
             &self.map_view,
161
             &self.map_view,
165
-            self.viewport_size,
166
             self.dpi_factor,
162
             self.dpi_factor,
167
             snap_to_pixel,
163
             snap_to_pixel,
168
         );
164
         );
194
             Projection::Mercator => {
190
             Projection::Mercator => {
195
                 let ret = self.draw_mercator_tiles(cx, source, snap_to_pixel);
191
                 let ret = self.draw_mercator_tiles(cx, source, snap_to_pixel);
196
                 if !self.marker_layer.is_empty() {
192
                 if !self.marker_layer.is_empty() {
197
-                    self.draw_marker(cx, snap_to_pixel);
193
+                    self.draw_mercator_marker(cx, snap_to_pixel);
198
                 }
194
                 }
199
                 ret
195
                 ret
200
             },
196
             },

+ 5
- 6
src/marker_layer.rs 查看文件

76
         self.program.set_vertex_attribs(cx, &self.buffer);
76
         self.program.set_vertex_attribs(cx, &self.buffer);
77
     }
77
     }
78
 
78
 
79
-    pub fn draw(
79
+    pub fn draw_mercator(
80
         &mut self,
80
         &mut self,
81
         cx: &mut Context,
81
         cx: &mut Context,
82
         map_view: &MapView,
82
         map_view: &MapView,
83
-        viewport_size: (u32, u32),
84
         dpi_factor: f64,
83
         dpi_factor: f64,
85
         snap_to_pixel: bool
84
         snap_to_pixel: bool
86
     ) {
85
     ) {
89
         let marker_size = vec2::<f64>(40.0, 50.0) * dpi_factor;
88
         let marker_size = vec2::<f64>(40.0, 50.0) * dpi_factor;
90
         let marker_offset = vec2::<f64>(-20.0, -50.0) * dpi_factor;
89
         let marker_offset = vec2::<f64>(-20.0, -50.0) * dpi_factor;
91
 
90
 
92
-        let scale_x = 2.0 / viewport_size.0 as f32;
93
-        let scale_y = -2.0 / viewport_size.1 as f32;
91
+        let scale_x = 2.0 / map_view.width as f32;
92
+        let scale_y = -2.0 / map_view.height as f32;
94
 
93
 
95
         let tex_mat: Matrix3<f32> = Matrix3::from_cols(
94
         let tex_mat: Matrix3<f32> = Matrix3::from_cols(
96
             vec3(marker_size.x as f32, 0.0, 0.0),
95
             vec3(marker_size.x as f32, 0.0, 0.0),
112
         let visible_rect = ScreenRect {
111
         let visible_rect = ScreenRect {
113
             x: -(marker_offset.x + marker_size.x),
112
             x: -(marker_offset.x + marker_size.x),
114
             y: -(marker_offset.y + marker_size.y),
113
             y: -(marker_offset.y + marker_size.y),
115
-            width: f64::from(viewport_size.0) + marker_size.x,
116
-            height: f64::from(viewport_size.1) + marker_size.y,
114
+            width: map_view.width + marker_size.x,
115
+            height: map_view.height + marker_size.y,
117
         };
116
         };
118
 
117
 
119
         for map_pos in &self.positions {
118
         for map_pos in &self.positions {

+ 2
- 3
src/mercator_tile_layer.rs 查看文件

74
         source: &TileSource,
74
         source: &TileSource,
75
         cache: &mut TileCache,
75
         cache: &mut TileCache,
76
         atlas: &mut TileAtlas,
76
         atlas: &mut TileAtlas,
77
-        viewport_size: (u32, u32),
78
         snap_to_pixel: bool
77
         snap_to_pixel: bool
79
     ) -> Result<usize, usize> {
78
     ) -> Result<usize, usize> {
80
         cache.set_view_location(View {
79
         cache.set_view_location(View {
102
             max_tiles_to_use = max_tiles_to_use.saturating_sub(used_tiles);
101
             max_tiles_to_use = max_tiles_to_use.saturating_sub(used_tiles);
103
 
102
 
104
             let mut vertex_data: Vec<f32> = Vec::with_capacity(textured_visible_tiles.len() * (6 * 8));
103
             let mut vertex_data: Vec<f32> = Vec::with_capacity(textured_visible_tiles.len() * (6 * 8));
105
-            let scale_x = 2.0 / f64::from(viewport_size.0);
106
-            let scale_y = -2.0 / f64::from(viewport_size.1);
104
+            let scale_x = 2.0 / map_view.width;
105
+            let scale_y = -2.0 / map_view.height;
107
             for tvt in &textured_visible_tiles {
106
             for tvt in &textured_visible_tiles {
108
                 let minmax = [
107
                 let minmax = [
109
                     tvt.tex_minmax.x1 as f32,
108
                     tvt.tex_minmax.x1 as f32,