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.snippets.Renderer;
8 import net.mograsim.logic.model.snippets.outlinerenderers.DefaultOutlineRenderer;
9 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer;
10 import net.mograsim.logic.model.snippets.symbolrenderers.SimpleRectangularLikeSymbolRenderer.SimpleRectangularLikeParams;
12 public abstract class ModelMemory extends ModelComponent
14 private Renderer symbolRenderer;
15 private Renderer outlineRenderer;
16 protected final int width, height;
18 protected ModelMemory(LogicModelModifiable model, int width, int height, String name, String centerText, boolean callInit)
20 super(model, name, false);
24 SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
25 rendererParams.centerText = centerText;
26 rendererParams.centerTextHeight = 24;
27 rendererParams.horizontalComponentCenter = width / 100;
28 rendererParams.pinLabelHeight = 17.5;
29 rendererParams.pinLabelMargin = 2.5;
30 this.symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams);
31 this.outlineRenderer = new DefaultOutlineRenderer(this);
33 setSize(width, height);
40 public void render(GeneralGC gc, Rectangle visibleRegion)
42 symbolRenderer.render(gc, visibleRegion);
43 outlineRenderer.render(gc, visibleRegion);