├── settings.gradle
├── res
└── img
│ ├── freerouting.jpg
│ └── freerouting.png
├── tests
└── LPC18XX_43XX_SCH.DSN
├── gradle
├── wrapper
│ ├── gradle-wrapper.jar
│ └── gradle-wrapper.properties
└── project-info.gradle
├── src
└── main
│ ├── java
│ ├── eu
│ │ └── mihosoft
│ │ │ └── freerouting
│ │ │ ├── FreeRouting.java
│ │ │ ├── designforms
│ │ │ └── specctra
│ │ │ │ ├── SpecctraFileDescription.flex
│ │ │ │ ├── package.html
│ │ │ │ ├── Scanner.java
│ │ │ │ ├── Path.java
│ │ │ │ ├── Placement.java
│ │ │ │ └── WriteScopeParameter.java
│ │ │ ├── interactive
│ │ │ ├── ThreadActionListener.java
│ │ │ ├── package.html
│ │ │ ├── IBoardHandling.java
│ │ │ ├── LogfileDescription.flex
│ │ │ ├── DragMenuState.java
│ │ │ ├── RouteMenuState.java
│ │ │ ├── SelectMenuState.java
│ │ │ └── SelectRegionState.java
│ │ │ ├── gui
│ │ │ ├── package.html
│ │ │ ├── DefaultExceptionHandler.java
│ │ │ ├── BoardSubWindow.java
│ │ │ ├── BoardTemporarySubWindow.java
│ │ │ ├── BoardMenuHelpReduced.java
│ │ │ ├── WindowNetSampleDesigns.java
│ │ │ ├── BoardMenuOther.java
│ │ │ └── PopupMenuInsertCancel.java
│ │ │ ├── autoroute
│ │ │ ├── package.html
│ │ │ ├── CompleteExpansionRoom.java
│ │ │ ├── MazeSearchElement.java
│ │ │ ├── ExpandableObject.java
│ │ │ ├── IncompleteFreeSpaceExpansionRoom.java
│ │ │ └── ExpansionRoom.java
│ │ │ ├── tests
│ │ │ └── package.html
│ │ │ ├── boardgraphics
│ │ │ ├── package.html
│ │ │ ├── ItemDrawInfo.java
│ │ │ └── Drawable.java
│ │ │ ├── rules
│ │ │ └── package.html
│ │ │ ├── datastructures
│ │ │ ├── package.html
│ │ │ ├── Stoppable.java
│ │ │ ├── IdNoGenerator.java
│ │ │ ├── Observers.java
│ │ │ ├── TimeLimit.java
│ │ │ ├── ArrayStack.java
│ │ │ └── FileFilter.java
│ │ │ ├── library
│ │ │ └── package.html
│ │ │ ├── board
│ │ │ ├── FixedState.java
│ │ │ ├── BoardObservers.java
│ │ │ ├── TestLevel.java
│ │ │ ├── Layer.java
│ │ │ ├── SearchTreeObject.java
│ │ │ ├── AngleRestriction.java
│ │ │ ├── ItemIdNoGenerator.java
│ │ │ └── BoardObserverAdaptor.java
│ │ │ ├── logger
│ │ │ └── FRLogger.java
│ │ │ └── geometry
│ │ │ └── planar
│ │ │ ├── Limits.java
│ │ │ ├── ConvexShape.java
│ │ │ ├── ShapeBoundingDirections.java
│ │ │ ├── OrthogonalBoundingDirections.java
│ │ │ ├── Ellipse.java
│ │ │ ├── FortyfiveDegreeBoundingDirections.java
│ │ │ ├── FortyfiveDegreeDirection.java
│ │ │ └── Side.java
│ └── module-info.java
│ └── resources
│ ├── eu
│ └── mihosoft
│ │ └── freerouting
│ │ ├── helpset
│ │ ├── de
│ │ │ ├── JavaHelpSearch
│ │ │ │ ├── SCHEMA
│ │ │ │ ├── DOCS
│ │ │ │ ├── TMAP
│ │ │ │ ├── DOCS.TAB
│ │ │ │ ├── OFFSETS
│ │ │ │ └── POSITIONS
│ │ │ ├── html_files
│ │ │ │ ├── WindowMoveParameter.html
│ │ │ │ ├── WindowAutorouteParameter.html
│ │ │ │ ├── WindowSelectParameter.html
│ │ │ │ ├── WindowAutorouteDetailParameter.html
│ │ │ │ └── WindowManualRules.html
│ │ │ ├── Help.hs
│ │ │ └── index.html
│ │ └── en
│ │ │ ├── JavaHelpSearch
│ │ │ ├── SCHEMA
│ │ │ ├── DOCS
│ │ │ ├── TMAP
│ │ │ ├── DOCS.TAB
│ │ │ ├── OFFSETS
│ │ │ └── POSITIONS
│ │ │ ├── images
│ │ │ └── popup.gif
│ │ │ ├── html_files
│ │ │ ├── WindowMoveParameter.html
│ │ │ ├── WindowAutorouteParameter.html
│ │ │ ├── WindowSelectParameter.html
│ │ │ ├── WindowAutorouteDetailParameter.html
│ │ │ ├── WindowManualRules.html
│ │ │ ├── WindowClearanceMatrix.html
│ │ │ └── WindowDisplay.html
│ │ │ ├── Help.hs
│ │ │ └── index.html
│ │ ├── rules
│ │ ├── Default_de.properties
│ │ └── Default_en.properties
│ │ ├── gui
│ │ ├── Default_de.properties
│ │ ├── WindowVia_de.properties
│ │ ├── DisplayMisc_de.properties
│ │ ├── WindowNets_de.properties
│ │ ├── BoardMenuFile_de.properties
│ │ ├── BoardMenuHelp_de.properties
│ │ ├── BoardMenuInfo_de.properties
│ │ ├── BoardMenuOther_de.properties
│ │ ├── PopupMenuMain_de.properties
│ │ ├── PopupMenuMove_de.properties
│ │ ├── WindowEditVias_de.properties
│ │ ├── WindowSnapshot_de.properties
│ │ ├── WindowViaRule_de.properties
│ │ ├── BoardMenuDisplay_de.properties
│ │ ├── BoardPanelStatus_de.properties
│ │ ├── WindowManualRule_de.properties
│ │ ├── WindowNetClasses_de.properties
│ │ ├── WindowNetSamples_de.properties
│ │ ├── WindowObjectInfo_de.properties
│ │ ├── WindowObjectList_de.properties
│ │ ├── WindowClearanceMatrix_de.properties
│ │ ├── WindowLengthViolations_de.properties
│ │ ├── WindowObjectVisibility_de.properties
│ │ ├── WindowSelectParameter_de.properties
│ │ ├── WindowClearanceViolations_de.properties
│ │ ├── BoardMenuHelp_en.properties
│ │ ├── BoardMenuOther_en.properties
│ │ ├── BoardMenuParameter_en.properties
│ │ ├── BoardMenuRules_en.properties
│ │ ├── BoardMenuRules_de.properties
│ │ ├── BoardMenuParameter_de.properties
│ │ ├── BoardPanelStatus_en.properties
│ │ ├── WindowManualRule_en.properties
│ │ ├── WindowAssignNetClass_en.properties
│ │ ├── WindowAssignNetClass_de.properties
│ │ ├── WindowLengthViolations_en.properties
│ │ ├── PopupMenuMain_en.properties
│ │ ├── WindowObjectInfo_en.properties
│ │ ├── WindowNets_en.properties
│ │ ├── WindowMoveParameter_en.properties
│ │ ├── WindowSnapshot_en.properties
│ │ ├── BoardMenuInfo_en.properties
│ │ ├── WindowMoveParameter_de.properties
│ │ ├── WindowAbout_en.properties
│ │ ├── PopupMenuMove_en.properties
│ │ ├── CleanupWindows_en.properties
│ │ ├── WindowAbout_de.properties
│ │ ├── WindowClearanceViolations_en.properties
│ │ ├── BoardFrame_en.properties
│ │ ├── BoardMenuDisplay_en.properties
│ │ ├── CleanupWindows_de.properties
│ │ ├── WindowEditVias_en.properties
│ │ ├── WindowObjectList_en.properties
│ │ ├── WindowObjectVisibility_en.properties
│ │ ├── BoardFrame_de.properties
│ │ ├── WindowNetSamples_en.properties
│ │ ├── DisplayMisc_en.properties
│ │ ├── WindowViaRule_en.properties
│ │ ├── WindowRouteDetail_en.properties
│ │ ├── WindowClearanceMatrix_en.properties
│ │ ├── WindowRouteDetail_de.properties
│ │ ├── WindowSnapshotSettings_en.properties
│ │ ├── WindowSnapshotSettings_de.properties
│ │ ├── WindowSelectParameter_en.properties
│ │ ├── WindowAutorouteParameter_en.properties
│ │ ├── WindowAutorouteParameter_de.properties
│ │ ├── BoardToolbar_en.properties
│ │ ├── Default_en.properties
│ │ ├── BoardToolbar_de.properties
│ │ ├── MainApplication_en.properties
│ │ ├── WindowVia_en.properties
│ │ ├── MainApplication_de.properties
│ │ ├── WindowNetClasses_en.properties
│ │ ├── BoardToolbarSelectedItem_en.properties
│ │ ├── WindowRouteParameter_en.properties
│ │ ├── BoardMenuFile_en.properties
│ │ ├── BoardToolbarSelectedItem_de.properties
│ │ └── WindowRouteParameter_de.properties
│ │ ├── board
│ │ ├── ObjectInfoPanel_de.properties
│ │ ├── FixedState_en.properties
│ │ ├── FixedState_de.properties
│ │ └── ObjectInfoPanel_en.properties
│ │ ├── interactive
│ │ ├── RatsNest_de.properties
│ │ ├── BoardHandling_de.properties
│ │ ├── RatsNest_en.properties
│ │ ├── ScreenMessages_en.properties
│ │ ├── ScreenMessages_de.properties
│ │ └── BoardHandling_en.properties
│ │ └── boardgraphics
│ │ ├── ColorTableModel_de.properties
│ │ └── ColorTableModel_en.properties
│ └── log4j2.xml
├── .gitignore
├── .github
└── workflows
│ └── gradle-build-pr.yml
├── launch4j.xml
└── distribution
├── create-distribution-SNAPSHOT-windows-x86.bat
├── create-distribution-windows-x86.bat
├── create-distribution-SNAPSHOT-windows.bat
├── create-distribution-windows.bat
├── create-distribution-macos.sh
└── create-distribution-linux.sh
/settings.gradle:
--------------------------------------------------------------------------------
1 | rootProject.name = 'freerouting'
2 |
3 |
--------------------------------------------------------------------------------
/res/img/freerouting.jpg:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/res/img/freerouting.jpg
--------------------------------------------------------------------------------
/res/img/freerouting.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/res/img/freerouting.png
--------------------------------------------------------------------------------
/tests/LPC18XX_43XX_SCH.DSN:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/tests/LPC18XX_43XX_SCH.DSN
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/gradle/wrapper/gradle-wrapper.jar
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/FreeRouting.java:
--------------------------------------------------------------------------------
1 | package eu.mihosoft.freerouting;
2 |
3 | public class FreeRouting {
4 | }
5 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/SCHEMA:
--------------------------------------------------------------------------------
1 | JavaSearch 1.0
2 | TMAP bs=2048 rt=1 fl=-1 id1=1270 id2=1
3 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/SCHEMA:
--------------------------------------------------------------------------------
1 | JavaSearch 1.0
2 | TMAP bs=2048 rt=1 fl=-1 id1=874 id2=1
3 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/rules/Default_de.properties:
--------------------------------------------------------------------------------
1 | # German version of the default file with language dependent text
2 | class = Klasse
3 | net# = Netz#
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/rules/Default_en.properties:
--------------------------------------------------------------------------------
1 | # English version of the default file with language dependent text
2 | class = class
3 | net# = Net#
4 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/Default_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/Default_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowVia_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowVia_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/images/popup.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/en/images/popup.gif
--------------------------------------------------------------------------------
/src/main/java/module-info.java:
--------------------------------------------------------------------------------
1 | //module eu.mihosoft.freerouting {
2 | // requires java.desktop;
3 | // requires java.logging;
4 | // requires eu.mihosoft.freerouting.deps.jh;
5 | //}
6 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/DisplayMisc_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/DisplayMisc_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowNets_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowNets_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/DOCS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/DOCS
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/TMAP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/TMAP
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/DOCS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/DOCS
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/TMAP:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/TMAP
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuFile_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuFile_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuHelp_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuHelp_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuInfo_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuInfo_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuOther_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuOther_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/PopupMenuMain_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/PopupMenuMain_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/PopupMenuMove_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/PopupMenuMove_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowEditVias_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowEditVias_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowSnapshot_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowSnapshot_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowViaRule_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowViaRule_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/board/ObjectInfoPanel_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/board/ObjectInfoPanel_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuDisplay_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuDisplay_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardPanelStatus_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/BoardPanelStatus_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowManualRule_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowManualRule_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowNetClasses_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowNetClasses_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowNetSamples_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowNetSamples_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectInfo_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectInfo_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectList_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectList_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/DOCS.TAB:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/DOCS.TAB
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/OFFSETS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/OFFSETS
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/POSITIONS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/de/JavaHelpSearch/POSITIONS
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/DOCS.TAB:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/DOCS.TAB
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/OFFSETS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/OFFSETS
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/POSITIONS:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/helpset/en/JavaHelpSearch/POSITIONS
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/interactive/RatsNest_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/interactive/RatsNest_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowClearanceMatrix_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowClearanceMatrix_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowLengthViolations_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowLengthViolations_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectVisibility_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectVisibility_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowSelectParameter_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowSelectParameter_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/interactive/BoardHandling_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/interactive/BoardHandling_de.properties
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/designforms/specctra/SpecctraFileDescription.flex:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/java/eu/mihosoft/freerouting/designforms/specctra/SpecctraFileDescription.flex
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/boardgraphics/ColorTableModel_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/boardgraphics/ColorTableModel_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowClearanceViolations_de.properties:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/miho/freerouting/HEAD/src/main/resources/eu/mihosoft/freerouting/gui/WindowClearanceViolations_de.properties
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/board/FixedState_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class FixedState
2 | UNFIXED = unfixed
3 | SHOVE_FIXED = shove fixed
4 | USER_FIXED = user fixed
5 | SYSTEM_FIXED = system fixed
6 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuHelp_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuHelp
2 | help = Help
3 | contents = Help Contents
4 | direct_help = Help Context
5 | about = About this Software
6 |
--------------------------------------------------------------------------------
/gradle/wrapper/gradle-wrapper.properties:
--------------------------------------------------------------------------------
1 | distributionBase=GRADLE_USER_HOME
2 | distributionPath=wrapper/dists
3 | distributionUrl=https\://services.gradle.org/distributions/gradle-6.2-bin.zip
4 | zipStoreBase=GRADLE_USER_HOME
5 | zipStorePath=wrapper/dists
6 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuOther_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuOther
2 | other = Other
3 | snapshots = Snapshots
4 | snapshots_tooltip = opens window for interactive snapshots
5 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuParameter_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuParameter
2 | parameter = Parameter
3 | select = Select
4 | route = Route
5 | autoroute = Autoroute
6 | move = Move
7 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuRules_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuRules
2 | rules = Rules
3 | clearance_matrix = Clearance Matrix
4 | vias = Vias
5 | nets = Nets
6 | net_classes = Net Classes
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuRules_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class BoardMenuRules
2 | rules = Regeln
3 | clearance_matrix = Clearance-Matrix
4 | vias = Vias
5 | nets = Netze
6 | net_classes = Netzklassen
7 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/board/FixedState_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class FixedState
2 | UNFIXED = unfixiert
3 | SHOVE_FIXED = verschiebe-fixiert
4 | USER_FIXED = benutzer-fixiert
5 | SYSTEM_FIXED = system-fixiert
6 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuParameter_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class BoardMenuParameter
2 | parameter = Parameter
3 | select = selektieren
4 | route = routen
5 | autoroute = autorouten
6 | move = platzieren
7 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/ThreadActionListener.java:
--------------------------------------------------------------------------------
1 | package eu.mihosoft.freerouting.interactive;
2 |
3 | public interface ThreadActionListener {
4 | void autorouterStarted();
5 | void autorouterAborted();
6 | void autorouterFinished();
7 | }
8 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | build
2 | out
3 | /.nb-gradle/
4 | .gradle/
5 | .idea/
6 | freerouting.iml
7 | tmp
8 | /logs/
9 | bin/
10 | .project
11 | .settings
12 | .vscode
13 | .classpath
14 |
15 | /distribution/.jdk14
16 | /distribution/runtime
17 | /distribution/Freerouting*
18 |
19 |
20 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardPanelStatus_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardPanelStatus
2 | status_line = status line
3 | additional_text_field = additional text field
4 | current_layer = current layer: Component Side
5 | cursor = cursor:
6 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowManualRule_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowManualRule
2 | title = Manual Rules
3 | via_rule = via rule:
4 | trace_clearance_class = trace clearance class:
5 | trace_width = trace width:
6 | on_layer = on layer:
7 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowAssignNetClass_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowAssignNetClass
2 | title = Assign Net Class
3 | net_name = net name
4 | class_name = class name
5 | net_name_tooltip = The net name
6 | class_name_tooltip = The assigned net class
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/interactive/RatsNest_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class RatsNest
2 | via = via
3 | trace = trace
4 | conduction_area = conduction area
5 | unknown = unknown
6 | incomplete = Incomplete connection
7 | net = net
8 | from = from
9 | to = to
10 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowAssignNetClass_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowAssignNetClass
2 | title = Netzklasse zuweisen
3 | net_name = Netzname
4 | class_name = Klassenname
5 | net_name_tooltip = Der Name des Netzes
6 | class_name_tooltip = Die zugewiesene Netzklasse
7 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowLengthViolations_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowAbout
2 | title = Length Violations
3 | list_empty = no length violations found
4 | maximum_allowed = maximum allowed
5 | minimum_allowed = minimum allowed
6 | net = Net
7 | trace_length = : trace length
8 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/PopupMenuMain_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class PopupMenuMain
2 | select_item = select item (i)
3 | start_route = start route (t)
4 | swap_pin = swap pin (w)
5 | create_keepout = create keepout
6 | tile = tile
7 | circle = circle
8 | polygon = polygon
9 | hole = hole
10 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectInfo_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowObjectInfo
2 | title = Selected Items
3 | summary = Summary:
4 | pin = pin
5 | pins = pins
6 | via = via
7 | vias = vias
8 | trace = trace, cumulative trace length
9 | traces = traces, cumulative trace length
10 | list_empty = list is empty
11 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowNets_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowNets
2 | title = Nets
3 | assign_class = Assign Class
4 | assign_class_tooltip = Assign class to selected nets
5 | filter_incompletes = Filter Incompletes
6 | filter_incompletes_tooltip = Display only the incompletes of the selected nets
7 | message_1 = Select net class
8 | message_2 = Net Class Selection
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowMoveParameter_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowMoveParameter
2 | title = Move Parameter
3 | horizontal_component_grid = horizontal component grid:
4 | vertical_component_grid = vertical component grid:
5 | wheel_function = wheel function:
6 | wheel_function_tooltip = Defines the function of the mouse wheel while moving components
7 | zoom = zoom
8 | rotate = rotate
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowSnapshot_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowSnapshot
2 | title = Snapshots
3 | goto_snapshot = Goto Selected Snapshot
4 | goto_tooltip = shortcut is j
5 | create = Create
6 | snapshot = snapshot
7 | remove = Remove Selected Snapshot
8 | remove_all = Remove All Snapshots
9 | settings = Snapshot Settings
10 | settings_tooltip = to define the settings of a new snapshot
11 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuInfo_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuInfo
2 | info = Info
3 | incompletes = Incompletes
4 | length_violations = Length Violations
5 | clearance_violations = Clearance Violations
6 | library_packages = Library Packages
7 | library_padstacks = Library Padstacks
8 | board_components = Placed Components
9 | unconnected_route = Unconnected Route
10 | route_stubs = Route Stubs
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowMoveParameter_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowMoveParameter
2 | title = Platzierungs-Parameter
3 | horizontal_component_grid = horizontales Bauteilraster:
4 | vertical_component_grid = vertikales Bauteilraste:
5 | wheel_function = Mausrad-Funktion:
6 | wheel_function_tooltip = Definiert die Funktion des Mausrads beim Platzieren von Bauteilen
7 | zoom = zoomen
8 | rotate = drehen
9 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowAbout_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowAbout
2 | title = About this software
3 | description = Free software for Printed Circuit Board Routing
4 | version = Version:
5 | warranty = This program comes with absolutely no warranty!
6 | homepage = Homepage: http://freerouting.mihosoft.eu (was http://www.freerouting.net)
7 | support = Contact: info@michaelhoffer.de (was support@freerouting.net)
8 |
--------------------------------------------------------------------------------
/.github/workflows/gradle-build-pr.yml:
--------------------------------------------------------------------------------
1 | name: Run Gradle on PRs
2 |
3 | on: [push,pull_request]
4 |
5 | jobs:
6 | gradle:
7 | strategy:
8 | matrix:
9 | os: [ubuntu-latest, macos-latest, windows-latest]
10 | runs-on: ${{ matrix.os }}
11 | steps:
12 | - uses: actions/checkout@v1
13 | - uses: actions/setup-java@v1
14 | with:
15 | java-version: 11
16 | - uses: eskatos/gradle-command-action@v1
17 | with:
18 | arguments: build
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/PopupMenuMove_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class PopupMenuMain
2 | turn = turn
3 | 90_degree = 90 degree (+)
4 | 180_degree = 180 degree (*)
5 | -90_degree = -90 degree (-)
6 | 45_degree = 45 degree
7 | 135_degree = 135 degree
8 | -135_degree = -135 degree
9 | -45_degree = -45 degree
10 | change_side = change side (/)
11 | reset_rotation = reset rotation
12 | insert = insert (left button)
13 | cancel = cancel (Esc)
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/CleanupWindows_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the cleanup windows in the info menu
2 | at = at
3 | net = Net
4 | no_route_stubs_found = no route stubs found
5 | no_unconnected_route_found = no unconnected traces or vias found
6 | on_layer = on layer
7 | route_stubs = Route Stubs
8 | stub_net = stub net
9 | trace = Trace
10 | trace_count = trace count
11 | unconnected_route = Unconnected Route
12 | via = Via
13 | via_count = via count
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowAbout_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowAbout
2 | title = \u00dcber diese Software
3 | description = Freie Software zum Entflechten von Leiterplatten
4 | warranty = Wir \u00fcbernehmen keinerlei Garantie oder Gew\u00e4hrleistung!
5 | version = Version:
6 | homepage = Homepage: http://freerouting.mihosoft.eu (fr\u00fcher http://www.freerouting.net)
7 | support = Kontakt: info@michaelhoffer.de (fr\u00fcher support@freerouting.net)
8 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowClearanceViolations_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowClearanceViolations
2 | title = Clearance Violations
3 | list_empty_message = no violations found
4 | at = at
5 | on_layer = on layer
6 | pin = pin
7 | via = via
8 | trace = trace
9 | conduction_area = conduction area
10 | keepout = keepout
11 | via_keepout = via keepout
12 | component_keepout = component keepout
13 | board_outline = board outline
14 | unknown = unknown
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardFrame_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuInfo
2 | title = Board Layout
3 | confirm_cancel = Please confirm cancel
4 | error_1 = unable to read file gui defaults file
5 | error_2 = unable to save board to file
6 | error_3 = sorry, no write permission
7 | error_4 = unable to write board frame to file
8 | error_5 = unable to close output file
9 | error_6 = unable to read .dsn-file
10 | error_7 = outline missing in .dsn-file
11 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuDisplay_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuDisplay
2 | display = Display
3 | object_visibility = Object Visibility
4 | object_visibility_tooltip = to change the drawing intensity of an object
5 | layer_visibility = Layer Visibility
6 | layer_visibility_tooltip = to change the visibility of individual layers
7 | colors = Colors
8 | colors_tooltip = to change the colors of the board objects on the screen
9 | miscellaneous = Miscellaneous
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/interactive/ScreenMessages_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class ScreenMessages
2 | current_layer = current layer:
3 | target_layer = target layer:
4 | found = found:
5 | failed = failed:
6 | to_route = to route:
7 | ripped = ripped:
8 | connections_not_found = connections not found
9 | routed = routed:
10 | fanout_pass = Fanout Pass
11 | components = components
12 | still = still
13 | via_count = Via Count:
14 | trace_length = Trace Length:
15 |
16 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/interactive/ScreenMessages_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class ScreenMessages
2 | current_layer = aktuelle Lage:
3 | target_layer = Ziellage:
4 | found = gefunden:
5 | failed = Fehlversuche:
6 | to_route = zu routen:
7 | ripped = geripped:
8 | connections_not_found = Verbindungen nicht gefunden
9 | routed = gerouted:
10 | fanout_pass = Fanout Pass
11 | components = Bauteile
12 | still = noch
13 | via_count = Via-Anzahl:
14 | trace_length = Bahnl\u00E4nge:
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/CleanupWindows_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the cleanup windows in the info menu
2 | at = bei
3 | net = Netz
4 | no_route_stubs_found = keine Route-Stummel gefunden
5 | no_unconnected_route_found = keine nicht verbundenen Traces oder Vias gefunden
6 | on_layer = auf Lage
7 | route_stubs = Route-Stummel
8 | stub_net = Stummel Netz
9 | trace = Trace
10 | trace_count = Trace-Anzahl
11 | unconnected_route = Nicht verbundener Route
12 | via = Via
13 | via_count = Via-Anzahl
14 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowEditVias_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowEditVias
2 | title = Edit Vias
3 | add = Add
4 | add_tooltip = Append a new via
5 | remove = Remove
6 | remove_tooltip = Remove the selected via
7 | new_via = new_via_
8 | via = via
9 | removed = removed
10 | NAME = name
11 | PADSTACK = padstack
12 | CLEARANCE_CLASS = clearance class
13 | ATTACH_SMD = attach smd
14 | message_1 = last via not removed
15 | message_2 = via not removed because it is still used in via rule
16 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectList_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowObjectList
2 | info = Info
3 | info_tooltip = Displays information about the selected objects
4 | select = Show
5 | select_tooltip = Selects the chosen objects on the board
6 | invert = Inverse
7 | invert_tooltip = inverts the selection
8 | recalculate = Recalculate
9 | recalculate_tooltip = Recalculates the content of this window
10 | list_empty = no items found
11 | window_title = Selected Objects
12 | filter = Filter:
13 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowObjectVisibility_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowObjectVisibility
2 | title = Object Visibility
3 | header_message = Use slider to modify the visibility of
4 | TRACES = traces
5 | VIAS = vias
6 | PINS = pins
7 | CONDUCTION_AREAS = conduction areas
8 | KEEPOUTS = keepouts
9 | VIA_KEEPOUTS = via keepouts
10 | PLACE_KEEPOUTS = place keepouts
11 | COMPONENT_OUTLINES = component outlines
12 | HILIGHT = hilight
13 | INCOMPLETES = incompletes
14 | LENGTH_MATCHING_AREAS = length matching areas
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardFrame_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class BoardMenuInfo
2 | title = Platinen-Layout
3 | confirm_cancel = Bitte Abbrechen best\u00E4tigen
4 | error_1 = Lesen der Gui-Defaults-Datei ist fehlgeschlagen
5 | error_2 = Speichern des Platinendesigns ist fehhlgeschlagen
6 | error_3 = Schreiberlaubnis verweigert
7 | error_4 = Speichern des Board-Frames ist fehlgeschlagen
8 | error_5 = Sclie\u00DFen der Output-Datei ist fehlgeschlagen
9 | error_6 = Lesen der .dsn-Datei fehlgeschlagen
10 | error_7 = Outline fehlt in der .dsn-Datei
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowNetSamples_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the subclasses of WindowNetSamples
2 |
3 | router_demonstrations = Router Demonstrations
4 | open_sample_design = Open Sample Design
5 | sample_designs = Sample Designs
6 | replay_example = Replay Example
7 | 45_degree_logfile = 45 degree routing example
8 | drag_component_logfile = Example for dragging components
9 | any_angle_logfile = Free angle routing example
10 | autorouter_example_1 = first autorouter example
11 | autorouter_example_2 = second autorouter example
12 | autorouter_example_3 = third autorouter example
13 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/DisplayMisc_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class DisplayMisc
2 | title = Display Miscellaneous
3 | cross_hair_cursor = crosshair cursor
4 | small = small
5 | big = big
6 | cursor_checkbox_tooltip = Shortcut is the comma-key
7 | rotation = board rotation:
8 | none = none
9 | 90_degree = 90 degree
10 | 180_degree = 180 degree
11 | -90_degree = -90 degree
12 | board_mirroring = board mirroring:
13 | left_right = left right
14 | top_bottom = top bottom
15 | layer_dimming = automatic layer dimming:
16 | layer_dimming_tooltip = Use slider to change intensity of automatic layer dimming
17 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowViaRule_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowViaRule
2 | title = Via Rule
3 | append = Append
4 | append_tooltip = appends a via to the rule
5 | remove = Remove
6 | remove_tooltip = removes the selected via from the rule
7 | move_up = Move Up
8 | move_up_tooltip = increases the priority of the selected via in the rule
9 | move_down = Move Down
10 | move_down_tooltip = decreases the priority of the selected via in the rule
11 | choose_via_to_append = Choose via to append
12 | append_via_to_rule = Append Via to Rule
13 | remove_2 = remove
14 | from_the_rule = from the rule
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowRouteDetail_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowRouteDetail
2 | title = Detail Route Parameter
3 | clearance_compensation = clearance compensation:
4 | clearance_compensation_tooltip = Clearance compensation on may be useful if you have only one trace clearance type
5 | on = on
6 | off = off
7 | pull_tight_accuracy = pull tight accuracy:
8 | pull_tight_accuracy_tooltip = Use slider to change the accuracy for pulling tight traces
9 | keepout_outside_outline = keepout outside board outline
10 | keepout_outside_outline_tooltip = If enabled, the complete area outside the board outline gets keepout
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/boardgraphics/ColorTableModel_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text for ItemColorTableModel and OtherColorTableModel
2 | LAYER = Layer
3 | TRACES = Traces
4 | FIXED_TRACES = Fixed Traces
5 | VIAS = Vias
6 | FIXED_VIAS = Fixed Vias
7 | PINS = Pins
8 | CONDUCTION_AREAS = Conduction
9 | KEEPOUTS = Obstacles
10 | VIA_KEEPOUTS = Via Obstacles
11 | PLACE_KEEPOUTS = Place Obstacles
12 | BACKGROUND = Background
13 | HIGHLIGHT = Highlight
14 | INCOMPLETES = Incompletes
15 | VIOLATIONS = Violations
16 | OUTLINE = Outline
17 | COMPONENT_FRONT = Comp. Outline Front
18 | COMPONENT_BACK = Comp. Outline Back
19 | LENGTH_MATCHING_AREA = Lenght Matching
20 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowClearanceMatrix_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowClearanceClass
2 | title = Clearance Matrix
3 | layer = Layer:
4 | layer_tooltip = Set the layer, where the clearance matrix can be changed
5 | add_class = Add Class
6 | add_class_tooltip = Append a new clearance class
7 | prune = Trim
8 | prune_tooltip = Remove redundant classes
9 | new_name = Please enter the name of the new class
10 | confirm_remove = Please confirm removing class
11 | class = class
12 | the_class = the class
13 | the_classes = the classes
14 | and = and
15 | already_assigned = Items already assigned to
16 | change_anyway = !\nChange clearance anyway?
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/interactive/BoardHandling_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardHandling
2 | clearance_violations_found = clearance violations found
3 | incomplete_connections_to_route = incomplete connections to route
4 | incompletes = incompletes,
5 | length_violations = length violations
6 | undo = undo
7 | no_more_undo_possible = no more undo possible
8 | redo = redo
9 | no_more_redo_possible = no more redo possible
10 | select_menu = select menu: use button 1 to select item
11 | route_menu = route menu: use button 1 to start route
12 | drag_menu = press button 1 to drag items or to push traces from behind
13 | save_error = unable to write board to file
14 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowRouteDetail_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowRouteDetail
2 | title = Detailierte Route-Parameter
3 | clearance_compensation = Clearance-Kompensation:
4 | clearance_compensation_tooltip = Clearance-Kompensation ist sinnvoll, wenn es nur eine Clearance-Klasse f\u00FCr Bahnen gibt
5 | on = ein
6 | off = aus
7 | pull_tight_accuracy = Glattzieh-Genauigkeit f\u00FCr Bahnen:
8 | pull_tight_accuracy_tooltip = Regler zum \u00C4ndern der Glattzieh-Genauigkeit f\u00FCr Bahnen
9 | keepout_outside_outline = Keepout au\u00DFerhalb der Board-Outline
10 | keepout_outside_outline_tooltip = Falls gesetzt, wird die gesamte Fl\u00E4che au\u00DFerhalb der Board-Outline zu Keepout.
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowSnapshotSettings_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowSnapshotSettings
2 | title = Snapshot Settings
3 | object_colors = object colors
4 | object_visibility = object visibility
5 | layer_visibility = layer visibility
6 | display_region = display region
7 | interactive_state = interactive state
8 | selection_layers = selection layers
9 | selectable_items = selectable items
10 | current_layer = current layer
11 | rule_selection = rule selection
12 | manual_rule_settings = manual rule settings
13 | push&shove_enabled = push&shove enabled
14 | drag_components_enabled = drag components enabled
15 | pull_tight_region = pull tight region
16 | component_grid = component grid
17 | info_list_selections = info list selections
18 |
--------------------------------------------------------------------------------
/launch4j.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | false
4 | eu.mihosoft.freerouting.gui
5 | .\build\libs\FreeRouting.jar
6 | FreeRouting.exe
7 |
8 |
9 | .
10 | normal
11 | http://java.com/download
12 |
13 | false
14 |
15 |
16 |
17 |
18 | false
19 | 1.5.0
20 |
21 | preferJre
22 | 64/32
23 |
24 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/package.html:
--------------------------------------------------------------------------------
1 |
2 |
java.text package
18 |
19 | Contains functionality of the graphical user interface based on javax.swing.
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/autoroute/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 | Contains functionality of the eu.mihosoft.freerouting.autoroute algorithm.
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowSnapshotSettings_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowSnapshotSettings
2 | title = Snapshot-Einstellungen
3 | object_colors = Objekt-Farben
4 | object_visibility = Objekt-Sichtbarkeit
5 | layer_visibility = Lagen-Sichtbarkeit
6 | display_region = Abbildungs-Ausschnitt
7 | interactive_state = interaktiver Zustand
8 | selection_layers = Selektions-Lagen
9 | selectable_items = selektierbare Objekte
10 | current_layer = aktuelle Lage
11 | rule_selection = Regel-Auswahl
12 | manual_rule_settings = manuelle Regel-Einstellungen
13 | push&shove_enabled = schieben erlaubt
14 | drag_components_enabled = Bauteil-Ziehen erlaubt
15 | pull_tight_region = Glattzieh-Bereich
16 | component_grid = Bauteil-Raster
17 | info_list_selections = Info-Listen-Selektion
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowSelectParameter_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowSelectParameter
2 | title = Select Parameter
3 | selection_layers = Selection Layers:
4 | all_visible = all visible
5 | all_visible_tooltip = selection on all visible layer, the current layer is preferred
6 | current_only = current only
7 | current_only_tooltip = selection only on the current layer
8 | selectable_items = Selectable Items:
9 | TRACES = traces
10 | VIAS = vias
11 | PINS = pins
12 | CONDUCTION = conduction areas
13 | KEEPOUT = keepout
14 | VIA_KEEPOUT = via keepout
15 | COMPONENT_KEEPOUT = place keepout
16 | BOARD_OUTLINE = board outline
17 | FIXED = fixed
18 | UNFIXED = unfixed
19 | current_layer = Current Layer:
20 | current_layer_tooltip = can be changed also with number key or '+' '-'
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/tests/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 | Contains functions for testing and checking the consistancy of the eu.mihosoft.freerouting.board database.
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/boardgraphics/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 | Contains user interface independent functionality for displaying a eu.mihosoft.freerouting.board on a sccreen.
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/rules/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 | Contains eu.mihosoft.freerouting.rules and restrictions for the items on a printed circuit eu.mihosoft.freerouting.board.
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 |
20 | Contains general purpose eu.mihosoft.freerouting.datastructures.
21 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/library/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 | Describes eu.mihosoft.freerouting.library objects of a printed circuit eu.mihosoft.freerouting.board such as padstacks and component packages.
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/designforms/specctra/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 |
20 | Contains classes for reading and writing eu.mihosoft.freerouting.board designs in the Specctra dsn text format.
21 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowAutorouteParameter_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowRouteParameter
2 | title = Autoroute Parameter
3 | layer = Layer:
4 | active = Active:
5 | preferred_direction = Preferred Direction:
6 | horizontal = horizontal
7 | vertical = vertical
8 | detail_parameter = Detail parameter
9 | detail_autoroute_parameter = Detail Autoroute Parameter
10 | trace_costs_on_layer = Trace costs on layer:
11 | in_preferred_direction=In preferred direction:
12 | against_preferred_direction=Against preferred direction:
13 | with_fanout = Preroute fanout:
14 | vias_allowed = Vias allowed:
15 | via_costs=Via costs:
16 | plane_via_costs=Powerplane via costs:
17 | start_ripup_costs = Ripup start costs:
18 | start_pass = Start pass:
19 | speed = Speed:
20 | fast = fast
21 | slow = slow
22 | passes = Passes:
23 | fanout = Fanout
24 | autoroute = Autoroute
25 | postroute = Postroute
26 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowAutorouteParameter_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowAutorouteParameter
2 | title = Autoroute-Einstellungen
3 | layer = Lage:
4 | active = aktiv:
5 | preferred_direction = Vorzugsrichtung:
6 | horizontal = horizontal
7 | vertical = vertikal
8 | detail_parameter = Detail-Einstellungen
9 | detail_autoroute_parameter = Detailierte Autoroute-Einstellungen
10 | trace_costs_on_layer = Trace-Kosten auf Lage:
11 | in_preferred_direction=in Vorzugsrichtung:
12 | against_preferred_direction=gegen die Vorzugsrichtung:
13 | with_fanout = Fanout vorrouten:
14 | vias_allowed = Vias erlaubt:
15 | via_costs=Via-Kosten:
16 | plane_via_costs=Stromlagen-Via-Kosten:
17 | start_ripup_costs = Ripup-Anfangskosten:
18 | start_pass = Start-Pass:
19 | speed = Tempo:
20 | fast = schnell
21 | slow = langsam
22 | passes = Passes:
23 | fanout = Fanout
24 | autoroute = Autoroute
25 | postroute = Postroute
26 |
--------------------------------------------------------------------------------
/src/main/resources/log4j2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 | logs/freerouter.log
5 |
6 |
7 |
8 |
9 |
10 |
11 | %d{yyyy-MM-dd HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/package.html:
--------------------------------------------------------------------------------
1 |
2 | java.text package
18 |
19 |
20 | Contains functionality for eu.mihosoft.freerouting.interactive eu.mihosoft.freerouting.board handling, which is independent of the graphical user interface.
21 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowMoveParameter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Plazierungs-Parameter
9 |
10 |
11 |
12 |
Move Parameter
13 | The parameter in this window are used when moving components.
14 |
Here you can define a horizontal and vertical component grid. The components will then snap while moving to coordinates, which are multiples of the chosen grid.
15 |
You can also change the function of the mouse wheel from zooming to rotating. You will need this functionality, if you want to rotate components by angles, which are not multiples of 90 degree.
Hier können Sie einen horizontales und vertikales Raster einstellen, Die Bauteile springen dann beim Verschieben auf Koordinaten, die vielfache von diesem Raster sind.
15 |
Außerdem können sie die Funktion des Mausrads von Zoomen auf Drehen umstellen. Diese Funktionalität brauchen Sie, wenn Sie Bauteile um Winkel Drehen möchten, die keine vielfachen von 90 Grad sind.
17 |
18 |
19 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/IBoardHandling.java:
--------------------------------------------------------------------------------
1 | package eu.mihosoft.freerouting.interactive;
2 |
3 | import eu.mihosoft.freerouting.board.LayerStructure;
4 | import eu.mihosoft.freerouting.board.RoutingBoard;
5 | import eu.mihosoft.freerouting.board.TestLevel;
6 | import eu.mihosoft.freerouting.geometry.planar.IntBox;
7 | import eu.mihosoft.freerouting.geometry.planar.PolylineShape;
8 | import eu.mihosoft.freerouting.rules.BoardRules;
9 |
10 | /**
11 | * Andrey Belomutskiy
12 | * 6/28/2014
13 | */
14 | public interface IBoardHandling {
15 | java.util.Locale get_locale();
16 |
17 | RoutingBoard get_routing_board();
18 |
19 | void initialize_manual_trace_half_widths();
20 |
21 | void create_board(IntBox p_bounding_box, LayerStructure p_layer_structure,
22 | PolylineShape[] p_outline_shapes, String p_outline_clearance_class_name,
23 | BoardRules p_rules, eu.mihosoft.freerouting.board.Communication p_board_communication, TestLevel p_test_level);
24 |
25 | Settings get_settings();
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/DefaultExceptionHandler.java:
--------------------------------------------------------------------------------
1 | package eu.mihosoft.freerouting.gui;
2 |
3 | import eu.mihosoft.freerouting.logger.FRLogger;
4 |
5 | import javax.swing.*;
6 | import java.awt.*;
7 |
8 | import static javax.swing.JOptionPane.OK_OPTION;
9 |
10 | /**
11 | * Andrey Belomutskiy
12 | * 6/28/2014
13 | */
14 | public class DefaultExceptionHandler implements Thread.UncaughtExceptionHandler {
15 | public void uncaughtException(Thread t, Throwable e) {
16 | handleException(e);
17 | }
18 |
19 | public static void handleException(Throwable e) {
20 | // Here you should have a more robust, permanent record of problems
21 | JOptionPane.showMessageDialog(findActiveFrame(), e.toString(), "Exception Occurred", OK_OPTION);
22 | FRLogger.error(e.getLocalizedMessage(), e);
23 | }
24 |
25 | private static Frame findActiveFrame() {
26 | Frame[] frames = JFrame.getFrames();
27 | for (Frame frame : frames) {
28 | if (frame.isVisible())
29 | return frame;
30 | }
31 | return null;
32 | }
33 | }
34 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardToolbar_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the board toolbar
2 |
3 | select_button = Select
4 | select_button_tooltip = left button selects items (s)
5 | route_button = Route
6 | route_button_tooltip = left button starts a new trace (r)
7 | drag_button = Drag
8 | drag_button_tooltip = to drag items with the left button or to push traces out of empty space (d)
9 | undo_button = Undo
10 | undo_button_tooltip = to undo the last change (u)
11 | redo_button = Redo
12 | redo_button_tooltip = to redo the last change (b)
13 | incompletes_button = Incompletes
14 | incompletes_button_tooltip = to display or hide the incomplete connections (g)
15 | violations_button = Violations
16 | violations_button_tooltip = to display or hide the clearance violations (v)
17 | autoroute_button = Autorouter
18 | autoroute_button_tooltip = to start the batch autorouter
19 | display_all_button = Zoom All
20 | display_all_button_tooltip = to display the whole board (a)
21 | display_region_button = Zoom Region
22 | display_region_button_tooltip = to select a region of the board for display(f)
23 | unit_button = Unit:
24 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/Help.hs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Help
6 |
7 |
8 | top
9 |
10 |
11 |
12 |
13 |
14 |
15 | TOC
16 |
17 |
20 |
21 | javax.help.TOCView
22 |
23 |
24 | HelpTOC.xml
25 |
26 |
27 |
28 |
29 | Index
30 |
31 |
34 |
35 | javax.help.IndexView
36 |
37 |
38 | HelpIndex.xml
39 |
40 |
41 |
42 |
43 | Search
44 |
45 |
48 |
49 | javax.help.SearchView
50 |
51 |
52 | JavaHelpSearch
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/Help.hs:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 | Help
6 |
7 |
8 | top
9 |
10 |
11 |
12 |
13 |
14 |
15 | TOC
16 |
17 |
20 |
21 | javax.help.TOCView
22 |
23 |
24 | HelpTOC.xml
25 |
26 |
27 |
28 |
29 | Index
30 |
31 |
34 |
35 | javax.help.IndexView
36 |
37 |
38 | HelpIndex.xml
39 |
40 |
41 |
42 |
43 | Search
44 |
45 |
48 |
49 | javax.help.SearchView
50 |
51 |
52 | JavaHelpSearch
53 |
54 |
55 |
56 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/Default_en.properties:
--------------------------------------------------------------------------------
1 | # English version of the default file with language dependent text
2 | add_corner = add corner (left button)
3 | all = all
4 | cancel = cancel (Esc)
5 | cancel_route = cancel route (Esc)
6 | center_display = center display (c)
7 | change_layer = change layer
8 | change_layer_tooltip = also possible with number key or '+' '-'
9 | close = close
10 | color_manager = Color Manager
11 | components = Components
12 | copy = copy
13 | done = done (Space)
14 | end_route = end route (left button)
15 | generate_snapshot = generate snapshot (s)
16 | incompletes = Incompletes
17 | inner = inner
18 | insert = insert (left button)
19 | layer_changed_to = layer changed to
20 | layer_visibility = Layer Visibility
21 | layer_visibility_header = Use slider to modify the visibility on layer
22 | maximum_all = Maximum All
23 | maximum_all_tooltip = pushs all sliders to the right
24 | minimum_all = Minimum All
25 | minimum_all_tooltip = pushs all sliders to the left
26 | move = move (m)
27 | packages = Packages
28 | padstacks = Padstacks
29 | pick_a_color = Pick a Color
30 | route_completed = route completed
31 | zoom = zoom
32 | zoom_in = in (z)
33 | zoom_out = out (o)
34 |
35 |
36 |
37 |
38 |
39 |
40 |
41 |
42 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/FixedState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * FixedState.java
20 | *
21 | * Created on 15. Maerz 2005, 06:34
22 | */
23 |
24 | package eu.mihosoft.freerouting.board;
25 |
26 | /**
27 | * Sorted fixed states of board items. The strongest fixed states came last.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public enum FixedState
32 | {
33 | UNFIXED, SHOVE_FIXED, USER_FIXED, SYSTEM_FIXED
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardToolbar_de.properties:
--------------------------------------------------------------------------------
1 | # German Version of language dependent text of the board toolbar
2 | select_button = Selektieren
3 | select_button_tooltip = linke Maustaste selektiert Objekte (s)
4 | route_button = Routen
5 | route_button_tooltip = linke Maustaste beginnt eine neue Bahn (r)
6 | drag_button = Ziehen
7 | drag_button_tooltip = Objekte mit gedr\u00fcckter linker Maustaste ziehen oder Bahnen vom leeren Raum aus schieben(d)
8 | undo_button = Undo
9 | undo_button_tooltip = die letzte \u00c4nderung r\u00fcckg\u00e4ngig machen (u)
10 | redo_button = Redo
11 | redo_button_tooltip = die letzte \u00c4nderung wiederherstellen (b)
12 | incompletes_button = Incompletes
13 | incompletes_button_tooltip = das Zeigen der offenen Verbindungen an- oder abschalten (g)
14 | violations_button = Verletzungen
15 | violations_button_tooltip = das Zeigen der Clearance-Verletzungen an- oder abschalten (v)
16 | autoroute_button = Autorouter
17 | autoroute_button_tooltip = den Batch-Autorouter starten
18 | display_all_button = Alles abbilden
19 | display_all_button_tooltip = die gesamte Platine abbilden (a)
20 | display_region_button = Ausschnitt abbilden
21 | display_region_button_tooltip = ein Rechteck der Platine zum Abbilden ausw\u00e4hlen (f)
22 | unit_button = Unit:
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/BoardObservers.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * BoardObservers.java
20 | *
21 | * Created on 20. September 2007, 07:39
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.board;
26 |
27 | import eu.mihosoft.freerouting.datastructures.Observers;
28 |
29 | /**
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public interface BoardObservers extends Observers
34 | {
35 | /**
36 | * Enable the observers to syncronize the moved component.
37 | */
38 | void notify_moved(Component p_component);
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/TestLevel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * TestLevel.java
20 | *
21 | * Created on 20. April 2006, 07:32
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.board;
26 |
27 | /**
28 | * If {@literal >} RELEASE, some features may be used, which are still in experimental state.
29 | * Also warnings for debugging may be printed depending on the test_level.
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public enum TestLevel
34 | {
35 | RELEASE_VERSION, TEST_VERSION, CRITICAL_DEBUGGING_OUTPUT, ALL_DEBUGGING_OUTPUT
36 | }
37 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowAutorouteParameter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Autoroute Parameter
9 |
10 |
11 |
12 |
Autoroute Parameter
13 | Here you can define the layers which may be used by the autorouter, the preferred direction for traces on each layer, and if vias may be inserted by the autorouter.
14 |
15 |
You can also define, if before autorouting a fanout pass and after autorouting a postroute pass for reducing the via count and the cumulative trace length should run.
16 |
The postroute pass may take a very long time and can be stopped by clicking the left mouse button.
17 |
In a fanout pass the connections will be routed only till the first via. That may be useful on boards with many layers and ball grid arrrays.
18 |
The detail parameter button opens a window, where you can adjust the individual costs used in the autoroute algorithm.
13 | Description of the Select Parameter window.
14 |
Selections Layers:
15 |
all visible:
16 |
17 |
Items are selected on all layers with visibility factor > 0 (see also Layer Visibility). Objects on the current layer are preferred.
18 |
19 |
current only:
20 |
21 |
Items can be selected only on the current layer.
22 |
23 |
24 |
Selectable Items:
25 |
To define the selectable item types.
26 |
Current Layer:
27 |
28 | Here you can change the layer, which is used in interactive actions.
29 |
30 |
31 |
32 |
33 |
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/Stoppable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Stoppable.java
20 | *
21 | * Created on 7. Maerz 2006, 09:46
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.datastructures;
26 |
27 | /**
28 | * Interface for stoppable threads.
29 | *
30 | * @author Alfons Wirtz
31 | */
32 | public interface Stoppable
33 | {
34 | /**
35 | * Requests this thread to be stopped.
36 | */
37 | void request_stop();
38 |
39 | /**
40 | * Returns true, if this thread is requested to be stopped.
41 | */
42 | boolean is_stop_requested();
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/MainApplication_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class MainApplication
2 |
3 | title = Freerouter
4 | confirm_cancel = Please confirm exit
5 | loading_design = Loading design
6 | router_demonstrations = Router Demonstrations
7 | router_demonstrations_tooltip = replay demonstration examples of the router
8 | sample_designs = Sample Designs
9 | sample_designs_tooltip = open example board designs in the net
10 | open_own_design = Open Your Own Design
11 | open_own_design_tooltip = open a board design in the Specctra .dsn format on your own local disc
12 | restore_defaults = Restore System Defaults
13 | restore_defaults_tooltip = deletes the settings stored by the user and restores the system defaults
14 | defaults_restored = system default settings restored
15 | nothing_to_restore = nothing to restore
16 | confirm_delete = Please confirm deleting your stored settings
17 | confirm_import_rules = Please confirm importing stored rules\nBeware that rules imported from the the host system may be overwritten
18 | message_3 = unable to open board design
19 | message_4 = design file
20 | message_5 = opened
21 | message_6 = File with name
22 | message_7 = not found
23 | message_8 = unable to read design file!
24 | user_online_message_1 = Internet connection required to start the Freerouter application!
25 | user_online_message_2 = After that you can switch the connection off again!
--------------------------------------------------------------------------------
/gradle/project-info.gradle:
--------------------------------------------------------------------------------
1 | // -----------------------------------------------------------------------------
2 | // publishing information
3 | // -----------------------------------------------------------------------------
4 | ext.publishing.artifactId = project.name.toLowerCase()
5 | ext.publishing.groupId = 'eu.mihosoft.freerouting'
6 | ext.publishing.versionId = '1.4.3-SNAPSHOT'
7 |
8 | ext.publishing.developerName = 'Michael Hoffer'
9 | ext.publishing.developerAlias = 'miho'
10 | ext.publishing.developerEmail = 'info@michaelhoffer.de'
11 | ext.publishing.inceptionYear = '2017'
12 |
13 | ext.publishing.bintray.repo = 'Freerouting'
14 | ext.publishing.bintray.userOrg = 'miho'
15 | ext.publishing.bintray.name = project.name
16 |
17 | ext.publishing.desc = 'Advanced PCB Autorouter'
18 | ext.publishing.license = 'GPL-3.0'
19 | ext.publishing.licenseUrl = 'https://github.com/miho/freerouting/blob/master/LICENSE.txt'
20 | ext.publishing.labels = ['PCB', 'Autorouter', 'KiCad', 'EAGLE']
21 | ext.publishing.websiteUrl = 'https://github.com/miho/freerouting'
22 | ext.publishing.issueTrackerUrl = 'https://github.com/miho/freerouting/issues'
23 | ext.publishing.vcsUrl = 'https://github.com/miho/freerouting.git'
24 |
25 | ext.publishing.pomName = ext.publishing.artifactId
26 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/designforms/specctra/Scanner.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Scanner.java
20 | *
21 | * Created on 4. Juli 2004, 19:13
22 | */
23 |
24 | package eu.mihosoft.freerouting.designforms.specctra;
25 |
26 | /**
27 | * Interface for scanner generated by jflex.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public interface Scanner
32 | {
33 | /**
34 | * Reads the next token from the input file.
35 | */
36 | Object next_token() throws java.io.IOException;
37 |
38 | /**
39 | * Starts a new state.
40 | */
41 | void yybegin(int p_new_state);
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/IdNoGenerator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * IdNoGenerator.java
20 | *
21 | * Created on 13. Februar 2005, 08:21
22 | */
23 |
24 | package eu.mihosoft.freerouting.datastructures;
25 |
26 | /**
27 | * Interface for creatiing unique identification number.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public interface IdNoGenerator
32 | {
33 | /**
34 | * Create a new unique identification number.
35 | */
36 | int new_no();
37 |
38 | /**
39 | * Return the maximum generated id number so far.
40 | */
41 | int max_generated_no();
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/html_files/WindowAutorouteParameter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Autoroute-Einstellungen
9 |
10 |
11 |
12 |
Autoroute-Einstellungen
Hier können Sie die Lagen definieren, die der Autorouter benutzen darf, die Vorzugsrichtung für Bahnen auf jeder Lage, und ob der Autorouter Vias setzen darf.
13 |
Außerdem können Sie festlegen, ob vor dem Autorouten ein Fanout Pass und ob nach dem Autorouten ein Postroute Pass zum Reduzieren der Via-Anzahl und der Gesamtbahnlänge laufen soll.
14 |
Der Postroute Pass kann sehr lange dauern und jederzeit durch Klicken der linken Maustaste beendet werden.
15 |
Beim Fanout Pass werden die Verbindungen nur bis zum ersten Via geroutet. Das kann bei Platinen und vielen Lagen und Ball Grid Arrays sinnvoll sein.
16 |
17 |
Der ButtonDetail-Einstellungen öffnet ein Fenster, in dem Sie die im Autoroute-Algorithmus verwendeten Kosten ändern können.
13 | Beschreibung des Fensters mit den Select-Einstellungen
14 |
Selektions-Lagen:
15 |
16 | alle sichtbaren:
17 |
18 |
Es wird auf allen Lagen mit Sichtbarkeitsfaktor > 0 selektiert (siehe auch Lagensichtbarkeit). Die aktuelle Lage wird bevorzugt.
19 |
20 |
nur aktuelle:
21 |
22 |
Es wird nur auf der unter aktuelle Lage eingestellten Lage selektiert.
23 |
24 |
25 |
Selektierbare Objekte:
26 |
Nur die angewählten Objekttypen werden beim Selektieren berücksichtigt.
27 |
Aktuelle Lage:
28 |
Hier können Sie die Lage einstellen, die bei interaktiven Aktionen verwendet werden soll.
29 |
30 |
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowVia_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowVia
2 | title = Via Rules
3 | available_via_padstacks = Available Via Padstacks
4 | info = Info
5 | info_tooltip = shows the available via padstacks
6 | info_tooltip_2 = shows the vias, which can be used in a via rule
7 | info_tooltip_3 = shows information about the selected via rule
8 | create = Create
9 | create_tooltip = to create a new via padstack
10 | create_tooltip_2 = to create a new empty via rule
11 | remove = Remove
12 | remove_tooltip = to remove an existing via padstack
13 | remove_tooltip_2 = to remove the selected via rule
14 | available_vias = Available Vias
15 | edit = Edit
16 | edit_tooltip = to edits the vias, which can be used in a via rule
17 | edit_tooltip_2 = to edit the selected via rule
18 | via_rules = Via Rules
19 | select_start_layer = Select start layer
20 | start_layer_selection = Start Layer Selection
21 | select_end_layer = Select end layer
22 | end_layer_selection = End Layer Selection
23 | adjust_circles = Adjust Circles
24 | radius_on_layer = radius on layer
25 | choose_padstack_to_remove = Choose padstack to remove
26 | remove_via_padstack = Remove Via Padstack
27 | selected_rule = Selected Rule
28 | remove_via_rule = Remove via rule
29 | message_1 = Please enter the name of the new padstack
30 | message_2 = Name exists already, please adjust
31 | message_3 = Please enter the default radius
32 | message_4 = Via padstack not removed because it is used in via
33 | message_5 = Please enter the name of the new via rule
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/BoardSubWindow.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * BoardSubwindow.java
20 | *
21 | * Created on 20. Juni 2005, 08:02
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.gui;
26 |
27 | /**
28 | * Subwindows of the board frame.
29 | *
30 | * @author Alfons Wirtz
31 | */
32 | public class BoardSubWindow extends javax.swing.JFrame
33 | {
34 |
35 | public void parent_iconified()
36 | {
37 | this.visible_before_iconifying = this.isVisible();
38 | this.setVisible(false);
39 | }
40 |
41 | public void parent_deiconified()
42 | {
43 | this.setVisible(this.visible_before_iconifying);
44 | }
45 |
46 |
47 | private boolean visible_before_iconifying = false;
48 | }
49 |
--------------------------------------------------------------------------------
/distribution/create-distribution-SNAPSHOT-windows-x86.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | SET APP_VERSION=%1
4 | SET APP_TYPE="msi"
5 |
6 | SET JPACKAGE_JVM="http://deps.mihosoft.eu/openjdk/OpenJDK14U-jdk_x86-32_windows_hotspot_14_36.zip"
7 |
8 | set DIR=%~dp0\
9 | cd %DIR%
10 |
11 | SET JAVA_HOME=%DIR%\.jdk14\jdk-14+36\
12 |
13 | for %%X in (7z.exe) do (set FOUND7Z=%%~$PATH:X)
14 | for %%X in (curl.exe) do (set FOUNDCURL=%%~$PATH:X)
15 |
16 | if not defined FOUND7Z (
17 | echo "ERROR: please make sure that 7Zip is installed and on the path."
18 | )
19 |
20 | if not defined FOUNDCURL (
21 | echo "ERROR: please make sure that Curl is installed and on the path."
22 | )
23 |
24 | if exist ".jdk14\jdk-14\" (
25 | echo "> jdk 14 for package generation already downloaded"
26 | ) else (
27 | mkdir .jdk14\
28 | cd .jdk14
29 | echo "> downloading jdk 14"
30 | curl -o jdk14.zip %JPACKAGE_JVM%
31 | echo "> unpacking jdk 14"
32 | 7z x jdk14.zip
33 | echo "> creating runtime image"
34 | %JAVA_HOME%\bin\jlink -p "%JAVA_HOME%\jmods" --add-modules java.desktop --strip-debug --no-header-files --no-man-pages --strip-native-commands --vm=server --compress=2 --output runtime
35 | )
36 |
37 | cd %DIR%
38 |
39 | set JPKG_HOME=.jdk14\jdk-14+36\
40 | set JPKG_EXECUTABLE=%JPKG_HOME%\bin\jpackage
41 |
42 | %JPKG_EXECUTABLE% --input ..\build\dist\ --name Freerouting --main-jar freerouting-executable.jar --type %APP_TYPE% --runtime-image .jdk14\runtime --app-version 0.0.0 --win-per-user-install --win-menu --win-menu-group Freerouting --license-file ..\LICENSE
43 |
44 | move Freerouting-0.0.0.msi freerouting-%APP_VERSION%-windows-x86.msi
45 |
--------------------------------------------------------------------------------
/distribution/create-distribution-windows-x86.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | SET APP_VERSION=%1
4 | SET APP_TYPE="msi"
5 | SET JPACKAGE_JVM="http://deps.mihosoft.eu/openjdk/OpenJDK14U-jdk_x86-32_windows_hotspot_14_36.zip"
6 |
7 | set DIR=%~dp0\
8 | cd %DIR%
9 |
10 | SET JAVA_HOME=%DIR%\.jdk14\jdk-14+36\
11 |
12 | for %%X in (7z.exe) do (set FOUND7Z=%%~$PATH:X)
13 | for %%X in (curl.exe) do (set FOUNDCURL=%%~$PATH:X)
14 |
15 | if not defined FOUND7Z (
16 | echo "ERROR: please make sure that 7Zip is installed and on the path."
17 | )
18 |
19 | if not defined FOUNDCURL (
20 | echo "ERROR: please make sure that Curl is installed and on the path."
21 | )
22 |
23 | if exist ".jdk14\jdk-14+36\" (
24 | echo "> jdk 14 for package generation already downloaded"
25 | ) else (
26 | mkdir .jdk14\
27 | cd .jdk14
28 | echo "> downloading jdk 14"
29 | curl -o jdk14.zip %JPACKAGE_JVM%
30 | echo "> unpacking jdk 14"
31 | 7z x jdk14.zip
32 | echo "> creating runtime image"
33 | %JAVA_HOME%\bin\jlink -p "%JAVA_HOME%\jmods" --add-modules java.desktop --strip-debug --no-header-files --no-man-pages --strip-native-commands --vm=server --compress=2 --output runtime
34 | )
35 |
36 | cd %DIR%
37 |
38 | set JPKG_HOME=.jdk14\jdk-14\
39 | set JPKG_EXECUTABLE=%JPKG_HOME%\bin\jpackage
40 |
41 | %JPKG_EXECUTABLE% --input ..\build\dist\ --name Freerouting --main-jar freerouting-executable.jar --type %APP_TYPE% --runtime-image .jdk14\runtime --app-version %APP_VERSION% --win-per-user-install --win-menu --win-menu-group Freerouting --license-file ..\LICENSE
42 |
43 | move Freerouting-%APP_VERSION%.msi freerouting-%APP_VERSION%-windows-x86.msi
44 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/MainApplication_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class MainApplication
2 |
3 | title = Freerouter
4 | confirm_cancel = Bitte Verlassen des Programms best\u00E4tigen
5 | loading_design = Lade Design
6 | router_demonstrations = Demonstrations-Beispiele
7 | router_demonstrations_tooltip = spiele Demonstrations-Beispiele f\u00FCr den Router ab
8 | sample_designs = Beispiel-Designs
9 | sample_designs_tooltip = Beispiel-Platinen-Designs im Netz \u00F6ffnen
10 | open_own_design = Eigenes Design \u00F6ffnen
11 | open_own_design_tooltip = ein Platinen-Design im Specctra .dsn Format auf der eigenen Festplatte \u00F6ffnen
12 | restore_defaults = System-Defaults wiederherstellen
13 | restore_defaults_tooltip = l\u00F6scht die vom User gespeicherten Einstellungen und stellt die System-Defaults wieder her.
14 | defaults_restored = System-Voreinstellungen wiederhergestellt.
15 | nothing_to_restore = nichts wiederherzustellen
16 | confirm_delete = Bitte das L\u00F6schen der von Ihnen gespeicherten Einstellungen best\u00E4tigen
17 | confirm_import_rules = Bitte das Importieren der gespeicherten Regeln best\u00E4tigen\nBeachten Sie dass dabei aus dem Host-System importierte Regeln \u00FCberschrieben werden k\u00F6nnen
18 | message_3 = kann Platinendesign nicht \u00F6ffnen
19 | message_4 = Design-Datei
20 | message_5 = ge\u00F6ffnet
21 | message_6 = Datei mit Namen
22 | message_7 = nicht gefunden
23 | message_8 = kann Designfile nicht lesen!
24 | user_online_message_1 = Internet Verbindung zum Starten der Freerouter Anwendung erforderlich!
25 | user_online_message_2 = Danach k\u00F6nnen Sie die Verbindung wieder abschalten!
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowAutorouteDetailParameter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Detail Autoroute Parameter
9 |
10 |
11 |
12 |
Detail Autoroute Parameter
Description of the window with the detailed autoroute parameter:
Via costs:
13 |
14 |
15 |
To adjust the costs for vias in the autoroute algorithm. If you increase the value, the autorouter will try to insert less vias. If the value is to high, the autorouter may not be able to complete 100%.
16 |
17 |
18 |
Start pass:
19 |
20 |
To adjust the number of the first pass in the batch autorouter. The ripup-costs increase in passes with higher pass number.
21 |
22 |
Ripup start costs:
23 |
24 |
To define the ripup costs in the pass with number 1. The ripup costs in the pass with the number N are (N * (Ripup start costs)).
25 |
26 |
Trace costs on layer:
27 |
28 |
To adjust for each signal layer the costs for traces in and against the preferred direction.
34 |
35 |
36 |
37 |
--------------------------------------------------------------------------------
/distribution/create-distribution-SNAPSHOT-windows.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | SET APP_VERSION=%1
4 | SET APP_TYPE="msi"
5 | REM SET JAVA_HOME="C:\Program Files\OpenJDK\jdk-13.0.2\"
6 | SET JPACKAGE_JVM="https://download.java.net/java/GA/jdk14/076bab302c7b4508975440c56f6cc26a/36/GPL/openjdk-14_windows-x64_bin.zip"
7 |
8 | set DIR="%~dp0\"
9 | echo "ABC:%DIR%"
10 | cd %DIR%
11 |
12 | for %%X in (7z.exe) do (set FOUND7Z=%%~$PATH:X)
13 | for %%X in (curl.exe) do (set FOUNDCURL=%%~$PATH:X)
14 |
15 | if not defined FOUND7Z (
16 | echo "ERROR: please make sure that 7Zip is installed and on the path."
17 | )
18 |
19 | if not defined FOUNDCURL (
20 | echo "ERROR: please make sure that Curl is installed and on the path."
21 | )
22 |
23 | if exist ".jdk14\jdk-14\" (
24 | echo "> jdk 14 for package generation already downloaded"
25 | ) else (
26 | mkdir .jdk14\
27 | cd .jdk14
28 | echo "> downloading jdk 14"
29 | curl -o jdk14.zip %JPACKAGE_JVM%
30 | echo "> unpacking jdk 14"
31 | 7z x jdk14.zip
32 | echo "> creating runtime image"
33 | %JAVA_HOME%\bin\jlink -p "%JAVA_HOME%\jmods" --add-modules java.desktop --strip-debug --no-header-files --no-man-pages --strip-native-commands --vm=server --compress=2 --output runtime
34 | )
35 |
36 | cd %DIR%
37 |
38 | set JPKG_HOME=.jdk14\jdk-14\
39 | set JPKG_EXECUTABLE=%JPKG_HOME%\bin\jpackage
40 |
41 | %JPKG_EXECUTABLE% --input ..\build\dist\ --name Freerouting --main-jar freerouting-executable.jar --type %APP_TYPE% --runtime-image .jdk14\runtime --app-version 0.0.0 --win-per-user-install --win-menu --win-menu-group Freerouting --license-file ..\LICENSE
42 |
43 | move Freerouting-0.0.0.msi freerouting-%APP_VERSION%-windows-x64.msi
44 |
--------------------------------------------------------------------------------
/distribution/create-distribution-windows.bat:
--------------------------------------------------------------------------------
1 | @echo off
2 |
3 | SET APP_VERSION=%1
4 | SET APP_TYPE="msi"
5 | REM SET JAVA_HOME="C:\Program Files\OpenJDK\jdk-13.0.2\"
6 | SET JPACKAGE_JVM="https://download.java.net/java/GA/jdk14/076bab302c7b4508975440c56f6cc26a/36/GPL/openjdk-14_windows-x64_bin.zip"
7 |
8 | set DIR="%~dp0\"
9 | echo "ABC:%DIR%"
10 | cd %DIR%
11 |
12 | for %%X in (7z.exe) do (set FOUND7Z=%%~$PATH:X)
13 | for %%X in (curl.exe) do (set FOUNDCURL=%%~$PATH:X)
14 |
15 | if not defined FOUND7Z (
16 | echo "ERROR: please make sure that 7Zip is installed and on the path."
17 | )
18 |
19 | if not defined FOUNDCURL (
20 | echo "ERROR: please make sure that Curl is installed and on the path."
21 | )
22 |
23 | if exist ".jdk14\jdk-14\" (
24 | echo "> jdk 14 for package generation already downloaded"
25 | ) else (
26 | mkdir .jdk14\
27 | cd .jdk14
28 | echo "> downloading jdk 14"
29 | curl -o jdk14.zip %JPACKAGE_JVM%
30 | echo "> unpacking jdk 14"
31 | 7z x jdk14.zip
32 | echo "> creating runtime image"
33 | %JAVA_HOME%\bin\jlink -p "%JAVA_HOME%\jmods" --add-modules java.desktop --strip-debug --no-header-files --no-man-pages --strip-native-commands --vm=server --compress=2 --output runtime
34 | )
35 |
36 | cd %DIR%
37 |
38 | set JPKG_HOME=.jdk14\jdk-14\
39 | set JPKG_EXECUTABLE=%JPKG_HOME%\bin\jpackage
40 |
41 | %JPKG_EXECUTABLE% --input ..\build\dist\ --name Freerouting --main-jar freerouting-executable.jar --type %APP_TYPE% --runtime-image .jdk14\runtime --app-version %APP_VERSION% --win-per-user-install --win-menu --win-menu-group Freerouting --license-file ..\LICENSE
42 |
43 | move Freerouting-%APP_VERSION%.msi freerouting-%APP_VERSION%-windows-x64.msi
44 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/boardgraphics/ItemDrawInfo.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * ItemDrawInfo.java
20 | *
21 | * Created on 14. Juli 2004, 10:26
22 | */
23 |
24 | package eu.mihosoft.freerouting.boardgraphics;
25 |
26 | import java.awt.Color;
27 |
28 | /**
29 | * Information for drawing an item on the screen.
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public class ItemDrawInfo
34 | {
35 |
36 | /** Creates a new instance of ItemDrawInfo */
37 | public ItemDrawInfo(Color[] p_layer_color, double p_intensity)
38 | {
39 | layer_color = p_layer_color;
40 | intensity = p_intensity;
41 | }
42 |
43 | /** The color of the item on each layer */
44 | public final Color[] layer_color;
45 |
46 | // The translucency factor of the color. Must be between 0 and 1.
47 | public final double intensity;
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowNetClasses_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowNetClasses
2 | title = Net Classes
3 | add = Add
4 | add_tooltip = Append a new class
5 | remove = Remove
6 | remove_tooltip = Remove the selected class
7 | assign = Assign
8 | assign_tooltip = Assign net classes
9 | select = Select
10 | select_tooltip = Select the items of the chosen net classes on the board
11 | filter_incompletes = Filter Incompletes
12 | filter_incompletes_tooltip = Display only the open connections of the selected net classes
13 | show_nets = Show Nets
14 | show_nets_tooltip = Displays a list with all nets contained in the selected classes
15 | contained_nets = Contained Nets
16 | message_1 = default net class not removed
17 | message_2 = net class not removed because it is still used in net
18 | net_class = net class
19 | removed = removed
20 | column_tool_tip_1 = The orded set of vias
21 | column_tool_tip_2 = The trace clearance class
22 | column_tool_tip_3 = The trace width
23 | column_tool_tip_4 = The layers of the trace width
24 | column_tool_tip_5 = Indicates, if items of this net can be pushed aside or pulled tight
25 | column_tool_tip_6 = If not selected, multiple connections to conduction areas are removed
26 | column_tool_tip_7 = If > 0, the cumulative trace length must be at least this value
27 | column_tool_tip_8 = If > 0, the cumulative trace length must be less than this value
28 | NAME = name
29 | VIA_RULE = via rule
30 | CLEARANCE_CLASS = clearance class
31 | TRACE_WIDTH = trace width
32 | ON_LAYER = on layer
33 | SHOVE_FIXED = shove fixed
34 | CYCLES_WITH_AREAS = cycles with areas
35 | MIN_TRACE_LENGTH = min. length
36 | MAX_TRACE_LENGTH = max. length
37 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Bedienungsanleitung
9 |
10 |
11 |
12 |
Using the IDE Help System
13 |
The Contents Tab
14 | The Contents tab contains the three folders MenuBar, Interactive States and Windows. In the Menu Bar folder you find help about the entries in the Pull Down Menus. The folder Interactive States contains help for the possible states of the program in interactive action. In the folder Windows you can get help about the contents of the additional windows of the IDE.
Getting Help for IDE Windows and Interactive States
After selecting Help Context in the help menu a question mark appears on the right side of the cursor. In this state push the left button in the graphics area of the main window to open a help topic that is specific to the task you are currrently doing or in an additional window to get help about the contents of that specific window. In the offline version you can use the F1-key as a shortcut for Help Context.
Searching the Online Help
15 |
To perform a full-text search of all IDE help topics, click the Search tab and type a keyword in the Find text box.
16 |
Using the Index
17 | Click any entry in the Index tab to view the topic. To search the index, enter a term in the search field and press Enter. Press Enter multiple times to cycle through all occurrences of the term in the index.
18 |
19 |
20 |
21 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/html_files/WindowAutorouteDetailParameter.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Detailierte Autoroute-Einstellungen
9 |
10 |
11 |
12 |
Detailierte Autoroute-Einstellungen
13 | Beschreibung des Fensters mit den detailierten Autoroute-Einstellungen:
14 |
Via-Kosten:
15 |
16 |
17 |
Zum Einstellen der Kosten für Vias im Autoroute-Algorithmus. Wenn Sie den Wert vergrößern, wird der Autorouter versuchen, mit weniger Durchkontaktierungen auszukommen. Ein zu hoher Wert beeintächtigt die Auflösung des Autoroute-Algorithmus,
18 |
19 |
20 |
Start-Pass:
21 |
22 |
Zum Einstellen der Nummer des ersten Pass im Batch-Autorouter. Diese Pass-Nummer beinflusst die Ripup-Kosten. Die Ripup-Kosten steigen bei Passes mit höherer Nummer.
23 |
24 |
Ripup-Anfangskosten:
25 |
26 |
Zum Einstellen der Ripup-Kosten im Pass mit der Nummer 1. Die Ripup-Kosten im Pass mit der Nummer N betragen (N * Ripup-Anfangskosten).
27 |
28 |
Trace-Kosten auf Lage:
29 |
30 |
Hier können Sie für jede Signallage die Kosten für Traces in und gegen die Vorzugsrichtung einstellen.
33 |
34 |
35 |
36 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/Layer.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Layer.java
20 | *
21 | * Created on 26. Mai 2004, 06:31
22 | */
23 |
24 | package eu.mihosoft.freerouting.board;
25 |
26 | /**
27 | * Describes the structure of a board layer.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class Layer implements java.io.Serializable
32 | {
33 |
34 | /** Creates a new instance of Layer */
35 | public Layer(String p_name, boolean p_is_signal)
36 | {
37 | name = p_name;
38 | is_signal = p_is_signal;
39 | }
40 |
41 | public String toString()
42 | {
43 | return name;
44 | }
45 |
46 | /** The name of the layer. */
47 | public final String name;
48 |
49 | /**
50 | * True, if this is a signal layer, which can be used for routing.
51 | * Otherwise it may be for example a power ground layer.
52 | */
53 | public final boolean is_signal;
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/html_files/WindowManualRules.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Manuelle Regeln
9 |
10 |
11 |
12 |
Manuelle Regeln
Fenster mit den Regeln, die beim interaktiven Routen verwendet werden, wenn der Route-Modus in den Route-Einstellungen auf manuell gesetzt ist.
13 |
14 |
Via-Regel:
15 |
16 | Hier können Sie die beim interaktiven Routen zu verwendende Via-Regel einstellen.
17 |
Clearance-Klasse für Bahnen:
18 |
19 | Stellen Sie hier die Clearance-Klasse ein, die für neu geroutete Bahnen gelten soll.
20 |
Bahnbreite:
21 |
22 | Stellen Sie hier die Bahnbreite für die neu zu routenden Bahnen ein.
23 |
auf Lage:
24 |
25 |
Gibt an, auf welchen Lagen die im Feld darüber eingestellte Bahnbreite gelten soll. Bei Auswahl von alle gilt die eingestellte Bahnbreite auf allen Lagen. Bei Auswahl von innere gilt die eingestellte Bahnbreite auf allen Innenlagen. Sonst gilt die Bahnbreite nur für die Lage mit dem ausgewählten Namen. Ist die Bahnbreite lagenabhängig, bleibt das Bahnbreitenfeld bei Einstellung von alle leer. Analog für die Innenlagen.
28 |
29 |
30 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/autoroute/CompleteExpansionRoom.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * CompleteExpansionRoom.java
20 | *
21 | * Created on 16. April 2006, 07:47
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.autoroute;
26 |
27 | import java.util.Collection;
28 |
29 | /**
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public interface CompleteExpansionRoom extends ExpansionRoom
34 | {
35 |
36 | /**
37 | * Returns the list of doors to target items of this room
38 | */
39 | Collection get_target_doors();
40 |
41 | /**
42 | * Returns the object of tthis complete_expansion_rooom.
43 | */
44 | eu.mihosoft.freerouting.board.SearchTreeObject get_object();
45 |
46 | /**
47 | * Draws the shape of this room for test purposes
48 | */
49 | void draw(java.awt.Graphics p_graphics, eu.mihosoft.freerouting.boardgraphics.GraphicsContext p_graphics_context, double p_intensity);
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/SearchTreeObject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * SearchTreeObject.java
20 | *
21 | * Created on 10. Januar 2004, 10:08
22 | */
23 |
24 | package eu.mihosoft.freerouting.board;
25 |
26 | /**
27 | * Common ShapeSearchTree functionality for board.Items and autoroute.ExpansionRooms
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public interface SearchTreeObject extends eu.mihosoft.freerouting.datastructures.ShapeTree.Storable
32 | {
33 | /**
34 | * Returns true if this object is an obstacle to objects containing
35 | * the net number p_net_no
36 | */
37 | boolean is_obstacle(int p_net_no);
38 |
39 | /**
40 | * Returns true if this object is an obstacle to traces containing
41 | * the net number p_net_no
42 | */
43 | boolean is_trace_obstacle(int p_net_no);
44 |
45 | /**
46 | * returns for this object the layer of the shape with index p_index.
47 | */
48 | int shape_layer(int p_index);
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowManualRules.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Manuelle Regeln
9 |
10 |
11 |
12 |
Manual Rules
13 | Window for the rules used in interactive routing when the route mode in the Route Parameter window is set to manual.
14 |
via rule
15 |
16 |
17 | In this combo box you can choose the via rule which you want to use currently in interactive routing.
18 |
trace clearance class:
19 |
20 | Use this combo box for selecting the clearance class which you want to use currently in interactive routing for traces.
21 |
trace width:
22 |
23 | Here you can edit the trace width you want to use currently in interactive routing.
24 |
on layer:
25 |
26 |
Defines the layers, for which the trace width in the field above is valid. If all is selected in the combo box, the value in the trace width field is valid on all layers. If inner is selected, it is valid on all inner layers. Otherwise the value is valid only on the layer with the selected name in the combo box. The trace width field remains empty, if the trace width is layer dependent and all is selected in the combo box. Analog if inner is selected.
29 |
30 |
31 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/designforms/specctra/Path.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Path.java
20 | *
21 | * Created on 30. Juni 2004, 09:28
22 | */
23 |
24 | package eu.mihosoft.freerouting.designforms.specctra;
25 |
26 | import eu.mihosoft.freerouting.datastructures.IndentFileWriter;
27 | import eu.mihosoft.freerouting.datastructures.IdentifierType;
28 |
29 | /**
30 | * Class for writing path scopes from dsn-files.
31 | *
32 | * @author Alfons Wirtz
33 | */
34 | public abstract class Path extends Shape
35 | {
36 |
37 | /** Creates a new instance of Path */
38 | Path(Layer p_layer, double p_width, double[] p_coordinate_arr)
39 | {
40 | super (p_layer);
41 | width = p_width;
42 | coordinate_arr = p_coordinate_arr;
43 | }
44 |
45 | /**
46 | * Writes this path as a scope to an output dsn-file.
47 | */
48 | public abstract void write_scope(IndentFileWriter p_file, IdentifierType p_identifier) throws java.io.IOException;
49 |
50 | public final double width;
51 | public final double [] coordinate_arr;
52 | }
53 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/logger/FRLogger.java:
--------------------------------------------------------------------------------
1 | package eu.mihosoft.freerouting.logger;
2 |
3 | import eu.mihosoft.freerouting.FreeRouting;
4 | import org.apache.logging.log4j.LogManager;
5 | import org.apache.logging.log4j.Logger;
6 |
7 | import java.text.DecimalFormat;
8 | import java.time.Duration;
9 | import java.time.Instant;
10 | import java.util.HashMap;
11 |
12 | public class FRLogger {
13 | private static Logger logger = LogManager.getLogger(FreeRouting.class);
14 |
15 | private static DecimalFormat performanceFormat = new DecimalFormat("0.00");
16 |
17 | private static HashMap perfData = new HashMap();
18 |
19 | public static void traceEntry(String perfId)
20 | {
21 | perfData.put(perfId.hashCode(), java.time.Instant.now());
22 | }
23 |
24 | public static void traceExit(String perfId)
25 | {
26 | traceExit(perfId, null);
27 | }
28 |
29 | public static void traceExit(String perfId, Object result)
30 | {
31 | long timeElapsed = Duration.between(perfData.get(perfId.hashCode()), java.time.Instant.now()).toMillis();
32 |
33 | perfData.remove(perfId.hashCode());
34 | if (timeElapsed < 0) {
35 | timeElapsed = 0;
36 | }
37 | logger.trace("Method '" + perfId.replace("{}", result != null ? result.toString() : "(null)") + "' was performed in " + performanceFormat.format(timeElapsed/1000.0) + " seconds.");
38 | }
39 |
40 | public static void info(String msg)
41 | {
42 | logger.info(msg);
43 | }
44 |
45 | public static void warn(String msg)
46 | {
47 | logger.warn(msg);
48 | }
49 |
50 | public static void error(String msg, Throwable t)
51 | {
52 | if (t == null)
53 | {
54 | logger.error(msg);
55 | } else
56 | {
57 | logger.error(msg, t);
58 | }
59 | }
60 | }
61 |
--------------------------------------------------------------------------------
/distribution/create-distribution-macos.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export APP_VERSION=$1
4 | export APP_TYPE="dmg"
5 | #export JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk-13.0.1.jdk/Contents/Home/"
6 | export JPACKAGE_JVM="https://download.java.net/java/GA/jdk14/076bab302c7b4508975440c56f6cc26a/36/GPL/openjdk-14_osx-x64_bin.tar.gz"
7 |
8 |
9 | SOURCE="${BASH_SOURCE[0]}"
10 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
11 | DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
12 | SOURCE="$(readlink "$SOURCE")"
13 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
14 | done
15 | DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
16 |
17 | cd $DIR
18 |
19 |
20 | if [ -d ".jdk14/jdk-14.jdk/" ]; then
21 | echo "> jdk 14 for package generation already downloaded"
22 | else
23 | mkdir -p .jdk14/ ; cd .jdk14
24 | echo "> downloading jdk 14"
25 | curl -o jdk14.tar.gz $JPACKAGE_JVM
26 | echo "> unpacking jdk 14"
27 | tar xvzf jdk14.tar.gz
28 | echo "> creating runtime image"
29 | $JAVA_HOME/bin/jlink -p "$JAVA_HOME/jmods" \
30 | --add-modules java.desktop \
31 | --strip-debug \
32 | --no-header-files \
33 | --no-man-pages \
34 | --strip-native-commands \
35 | --vm=server \
36 | --compress=2 \
37 | --output runtime
38 | fi
39 |
40 | cd $DIR
41 |
42 | export JPKG_HOME=$(pwd)"/.jdk14/jdk-14.jdk/Contents/Home"
43 | export JPKG_EXECUTABLE=$JPKG_HOME/bin/jpackage
44 |
45 | $JPKG_EXECUTABLE --input ../build/dist/ \
46 | --name Freerouting \
47 | --main-jar freerouting-executable.jar \
48 | --type $APP_TYPE --runtime-image .jdk14/runtime --app-version $APP_VERSION --license-file ../LICENSE
49 |
50 | mv Freerouting-$APP_VERSION.dmg freerouting-$APP_VERSION-macos-x64.dmg
51 |
52 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/Limits.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | */
19 |
20 | package eu.mihosoft.freerouting.geometry.planar;
21 | import java.math.BigInteger;
22 |
23 | /**
24 | *
25 | * Some numerical limits and values are stored here.
26 | *
27 |
28 | * @author Alfons Wirtz
29 | */
30 |
31 | public class Limits
32 | {
33 |
34 | /**
35 | * An upper bound (2^25) so that the product of two integers with absolut
36 | * value at most CRIT_COOR is contained in the mantissa of a double with
37 | * some space left for addition.
38 | */
39 | public static final int CRIT_INT = 33554432;
40 |
41 | /**
42 | * the biggest double value ( 2 ^53) , so that all integers smaller than
43 | * this value are exact represented as double value
44 | */
45 | public static final double CRIT_DOUBLE = 9007199254740992.0;
46 |
47 | public static final BigInteger CRIT_INT_BIG = BigInteger.valueOf(CRIT_INT);
48 |
49 | public static final double sqrt2 = Math.sqrt(2);
50 |
51 | private Limits() // disallow instantiation
52 | {
53 | }
54 | }
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/Observers.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Observers.java
20 | *
21 | * Created on 13. Februar 2005, 09:14
22 | */
23 |
24 | package eu.mihosoft.freerouting.datastructures;
25 |
26 | /**
27 | * Interface to observe changes on objects for syncronisatiation purposes.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public interface Observers
32 | {
33 | /**
34 | * Tell the observers the deletion p_object.
35 | */
36 | void notify_deleted(ObjectType p_object);
37 |
38 | /**
39 | * Notify the observers, that they can syncronize the changes on p_object.
40 | */
41 | void notify_changed(ObjectType p_object);
42 |
43 | /**
44 | * Enable the observers to syncronize the new created item.
45 | */
46 | void notify_new(ObjectType p_object);
47 |
48 | /** Starts notifying the observers */
49 | void activate();
50 |
51 | /** Ends notifying the observers */
52 | void deactivate();
53 |
54 | /**
55 | * Returns, if the observer is activated.
56 | */
57 | boolean is_active();
58 | }
59 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/ConvexShape.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * ConvexShape2.java
20 | *
21 | * Created on 15. November 2002, 08:44
22 | */
23 |
24 | package eu.mihosoft.freerouting.geometry.planar;
25 |
26 | /**
27 | * A shape is defined as convex, if for each line segment with both endpoints
28 | * contained in the shape the whole segment is contained completely in the shape.
29 | *
30 | * @author Alfons Wirtz
31 | */
32 | public interface ConvexShape extends Shape
33 | {
34 |
35 | /**
36 | * Calculates the offset shape by p_distance.
37 | * If p_distance {@literal >} 0, the shape will be enlarged, else the result
38 | * shape will be smaller.
39 | */
40 | ConvexShape offset(double p_distance);
41 |
42 | /**
43 | * Shrinks the shape by p_offset.
44 | * The result shape will not be empty.
45 | */
46 | ConvexShape shrink(double p_offset);
47 |
48 | /**
49 | * Returns the maximum diameter of the shape.
50 | */
51 | double max_width();
52 |
53 | /**
54 | * Returns the minimum diameter of the shape.
55 | */
56 | double min_width();
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/de/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Bedienungsanleitung
9 |
10 |
11 |
12 |
Bedienungsanleitung für die Online-Hilfe
13 |
Das Inhaltsverzeichnis
14 | Im linken Fenster dieser Online-Hilfe sehen Sie das Inhaltsverzeichnis. Es enthält die drei Ordner Menüleiste, Interaktive Zustände und Fenster. Im Ordner Menüleiste finden Sie Hilfe zu den einzelnen Einträgen im Pulldown-Menü. Der Ordner Interaktive Zustände enthält Hilfe über die möglichen interaktiven Zustände des Programms. Im Ordner mit dem Namen Fenster erhalten Sie Hilfe zur Funktionalität der einzelnen Zusatzfenster des Programms.
Kontextsensitive Hilfe
Wenn Sie im Hilfe-Menü kontextsensitive Hilfe gewählt haben, erscheint ein Frageteichen rechts vom Cursor. Drücken Sie in diesem Zustand die linke Maustaste im Grafikbereich des Hauptfensters, um Hilfe über den aktuellen interaktiven Zustand des Programms zu bekommen, oder in einem Zusatzfenster, um sich die die dortige Funktionalität beschreiben zu lassen. In der Offline-Version können Sie stattdessen auch die F1-Taste benutzen.
Die Online-Hilfe durchsuchen
15 |
Für eine Volltextsuche in der Online-Hilfe klicken Sie im linken Fenster die Spalte Suchen und geben Sie den gesuchten Begriff in das Textfeld ein.
16 |
Den Index verwenden
17 |
18 | Klicken Sie einen Eintrag in der Spalte Index im linken Fenster, um Auskunft über das entsprechende Thema zu erhalten. Durch mehrfaches Drücken der Return-Taste erhalten sie alle Einträge zum gesuchten Thema.
19 |
20 |
21 |
22 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/designforms/specctra/Placement.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Placement.java
20 | *
21 | * Created on 5. Juli 2004, 08:53
22 | */
23 |
24 | package eu.mihosoft.freerouting.designforms.specctra;
25 |
26 | /**
27 | * Class for writing placement scopes from dsn-files.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class Placement extends ScopeKeyword
32 | {
33 |
34 | /** Creates a new instance of Placemet */
35 | public Placement()
36 | {
37 | super("placement");
38 | }
39 |
40 | public static void write_scope(WriteScopeParameter p_par) throws java.io.IOException
41 | {
42 | p_par.file.start_scope();
43 | p_par.file.write("placement");
44 | if (p_par.board.components.get_flip_style_rotate_first())
45 | {
46 | p_par.file.new_line();
47 | p_par.file.write("(place_control (flip_style rotate_first))");
48 | }
49 | for (int i = 1; i <= p_par.board.library.packages.count(); ++i)
50 | {
51 | eu.mihosoft.freerouting.designforms.specctra.Package.write_placement_scope(p_par, p_par.board.library.packages.get(i));
52 | }
53 | p_par.file.end_scope();
54 | }
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/autoroute/MazeSearchElement.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * MazeSearchElement.java
20 | *
21 | * Created on 31. Januar 2004, 07:46
22 | */
23 |
24 | package eu.mihosoft.freerouting.autoroute;
25 |
26 | /**
27 | * Describes the structure of a section of an ExpandebleObject.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class MazeSearchElement
32 | {
33 | /**
34 | * Resets this MazeSearchElement for autorouting the next connection.
35 | */
36 | public void reset()
37 | {
38 | is_occupied = false;
39 | backtrack_door = null;
40 | section_no_of_backtrack_door = 0;
41 | room_ripped = false;
42 | adjustment = Adjustment.NONE;
43 | }
44 |
45 | /** true, if this door is already occupied by the maze expanding algorithm */
46 | public boolean is_occupied = false;
47 |
48 | /** Used for backtracking in the maze expanding algorithm */
49 | public ExpandableObject backtrack_door = null;
50 |
51 | public int section_no_of_backtrack_door = 0;
52 |
53 | public boolean room_ripped = false;
54 |
55 | public Adjustment adjustment = Adjustment.NONE;
56 |
57 | public enum Adjustment
58 | { NONE, RIGHT, LEFT}
59 | }
60 |
61 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardToolbarSelectedItem_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardToolbarSelectedItem
2 | info = Info
3 | info_tooltip = displays information about the selected items (i)
4 | cancel = Cancel
5 | cancel_tooltip = to cancel the current selection (esc)
6 | delete = Delete
7 | delete_tooltip = to delete the selected items which are not fixed (del)
8 | cutout = Cutout
9 | cutout_tooltip = to delete the selected route inside a rectangle (d)
10 | fix = Fix
11 | fix_tooltip = to fix the selected items (f)
12 | unfix = Unfix
13 | unfix_tooltip = to unfix the selected items (u)
14 | spacing = Clearance
15 | spacing_tooltip = to assign a new clearance class to the selected items
16 | pull_tight = Pull Tight
17 | pull_tight_tooltip = to optimize the selected traces and vias (p)
18 | autoroute = Autoroute
19 | autoroute_tooltip = to autoroute the selected items (a)
20 | fanout = Fanout
21 | fanout_tooltip = to autoroute the selected SMD pins until the first via
22 | nets = Nets
23 | nets_tooltip = to extend the selection to whole nets (n)
24 | conn_sets = Conn. Sets
25 | conn_sets_tooltip = to extend the selection to whole connected sets (s)
26 | connections = Connections
27 | connections_tooltip = to extend the selection until the next fork or terminal item (e)
28 | components = Components
29 | components_tooltip = to extend the selection to whole components (b)
30 | new_net = New Net
31 | new_net_tooltip = to assign the selected items to a new net
32 | new_component = New Component
33 | new_component_tooltip = to assign the selected items to a new component
34 | violations = Violations
35 | violations_tooltip = to show or hide the clearance violations of the selected items (v)
36 | zoom_selection = Zoom Selection
37 | zoom_selection_tooltip = to display a window containing the selected items (w)
38 | zoom_all = Zoom All
39 | zoom_all_tooltip = to display the whole board (a)
40 | zoom_region = Zoom Region
41 | zoom_region_tooltip = to display a region of the board (r)
42 | select_clearance_class = Select clearance class
43 | assign_clearance_class = Assign Clearance Class
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowRouteParameter_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class WindowRouteParameter
2 | title = Route Parameter
3 | snap_angle = snap angle:
4 | snap_angle_tooltip = Angle Restriction for Traces
5 | 90_degree = 90 degree
6 | 45_degree = 45 degree
7 | none = none
8 | route_mode = route mode:
9 | dynamic = dynamic
10 | stitching = stitching
11 | rule_selection = rule selection:
12 | automatic = automatic
13 | manual = manual
14 | push&shove_enabled = push & shove enabled
15 | push&shove_enabled_tooltip = Enables pushing obstacles
16 | drag_components_enabled = drag components enabled
17 | drag_components_enabled_tooltip = Enables dragging components with the pressed left mouse button
18 | via_snap_to_smd_center = vias snap to smd center
19 | via_snap_to_smd_center_tooltip = If set, vias attaching smd pins snap to the pin center
20 | hilight_routing_obstacle = highlight routing obstacle
21 | hilight_routing_obstacle_tooltip = to highlight the current routing obstacle in dynamic routing
22 | ignore_conduction_areas = ignore conduction areas
23 | ignore_conduction_areas_tooltip = If set, conduction areas are not regarded as routing obstacles
24 | automatic_neckdown = automatic neckdown
25 | automatic_neckdown_tooltip = If set, at pins smaller than the current trace width the trace width will be automatically lowered
26 | restrict_pin_exit_directions = restrict pin exit directions
27 | restrict_pin_exit_directions_tooltip = If set, the trace exit directions of rectangular pins are restricted to the small sides
28 | pin_pad_to_turn_gap = pad to turn gap:
29 | pin_pad_to_turn_gap_tooltip = Defines the length of the trace exit restrictions for rectangular pins
30 | pull_tight_region = pull tight region:
31 | pull_tight_region_tooltip = Use text field or slider to change the pull tight region around the cursor
32 | detail_parameter = detail parameter
33 | change_snap_angle_45 = Free angle traces with snap angle 45 degree not yet fully supported. Change snap angle anyway?
34 | change_snap_angle_90 = Only orthoganal traces with snap angle 90 degree fully supported yet. Change snap angle anyway?
--------------------------------------------------------------------------------
/distribution/create-distribution-linux.sh:
--------------------------------------------------------------------------------
1 | #!/bin/bash
2 |
3 | export APP_VERSION=$1
4 | export APP_TYPE="app-image"
5 | #export JAVA_HOME="/usr/lib/jvm/java-11-openjdk-amd64/"
6 | export JPACKAGE_JVM="https://download.java.net/java/GA/jdk14/076bab302c7b4508975440c56f6cc26a/36/GPL/openjdk-14_linux-x64_bin.tar.gz"
7 |
8 |
9 | SOURCE="${BASH_SOURCE[0]}"
10 | while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
11 | DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
12 | SOURCE="$(readlink "$SOURCE")"
13 | [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
14 | done
15 | DIR="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )"
16 |
17 | cd $DIR
18 |
19 |
20 | if [ -d ".jdk14/jdk-14/" ]; then
21 | echo "> jdk 14 for package generation already downloaded"
22 | else
23 | mkdir -p .jdk14/ ; cd .jdk14
24 | echo "> downloading jdk 14"
25 | curl -o jdk14.tar.gz $JPACKAGE_JVM
26 | echo "> unpacking jdk 14"
27 | tar xvzf jdk14.tar.gz
28 | echo "> creating runtime image"
29 | $JAVA_HOME/bin/jlink -p "$JAVA_HOME/jmods" \
30 | --add-modules java.desktop \
31 | --strip-debug \
32 | --no-header-files \
33 | --no-man-pages \
34 | --strip-native-commands \
35 | --vm=server \
36 | --compress=2 \
37 | --output runtime
38 | fi
39 |
40 | cd $DIR
41 |
42 | export JPKG_HOME=$(pwd)"/.jdk14/jdk-14/"
43 | export JPKG_EXECUTABLE=$JPKG_HOME/bin/jpackage
44 |
45 | cp ../LICENSE ../build/dist/LICENSE
46 |
47 | $JPKG_EXECUTABLE --input ../build/dist/ \
48 | --name Freerouting \
49 | --main-jar freerouting-executable.jar \
50 | --type $APP_TYPE --runtime-image .jdk14/runtime --app-version $APP_VERSION
51 |
52 | mv Freerouting freerouting-$APP_VERSION-linux-x64
53 | cp ../build/dist/LICENSE freerouting-$APP_VERSION-linux-x64/LICENSE
54 | mv ../build/dist/freerouting-executable.jar freerouting-$APP_VERSION-executable.jar
55 |
56 | zip -r freerouting-$APP_VERSION-linux-x64.zip freerouting-$APP_VERSION-linux-x64
57 |
58 |
59 |
60 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/BoardTemporarySubWindow.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * BoardTemporarySubWindow.java
20 | *
21 | * Created on 20. Juni 2005, 08:19
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.gui;
26 |
27 | /**
28 | * Class for temporary subwindows of the boarrd frame
29 | * @author Alfons Wirtz
30 | */
31 | public class BoardTemporarySubWindow extends BoardSubWindow
32 | {
33 |
34 | /** Creates a new instance of BoardTemporarySubWindow */
35 | public BoardTemporarySubWindow(BoardFrame p_board_frame)
36 | {
37 | this.board_frame = p_board_frame;
38 | p_board_frame.temporary_subwindows.add(this);
39 |
40 | this.addWindowListener(new java.awt.event.WindowAdapter()
41 | {
42 | public void windowClosing(java.awt.event.WindowEvent evt)
43 | {
44 | dispose();
45 | }
46 | });
47 | }
48 |
49 | /** Used, when the board frame with all the subwindows is disposed. */
50 | public void board_frame_disposed()
51 | {
52 | super.dispose();
53 | }
54 |
55 | public void dispose()
56 | {
57 | this.board_frame.temporary_subwindows.remove(this);
58 | super.dispose();
59 | }
60 |
61 | protected final BoardFrame board_frame;
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/DragMenuState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * DragMenuState.java
20 | *
21 | * Created on 4. November 2004, 11:14
22 | */
23 |
24 | package eu.mihosoft.freerouting.interactive;
25 |
26 | import eu.mihosoft.freerouting.geometry.planar.FloatPoint;
27 |
28 | /**
29 | * Class implementing the different functionality in the drag menu
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public class DragMenuState extends MenuState
34 | {
35 | /** Returns a new instance of DragMenuState */
36 | public static DragMenuState get_instance(BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
37 | {
38 | DragMenuState new_state = new DragMenuState(p_board_handling, p_activityReplayFile);
39 | return new_state;
40 | }
41 |
42 | /** Creates a new instance of DragMenuState */
43 | public DragMenuState(BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
44 | {
45 | super(p_board_handling, p_activityReplayFile);
46 | }
47 |
48 | public InteractiveState mouse_pressed(FloatPoint p_point)
49 | {
50 | return DragState.get_instance(p_point, this, hdlg, activityReplayFile);
51 | }
52 |
53 | public String get_help_id()
54 | {
55 | return "MenuState_DragMenuState";
56 | }
57 | }
58 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/AngleRestriction.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * SnapAngle.java
20 | *
21 | * Created on 14. Juli 2003, 07:40
22 | */
23 |
24 | package eu.mihosoft.freerouting.board;
25 |
26 | /**
27 | * Enum for angle restrictions none, fortyfive degree and ninety degree.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class AngleRestriction
32 | {
33 | public static final AngleRestriction NONE = new AngleRestriction("none", 0);
34 | public static final AngleRestriction FORTYFIVE_DEGREE = new AngleRestriction("45 degree", 1);
35 | public static final AngleRestriction NINETY_DEGREE = new AngleRestriction("90 degree", 2);
36 |
37 | public static final AngleRestriction[] arr =
38 | {
39 | NONE, FORTYFIVE_DEGREE, NINETY_DEGREE
40 | };
41 |
42 | /**
43 | * Returns the string of this instance
44 | */
45 | public String to_string()
46 | {
47 | return name;
48 | }
49 |
50 | /**
51 | * Returns the number of this instance
52 | */
53 | public int get_no()
54 | {
55 | return no;
56 | }
57 | /** Creates a new instance of SnapAngle */
58 | private AngleRestriction(String p_name, int p_no)
59 | {
60 | name = p_name;
61 | no = p_no;
62 | }
63 |
64 | private final String name;
65 | private final int no;
66 | }
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/BoardMenuHelpReduced.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * BoardMenuHelpReduced.java
20 | *
21 | * Created on 21. Oktober 2005, 09:06
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.gui;
26 |
27 | /**
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class BoardMenuHelpReduced extends javax.swing.JMenu
32 | {
33 | /**
34 | * Creates a new instance of BoardMenuHelpReduced
35 | * Separated from BoardMenuHelp to avoid ClassNotFound exception when the library
36 | * jh.jar is not found, which is only used in the extended help menu.
37 | */
38 | public BoardMenuHelpReduced(BoardFrame p_board_frame)
39 | {
40 | this.board_frame = p_board_frame;
41 | this.resources = java.util.ResourceBundle.getBundle("eu.mihosoft.freerouting.gui.BoardMenuHelp", p_board_frame.get_locale());
42 | this.setText(this.resources.getString("help"));
43 |
44 | javax.swing.JMenuItem about_window = new javax.swing.JMenuItem();
45 | about_window.setText(this.resources.getString("about"));
46 | about_window.addActionListener((java.awt.event.ActionEvent evt) -> {
47 | board_frame.about_window.setVisible(true);
48 | });
49 | this.add(about_window);
50 | }
51 |
52 | protected final BoardFrame board_frame;
53 | protected final java.util.ResourceBundle resources;
54 | }
55 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/board/ObjectInfoPanel_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text written into an ObjectInfoPanel
2 | at = at
3 | attach_smd = attach smd
4 | back = back
5 | between = between
6 | board_outline = Board Outline
7 | center = center
8 | circle = Circle
9 | class = class
10 | clearance_class = clearance class
11 | clearance_class_2 = Clearance Class
12 | clearance_info = Clearance Info
13 | clearance_violation = clearance violation
14 | clearance_violation_2 = Clearance violation
15 | clearance_violations = clearance violations
16 | component = Component
17 | component_2 = component
18 | component_info = Component Info
19 | component_keepout = Component Keepout
20 | conduction_area = Conduction Area
21 | contact_info = Contact Info
22 | contacts = contacts
23 | from = from
24 | front = front
25 | gate = gate
26 | gate_pin = gate pin
27 | hole = hole
28 | holes = holes
29 | keepout = Keepout
30 | layer = layer
31 | length = length
32 | logical_part = logical part
33 | logical_part_2 = Logical Part
34 | logical_part_info = Logical Part Info
35 | lower_left = lower left
36 | net = Net
37 | net_class = Net Class
38 | net_class_2 = Net class
39 | net_info = Net Info
40 | not_yet_placed = not yet placed
41 | of_component = of component
42 | off = off
43 | on = on
44 | on_layer = on layer
45 | package = Package
46 | package_info = Package Info
47 | padstack = padstack
48 | padstack_info = Padstack Info
49 | pin = Pin
50 | pin_2 = pin
51 | polygon = Polygon
52 | radius = radius
53 | rectangle = Rectangle
54 | rotation = rotation
55 | shove_fixed = shove fixed
56 | spacing_from_clearance_class = Spacing from clearance class
57 | swap_code = swap code
58 | terminal_items = terminal items
59 | terminal_items_2 = Terminal Items
60 | to = to
61 | to_class = to class
62 | trace = Trace
63 | trace_clearance_class = trace clearance class
64 | trace_clearance_class_2 = Trace Clearance Class
65 | trace_length = trace length
66 | trace_width = trace width
67 | upper_right = upper right
68 | via = Via
69 | via_count = via count
70 | via_info = Via Info
71 | via_keepout = Via Keepout
72 | via_rule = via rule
73 | via_rule_2 = Via Rule
74 | vias = Vias
75 | violation_info = Violation Info
76 | with = with
77 | width = width
78 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/ItemIdNoGenerator.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * IdNoGenerator.java
20 | *
21 | * Created on 2. Juni 2003, 13:43
22 | */
23 |
24 | package eu.mihosoft.freerouting.board;
25 |
26 | import eu.mihosoft.freerouting.logger.FRLogger;
27 |
28 | /**
29 | * Creates unique Item identication nunbers.
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public class ItemIdNoGenerator implements eu.mihosoft.freerouting.datastructures.IdNoGenerator, java.io.Serializable
34 | {
35 |
36 | /**
37 | * Creates a new ItemIdNoGenerator
38 | */
39 | public ItemIdNoGenerator()
40 | {
41 | }
42 |
43 | /**
44 | * Create a new unique identification number.
45 | * Use eventually the id_no generater from the host system
46 | * for syncronisation
47 | */
48 | public int new_no()
49 | {
50 | if (last_generated_id_no >= c_max_id_no)
51 | {
52 | FRLogger.warn("IdNoGenerator: danger of overflow, please regenerate id numbers from scratch!");
53 | }
54 | ++last_generated_id_no;
55 | return last_generated_id_no;
56 | }
57 |
58 | /**
59 | * Return the maximum generated id number so far.
60 | */
61 | public int max_generated_no()
62 | {
63 | return last_generated_id_no;
64 | }
65 |
66 | private int last_generated_id_no = 0;
67 | static final private int c_max_id_no = Integer.MAX_VALUE / 2;
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardMenuFile_en.properties:
--------------------------------------------------------------------------------
1 | # English version of language dependent text of the class BoardMenuFile
2 | file = File
3 | save = Save
4 | save_tooltip = saves the design to disk in the internal .bin file format
5 | save_message = design file saved
6 | save_and_exit = Save and Exit
7 | save_and_exit_tooltip = exits the program after saving the design to disk
8 | cancel_and_exit = Cancel and Exit
9 | cancel_and_exit_tooltip = exits the program without saving the design
10 | save_as = Save as
11 | save_as_tooltip = use extensions .bin for binary and .dsn for Specctra text format
12 | generate_logfile = Start recording actions
13 | generate_logfile_tooltip = starts writing the interactive actions into an activity replay file
14 | replay_logfile = Replay recorded actions
15 | replay_logfile_tooltip = repeats the interactive actions stored in an activity replay file
16 | session_file = Export Specctra Session File
17 | session_file_tooltip = writes a session file in the Specctra .ses format
18 | eagle_script = Export Eagle Session Script
19 | eagle_script_tooltip = creates an eagle script to export the changes in routing
20 | settings = Save GUI Settings as Default
21 | settings_tooltip = saves the current settings of the graphical user interface as default
22 | confirm = Save also the rules created in this program for later reuse?
23 | message_1 = unable to save design file
24 | message_2 = saving design file from now on as
25 | message_3 = legal file extensions are .bin and .dsn
26 | message_4 = textfile
27 | message_5 = in Specctra text format written
28 | message_6 = writing to textfile
29 | message_7 = failed
30 | message_8 = unable to create logfile
31 | message_9 = writing logfile
32 | message_10 = unable to read logfile
33 | message_11 = session file
34 | message_12 = in Specctra format written
35 | message_13 = writing session file
36 | message_14 = Eagle script file
37 | message_15 = written
38 | message_16 = creating Eagle script file
39 | message_17 = GUI default settings saved
40 | message_18 = saving GUI default settings failed
41 | message_19 = File not saved because file extension .dsn expected
42 | message_20 = Host cad system might expect the session file name
43 | message_21 = Please rename the file if necessary
44 | message_22 = Eagle might expect the script file extension .scr
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/autoroute/ExpandableObject.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * ExpandableObject.java
20 | *
21 | * Created on 6. April 2004, 07:30
22 | */
23 | package eu.mihosoft.freerouting.autoroute;
24 |
25 | import eu.mihosoft.freerouting.geometry.planar.TileShape;
26 |
27 | /**
28 | * An object, which can be expanded by the maze expansion algorithm.
29 | *
30 | * @author Alfons Wirtz
31 | */
32 | public interface ExpandableObject
33 | {
34 |
35 | /**
36 | * Calculates the intersection of the shapes of the 2 objecta belonging to this door.
37 | */
38 | TileShape get_shape();
39 |
40 | /**
41 | * Returns the dimension ot the intersection of the shapes of the 2 objecta belonging to this door.
42 | */
43 | int get_dimension();
44 |
45 | /**
46 | * Returns the other room to p_room if this is a door and the other room is a CompleteExpansionRoom.
47 | * Else null is returned.
48 | */
49 | CompleteExpansionRoom other_room(CompleteExpansionRoom p_room);
50 |
51 | /**
52 | * Returns the count of MazeSearchElements in this expandable object
53 | */
54 | int maze_search_element_count();
55 |
56 | /**
57 | * Returns the p_no-th MazeSearchElements in this expandable object
58 | */
59 | MazeSearchElement get_maze_search_element(int p_no);
60 |
61 | /**
62 | * Resets this ExpandableObject for autorouting the next connection.
63 | */
64 | void reset();
65 | }
66 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/BoardToolbarSelectedItem_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class BoardToolbarSelectedItem
2 | info = Info
3 | info_tooltip = zeigt Informationen \u00FCber die ausgew\u00E4hlten Objekte (i)
4 | cancel = Abbrechen
5 | cancel_tooltip = das Auswahlmen\u00FC verlassen (Esc)
6 | delete = L\u00F6schen
7 | delete_tooltip = die unfixierten ausgew\u00E4hlten Objekte l\u00F6schen (Entf)
8 | cutout = Ausschneiden
9 | cutout_tooltip = den ausgew\u00E4hlten Route innerhalb eines Rechtecks l\u00F6schen (d)
10 | fix = Fix
11 | fix_tooltip = die ausgew\u00E4hlten Objekte fixieren (f)
12 | unfix = Unfix
13 | unfix_tooltip = die Fixierung der ausgew\u00E4hlten Objekte aufheben (u)
14 | spacing = Clearance
15 | spacing_tooltip = den ausgew\u00E4hlten Objekten eine neue Clearance-Klasse zuweisen
16 | pull_tight = Gl\u00E4tten
17 | pull_tight_tooltip = Die ausgew\u00E4hlten Bahnen und Vias glattt ziehen (p)
18 | autoroute = Autoroute
19 | autoroute_tooltip = die ausgew\u00E4hlten Objekte autorouten (a)
20 | fanout = Fanout
21 | fanout_tooltip = die ausgew\u00E4hlten SMD-Pins bis zum ersten Via autorouten
22 | nets = Netze
23 | nets_tooltip = die Auswahl auf ganze Netze erweitern (n)
24 | conn_sets = Zush.
25 | conn_sets_tooltip = die Auswahl auf ganze zusammenh\u00E4ngende Teilmengen erweitern (s)
26 | connections = Verb.
27 | connections_tooltip = die Auswahl auf ganze Verbindungen erweitern (e)
28 | components = Bauteile
29 | components_tooltip = die Auswahl auf ganze Bauteile erweitern (b)
30 | new_net = Neues Netz
31 | new_net_tooltip = die ausgew\u00E4hlten Objekte einem neuen Netz zuweisen
32 | new_component = Neues Bauteil
33 | new_component_tooltip = die ausgew\u00E4hlten Objekte einem neuen Bauteil zuweisen
34 | violations = Verletzungen
35 | violations_tooltip = Das Zeigen der Clearance-Verletzungen der ausgew\u00E4hlten Objekte an- oder abschalten (v)
36 | zoom_selection = Auswahl abbilden
37 | zoom_selection_tooltip = ein umgebendes Rechteck der ausgew\u00E4hlten Objekte abbilden(w)
38 | zoom_all = Alles abb.
39 | zoom_all_tooltip = die gesamte Platine abbilden (a)
40 | zoom_region = Ausschnitt abb.
41 | zoom_region_tooltip = ein Rechteck der Platine zum Abbilden ausw\u00E4hlen (r)
42 | select_clearance_class = W\u00E4hle Clearance-Klasse
43 | assign_clearance_class = Clearance-Klasse zuweisen
44 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/autoroute/IncompleteFreeSpaceExpansionRoom.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * IncompleteFreeSpaceExpansionRoom.java
20 | *
21 | * Created on 10. Februar 2004, 10:13
22 | */
23 |
24 | package eu.mihosoft.freerouting.autoroute;
25 |
26 | import java.util.Collection;
27 |
28 | import eu.mihosoft.freerouting.geometry.planar.TileShape;
29 |
30 |
31 | /**
32 | * An expansion room, whose shape is not yet completely calculated.
33 | *
34 | * @author Alfons Wirtz
35 | */
36 | public class IncompleteFreeSpaceExpansionRoom extends FreeSpaceExpansionRoom
37 | {
38 |
39 | /**
40 | * Creates a new instance of IncompleteFreeSpaceExpansionRoom.
41 | * If p_shape == null means p_shape is the whole plane.
42 | */
43 | public IncompleteFreeSpaceExpansionRoom(TileShape p_shape, int p_layer, TileShape p_contained_shape)
44 | {
45 | super(p_shape, p_layer);
46 | contained_shape = p_contained_shape;
47 | }
48 |
49 | public TileShape get_contained_shape()
50 | {
51 | return this.contained_shape;
52 | }
53 |
54 | public void set_contained_shape(TileShape p_shape)
55 | {
56 | this.contained_shape = p_shape;
57 | }
58 |
59 | public Collection get_target_doors()
60 | {
61 | return new java.util.LinkedList();
62 | }
63 |
64 | /** A shape which should be contained in the completed shape. */
65 | private TileShape contained_shape;
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/TimeLimit.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * TimeLimit.java
20 | *
21 | * Created on 15. Maerz 2006, 09:27
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.datastructures;
26 |
27 | /**
28 | * Class used to cancel a performance critical algorithm after a time limit is exceeded.
29 | * @author Alfons Wirtz
30 | */
31 | public class TimeLimit
32 | {
33 |
34 | /**
35 | * Creates a new instance with a time limit of p_milli_seconds milli seconds
36 | */
37 | public TimeLimit(int p_milli_seconds)
38 | {
39 | this.time_limit = p_milli_seconds;
40 | this.time_stamp = (new java.util.Date()).getTime();
41 | }
42 |
43 | /**
44 | * Returns true, if the time limit provided in the constructor of this class is exceeded.
45 | */
46 | public boolean limit_exceeded()
47 | {
48 | long curr_time = (new java.util.Date()).getTime();
49 | return (curr_time - this.time_stamp > this.time_limit);
50 | }
51 |
52 | /**
53 | * Multiplies this TimeLimit by p_factor.
54 | */
55 | public void muultiply(double p_factor)
56 | {
57 | if (p_factor <= 0)
58 | {
59 | return;
60 | }
61 | double new_limit = (p_factor * this.time_limit);
62 | new_limit = Math.min(new_limit, Integer.MAX_VALUE);
63 | this.time_limit = (int) new_limit;
64 | }
65 |
66 | private final long time_stamp;
67 | private int time_limit;
68 | }
69 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/autoroute/ExpansionRoom.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * ExpansionRoom.java
20 | *
21 | * Created on 15. April 2006, 10:12
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.autoroute;
26 |
27 | import java.util.List;
28 |
29 | import eu.mihosoft.freerouting.geometry.planar.TileShape;
30 |
31 | /**
32 | *
33 | * @author Alfons Wirtz
34 | */
35 | public interface ExpansionRoom
36 | {
37 | /**
38 | * Adds p_door to the list of doors of this room.
39 | */
40 | void add_door(ExpansionDoor p_door);
41 |
42 | /**
43 | * Returns the list of doors of this room to neighbour expansion rooms
44 | */
45 | List get_doors();
46 |
47 | /**
48 | * Removes all doors from this room.
49 | */
50 | void clear_doors();
51 |
52 | /**
53 | * Clears the autorouting info of all doors for routing the next connection.
54 | */
55 | void reset_doors();
56 |
57 | /**
58 | * Checks, if this room has already a door to p_other
59 | */
60 | boolean door_exists(ExpansionRoom p_other);
61 |
62 | /**
63 | * Removes p_door from this room.
64 | * Returns false, if p_room did not contain p_door.
65 | */
66 | boolean remove_door (ExpandableObject p_door);
67 |
68 | /**
69 | * Gets the shape of this room.
70 | */
71 | TileShape get_shape();
72 |
73 | /**
74 | * Returns the layer of this expansion room.
75 | */
76 | int get_layer();
77 | }
78 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/RouteMenuState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * RouteMenuState.java
20 | *
21 | * Created on 29. November 2003, 07:50
22 | */
23 |
24 | package eu.mihosoft.freerouting.interactive;
25 |
26 | import eu.mihosoft.freerouting.geometry.planar.FloatPoint;
27 |
28 | /**
29 | * Class implementing the different functionality in the route menu,
30 | * especially the different behaviour of the mouse button 1.
31 | *
32 | * @author Alfons Wirtz
33 | */
34 | public class RouteMenuState extends MenuState
35 | {
36 | /** Returns a new instance of RouteMenuState */
37 | public static RouteMenuState get_instance(BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
38 | {
39 | RouteMenuState new_state = new RouteMenuState(p_board_handling, p_activityReplayFile);
40 | return new_state;
41 | }
42 |
43 | /** Creates a new instance of RouteMenuState */
44 | private RouteMenuState(BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
45 | {
46 | super(p_board_handling, p_activityReplayFile);
47 | }
48 |
49 | public InteractiveState left_button_clicked(FloatPoint p_location)
50 | {
51 | return RouteState.get_instance(p_location, this, hdlg, activityReplayFile);
52 | }
53 |
54 | public void display_default_message()
55 | {
56 | hdlg.screen_messages.set_status_message(" in route menu");
57 | }
58 |
59 | public String get_help_id()
60 | {
61 | return "MenuState_RouteMenuState";
62 | }
63 |
64 | }
65 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/gui/WindowRouteParameter_de.properties:
--------------------------------------------------------------------------------
1 | # German version of language dependent text of the class WindowRouteParameter
2 | title = Route-Einstellungen
3 | snap_angle = Winkel-Einschr\u00E4nkung:
4 | snap_angle_tooltip = Winkeleinschr\u00E4nkung f\u00FCr Bahnen
5 | 90_degree = 90 Grad
6 | 45_degree = 45 Grad
7 | none = keine
8 | route_mode = Route-Modus:
9 | dynamic = dynamisch
10 | stitching = stitching
11 | rule_selection = Regel-Auswahl:
12 | automatic = automatisch
13 | manual = manuell
14 | push&shove_enabled = schieben erlaubt
15 | push&shove_enabled_tooltip = erm\u00F6glicht das Wegschieben von Hindernissen
16 | drag_components_enabled = Bauteil-ziehen erlaubt
17 | drag_components_enabled_tooltip = erm\u00F6glicht das Wegziehen von Bauteilen mit gedr\u00FCckter linker Maustaste
18 | via_snap_to_smd_center = Vias schnappen zum SMD-Zentrum
19 | via_snap_to_smd_center_tooltip = wenn gesetzt schnappen Vias, die SMD-Pins ber\u00FChren, zum Pin-Zentrum
20 | hilight_routing_obstacle = Route-Hindernis highlighten
21 | hilight_routing_obstacle_tooltip = markiert das aktuelle Route-Hindernis im dynamischen Route-Modus
22 | ignore_conduction_areas = Leitungsfl\u00E4chen ignorieren
23 | ignore_conduction_areas_tooltip = wenn gesetzt werden Leitungsfl\u00E4chen nicht als Route-Hindernis angesehen
24 | automatic_neckdown = automatisches Neckdown
25 | automatic_neckdown_tooltip = wenn gesetzt wird bei Pins, die schmaler als die aktuelle Bahnbreite sind, die aktuelle Bahnbreite automatisch reduziert
26 | restrict_pin_exit_directions = Exit-Richtungen bei Pins einschr\u00E4nken
27 | restrict_pin_exit_directions_tooltip = wenn gesetzt werden die Exit-Richtungen von Bahnen bei rechteckigen Pins auf die Schmalseiten begrenzt
28 | pin_pad_to_turn_gap = Pad-Abbiege-Abstand:
29 | pin_pad_to_turn_gap_tooltip = definiert die Mindestl\u00E4nge der Exit-Beschr\u00E4nkungen f\u00FCr Bahnen bei rechteckigen Pins
30 | pull_tight_region = Glattzieh-Bereich:
31 | pull_tight_region_tooltip = Textfeld oder Regler k\u00F6nnen zum \u00C4ndern der Glattzieh-Region um den Cursor verwendet werden
32 | detail_parameter = Detail-Parameter
33 | change_snap_angle_45 = Winkelfreie Bahnen im 45-Grad-Modus noch nicht vollst\u00E4ndig unterst\u00FCtzt. Winkel-Einschr\u00E4nkung trotzdem \u00E4ndern?
34 | change_snap_angle_90 = Nur achsenparallele Bahnen im 90-Grad-Modus bisher vollst\u00E4ndig unterst\u00FCtzt. Winkel-Einschr\u00E4nkung trotzdem \u00E4ndern?
35 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/ShapeBoundingDirections.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | */
19 |
20 | package eu.mihosoft.freerouting.geometry.planar;
21 |
22 | /**
23 | *
24 | * Describing the functionality for the fixed directions of a RegularTileShape.
25 | *
26 | * @author Alfons Wirtz
27 | */
28 |
29 | public interface ShapeBoundingDirections
30 | {
31 | /**
32 | * Retuns the count of the fixed directions.
33 | */
34 | int count();
35 |
36 | /**
37 | * Calculates for an abitrary ConvexShape a surrounding RegularTileShape
38 | * with this fixed directions.
39 | * Is used in the implementation of the seach trees.
40 | */
41 | RegularTileShape bounds(ConvexShape p_shape);
42 |
43 | /**
44 | * Auxiliary function to implement the same function with parameter
45 | * type ConvexShape.
46 | */
47 | RegularTileShape bounds(IntBox p_box);
48 | /**
49 | * Auxiliary function to implement the same function with parameter
50 | * type ConvexShape.
51 | */
52 | RegularTileShape bounds(IntOctagon p_oct);
53 | /**
54 | * Auxiliary function to implement the same function with parameter
55 | * type ConvexShape.
56 | */
57 | RegularTileShape bounds(Simplex p_simplex);
58 | /**
59 | * Auxiliary function to implement the same function with parameter
60 | * type ConvexShape.
61 | */
62 | RegularTileShape bounds(Circle p_circle);
63 | /**
64 | * Auxiliary function to implement the same function with parameter
65 | * type ConvexShape.
66 | */
67 | RegularTileShape bounds(PolygonShape p_polygon);
68 | }
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/OrthogonalBoundingDirections.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | */
19 |
20 | package eu.mihosoft.freerouting.geometry.planar;
21 |
22 | /**
23 | *
24 | * Implements the abstract class ShapeDirections as
25 | * the 4 orthogonal directions.
26 | * The class is a singleton with the only instanciation INSTANCE.
27 | *
28 |
29 | * @author Alfons Wirtz
30 | */
31 | public class OrthogonalBoundingDirections implements ShapeBoundingDirections
32 | {
33 | /**
34 | * the one and only instantiation
35 | */
36 | public static final OrthogonalBoundingDirections
37 | INSTANCE = new OrthogonalBoundingDirections();
38 |
39 | public int count()
40 | {
41 | return 4;
42 | }
43 |
44 | public RegularTileShape bounds (ConvexShape p_shape)
45 | {
46 | return p_shape.bounding_shape(this);
47 | }
48 |
49 | public RegularTileShape bounds (IntBox p_box)
50 | {
51 | return p_box;
52 | }
53 |
54 | public RegularTileShape bounds (IntOctagon p_oct)
55 | {
56 | return p_oct.bounding_box();
57 | }
58 |
59 | public RegularTileShape bounds (Simplex p_simplex)
60 | {
61 | return p_simplex.bounding_box();
62 | }
63 |
64 | public RegularTileShape bounds (Circle p_circle)
65 | {
66 | return p_circle.bounding_box();
67 | }
68 |
69 | public RegularTileShape bounds (PolygonShape p_polygon)
70 | {
71 | return p_polygon.bounding_box();
72 | }
73 |
74 | /**
75 | * prevent instantiation
76 | */
77 | private OrthogonalBoundingDirections()
78 | {
79 | }
80 | }
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/Ellipse.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * Ellipse.java
20 | *
21 | * Created on 27. Mai 2005, 07:17
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.geometry.planar;
26 |
27 | /**
28 | * Describes functionality of an elllipse in the plane.
29 | * Does not implement the ConvexShape interface, because coordinates are float.
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public class Ellipse implements java.io.Serializable
34 | {
35 |
36 | /** Creates a new instance of Ellipse */
37 | public Ellipse(FloatPoint p_center, double p_rotation, double p_radius_1, double p_radius_2)
38 | {
39 | this.center = p_center;
40 | double curr_rotation;
41 | if (p_radius_1 >= p_radius_2)
42 | {
43 | this.bigger_radius = p_radius_1;
44 | this.smaller_radius = p_radius_2;
45 | curr_rotation = p_rotation;
46 | }
47 | else
48 | {
49 | this.bigger_radius = p_radius_2;
50 | this.smaller_radius = p_radius_1;
51 | curr_rotation = p_rotation + 0.5 * Math.PI;
52 | }
53 | while (curr_rotation >= Math.PI)
54 | {
55 | curr_rotation -= Math.PI;
56 | }
57 | while (curr_rotation < 0)
58 | {
59 | curr_rotation += Math.PI;
60 | }
61 | this.rotation = curr_rotation;
62 | }
63 |
64 | public final FloatPoint center;
65 |
66 | /** Rotation of the ellipse in radian normed to 0 {@literal <}= rotation {@literal <} pi */
67 | public final double rotation;
68 | public final double bigger_radius;
69 | public final double smaller_radius;
70 | }
71 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/FortyfiveDegreeBoundingDirections.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | */
19 |
20 | package eu.mihosoft.freerouting.geometry.planar;
21 |
22 | /**
23 | *
24 | * Implements the abstract class ShapeBoundingDirections as
25 | * the 8 directions, which are multiples of 45 degree.
26 | * The class is a singleton with the only instanciation INSTANCE.
27 | *
28 | * @author Alfons Wirtz
29 | */
30 | public class FortyfiveDegreeBoundingDirections implements ShapeBoundingDirections
31 | {
32 | /**
33 | * the one and only instantiation
34 | */
35 | public static final FortyfiveDegreeBoundingDirections
36 | INSTANCE = new FortyfiveDegreeBoundingDirections();
37 |
38 | public int count()
39 | {
40 | return 8;
41 | }
42 |
43 | public RegularTileShape bounds (ConvexShape p_shape)
44 | {
45 | return p_shape.bounding_shape(this);
46 | }
47 |
48 | public RegularTileShape bounds (IntBox p_box)
49 | {
50 | return p_box.to_IntOctagon();
51 | }
52 |
53 | public RegularTileShape bounds (IntOctagon p_oct)
54 | {
55 | return p_oct;
56 | }
57 |
58 | public RegularTileShape bounds (Simplex p_simplex)
59 | {
60 | return p_simplex.bounding_octagon();
61 | }
62 |
63 | public RegularTileShape bounds (Circle p_circle)
64 | {
65 | return p_circle.bounding_octagon();
66 | }
67 |
68 | public RegularTileShape bounds (PolygonShape p_polygon)
69 | {
70 | return p_polygon.bounding_octagon();
71 | }
72 |
73 | /**
74 | * prevent instantiation
75 | */
76 | private FortyfiveDegreeBoundingDirections()
77 | {
78 | }
79 | }
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/board/BoardObserverAdaptor.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * BoardObserverAdaptor.java
20 | *
21 | * Created on 20. September 2007, 07:44
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.board;
26 |
27 | /**
28 | * Empty adaptor implementing the BoardObservers interface.
29 | *
30 | * @author Alfons Wirtz
31 | */
32 | public class BoardObserverAdaptor implements BoardObservers
33 | {
34 | /**
35 | * Tell the observers the deletion p_object.
36 | */
37 | public void notify_deleted(Item p_item)
38 | {
39 |
40 | }
41 |
42 | /**
43 | * Notify the observers, that they can syncronize the changes on p_object.
44 | */
45 | public void notify_changed(Item p_item)
46 | {
47 |
48 | }
49 |
50 | /**
51 | * Enable the observers to syncronize the new created item.
52 | */
53 | public void notify_new(Item p_item)
54 | {
55 |
56 | }
57 |
58 | /**
59 | * Enable the observers to syncronize the moved component.
60 | */
61 | public void notify_moved(Component p_component)
62 | {
63 |
64 | }
65 |
66 | /**
67 | * activate the observers
68 | */
69 | public void activate()
70 | {
71 | active = true;
72 | }
73 |
74 | /**
75 | * Deactivate the observers.
76 | **/
77 | public void deactivate()
78 | {
79 | active = false;
80 | }
81 |
82 | /**
83 | * Returns, if the observer is activated.
84 | */
85 | public boolean is_active()
86 | {
87 | return active;
88 | }
89 |
90 | private boolean active = false;
91 |
92 | }
93 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/boardgraphics/Drawable.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | */
19 |
20 | package eu.mihosoft.freerouting.boardgraphics;
21 |
22 | import java.awt.Color;
23 | import java.awt.Graphics;
24 |
25 | /**
26 | * items to be drawn by the functions in GraphicsContext
27 | * must implement this interface
28 | *
29 | * @author Alfons Wirtz
30 | */
31 |
32 | public interface Drawable
33 | {
34 | /**
35 | * Draws this item to the device provided in p_graphics_context.
36 | * p_color_arr is an array of dimenssion layer_count.
37 | * p_intensity is a number between between 0 and 1.
38 | */
39 | void draw(Graphics p_g, GraphicsContext p_graphics_context, Color[] p_color_arr, double p_intensity);
40 |
41 | /**
42 | * Draws this item to the device provided in p_graphics_context.
43 | * It is drawn on each layer with the same color p_color.
44 | * p_intensity is a number between 0 and 1.
45 | */
46 | void draw(Graphics p_g, GraphicsContext p_graphics_context, Color p_color, double p_intensity);
47 |
48 | /**
49 | * Returns the priority for drawing an item.
50 | * Items with higher priority are drawn later than items with lower priority.
51 | */
52 | int get_draw_priority();
53 |
54 | /**
55 | * Gets the drawing intensity in the alpha blending for this item.
56 | */
57 | double get_draw_intensity(GraphicsContext p_graphics_context);
58 |
59 | /**
60 | * gets the draw colors for this object from p_graphics_context
61 | */
62 | Color[] get_draw_colors(GraphicsContext p_graphics_context);
63 |
64 | int MIN_DRAW_PRIORITY = 1;
65 | int MIDDLE_DRAW_PRIORITY = 3;
66 | int MAX_DRAW_PRIORITY = 3;
67 | }
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/WindowNetSampleDesigns.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * WindowNeetSampleDesigns.java
20 | *
21 | * Created on 14. November 2006, 10:13
22 | *
23 | */
24 | package eu.mihosoft.freerouting.gui;
25 |
26 | /**
27 | *
28 | * Window with a list for selecting sample board designs in the net.
29 | *
30 | * @author Alfons Wirtz
31 | */
32 | public class WindowNetSampleDesigns extends WindowNetSamples
33 | {
34 |
35 | /** Creates a new instance of WindowNetSampleDesigns */
36 | public WindowNetSampleDesigns(java.util.Locale p_locale)
37 | {
38 | super(p_locale, "sample_designs", "open_sample_design", 11);
39 | }
40 |
41 | protected void fill_list()
42 | {
43 | this.add("hexapod_empty.dsn");
44 | this.add("hexapod_autorouted.dsn");
45 | this.add("sharc_handrouted.dsn");
46 | this.add("at14_empty.dsn");
47 | this.add("at14_autorouted.dsn");
48 | this.add("sharp_empty.dsn");
49 | this.add("sharp_autorouted.dsn");
50 | this.add("bigdesign_unrouted.dsn");
51 | this.add("int_empty.dsn");
52 | this.add("int_autorouted.dsn");
53 | this.add("single_layer_empty.dsn");
54 | this.add("single_layer_handrouted.dsn");
55 | }
56 |
57 | protected void button_pushed()
58 | {
59 | int index = list.getSelectedIndex();
60 | if (index < 0 || index >= list_model.getSize())
61 | {
62 | return;
63 | }
64 | String design_name = list_model.elementAt(index).design_name;
65 | String[] name_parts = design_name.split("\\.");
66 | String archive_name = name_parts[0];
67 | open_design(archive_name, design_name, this.locale);
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/BoardMenuOther.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * BoardMenuOther.java
20 | *
21 | * Created on 19. Oktober 2005, 08:34
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.gui;
26 |
27 | /**
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class BoardMenuOther extends javax.swing.JMenu
32 | {
33 | /** Returns a new other menu for the board frame. */
34 | public static BoardMenuOther get_instance(BoardFrame p_board_frame)
35 | {
36 | final BoardMenuOther other_menu = new BoardMenuOther(p_board_frame);
37 |
38 | other_menu.setText(other_menu.resources.getString("other"));
39 |
40 |
41 | javax.swing.JMenuItem snapshots = new javax.swing.JMenuItem();
42 | snapshots.setText(other_menu.resources.getString("snapshots"));
43 | snapshots.setToolTipText(other_menu.resources.getString("snapshots_tooltip"));
44 | snapshots.addActionListener(new java.awt.event.ActionListener()
45 | {
46 | public void actionPerformed(java.awt.event.ActionEvent evt)
47 | {
48 | other_menu.board_frame.snapshot_window.setVisible(true);
49 | }
50 | });
51 |
52 | other_menu.add(snapshots);
53 |
54 | return other_menu;
55 | }
56 |
57 | /** Creates a new instance of BoardMenuOther */
58 | private BoardMenuOther(BoardFrame p_board_frame)
59 | {
60 | board_frame = p_board_frame;
61 | resources = java.util.ResourceBundle.getBundle("eu.mihosoft.freerouting.gui.BoardMenuOther", p_board_frame.get_locale());
62 | }
63 |
64 | private final BoardFrame board_frame;
65 | private final java.util.ResourceBundle resources;
66 |
67 | }
68 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/FortyfiveDegreeDirection.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * FortyfiveDegreeDirections.java
20 | *
21 | * Created on 11. Dezember 2005, 07:18
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.geometry.planar;
26 | @SuppressWarnings("all") // Eclipse regards get_direction() as unused
27 |
28 | /**
29 | * Enum for the eight 45-degree direction starting from right in counterclocksense to down45.
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public enum FortyfiveDegreeDirection
34 | {
35 | RIGHT
36 | {
37 | public IntDirection get_direction()
38 | {
39 | return Direction.RIGHT;
40 | }
41 | },
42 | RIGHT45
43 | {
44 | public IntDirection get_direction()
45 | {
46 | return Direction.RIGHT45;
47 | }
48 | },
49 | UP
50 | {
51 | public IntDirection get_direction()
52 | {
53 | return Direction.UP;
54 | }
55 | },
56 | UP45
57 | {
58 | public IntDirection get_direction()
59 | {
60 | return Direction.UP45;
61 | }
62 | },
63 | LEFT
64 | {
65 | public IntDirection get_direction()
66 | {
67 | return Direction.LEFT;
68 | }
69 | },
70 | LEFT45
71 | {
72 | public IntDirection get_direction()
73 | {
74 | return Direction.LEFT45;
75 | }
76 | },
77 | DOWN
78 | {
79 | public IntDirection get_direction()
80 | {
81 | return Direction.DOWN;
82 | }
83 | },
84 | DOWN45
85 | {
86 | public IntDirection get_direction()
87 | {
88 | return Direction.DOWN45;
89 | }
90 | }
91 | }
92 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/gui/PopupMenuInsertCancel.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * CompleteCancelPopupMenu.java
20 | *
21 | * Created on 17. Februar 2005, 08:05
22 | */
23 |
24 | package eu.mihosoft.freerouting.gui;
25 |
26 | /**
27 | * Popup menu containing the 2 items complete and cancel.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | class PopupMenuInsertCancel extends javax.swing.JPopupMenu
32 | {
33 |
34 | /** Creates a new instance of CompleteCancelPopupMenu */
35 | PopupMenuInsertCancel(BoardFrame p_board_frame)
36 | {
37 | this.board_panel = p_board_frame.board_panel;
38 | java.util.ResourceBundle resources =
39 | java.util.ResourceBundle.getBundle("eu.mihosoft.freerouting.gui.Default", p_board_frame.get_locale());
40 | javax.swing.JMenuItem insert_item = new javax.swing.JMenuItem();
41 | insert_item.setText(resources.getString("insert"));
42 | insert_item.addActionListener(new java.awt.event.ActionListener()
43 | {
44 | public void actionPerformed(java.awt.event.ActionEvent evt)
45 | {
46 | board_panel.board_handling.return_from_state();
47 | }
48 | });
49 |
50 | this.add(insert_item);
51 |
52 | javax.swing.JMenuItem cancel_item = new javax.swing.JMenuItem();
53 | cancel_item.setText(resources.getString("cancel"));
54 | cancel_item.addActionListener(new java.awt.event.ActionListener()
55 | {
56 | public void actionPerformed(java.awt.event.ActionEvent evt)
57 | {
58 | board_panel.board_handling.cancel_state();
59 | }
60 | });
61 |
62 | this.add(cancel_item);
63 | }
64 |
65 | private final BoardPanel board_panel;
66 | }
67 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/designforms/specctra/WriteScopeParameter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * WriteScopeParameter.java
20 | *
21 | * Created on 21. Juni 2004, 08:37
22 | */
23 |
24 | package eu.mihosoft.freerouting.designforms.specctra;
25 |
26 | import eu.mihosoft.freerouting.board.BasicBoard;
27 | import eu.mihosoft.freerouting.datastructures.IndentFileWriter;
28 | import eu.mihosoft.freerouting.datastructures.IdentifierType;
29 |
30 | /**
31 | * Default parameter type used while writing a Specctra dsn-file.
32 | *
33 | * @author Alfons Wirtz
34 | */
35 | public class WriteScopeParameter
36 | {
37 |
38 | /**
39 | * Creates a new instance of WriteScopeParameter.
40 | * If p_compat_mode is true, only standard speecctra dsb scopes are written, so that any
41 | * host system with an specctra interface can read them.
42 | */
43 | WriteScopeParameter(BasicBoard p_board, eu.mihosoft.freerouting.interactive.AutorouteSettings p_autoroute_settings,
44 | IndentFileWriter p_file, String p_string_quote, CoordinateTransform p_coordinate_transform,
45 | boolean p_compat_mode)
46 | {
47 | board = p_board;
48 | autoroute_settings = p_autoroute_settings;
49 | file = p_file;
50 | coordinate_transform = p_coordinate_transform;
51 | compat_mode = p_compat_mode;
52 | String[] reserved_chars = {"(", ")", " ", ";", "-", "_"};
53 | identifier_type = new IdentifierType(reserved_chars, p_string_quote);
54 | }
55 |
56 | final BasicBoard board;
57 | final eu.mihosoft.freerouting.interactive.AutorouteSettings autoroute_settings;
58 | final IndentFileWriter file;
59 | final CoordinateTransform coordinate_transform;
60 | final boolean compat_mode;
61 | final IdentifierType identifier_type;
62 | }
63 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/SelectMenuState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * SelectMenuState.java
20 | *
21 | * Created on 28. November 2003, 10:13
22 | */
23 |
24 | package eu.mihosoft.freerouting.interactive;
25 |
26 | import eu.mihosoft.freerouting.geometry.planar.FloatPoint;
27 |
28 | /**
29 | * Class implementing the different functionality in the select menu,
30 | * especially the different behaviour of the mouse button 1.
31 | *
32 | * @author Alfons Wirtz
33 | */
34 | public class SelectMenuState extends MenuState
35 | {
36 | /** Returns a new instance of SelectMenuState */
37 | public static SelectMenuState get_instance(BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
38 | {
39 | SelectMenuState new_state = new SelectMenuState(p_board_handling, p_activityReplayFile);
40 | return new_state;
41 | }
42 |
43 | /** Creates a new instance of SelectMenuState */
44 | private SelectMenuState(BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
45 | {
46 | super(p_board_handling, p_activityReplayFile);
47 | }
48 |
49 | public InteractiveState left_button_clicked(FloatPoint p_location)
50 | {
51 | InteractiveState result = select_items(p_location);
52 | return result;
53 | }
54 |
55 | public InteractiveState mouse_dragged(FloatPoint p_point)
56 | {
57 | return SelectItemsInRegionState.get_instance(hdlg.get_current_mouse_position(), this, hdlg, activityReplayFile);
58 | }
59 |
60 | public void display_default_message()
61 | {
62 | hdlg.screen_messages.set_status_message(resources.getString("in_select_menu"));
63 | }
64 |
65 | public String get_help_id()
66 | {
67 | return "MenuState_SelectMenuState";
68 | }
69 | }
70 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowClearanceMatrix.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Clearance-Matrix
9 |
10 |
11 |
12 |
The Clearance Matrix
13 |
In the window with the Clearance Matrix you can define the spacing rules between the object types. This is done via clearance classes. An Item clearance class is described by the definition of a minimal spacing to items of all existing clearance classes. These values can be looked up and changed in the Clearance Matrix
14 |
Predefined are the clearance classes null and default. Items of the clearance class null have a minimal spacing of 0 to all other items. This value cannot be changed in the Clearance Matrix.
15 |
In the Specctra-DSN-Format there exist only the hard coded clearance classes pin, smd, via, wire, area and testpoint. When reading the DSN-file at the program start the clearance classes of the host system will be taken over. The class wire will be renamed to default. The rest of the hard coded clearance classes will only be generated, if values for these classes are found in the DSN-file.
16 |
To add a new clearance class
17 | Press the button Add Class and enter the name of the new class into the dialog field, which is popping up. The Clearance Matrix will be extended by a row and a column with the values for the new class. Change the predefined values in the new row according to your needs.
18 |
To remove redundant clearance classes
By pushing the Trim Button you can remove classes as redundant, whose entries in the Clearance Matrix are exact equal to the entries of an other class. All items belonging to the deleted clearance class will then be assigned to this other clearance class.
Layer dependent clearance classes
19 | In the layer field on top of the window you see the layers, for which the entries in the Clearance Matrix are valid. When all is selected in the combo box, the matrix entries are valid on all layers. If in this case layer dependent clearance values are defined for a special field, the value -1 is displayed, because it is not possible to output a value, which is valid on all layers. Analog if inner is selected in the combo box. You can view or edit a layer dependent clearance value after selecting the name of the layer of your choice in the layer combo box.
20 |
21 |
22 |
23 |
--------------------------------------------------------------------------------
/src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowDisplay.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | Display-Einstellungen
9 |
10 |
11 |
12 |
Display Settings
13 | Describes the windows with the display parameters
14 |
15 |
16 |
Object Visibility
17 |
With the sliders in this window you can adjust the intensity for displaying the single object types. If you push the slider for an object type is to the right, objects of this type will get displayed with full intensity, if you push it to the left, objects of this type will become invisible.
18 |
Layer Visibility
19 |
20 |
With the sliders in this window you can adjust the intensity for displaying objects on each layer individually. If you push a slider to the left, all objects on the corresponding layer will get invisible.
21 |
22 |
Colors
23 |
24 |
Here you can define the colors for displaying objects on the board by clicking the corresponding color field with the left button. For the object types in the upper table you can choose the color for each layer individually.
25 |
26 |
Miscellaneous
27 |
28 |
crosshair cursor
29 |
30 |
Here you can change from the standard small crosshair cursor to a big 45-degree crosshair cursor. Using the big crosshair cursor may slow down the display performance a lot. Shortcut is the comma-key.
31 |
32 |
board rotation
33 |
34 |
To turn the board by multiples of 90 degree.
35 |
36 |
board mirroring
37 |
38 |
For horizontal or vertical mirroring of the board.
39 |
40 |
automatic layer dimming
41 |
42 |
With this slider you can increase the intensity of the items on the current layer. If you push the slider to the left, the automatic layer dimming will get switched off, if you push it to the right, all layers beside the current layer will become invisible.
43 |
44 |
45 |
46 |
47 |
48 |
49 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/ArrayStack.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * ArrayStack.java
20 | *
21 | * Created on 11. March 2006, 06:52
22 | *
23 | */
24 |
25 | package eu.mihosoft.freerouting.datastructures;
26 |
27 | /** Implementation of a stack as an array */
28 | @SuppressWarnings("unchecked")
29 | public class ArrayStack
30 | {
31 |
32 | /**
33 | * Creates a new instance of ArrayStack with an initial maximal capacity for p_max_stack_depth elements.
34 | */
35 | public ArrayStack(int p_max_stack_depth)
36 | {
37 | node_arr = (p_element_type [] ) new Object [p_max_stack_depth];
38 | }
39 |
40 | /**
41 | * Sets the stack to empty.
42 | */
43 | public void reset()
44 | {
45 | level = -1;
46 | }
47 |
48 | /**
49 | * Pushed p_element onto the stack.
50 | */
51 | public void push(p_element_type p_element)
52 | {
53 |
54 | ++level;
55 |
56 | if (level >= node_arr.length)
57 | {
58 | reallocate();
59 | }
60 |
61 | node_arr[level] = p_element;
62 | }
63 |
64 | /**
65 | * Pops the next element from the top of the stack.
66 | * Returns null, if the stack is exhausted.
67 | */
68 | public p_element_type pop()
69 | {
70 | if (level < 0)
71 | {
72 | return null;
73 | }
74 | p_element_type result = node_arr[level];
75 | --level;
76 | return result;
77 | }
78 |
79 | private void reallocate()
80 | {
81 | p_element_type [] new_arr = (p_element_type [] ) new Object[4 * this.node_arr.length];
82 | System.arraycopy(node_arr, 0, new_arr, 0, node_arr.length);
83 | this.node_arr = new_arr;
84 | }
85 |
86 | private int level = -1;
87 |
88 | private p_element_type[] node_arr ;
89 | }
90 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/interactive/SelectRegionState.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * SelectRegionState.java
20 | *
21 | * Created on 9. November 2003, 11:34
22 | */
23 |
24 | package eu.mihosoft.freerouting.interactive;
25 |
26 | import eu.mihosoft.freerouting.geometry.planar.FloatPoint;
27 |
28 | /**
29 | * Common base class for interactive selection of a rectangle.
30 | *
31 | * @author Alfons Wirtz
32 | */
33 | public class SelectRegionState extends InteractiveState
34 | {
35 |
36 | /** Creates a new instance of SelectRegionState */
37 | protected SelectRegionState(InteractiveState p_parent_state, BoardHandling p_board_handling, ActivityReplayFile p_activityReplayFile)
38 | {
39 | super(p_parent_state, p_board_handling, p_activityReplayFile);
40 | }
41 |
42 | public InteractiveState button_released()
43 | {
44 | hdlg.screen_messages.set_status_message("");
45 | return complete();
46 | }
47 |
48 | public InteractiveState mouse_dragged(FloatPoint p_point)
49 | {
50 | if (corner1 == null)
51 | {
52 | corner1 = p_point;
53 | if (activityReplayFile != null)
54 | {
55 | activityReplayFile.add_corner(corner1);
56 | }
57 | }
58 | hdlg.repaint();
59 | return this;
60 | }
61 |
62 | public void draw(java.awt.Graphics p_graphics)
63 | {
64 | this.return_state.draw(p_graphics);
65 | FloatPoint current_mouse_position = hdlg.get_current_mouse_position();
66 | if (corner1 == null || current_mouse_position == null)
67 | {
68 | return;
69 | }
70 | corner2 = current_mouse_position;
71 | hdlg.graphics_context.draw_rectangle(corner1, corner2, 1, java.awt.Color.white, p_graphics, 1) ;
72 | }
73 |
74 | protected FloatPoint corner1 = null;
75 | protected FloatPoint corner2 = null;
76 | }
77 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/datastructures/FileFilter.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | *
19 | * FileFilter.java
20 | *
21 | * Created on 31. Mai 2004, 09:23
22 | */
23 |
24 | package eu.mihosoft.freerouting.datastructures;
25 |
26 | /**
27 | * Used in the file chooser to filter all files which do not have an extension from the input array.
28 | *
29 | * @author Alfons Wirtz
30 | */
31 | public class FileFilter extends javax.swing.filechooser.FileFilter
32 | {
33 |
34 | /** Creates a new FileFilter for the input extension*/
35 | public FileFilter(String [] p_extensions)
36 | {
37 | extensions = p_extensions;
38 | }
39 | public String getDescription()
40 | {
41 | String message = "files with the extensions";
42 | for (int i = 0; i < extensions.length; ++i)
43 | {
44 | message += " ." + extensions[i];
45 | if (i == extensions.length -2)
46 | {
47 | message += " or ";
48 | }
49 | else if (i < extensions.length -2)
50 | {
51 | message += ", ";
52 | }
53 | }
54 | return message;
55 | }
56 |
57 | public boolean accept(java.io.File p_file)
58 | {
59 | if (p_file.isDirectory())
60 | {
61 | return true ;
62 | }
63 | String file_name = p_file.getName();
64 | String[] name_parts = file_name.split("\\.");
65 | if (name_parts.length < 2)
66 | {
67 | return false;
68 | }
69 | String found_extension = name_parts[name_parts.length - 1];
70 | for (int i = 0; i < extensions.length; ++i)
71 | {
72 | if (found_extension.compareToIgnoreCase(extensions[i]) == 0)
73 | {
74 | return true;
75 | }
76 | }
77 | return false;
78 | }
79 |
80 | private final String [] extensions;
81 | }
82 |
83 |
--------------------------------------------------------------------------------
/src/main/java/eu/mihosoft/freerouting/geometry/planar/Side.java:
--------------------------------------------------------------------------------
1 | /*
2 | * Copyright (C) 2014 Alfons Wirtz
3 | * website www.freerouting.net
4 | *
5 | * Copyright (C) 2017 Michael Hoffer
6 | * Website www.freerouting.mihosoft.eu
7 | *
8 | * This program is free software: you can redistribute it and/or modify
9 | * it under the terms of the GNU General Public License as published by
10 | * the Free Software Foundation, either version 3 of the License, or
11 | * (at your option) any later version.
12 | *
13 | * This program is distributed in the hope that it will be useful,
14 | * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
16 | * GNU General Public License at
17 | * for more details.
18 | */
19 |
20 | package eu.mihosoft.freerouting.geometry.planar;
21 |
22 | /**
23 | *
24 | * Implementation of an enum class Side with the three values
25 | * ON_THE_LEFT, ON_THE_RIGHT, COLLINEAR.
26 | *
27 |
28 | * @author Alfons Wirtz
29 | */
30 |
31 | public class Side
32 | {
33 | public static final Side ON_THE_LEFT = new Side ("on_the_left");
34 | public static final Side ON_THE_RIGHT = new Side ("on_the_right");
35 | public static final Side COLLINEAR = new Side ("collinear");
36 |
37 | /**
38 | * returns the string of this instance
39 | */
40 | public String to_string ()
41 | {
42 | return name;
43 | }
44 |
45 | /**
46 | * returns the opposite side of this side
47 | */
48 | public final Side negate()
49 | {
50 | Side result;
51 | if (this == ON_THE_LEFT)
52 | {
53 | result = ON_THE_RIGHT;
54 | }
55 | else if (this == ON_THE_RIGHT)
56 | {
57 | result = ON_THE_LEFT;
58 | }
59 | else
60 | {
61 | result = this;
62 | }
63 | return result;
64 | }
65 |
66 | /**
67 | * returns ON_THE_LEFT, if p_value < 0,
68 | * ON_THE_RIGHT, if p_value > 0
69 | * and COLLINEAR, if p_value == 0
70 | */
71 | static Side of(double p_value)
72 | {
73 | Side result;
74 | if (p_value > 0)
75 | {
76 | result = Side.ON_THE_LEFT;
77 | }
78 | else if (p_value < 0)
79 | {
80 | result = Side.ON_THE_RIGHT;
81 | }
82 | else
83 | {
84 | result = Side.COLLINEAR;
85 | }
86 | return result;
87 | }
88 |
89 |
90 | private Side(String p_name)
91 | {
92 | name = p_name;
93 | }
94 |
95 | private final String name;
96 | }
--------------------------------------------------------------------------------