class Grob : public Smob<Grob>
{
public:
- int print_smob (SCM, scm_print_state *);
- SCM mark_smob ();
- static const char type_p_name_[];
+ int print_smob (SCM, scm_print_state *) const;
+ SCM mark_smob () const;
+ static const char * const type_p_name_;
virtual ~Grob ();
private:
DECLARE_CLASSNAME (Grob);
/* interfaces */
bool internal_has_interface (SCM intf);
- DECLARE_GROB_INTERFACE ();
/* offsets */
void translate_axis (Real, Axis);
Real relative_coordinate (Grob const *refp, Axis) const;
+ Real parent_relative (Grob const *refp, Axis) const;
Real pure_relative_y_coordinate (Grob const *refp, int start, int end);
Real maybe_pure_coordinate (Grob const *refp, Axis a, bool pure, int start, int end);
/* extents */
Interval extent (Grob *refpoint, Axis) const;
void flush_extent_cache (Axis);
- virtual Interval pure_height (Grob *refpoint, int start_col, int end_col);
+ virtual Interval pure_y_extent (Grob *refpoint, int start, int end);
Interval maybe_pure_extent (Grob *refpoint, Axis, bool pure, int start, int end);
/* refpoints */
static SCM internal_skylines_from_element_stencils (SCM, Axis);
};
+template <class T>
+inline bool has_interface(Grob *g)
+{
+ return g && g->internal_has_interface (Grob_interface<T>::interface_symbol_);
+}
+
/* unification */
void uniquify (vector <Grob *> &);