public void setFocusScale(float focusScale) {
   presentation.setDefaultFocusScale(focusScale);
   Iterator<Shape> iter = presentation.shapeIterator(true);
   while (iter.hasNext()) {
     Shape shape = iter.next();
     shape.setFocusScale(focusScale);
   }
   animationController.readjustDirectly();
 }
  public void setReflectionEnabled(boolean reflectionEnabled) {
    presentation.setDefaultReflectionEnabled(reflectionEnabled);

    Iterator<Shape> iter = presentation.shapeIterator(true);
    while (iter.hasNext()) {
      Shape shape = iter.next();
      shape.setReflectionEnabled(reflectionEnabled);
    }
  }
  public void changeLayout(Layouter layouter) {
    Shape focussedShape = animationController.getLastFocussedShape();

    layouter.layout(presentation);
    // layouter.animate(presentation, animationStyle);

    presentation.setDefaultLayouter(layouter);
    presentation.resetStartCamera();
    animationController.readjustSmoothlyTo(focussedShape);
  }
  public void changeAnimationPath(
      AnimationPathLayouter pathLayouter, AnimationStyle animationStyle) {
    Shape focussedShape = animationController.getLastFocussedShape();

    presentation.setDefaultAnimationPathLayouter(pathLayouter);
    pathLayouter.layoutAnimationPath(presentation, animationStyle);
    animationController.readjustSmoothlyTo(focussedShape);
  }
  public void changeAnimationStyle(AnimationStyle animationStyle) {
    presentation.setDefaultAnimationStyle(animationStyle);

    AnimationStep animationStep = presentation.getFirstAnimationStep();
    setAnimationStyleRecursively(animationStep, animationStyle);
  }
 public void setSpace(float value, Layouter layouter) {
   presentation.setSpace(value, layouter);
 }