├── 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.

16 |

back

17 | 18 | 19 | -------------------------------------------------------------------------------- /src/main/resources/eu/mihosoft/freerouting/helpset/de/html_files/WindowMoveParameter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Plazierungs-Parameter 9 | 10 | 11 | 12 |

Platzierungs-Parameter

13 | Die Parameter in diesem Fenster werden beim Verschieben von Bauteilen ausgewertet. 14 |

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.

16 |

zurück

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.

19 |

back

20 | 21 | 22 | -------------------------------------------------------------------------------- /src/main/resources/eu/mihosoft/freerouting/helpset/en/html_files/WindowSelectParameter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Select-Einstellungen 9 | 10 | 11 | 12 |

Select Parameter

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 Button Detail-Einstellungen öffnet ein Fenster, in dem Sie die im Autoroute-Algorithmus verwendeten Kosten ändern können.

18 |

zurück

19 | 20 | 21 | -------------------------------------------------------------------------------- /src/main/java/eu/mihosoft/freerouting/interactive/LogfileDescription.flex: -------------------------------------------------------------------------------- 1 | package eu.mihosoft.freerouting.interactive; 2 | @SuppressWarnings("all") 3 | %% 4 | 5 | %class LogfileScanner 6 | %unicode 7 | %function next_token 8 | %type Object 9 | 10 | LineTerminator = \r|\n|\r\n 11 | InputCharacter = [^\r\n] 12 | WhiteSpace = {LineTerminator} | [ \t\f] 13 | 14 | 15 | /* comments */ 16 | Comment = {TraditionalComment} | {EndOfLineComment} 17 | 18 | TraditionalComment = "/*" [^*] ~"*/" | "/*" "*"+ "/" 19 | EndOfLineComment = "#" {InputCharacter}* {LineTerminator} 20 | 21 | Letter=[A-Za-z] 22 | Digit=[0-9] 23 | 24 | SpecChar = _|\.|\/|#|\$ 25 | 26 | DecIntegerLiteral = (-? (0 | [1-9][0-9]*)) 27 | 28 | DecFloatLiteral = ([+-]? [0-9]+ ("." [0-9]+)?) 29 | 30 | Identifier = ({Letter}|{SpecChar})({Letter}|{Digit}|{SpecChar})* 31 | 32 | %% 33 | 34 | { 35 | /* identifiers */ 36 | {Identifier} { return yytext(); } 37 | 38 | /* literals */ 39 | {DecIntegerLiteral} { return new Integer(yytext()); } 40 | {DecFloatLiteral} { return new Double(yytext()); } 41 | 42 | /* comments */ 43 | {Comment} { /* ignore */ } 44 | 45 | /* whitespace */ 46 | {WhiteSpace} { /* ignore */ } 47 | } 48 | 49 | 50 | /* error fallback */ 51 | .|\n { throw new Error("Illegal character <"+ 52 | yytext()+">"); } 53 | -------------------------------------------------------------------------------- /src/main/resources/eu/mihosoft/freerouting/helpset/de/html_files/WindowSelectParameter.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | Select-Einstellungen 9 | 10 | 11 | 12 |

Select-Einstellungen

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.

29 |
30 |

back

31 |
32 |

33 |
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.

31 |
32 |

zurück

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.

26 |
27 |

zurück

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.

27 |
28 |

back

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 | } --------------------------------------------------------------------------------