@Override
public void render(GeneralGC gc, Rectangle visibleRegion)
{
- double posX = getBounds().x;
- double posY = getBounds().y;
-
GCConfig conf = new GCConfig(gc);
- TranslatedGC tgc = new TranslatedGC(gc, posX, posY, submodelScale, true);
+ TranslatedGC tgc = new TranslatedGC(gc, getPosX(), getPosY(), submodelScale, true);
conf.reset(tgc);
- double visibleRegionFillRatio = Math.max(getBounds().width / visibleRegion.width, getBounds().height / visibleRegion.height);
+ double visibleRegionFillRatio = Math.max(getWidth() / visibleRegion.width, getHeight() / visibleRegion.height);
double alphaFactor = map(visibleRegionFillRatio, maxVisibleRegionFillRatioForAlpha0, minVisibleRegionFillRatioForAlpha1, 0, 1);
alphaFactor = Math.max(0, Math.min(1, alphaFactor));
// we need to take the old alpha into account to support nested submodules better.
if (submodelAlpha != 0)
{
gc.setAlpha(submodelAlpha);
- renderer.render(tgc, visibleRegion.translate(posX / submodelScale, posY / submodelScale, 1 / submodelScale));
+ renderer.render(tgc, visibleRegion.translate(getPosX() / submodelScale, getPosY() / submodelScale, 1 / submodelScale));
}
if (labelAlpha != 0)
{
@Override
public boolean clicked(double x, double y)
{
- // TODO
- double scaledX = (x - getBounds().x) / submodelScale;
- double scaledY = (y - getBounds().y) / submodelScale;
- double roundedScaledX = Math.round(scaledX / 5 * 2) * 5 / 2.;
- double roundedScaledY = Math.round(scaledY / 5 * 2) * 5 / 2.;
- System.out.println(scaledX + "|" + scaledY + ", rounded " + roundedScaledX + "|" + roundedScaledY);
- return true;
+ double scaledX = (x - getPosX()) / submodelScale;
+ double scaledY = (y - getPosY()) / submodelScale;
+ for (GUIComponent component : submodel.getComponents())
+ if (component.getBounds().contains(scaledX, scaledY) && component.clicked(scaledX, scaledY))
+ return true;
+ return false;
}
/**
params.type = SubmodelComponent.class.getSimpleName();
params.composition = calculateCompositionParams();
- Rectangle bounds = getBounds();
- params.width = bounds.width;
- params.height = bounds.height;
+ params.width = getWidth();
+ params.height = getHeight();
InterfacePinParams[] iPins = new InterfacePinParams[getPins().size()];
int i = 0;
InnerComponentParams inner = new InnerComponentParams();
comps[i] = inner;
inner.params = component.getInstantiationParameters();
- Rectangle bounds = component.getBounds();
- inner.pos = new Point(bounds.x, bounds.y);
+ inner.pos = new Point(getPosX(), getPosY());
inner.type = component.getIdentifier();
i++;
}