- \r
- BOOST_FOREACH(auto& layer, layers)\r
- draw_layer(std::move(layer), draw_buffer, layer_key_buffer);\r
- \r
+\r
+ if(channel_.get_format_desc().field_mode != field_mode::progressive)\r
+ {\r
+ auto upper = layers;\r
+ auto lower = std::move(layers);\r
+\r
+ BOOST_FOREACH(auto& layer, upper)\r
+ {\r
+ boost::remove_erase_if(layer.items, [](const render_item& item){return !(item.transform.field_mode & field_mode::upper);});\r
+ BOOST_FOREACH(auto& item, layer.items)\r
+ item.transform.field_mode = field_mode::upper;\r
+ }\r
+\r
+ BOOST_FOREACH(auto& layer, lower)\r
+ {\r
+ boost::remove_erase_if(layer.items, [](const render_item& item){return !(item.transform.field_mode & field_mode::lower);});\r
+ BOOST_FOREACH(auto& item, layer.items)\r
+ item.transform.field_mode = field_mode::lower;\r
+ }\r
+\r
+ draw(std::move(upper), *draw_buffer);\r
+ draw(std::move(lower), *draw_buffer);\r
+ }\r
+ else\r
+ {\r
+ draw(std::move(layers), *draw_buffer);\r
+ }\r
+\r