package com.door43.translationstudio.rendering; import java.util.ArrayList; import java.util.List; /** * Created by joel on 1/26/2015. */ public class RenderingGroup { private boolean mStopped = false; private boolean mRunning = false; private List<RenderingEngine> mEngines = new ArrayList<RenderingEngine>(); private CharSequence mInput; /** * Adds a rendering engine to the queue * @param engine */ public void addEngine(RenderingEngine engine) { mEngines.add(engine); } /** * if set to false verses will not be displayed in the output. * * @param enable default is true */ public void setVersesEnabled(boolean enable) { for (RenderingEngine engine : mEngines) { if(engine instanceof ClickableRenderingEngine) { ((ClickableRenderingEngine) engine).setVersesEnabled(enable); } } } /** * if set to true, then line breaks will be shown in the output. * * @param enable default is false */ public void setLinebreaksEnabled(boolean enable) { for (RenderingEngine engine : mEngines) { if(engine instanceof ClickableRenderingEngine) { ((ClickableRenderingEngine) engine).setLinebreaksEnabled(enable); } } } /** * Begins the rendering operations */ public CharSequence start() { if(mRunning || mInput == null) return ""; mRunning = true; mStopped = false; CharSequence rendered = mInput; for(RenderingEngine engine:mEngines) { if(mStopped) break; rendered = engine.render(rendered); } mRunning = false; return rendered; } /** * Stops the rendering operations */ public void stop() { mStopped = true; for(RenderingEngine engine:mEngines) { engine.stop(); } } /** * Initializes the rendering group * @param input */ public void init(String input) { mInput = input; } }