Beispiel #1
0
 public void setLayerSettings(EntropyLayerSettings readSettings, int layer, bool gdsOnly, bool updateGeoCoreGeometryFromFile = false)
 {
     // Ignore resumeUI - only for GUI modes.
     pSetLayerSettings(readSettings, layer, gdsOnly, updateGeoCoreGeometryFromFile);
 }
Beispiel #2
0
    private void pSetLayerSettings(EntropyLayerSettings entropyLayerSettings, int settingsIndex, bool gdsOnly, bool updateGeoCoreGeometryFromFile = false)
    {
        // This is used by the pasteHandler and clearHandler to set user interface values to align with the settings.
        // It is also used by the load from disk file system, using a temporary MCSettings instance as the source
        // In the case of the clearHandler, we get sent a new MCLayerSettings instance, so we have to handle that.
        // Check our copyFrom reference. We need to do this early before anything could change.

        if (!gdsOnly)
        {
            if (commonVars.isCopyPrepped())
            {
                if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.xOL_corr) == 1 || entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.yOL_corr) == 1 || entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.CDU_corr) == 1)
                {
                    // User pasting into the correlation layer. Disable correlation settings accordingly.
                    if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.xOL_corr_ref) == settingsIndex)
                    {
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.xOL_corr, 0);
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.xOL_corr_ref, -1);
                    }
                    if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.yOL_corr_ref) == settingsIndex)
                    {
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.yOL_corr, 0);
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.yOL_corr_ref, -1);
                    }
                    if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.xOL_ref) == settingsIndex)
                    {
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.xOL_ref, -1);
                    }
                    if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.yOL_ref) == settingsIndex)
                    {
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.yOL_ref, -1);
                    }
                    if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.CDU_corr_ref) == settingsIndex)
                    {
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.CDU_corr, 0);
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.CDU_corr_ref, -1);
                    }
                    if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.tCDU_corr_ref) == settingsIndex)
                    {
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.tCDU_corr, 0);
                        entropyLayerSettings.setInt(EntropyLayerSettings.properties_i.tCDU_corr_ref, -1);
                    }
                }
            }
        }

        // Remove any average overlay reference to the layer we're in, just for safety.
        entropyLayerSettings.setIntArrayValue(EntropyLayerSettings.properties_intarray.xOLRefs, settingsIndex, 0);
        entropyLayerSettings.setIntArrayValue(EntropyLayerSettings.properties_intarray.yOLRefs, settingsIndex, 0);

        try
        {
            // Call with '-1' can be triggered by load of project file where the copyFrom isn't set because we're direct driving the DOE flags.
            if (commonVars.isCopyPrepped())
            {
                commonVars.getSimulationSettings().getDOESettings().setLayerAffected(settingsIndex, commonVars.getCopyDOEUse());
            }
        }
        catch (Exception)
        {
        }

        if (entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.sCDU) != 0.0m && entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.shapeIndex) == (int)CommonVars.shapeNames.GEOCORE &&
            varianceContext.geoCoreCDVariation == false)
        {
            ErrorReporter.showMessage_OK("Project uses Oasis/GDS CD variation.", "Overriding preference.");
        }

        if (commonVars.isCopyPrepped())
        {
            // Align the external data.
            commonVars.pasteGeoCoreHandler(settingsIndex);
            // commonVars.getGeoCoreHandler(settingsIndex).readValues(commonVars.copyLayerGHSettings);
        }
        else
        {
            commonVars.getGeoCoreHandler(settingsIndex).setValid(false);
            if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.shapeIndex) == (int)CommonVars.shapeNames.GEOCORE && entropyLayerSettings.isReloaded())
            {
                commonVars.getGeoCoreHandler(settingsIndex).setFilename(entropyLayerSettings.getString(EntropyLayerSettings.properties_s.file));
                commonVars.getGeoCoreHandler(settingsIndex).setValid(true);
                if (updateGeoCoreGeometryFromFile)
                {
                    commonVars.getGeoCoreHandler(settingsIndex).setPoints(commonVars.getLayerSettings(settingsIndex).getInt(EntropyLayerSettings.properties_i.structure), commonVars.getLayerSettings(settingsIndex).getInt(EntropyLayerSettings.properties_i.lD));
                }
            }
        }

        // Commit our settings to the list.
        commonVars.getLayerSettings(settingsIndex).adjustSettings(entropyLayerSettings, gdsOnly);
    }
    // ReSharper disable once UnusedMember.Local
    private void doOffsets(EntropyLayerSettings entropyLayerSettings)
    {
        // OK. Now we need to pay attention to the subshape reference settings.

        /*
         * 0: Top left
         * 1: Top right
         * 2: Bottom left
         * 3: Bottom right
         * 4: Top middle
         * 5: Right middle
         * 6: Bottom middle
         * 7: Left middle
         * 8: Center center
         */
        if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.TL ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.TR ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.TS ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.RS ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.LS ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.C)
        {
            // Vertical offset needed to put reference corner at world center
            // Our coordinates have placed bottom left at 0,0 so negative offsets needed (note origin comment above)
            // Find our subshape reference.
            int tmp_yOffset = Convert.ToInt32(entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.subShapeIndex) == 0 ? entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.s0VerLength) : entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.s1VerLength));

            // Half the value for a vertical centering requirement
            if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.RS ||
                entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.LS ||
                entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.C)
            {
                tmp_yOffset = Convert.ToInt32(tmp_yOffset / 2);
            }
        }

        // Coordinates placed bottom left at 0,0.
        int tmp_xOffset = 0;

        if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.subShapeIndex) == 1)
        {
            tmp_xOffset = -1 * Convert.ToInt32(entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.s0HorLength));
        }
        if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.TR ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.BR ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.TS ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.RS ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.BS ||
            entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.C)
        {
            if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.subShapeIndex) == 0)
            {
                tmp_xOffset -= Convert.ToInt32(entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.s0HorLength));
            }
            else
            {
                tmp_xOffset -= Convert.ToInt32(entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.s1HorLength));
            }

            // Half the value for horizontal centering conditions
            if (entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.TS ||
                entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.BS ||
                entropyLayerSettings.getInt(EntropyLayerSettings.properties_i.posIndex) == (int)CommonVars.subShapeLocations.C)
            {
                tmp_xOffset = Convert.ToInt32(tmp_xOffset / 2);
            }
        }

        // Now for global offset.
        Convert.ToInt32(entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.gHorOffset));
        Convert.ToInt32(entropyLayerSettings.getDecimal(EntropyLayerSettings.properties_decimal.gVerOffset));
    }