+ // Used during finalize().
+ void find_color_spaces_for_inputs();
+ void propagate_alpha();
+ void propagate_gamma_and_color_space();
+ Node *find_output_node();
+
+ bool node_needs_colorspace_fix(Node *node);
+ void fix_internal_color_spaces();
+ void fix_output_color_space();
+
+ bool node_needs_alpha_fix(Node *node);
+ void fix_internal_alpha(unsigned step);
+ void fix_output_alpha();
+
+ bool node_needs_gamma_fix(Node *node);
+ void fix_internal_gamma_by_asking_inputs(unsigned step);
+ void fix_internal_gamma_by_inserting_nodes(unsigned step);
+ void fix_output_gamma();
+ void add_dither_if_needed();
+
+ float aspect_nom, aspect_denom;
+ ImageFormat output_format;
+ OutputAlphaFormat output_alpha_format;
+
+ std::vector<Node *> nodes;
+ std::map<Effect *, Node *> node_map;
+ Effect *dither_effect;
+
+ std::vector<Input *> inputs; // Also contained in nodes.
+ std::vector<Phase *> phases;
+
+ unsigned num_dither_bits;