72fe4377f7cccb3eae5b844be333afc0c563ddba
[Mograsim.git] / plugins / net.mograsim.machine / src / net / mograsim / machine / ModelMemory.java
1 package net.mograsim.machine;
2
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;
11
12 public abstract class ModelMemory extends ModelComponent
13 {
14         private Renderer symbolRenderer;
15         private Renderer outlineRenderer;
16
17         protected ModelMemory(LogicModelModifiable model, int width, int height, String name, String centerText, boolean callInit)
18         {
19                 super(model, name, false);
20
21                 SimpleRectangularLikeParams rendererParams = new SimpleRectangularLikeParams();
22                 rendererParams.centerText = centerText;
23                 rendererParams.centerTextHeight = 5;
24                 rendererParams.horizontalComponentCenter = width / 2;
25                 rendererParams.pinLabelHeight = 2.5;
26                 rendererParams.pinLabelMargin = 0.5;
27                 this.symbolRenderer = new SimpleRectangularLikeSymbolRenderer(this, rendererParams);
28                 this.outlineRenderer = new DefaultOutlineRenderer(this);
29
30                 setSize(width, height);
31
32                 if (callInit)
33                         init();
34         }
35
36         @Override
37         public void render(GeneralGC gc, Rectangle visibleRegion)
38         {
39                 symbolRenderer.render(gc, visibleRegion);
40                 outlineRenderer.render(gc, visibleRegion);
41         }
42 }