void insert_node_between(Node *sender, Node *middle, Node *receiver);
private:
- // Fits a rectangle of the given size to the current aspect ratio
- // (aspect_nom/aspect_denom) and returns the new width and height.
- unsigned fit_rectangle_to_aspect(unsigned width, unsigned height);
+ // Make sure the output rectangle is at least large enough to hold
+ // the given input rectangle in both dimensions, and is of the
+ // current aspect ratio (aspect_nom/aspect_denom).
+ void size_rectangle_to_fit(unsigned width, unsigned height, unsigned *output_width, unsigned *output_height);
// Compute the input sizes for all inputs for all effects in a given phase,
// and inform the effects about the results.
// Output the current graph to the given file in a Graphviz-compatible format;
// only useful for debugging.
void output_dot(const char *filename);
+ std::vector<std::string> get_labels_for_edge(const Node *from, const Node *to);
+ void output_dot_edge(FILE *fp,
+ const std::string &from_node_id,
+ const std::string &to_node_id,
+ const std::vector<std::string> &labels);
// Some of the graph algorithms assume that the nodes array is sorted
// topologically (inputs are always before outputs), but some operations
GLuint fbo;
std::vector<Phase *> phases;
- GLenum format;
- unsigned bytes_per_pixel, num_dither_bits;
+ unsigned num_dither_bits;
bool finalized;
};