File tree Expand file tree Collapse file tree 1 file changed +18
-17
lines changed Expand file tree Collapse file tree 1 file changed +18
-17
lines changed Original file line number Diff line number Diff line change @@ -1451,25 +1451,26 @@ EX void check_cgi() {
14511451
14521452 }
14531453
1454- EX void propagate_scale_change () {
1454+ /* * auxiliary for propagate_scale_change */
1455+ template <class T > void affect_scale_change (geometry_information*& alt_cgip, const T& switcher) {
1456+ auto gi = alt_cgip;
1457+ bool changed = false ;
1458+ switcher ([&] {
1459+ check_cgi ();
1460+ changed = gi != cgip;
1461+ if (changed && (gi->state & 1 )) cgi.require_basics ();
1462+ if (changed && (gi->state & 2 )) cgi.require_shapes ();
1463+ gi = alt_cgip = cgip;
1464+ });
1465+ alt_cgip = gi;
1466+ if (changed) switcher (propagate_scale_change);
1467+ };
14551468
1456- auto affect = [] (geometry_information*& alt_cgip, const auto & switcher) {
1457- auto gi = alt_cgip;
1458- bool changed = false ;
1459- switcher ([&] {
1460- check_cgi ();
1461- changed = gi != cgip;
1462- if (changed && (gi->state & 1 )) cgi.require_basics ();
1463- if (changed && (gi->state & 2 )) cgi.require_shapes ();
1464- gi = alt_cgip = cgip;
1465- });
1466- alt_cgip = gi;
1467- if (changed) switcher (propagate_scale_change);
1468- };
1469+ EX void propagate_scale_change () {
14691470
1470- if (mhybrid) affect (hybrid::underlying_cgip, [] (const auto & f) { hybrid::in_underlying_geometry (f); });
1471- if (hybrid::pmap) affect (hybrid::pcgip, [] (const auto & f) { hybrid::in_actual (f); });
1472- if (fake::in ()) affect (fake::underlying_cgip, [] (const auto & f) { fake::in_underlying_geometry (f); });
1471+ if (mhybrid) affect_scale_change (hybrid::underlying_cgip, [] (const auto & f) { hybrid::in_underlying_geometry (f); });
1472+ if (hybrid::pmap) affect_scale_change (hybrid::pcgip, [] (const auto & f) { hybrid::in_actual (f); });
1473+ if (fake::in ()) affect_scale_change (fake::underlying_cgip, [] (const auto & f) { fake::in_underlying_geometry (f); });
14731474 }
14741475
14751476void clear_cgis () {
You can’t perform that action at this time.
0 commit comments