-LY_DEFINE (ly_layout_lookup, "ly:output-def-lookup",
- 2, 0, 0, (SCM pap, SCM sym),
- "Lookup @var{sym} in @var{pap}. "
- "Return the value or @code{'()} if undefined.")
-{
- Output_def *op = unsmob_output_def (pap);
- SCM_ASSERT_TYPE (op, pap, SCM_ARG1, __FUNCTION__, "Output_def");
- SCM_ASSERT_TYPE (scm_is_symbol (sym), sym, SCM_ARG2, __FUNCTION__, "symbol");
-
- return op->lookup_variable (sym);
-}
-
-LY_DEFINE (ly_output_def_scope, "ly:output-def-scope",
- 1, 0, 0, (SCM def),
- "Get the variable scope inside @var{def}.")
-{
- Output_def *op = unsmob_output_def (def);
- SCM_ASSERT_TYPE (op, def, SCM_ARG1, __FUNCTION__, "Output definition");
- return op->scope_;
-}
+void
+Output_def::normalize ()
+{
+ Real paper_width;
+ SCM scm_paper_width = c_variable ("paper-width");
+
+ bool twosided = to_boolean (c_variable ("two-sided"));
+ // We don't distinguish between outer-margin / left-margin and so on
+ // until page-stencil positioning in page.scm
+ Real left_margin, left_margin_default;
+ SCM scm_left_margin_default = (twosided
+ ? c_variable ("outer-margin-default-scaled")
+ : c_variable ("left-margin-default-scaled"));
+ SCM scm_left_margin = (twosided
+ ? c_variable ("outer-margin")
+ : c_variable ("left-margin"));
+
+ Real right_margin, right_margin_default;
+ SCM scm_right_margin_default = (twosided
+ ? c_variable ("inner-margin-default-scaled")
+ : c_variable ("right-margin-default-scaled"));
+ SCM scm_right_margin = (twosided
+ ? c_variable ("inner-margin")
+ : c_variable ("right-margin"));
+
+ if (SCM_UNBNDP (scm_paper_width)
+ || SCM_UNBNDP (scm_left_margin_default)
+ || SCM_UNBNDP (scm_right_margin_default))
+ {
+ programming_error ("called normalize () on paper with missing settings");
+ return;
+ }
+ else
+ {
+ paper_width = scm_to_double (scm_paper_width);
+ left_margin_default = scm_to_double (scm_left_margin_default);
+ right_margin_default = scm_to_double (scm_right_margin_default);
+ }