MarginStruct PresetLayout::getMargins(int index, double pageWidth, double pageHeight, double leftMargin) { MarginStruct ret; updateMargins = true; switch (index) { case PresetLayout::magazine: ret.set(leftMargin, leftMargin, leftMargin, leftMargin); break; case PresetLayout::gutenberg: { double ratio = pageHeight / pageWidth; ret.setLeft(leftMargin); ret.setTop(leftMargin * ratio); ret.setRight(leftMargin * 2.0); ret.setBottom(ret.right() * ratio); } break; case PresetLayout::fibonacci: ret.setLeft(leftMargin); ret.setTop(leftMargin / 2.0 * 3.0); ret.setRight(leftMargin / 2.0 * 5.0); ret.setBottom(leftMargin / 2.0 * 8.0); break; case PresetLayout::goldencut: ret.setLeft(leftMargin); ret.setTop(leftMargin / 2.0 * 3.4); ret.setRight(leftMargin / 2.0 * 4.8); ret.setBottom(leftMargin / 2.0 * 6.8); break; case PresetLayout::nineparts: ret.setLeft(pageWidth / 9.0); ret.setTop(pageHeight / 9.0); ret.setRight(pageWidth / 9.0 * 2.0); ret.setBottom(pageHeight / 9.0 * 2.0); break; default: updateMargins = false; ret.set(-1.0, -1.0, -1.0, -1.0); } return ret; }