1 package net.mograsim.machine;
3 import net.haspamelodica.swt.helper.gcs.GeneralGC;
4 import net.haspamelodica.swt.helper.swtobjectwrappers.Rectangle;
5 import net.mograsim.logic.model.model.LogicModelModifiable;
6 import net.mograsim.logic.model.model.components.ModelComponent;
7 import net.mograsim.logic.model.preferences.RenderPreferences;
8 import net.mograsim.logic.model.snippets.Renderer;
9 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
10 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer;
11 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams;
13 public abstract class ModelMemory extends ModelComponent
15 private Renderer symbolRenderer;
16 private Renderer outlineRenderer;
18 protected ModelMemory(LogicModelModifiable model, int width, int height, String name, String centerText, boolean callInit)
20 super(model, name, false);
22 SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
23 rendererParams.centerText = centerText;
24 rendererParams.centerTextHeight = 5;
25 rendererParams.horizontalComponentCenter = width / 2;
26 rendererParams.pinLabelHeight = 2.5;
27 rendererParams.pinLabelMargin = 0.5;
28 this.symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams);
29 this.outlineRenderer = new DefaultOutlineRenderer(this);
31 setSize(width, height);
38 public void render(GeneralGC gc, RenderPreferences renderPrefs, Rectangle visibleRegion)
40 symbolRenderer.render(gc, renderPrefs, visibleRegion);
41 outlineRenderer.render(gc, renderPrefs, visibleRegion);