├── .gitignore
├── .idea
├── .name
├── ant.xml
├── artifacts
│ ├── PS4k_jar.xml
│ ├── images.xml
│ └── lib.xml
├── compiler.xml
├── copyright
│ └── profiles_settings.xml
├── encodings.xml
├── findbugs-idea.xml
├── libraries
│ ├── Maven__junit_junit_4_12.xml
│ ├── apachehttp.xml
│ ├── converter.xml
│ ├── jide.xml
│ ├── misc.xml
│ ├── render.xml
│ └── spring.xml
├── misc.xml
├── modules.xml
├── scopes
│ └── scope_settings.xml
├── uiDesigner.xml
└── vcs.xml
├── .travis.yml
├── LICENSE.txt
├── PS4k.iml
├── README.md
├── images
└── splash.png
├── lib
├── apachehttp
│ ├── commons-codec-1.6.jar
│ ├── httpclient-4.2.1.jar
│ ├── httpcore-4.2.1.jar
│ └── httpmime-4.2.1.jar
├── converter
│ ├── jai_codec.jar
│ ├── jai_core.jar
│ ├── jt-all-1.3.1.jar
│ ├── jts-1.8.jar
│ ├── poly2tri-ardor3d-0.1.1-SNAPSHOT.jar
│ ├── poly2tri-core-0.1.1-SNAPSHOT.jar
│ ├── slf4j-api-1.6.5.jar
│ └── slf4j-log4j12-1.6.5.jar
├── hamcrest-core-1.3.jar
├── jide
│ ├── jide-action.jar
│ ├── jide-common.jar
│ └── jide-dock.jar
├── junit-4.12.jar
├── misc
│ ├── algs4-package.jar
│ ├── pngtastic-0.4.0.jar
│ ├── stdlib-package.jar
│ └── trove-3.0.3.jar
├── render
│ └── jpct.jar
└── spring
│ ├── commons-logging-1.1.1.jar
│ ├── javax.annotation-api-1.3.2.jar
│ ├── log4j-1.2.17.jar
│ ├── org.springframework.asm-3.1.2.RELEASE.jar
│ ├── org.springframework.aspects-3.1.2.RELEASE.jar
│ ├── org.springframework.beans-3.1.2.RELEASE.jar
│ ├── org.springframework.context-3.1.2.RELEASE.jar
│ ├── org.springframework.core-3.1.2.RELEASE.jar
│ ├── org.springframework.expression-3.1.2.RELEASE.jar
│ └── org.springframework.orm-3.1.2.RELEASE.jar
├── pack.xml
├── pom.xml
├── resource
├── bundle
│ ├── LangBundle.properties
│ ├── LangBundle_de_DE.properties
│ └── LangBundle_zh_CN.properties
├── font
│ ├── arcade.ttf
│ └── font.ttf
├── img
│ ├── bars
│ │ ├── option_bar
│ │ │ ├── boundingBox.png
│ │ │ ├── grid.png
│ │ │ ├── light.png
│ │ │ ├── mirrorflag.png
│ │ │ ├── quality.png
│ │ │ └── settings.png
│ │ ├── select_bar
│ │ │ ├── as_new_layer.png
│ │ │ ├── copy.png
│ │ │ ├── cut.png
│ │ │ ├── delete_select.png
│ │ │ ├── deselect.png
│ │ │ ├── expand_selection.png
│ │ │ ├── finalize_move.png
│ │ │ ├── finalize_move_as_copy.png
│ │ │ ├── mirror
│ │ │ │ ├── mirrorx.png
│ │ │ │ ├── mirrory.png
│ │ │ │ └── mirrorz.png
│ │ │ ├── paste.png
│ │ │ ├── recolor.png
│ │ │ ├── retexture.png
│ │ │ ├── rotate
│ │ │ │ ├── rotatex.png
│ │ │ │ ├── rotatey.png
│ │ │ │ ├── rotatez.png
│ │ │ │ ├── x180.png
│ │ │ │ ├── x270.png
│ │ │ │ ├── x90.png
│ │ │ │ ├── y180.png
│ │ │ │ ├── y270.png
│ │ │ │ ├── y90.png
│ │ │ │ ├── z180.png
│ │ │ │ ├── z270.png
│ │ │ │ └── z90.png
│ │ │ ├── select_all.png
│ │ │ └── select_layer.png
│ │ └── tool_bar
│ │ │ ├── animate.png
│ │ │ ├── clear_history.png
│ │ │ ├── color_changer.png
│ │ │ ├── color_picker.png
│ │ │ ├── draw.png
│ │ │ ├── erase.png
│ │ │ ├── floodfill.png
│ │ │ ├── redo.png
│ │ │ ├── redo_disabled.png
│ │ │ ├── select_tool.png
│ │ │ ├── undo.png
│ │ │ ├── undo_disabled.png
│ │ │ └── view.png
│ ├── framebars
│ │ ├── coloradjuster
│ │ │ ├── apply.png
│ │ │ └── cancel.png
│ │ ├── colorpalette
│ │ │ ├── erase_colors.png
│ │ │ ├── export.png
│ │ │ ├── extract_colors.png
│ │ │ ├── import.png
│ │ │ ├── locked.png
│ │ │ ├── reorder_colors.png
│ │ │ └── unlocked.png
│ │ ├── console
│ │ │ ├── auto_scroll.png
│ │ │ ├── auto_show.png
│ │ │ └── clear.png
│ │ ├── layer
│ │ │ ├── add.png
│ │ │ ├── merge.png
│ │ │ ├── move_down.png
│ │ │ ├── move_up.png
│ │ │ └── remove.png
│ │ ├── mainview
│ │ │ ├── center_view.png
│ │ │ ├── color_bg.png
│ │ │ ├── color_plane.png
│ │ │ ├── fill.png
│ │ │ ├── hollow.png
│ │ │ ├── minus.png
│ │ │ ├── plus.png
│ │ │ ├── reset.png
│ │ │ ├── snap.png
│ │ │ └── wireframe.png
│ │ ├── sideview
│ │ │ ├── align.png
│ │ │ ├── make_zero.png
│ │ │ ├── minus.png
│ │ │ ├── move_in.png
│ │ │ ├── move_out.png
│ │ │ ├── plus.png
│ │ │ └── reset.png
│ │ ├── texturemg
│ │ │ ├── add.png
│ │ │ ├── clear.png
│ │ │ ├── export.png
│ │ │ ├── remove.png
│ │ │ └── replace.png
│ │ └── view
│ │ │ ├── xySwap.png
│ │ │ ├── xzSwap.png
│ │ │ └── yzSwap.png
│ └── icons
│ │ ├── application
│ │ ├── close.png
│ │ ├── disable_fullscreen.png
│ │ ├── enable_fullscreen.png
│ │ ├── icons
│ │ │ ├── icon-16x16.png
│ │ │ ├── icon-24x24.png
│ │ │ ├── icon-32x32.png
│ │ │ └── icon-48x48.png
│ │ ├── logo.png
│ │ └── minimize.png
│ │ ├── checkmark.png
│ │ ├── clear.png
│ │ ├── close.png
│ │ ├── frame_close_button_icon.png
│ │ ├── frame_help_button_icon.png
│ │ ├── frame_maximize_button_icon.png
│ │ ├── frames
│ │ ├── colorAdjuster.png
│ │ ├── colorpalette.png
│ │ ├── colorpicker.png
│ │ ├── colorslider.png
│ │ ├── console.png
│ │ ├── hexpicker.png
│ │ ├── layer.png
│ │ ├── mainview.png
│ │ ├── personal.png
│ │ ├── shortcutManager.png
│ │ ├── sideView.png
│ │ ├── snapshot.png
│ │ ├── swatchManager.png
│ │ └── textureManager.png
│ │ └── loading.gif
├── layout
│ └── TopLayout.ilayout
├── tex
│ └── bounding_box_512.png
└── xsd
│ └── collada_schema_1_4_1.xsd
├── src
├── main
│ └── java
│ │ ├── com
│ │ └── vitco
│ │ │ └── app
│ │ │ ├── App.java
│ │ │ ├── core
│ │ │ ├── CCamera.java
│ │ │ ├── CameraChangeListener.java
│ │ │ ├── EngineInteractionPrototype.java
│ │ │ ├── EngineViewPrototype.java
│ │ │ ├── container
│ │ │ │ ├── AbstractDrawContainer.java
│ │ │ │ ├── DrawContainer.java
│ │ │ │ ├── HackedFrameBuffer.java
│ │ │ │ └── HackedObjectInputStream.java
│ │ │ ├── data
│ │ │ │ ├── AnimationData.java
│ │ │ │ ├── AnimationDataInterface.java
│ │ │ │ ├── AnimationDataTest.java
│ │ │ │ ├── AnimationHighlight.java
│ │ │ │ ├── AnimationHighlightInterface.java
│ │ │ │ ├── Data.java
│ │ │ │ ├── DataInterface.java
│ │ │ │ ├── GeneralData.java
│ │ │ │ ├── GeneralDataInterface.java
│ │ │ │ ├── ListenerData.java
│ │ │ │ ├── ListenerDataInterface.java
│ │ │ │ ├── VoxelData.java
│ │ │ │ ├── VoxelDataInterface.java
│ │ │ │ ├── VoxelDataTest.java
│ │ │ │ ├── VoxelHighlighting.java
│ │ │ │ ├── VoxelHighlightingInterface.java
│ │ │ │ ├── container
│ │ │ │ │ ├── DataContainer.java
│ │ │ │ │ ├── ExtendedLine.java
│ │ │ │ │ ├── ExtendedVector.java
│ │ │ │ │ ├── Frame.java
│ │ │ │ │ ├── VOXELMODE.java
│ │ │ │ │ ├── Voxel.java
│ │ │ │ │ └── VoxelLayer.java
│ │ │ │ ├── history
│ │ │ │ │ ├── BasicActionIntent.java
│ │ │ │ │ ├── HistoryChangeListener.java
│ │ │ │ │ ├── HistoryManager.java
│ │ │ │ │ └── VoxelActionIntent.java
│ │ │ │ └── notification
│ │ │ │ │ ├── DataChangeAdapter.java
│ │ │ │ │ ├── DataChangeListener.java
│ │ │ │ │ ├── NotificationService.java
│ │ │ │ │ └── NotificationServiceInterface.java
│ │ │ ├── modes
│ │ │ │ ├── AbstractAdapter.java
│ │ │ │ ├── AnimationAdapter.java
│ │ │ │ ├── VoxelAdapter.java
│ │ │ │ └── tools
│ │ │ │ │ ├── AbstractAnimationTool.java
│ │ │ │ │ ├── AbstractBasicTool.java
│ │ │ │ │ ├── AbstractTool.java
│ │ │ │ │ ├── AbstractVoxelTool.java
│ │ │ │ │ ├── ColorChangerTool.java
│ │ │ │ │ ├── DrawTool.java
│ │ │ │ │ ├── EraseTool.java
│ │ │ │ │ ├── FloodFillTool.java
│ │ │ │ │ ├── PickerTool.java
│ │ │ │ │ ├── PointTool.java
│ │ │ │ │ ├── SelectTool.java
│ │ │ │ │ └── ViewTool.java
│ │ │ └── world
│ │ │ │ ├── AbstractCWorld.java
│ │ │ │ ├── CWorld.java
│ │ │ │ ├── WorldManager.java
│ │ │ │ └── container
│ │ │ │ ├── BorderObject3D.java
│ │ │ │ ├── TextureObject.java
│ │ │ │ └── VoxelManager.java
│ │ │ ├── export
│ │ │ ├── AbstractExporter.java
│ │ │ ├── Kv6Exporter.java
│ │ │ ├── MagicaVoxelExporter.java
│ │ │ ├── PnxExporter.java
│ │ │ ├── QbExporter.java
│ │ │ ├── SlicesExporter.java
│ │ │ ├── VoxVoxLapExporter.java
│ │ │ ├── collada
│ │ │ │ ├── ColladaExportWrapper.java
│ │ │ │ └── ColladaFileExporter.java
│ │ │ ├── dataStatic
│ │ │ │ └── Kv6Static.java
│ │ │ └── generic
│ │ │ │ ├── ExportDataManager.java
│ │ │ │ ├── ExportWorld.java
│ │ │ │ └── container
│ │ │ │ ├── PlaneMaterial.java
│ │ │ │ ├── TexTriCornerInfo.java
│ │ │ │ ├── TexTriCornerManager.java
│ │ │ │ ├── TexTriPoint.java
│ │ │ │ ├── TexTriUV.java
│ │ │ │ ├── TexTriangle.java
│ │ │ │ ├── TexTriangleManager.java
│ │ │ │ ├── TriTexture.java
│ │ │ │ ├── TriTextureManager.java
│ │ │ │ ├── TriTextureTest.java
│ │ │ │ ├── UVPoint.java
│ │ │ │ └── Vertex.java
│ │ │ ├── glue
│ │ │ ├── config.xml
│ │ │ └── shortcuts.xml
│ │ │ ├── importer
│ │ │ ├── AbstractImporter.java
│ │ │ ├── BinVoxImporter.java
│ │ │ ├── CCVxlImporter.java
│ │ │ ├── ImporterTest.java
│ │ │ ├── Kv6Importer.java
│ │ │ ├── KvxImporter.java
│ │ │ ├── PnxImporter.java
│ │ │ ├── QbImporter.java
│ │ │ ├── RawVoxImporter.java
│ │ │ ├── VoxImporter.java
│ │ │ └── dataStatic
│ │ │ │ └── CCVxlStatic.java
│ │ │ ├── layout
│ │ │ ├── ButtonLayoutPainter.java
│ │ │ ├── CustomLayoutPainter.java
│ │ │ ├── ExtendedDockableBarDockableHolder.java
│ │ │ ├── LayoutLoader.java
│ │ │ ├── WindowManager.java
│ │ │ ├── WindowManagerInterface.java
│ │ │ ├── bars
│ │ │ │ ├── BarLinkagePrototype.java
│ │ │ │ ├── MainMenuLinkage.java
│ │ │ │ ├── OptionBarLinkage.java
│ │ │ │ ├── SelectBarLinkage.java
│ │ │ │ ├── ToolBarLinkage.java
│ │ │ │ ├── main_menu.xml
│ │ │ │ ├── option_bar.xml
│ │ │ │ ├── rotatex.xml
│ │ │ │ ├── rotatey.xml
│ │ │ │ ├── rotatez.xml
│ │ │ │ ├── select_bar.xml
│ │ │ │ └── tool_bar.xml
│ │ │ ├── content
│ │ │ │ ├── JCustomScrollPane.java
│ │ │ │ ├── JCustomTable.java
│ │ │ │ ├── ViewPrototype.java
│ │ │ │ ├── coloradjuster
│ │ │ │ │ ├── ColorAdjusterView.java
│ │ │ │ │ ├── ColorAdjusterViewInterface.java
│ │ │ │ │ └── toolbar.xml
│ │ │ │ ├── colorchooser
│ │ │ │ │ ├── ColorPaletteChooser.java
│ │ │ │ │ ├── HSBPanelSliderChooser.java
│ │ │ │ │ ├── HexColorChooser.java
│ │ │ │ │ ├── PresetColorChooser.java
│ │ │ │ │ ├── SatBrightPanelChooser.java
│ │ │ │ │ ├── SliderColorChooser.java
│ │ │ │ │ ├── basic
│ │ │ │ │ │ ├── ColorChangeListener.java
│ │ │ │ │ │ ├── ColorChooserPrototype.java
│ │ │ │ │ │ └── Settings.java
│ │ │ │ │ └── components
│ │ │ │ │ │ ├── ColorSliderPrototype.java
│ │ │ │ │ │ ├── HexBox.java
│ │ │ │ │ │ ├── NumberBox.java
│ │ │ │ │ │ ├── SliderUI.java
│ │ │ │ │ │ ├── TextChangeListener.java
│ │ │ │ │ │ ├── ValueChangeListener.java
│ │ │ │ │ │ └── colorslider
│ │ │ │ │ │ ├── CMYKTab.java
│ │ │ │ │ │ ├── HSBTab.java
│ │ │ │ │ │ ├── HorizontalColorSlider.java
│ │ │ │ │ │ ├── HorizontalHueSlider.java
│ │ │ │ │ │ ├── RGBTab.java
│ │ │ │ │ │ └── TabPrototype.java
│ │ │ │ ├── console
│ │ │ │ │ ├── Console.java
│ │ │ │ │ ├── ConsoleInterface.java
│ │ │ │ │ ├── ConsoleListener.java
│ │ │ │ │ ├── ConsoleView.java
│ │ │ │ │ ├── ConsoleViewInterface.java
│ │ │ │ │ └── toolbar.xml
│ │ │ │ ├── layer
│ │ │ │ │ ├── LayerView.java
│ │ │ │ │ ├── LayerViewInterface.java
│ │ │ │ │ ├── SaveTextArea.java
│ │ │ │ │ └── toolbar.xml
│ │ │ │ ├── mainview
│ │ │ │ │ ├── MainView.java
│ │ │ │ │ ├── MainViewInterface.java
│ │ │ │ │ ├── components
│ │ │ │ │ │ ├── BoundingBoxDimChooser.java
│ │ │ │ │ │ └── OutlineLabel.java
│ │ │ │ │ └── toolbar.xml
│ │ │ │ ├── menu
│ │ │ │ │ ├── MainMenuLogic.java
│ │ │ │ │ ├── MenuLogicInterface.java
│ │ │ │ │ ├── MenuLogicPrototype.java
│ │ │ │ │ ├── OptionBarLogic.java
│ │ │ │ │ ├── SelectBarLogic.java
│ │ │ │ │ └── ToolBarLogic.java
│ │ │ │ ├── shortcut
│ │ │ │ │ ├── ShortcutChangeListener.java
│ │ │ │ │ ├── ShortcutManager.java
│ │ │ │ │ ├── ShortcutManagerInterface.java
│ │ │ │ │ ├── ShortcutManagerView.java
│ │ │ │ │ ├── ShortcutManagerViewInterface.java
│ │ │ │ │ └── ShortcutObject.java
│ │ │ │ ├── sideview
│ │ │ │ │ ├── SideView.java
│ │ │ │ │ ├── SideViewInterface.java
│ │ │ │ │ ├── toolbar1.xml
│ │ │ │ │ ├── toolbar2.xml
│ │ │ │ │ └── toolbar3.xml
│ │ │ │ └── texture
│ │ │ │ │ ├── TextureManager.java
│ │ │ │ │ ├── TextureManagerInterface.java
│ │ │ │ │ └── toolbar.xml
│ │ │ └── frames
│ │ │ │ ├── ColorAdjusterLinkage.java
│ │ │ │ ├── ColorPaletteLinkage.java
│ │ │ │ ├── ColorPickerLinkage.java
│ │ │ │ ├── ColorSliderLinkage.java
│ │ │ │ ├── ConsoleLinkage.java
│ │ │ │ ├── FrameLinkagePrototype.java
│ │ │ │ ├── HexPickerLinkage.java
│ │ │ │ ├── LayerLinkage.java
│ │ │ │ ├── MainViewLinkage.java
│ │ │ │ ├── PersonalLinkage.java
│ │ │ │ ├── ShortcutManagerLinkage.java
│ │ │ │ ├── SideViewLinkage.java
│ │ │ │ ├── SnapshotLinkage.java
│ │ │ │ ├── TextureManagerLinkage.java
│ │ │ │ ├── custom
│ │ │ │ ├── CDockableFrame.java
│ │ │ │ └── FrameGenericJideButton.java
│ │ │ │ └── toolbars
│ │ │ │ └── colorpalette.xml
│ │ │ ├── low
│ │ │ ├── CubeIndexer.java
│ │ │ ├── CubeIndexerTest.java
│ │ │ ├── engine
│ │ │ │ ├── Chunk.java
│ │ │ │ ├── Engine.java
│ │ │ │ ├── Engine2.java
│ │ │ │ ├── VoxelManager.java
│ │ │ │ └── VoxelType.java
│ │ │ ├── hull
│ │ │ │ ├── HullManager.java
│ │ │ │ ├── HullManagerExt.java
│ │ │ │ ├── HullManagerExtInterface.java
│ │ │ │ ├── HullManagerInterface.java
│ │ │ │ ├── HullManagerTest.java
│ │ │ │ ├── MinMaxTracker.java
│ │ │ │ └── MinMaxTrackerTest.java
│ │ │ └── triangulate
│ │ │ │ ├── Grid2TriGreedyOptimal.java
│ │ │ │ ├── Grid2TriMono.java
│ │ │ │ ├── Grid2TriNaive.java
│ │ │ │ ├── Grid2TriNaiveGreedy.java
│ │ │ │ ├── Grid2TriPolyFast.java
│ │ │ │ ├── Grid2TriPolySlow.java
│ │ │ │ ├── tests
│ │ │ │ ├── AbstractTriangulationTest.java
│ │ │ │ ├── RuntimeComparisonTest.java
│ │ │ │ ├── TestGrid2TriGreedyOptimal.java
│ │ │ │ ├── TestGrid2TriMono.java
│ │ │ │ ├── TestGrid2TriMonoSave.java
│ │ │ │ ├── TestGrid2TriNaiveGreedy.java
│ │ │ │ ├── TestGrid2TriPolyFast.java
│ │ │ │ └── TestGrid2TriPolySlow.java
│ │ │ │ └── util
│ │ │ │ ├── Grid2PolyHelper.java
│ │ │ │ ├── Grid2PolyHelperTest.java
│ │ │ │ └── HopcroftKarp.java
│ │ │ ├── manager
│ │ │ ├── action
│ │ │ │ ├── ActionGroupManager.java
│ │ │ │ ├── ActionGroupManagerInterface.java
│ │ │ │ ├── ActionManager.java
│ │ │ │ ├── ActionManagerInterface.java
│ │ │ │ ├── ActionManagerPrototype.java
│ │ │ │ ├── ChangeListener.java
│ │ │ │ ├── ComplexActionManager.java
│ │ │ │ └── types
│ │ │ │ │ ├── StateActionPrototype.java
│ │ │ │ │ └── SwitchActionPrototype.java
│ │ │ ├── async
│ │ │ │ ├── AsyncAction.java
│ │ │ │ └── AsyncActionManager.java
│ │ │ ├── error
│ │ │ │ ├── ErrorHandler.java
│ │ │ │ └── ErrorHandlerInterface.java
│ │ │ ├── help
│ │ │ │ └── FrameHelpOverlay.java
│ │ │ ├── lang
│ │ │ │ ├── LangSelector.java
│ │ │ │ └── LangSelectorInterface.java
│ │ │ ├── menu
│ │ │ │ ├── MenuGenerator.java
│ │ │ │ └── MenuGeneratorInterface.java
│ │ │ ├── pref
│ │ │ │ ├── PrefChangeListener.java
│ │ │ │ ├── Preferences.java
│ │ │ │ └── PreferencesInterface.java
│ │ │ ├── thread
│ │ │ │ ├── LifeTimeThread.java
│ │ │ │ ├── ThreadManager.java
│ │ │ │ └── ThreadManagerInterface.java
│ │ │ └── updater
│ │ │ │ └── Updater.java
│ │ │ ├── settings
│ │ │ ├── DynamicSettings.java
│ │ │ └── VitcoSettings.java
│ │ │ └── util
│ │ │ ├── components
│ │ │ ├── dialog
│ │ │ │ ├── BlankDialogModule.java
│ │ │ │ ├── DialogModuleChangeAdapter.java
│ │ │ │ ├── DialogModuleChangeListener.java
│ │ │ │ ├── UserInputDialog.java
│ │ │ │ ├── UserInputDialogListener.java
│ │ │ │ └── components
│ │ │ │ │ ├── CheckBoxModule.java
│ │ │ │ │ ├── ComboBoxModule.java
│ │ │ │ │ ├── DialogButton.java
│ │ │ │ │ ├── FieldSet.java
│ │ │ │ │ ├── FieldSetWrapper.java
│ │ │ │ │ ├── FileSelectModule.java
│ │ │ │ │ ├── FolderSelectModule.java
│ │ │ │ │ ├── LabelModule.java
│ │ │ │ │ ├── LinkButton.java
│ │ │ │ │ ├── SeparatorModule.java
│ │ │ │ │ └── TextInputModule.java
│ │ │ ├── progressbar
│ │ │ │ ├── ProgressDialog.java
│ │ │ │ ├── ProgressReporter.java
│ │ │ │ └── ProgressWorker.java
│ │ │ └── textfield
│ │ │ │ ├── JCustomTextField.java
│ │ │ │ └── TextChangeListener.java
│ │ │ ├── file
│ │ │ ├── FileIn.java
│ │ │ ├── FileOut.java
│ │ │ ├── FileTools.java
│ │ │ ├── RandomAccessFileIn.java
│ │ │ └── SaveDataInputStream.java
│ │ │ ├── graphic
│ │ │ ├── G2DUtil.java
│ │ │ ├── G2DUtilTest.java
│ │ │ ├── GraphicTools.java
│ │ │ ├── ImageComparator.java
│ │ │ ├── ImageComparatorTest.java
│ │ │ ├── MaxRectFinder.java
│ │ │ ├── MaxRectFinderTest.java
│ │ │ ├── SharedImageFactory.java
│ │ │ ├── TextureTools.java
│ │ │ ├── TextureToolsTest.java
│ │ │ ├── Util3D.java
│ │ │ └── Util3DTest.java
│ │ │ ├── misc
│ │ │ ├── ArrayUtil.java
│ │ │ ├── AutoFileCloser.java
│ │ │ ├── BiMap.java
│ │ │ ├── ByteHelper.java
│ │ │ ├── CFileDialog.java
│ │ │ ├── ColorTools.java
│ │ │ ├── ConversionTools.java
│ │ │ ├── DateTools.java
│ │ │ ├── FontUtil.java
│ │ │ ├── IntegerTools.java
│ │ │ ├── IntegerToolsTest.java
│ │ │ ├── NumberTools.java
│ │ │ ├── Profiler.java
│ │ │ ├── SaveResourceLoader.java
│ │ │ ├── StringIndexer.java
│ │ │ ├── SwingAsyncHelper.java
│ │ │ ├── ThumbnailFileChooser.java
│ │ │ ├── UTF8Control.java
│ │ │ ├── UrlUtil.java
│ │ │ └── WrapLayout.java
│ │ │ ├── offline
│ │ │ └── GenerateTexture.java
│ │ │ ├── schema
│ │ │ ├── spring-aop-3.1.xsd
│ │ │ ├── spring-beans-3.1.xsd
│ │ │ ├── spring-context-3.1.xsd
│ │ │ ├── spring-tool-3.1.xsd
│ │ │ ├── vitco-layout-1.0.xsd
│ │ │ ├── vitco-menu-1.0.xsd
│ │ │ ├── vitco-shortcuts-1.0.xsd
│ │ │ └── xml.xsd
│ │ │ └── xml
│ │ │ ├── XmlFile.java
│ │ │ └── XmlTools.java
│ │ └── log4j.properties
└── test
│ ├── java
│ └── formats
│ │ ├── AbstractFormatTest.java
│ │ ├── MagicaVoxFormatFitToBBTest.java
│ │ ├── MagicaVoxFormatFitToSizeTest.java
│ │ ├── PNXFormatTest.java
│ │ └── VoxLapEngineFormatTest.java
│ └── resources
│ └── formats
│ ├── magica_vox
│ ├── fit_to_bb
│ │ ├── 3x3x3.vox
│ │ ├── 8x8x8.vox
│ │ ├── adobe.vox
│ │ ├── alphabet.vox
│ │ ├── black.vox
│ │ ├── cage.vox
│ │ ├── castle.vox
│ │ ├── chr_fox.vox
│ │ ├── chr_gumi.vox
│ │ ├── chr_jp.vox
│ │ ├── chr_knight.vox
│ │ ├── chr_man.vox
│ │ ├── chr_old.vox
│ │ ├── chr_rain.vox
│ │ ├── chr_sword.vox
│ │ ├── church.vox
│ │ ├── clock.vox
│ │ ├── dragon.vox
│ │ ├── ephtracy.vox
│ │ ├── mario.vox
│ │ ├── rect.vox
│ │ └── tree.vox
│ └── fit_to_size
│ │ ├── 3x3x3.vox
│ │ ├── 8x8x8.vox
│ │ ├── adobe.vox
│ │ ├── alphabet.vox
│ │ ├── black.vox
│ │ ├── cage.vox
│ │ ├── castle.vox
│ │ ├── chr_fox.vox
│ │ ├── chr_gumi.vox
│ │ ├── chr_jp.vox
│ │ ├── chr_knight.vox
│ │ ├── chr_man.vox
│ │ ├── chr_old.vox
│ │ ├── chr_rain.vox
│ │ ├── chr_sword.vox
│ │ ├── church.vox
│ │ ├── clock.vox
│ │ ├── dragon.vox
│ │ ├── ephtracy.vox
│ │ ├── mario.vox
│ │ ├── rect.vox
│ │ └── tree.vox
│ ├── pnx
│ ├── 3x3x3.pnx
│ ├── 8x8x8.pnx
│ ├── adobe.pnx
│ ├── black.pnx
│ ├── castle.pnx
│ ├── chr_knight.pnx
│ ├── chr_man.pnx
│ ├── chr_old.pnx
│ ├── chr_rain.pnx
│ ├── chr_sword.pnx
│ ├── clock.pnx
│ ├── snake.pnx
│ └── tree.pnx
│ └── vox_lap_engine
│ ├── troll_armleft.vox
│ ├── troll_armright.vox
│ ├── troll_armright_export.vox
│ ├── troll_head.vox
│ ├── troll_legleft.vox
│ ├── troll_legright.vox
│ ├── troll_torso.vox
│ └── z-customvox-nerds.vox
└── static
├── install-linux.sh
├── install.txt
├── share
├── applications
│ └── com.blackflux.voxelshop.desktop
└── pixmaps
│ └── icon-48x48.png
└── uninstall-linux.sh
/.gitignore:
--------------------------------------------------------------------------------
1 | /VoxelShop.log
2 | /VoxelShop.prj
3 | /build_VoxelShop.bat
4 | /.idea/workspace.xml
5 | /.idea/tasks.xml
6 | /.idea/dictionaries
7 | /.idea/sonarlint
8 | /VoxelShop_jetpdb
9 | /settings
10 | /resource/jidelicense.txt
11 | /target/
12 | /resource/version.txt
13 | /resource/date.txt
14 | /resource/build.txt
15 | /resource/branch.txt
16 |
--------------------------------------------------------------------------------
/.idea/.name:
--------------------------------------------------------------------------------
1 | PS4k
--------------------------------------------------------------------------------
/.idea/ant.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
--------------------------------------------------------------------------------
/.idea/artifacts/PS4k_jar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/out/artifacts/PS4k_jar
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
--------------------------------------------------------------------------------
/.idea/artifacts/images.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/out/artifacts/PS4k_jar
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/artifacts/lib.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 | $PROJECT_DIR$/out/artifacts/PS4k_jar/lib
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/compiler.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
26 |
27 |
28 |
29 |
30 |
31 |
--------------------------------------------------------------------------------
/.idea/copyright/profiles_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
--------------------------------------------------------------------------------
/.idea/encodings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
--------------------------------------------------------------------------------
/.idea/libraries/Maven__junit_junit_4_12.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
--------------------------------------------------------------------------------
/.idea/libraries/apachehttp.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/converter.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/jide.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/render.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/libraries/spring.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/misc.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
11 |
12 |
13 |
14 |
15 |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
28 |
29 |
30 | http://www.w3.org/1999/xhtml
31 |
32 |
33 |
34 |
35 |
--------------------------------------------------------------------------------
/.idea/modules.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
--------------------------------------------------------------------------------
/.idea/scopes/scope_settings.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
--------------------------------------------------------------------------------
/.idea/vcs.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
--------------------------------------------------------------------------------
/images/splash.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/images/splash.png
--------------------------------------------------------------------------------
/lib/apachehttp/commons-codec-1.6.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/apachehttp/commons-codec-1.6.jar
--------------------------------------------------------------------------------
/lib/apachehttp/httpclient-4.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/apachehttp/httpclient-4.2.1.jar
--------------------------------------------------------------------------------
/lib/apachehttp/httpcore-4.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/apachehttp/httpcore-4.2.1.jar
--------------------------------------------------------------------------------
/lib/apachehttp/httpmime-4.2.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/apachehttp/httpmime-4.2.1.jar
--------------------------------------------------------------------------------
/lib/converter/jai_codec.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/jai_codec.jar
--------------------------------------------------------------------------------
/lib/converter/jai_core.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/jai_core.jar
--------------------------------------------------------------------------------
/lib/converter/jt-all-1.3.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/jt-all-1.3.1.jar
--------------------------------------------------------------------------------
/lib/converter/jts-1.8.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/jts-1.8.jar
--------------------------------------------------------------------------------
/lib/converter/poly2tri-ardor3d-0.1.1-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/poly2tri-ardor3d-0.1.1-SNAPSHOT.jar
--------------------------------------------------------------------------------
/lib/converter/poly2tri-core-0.1.1-SNAPSHOT.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/poly2tri-core-0.1.1-SNAPSHOT.jar
--------------------------------------------------------------------------------
/lib/converter/slf4j-api-1.6.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/slf4j-api-1.6.5.jar
--------------------------------------------------------------------------------
/lib/converter/slf4j-log4j12-1.6.5.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/converter/slf4j-log4j12-1.6.5.jar
--------------------------------------------------------------------------------
/lib/hamcrest-core-1.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/hamcrest-core-1.3.jar
--------------------------------------------------------------------------------
/lib/jide/jide-action.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/jide/jide-action.jar
--------------------------------------------------------------------------------
/lib/jide/jide-common.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/jide/jide-common.jar
--------------------------------------------------------------------------------
/lib/jide/jide-dock.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/jide/jide-dock.jar
--------------------------------------------------------------------------------
/lib/junit-4.12.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/junit-4.12.jar
--------------------------------------------------------------------------------
/lib/misc/algs4-package.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/misc/algs4-package.jar
--------------------------------------------------------------------------------
/lib/misc/pngtastic-0.4.0.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/misc/pngtastic-0.4.0.jar
--------------------------------------------------------------------------------
/lib/misc/stdlib-package.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/misc/stdlib-package.jar
--------------------------------------------------------------------------------
/lib/misc/trove-3.0.3.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/misc/trove-3.0.3.jar
--------------------------------------------------------------------------------
/lib/render/jpct.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/render/jpct.jar
--------------------------------------------------------------------------------
/lib/spring/commons-logging-1.1.1.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/commons-logging-1.1.1.jar
--------------------------------------------------------------------------------
/lib/spring/javax.annotation-api-1.3.2.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/javax.annotation-api-1.3.2.jar
--------------------------------------------------------------------------------
/lib/spring/log4j-1.2.17.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/log4j-1.2.17.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.asm-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.asm-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.aspects-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.aspects-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.beans-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.beans-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.context-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.context-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.core-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.core-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.expression-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.expression-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/lib/spring/org.springframework.orm-3.1.2.RELEASE.jar:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/lib/spring/org.springframework.orm-3.1.2.RELEASE.jar
--------------------------------------------------------------------------------
/pack.xml:
--------------------------------------------------------------------------------
1 |
4 | bin
5 |
6 | zip
7 |
8 | false
9 |
10 |
11 | ${project.basedir}
12 | voxelshop/
13 |
14 | README.md
15 | LICENSE.txt
16 |
17 |
18 |
19 | ${project.basedir}/static
20 | voxelshop/
21 |
22 | **/*
23 |
24 |
25 |
26 | ${project.build.directory}
27 | voxelshop/
28 |
29 | *.jar
30 |
31 |
32 |
33 | ${project.build.directory}/lib
34 | voxelshop/lib/
35 |
36 | *.jar
37 |
38 |
39 |
40 |
--------------------------------------------------------------------------------
/resource/bundle/LangBundle_de_DE.properties:
--------------------------------------------------------------------------------
1 | file_btn = Datei
2 | edit_btn = Bearbeiten
3 | view_btn = Ansicht
--------------------------------------------------------------------------------
/resource/font/arcade.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/font/arcade.ttf
--------------------------------------------------------------------------------
/resource/font/font.ttf:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/font/font.ttf
--------------------------------------------------------------------------------
/resource/img/bars/option_bar/boundingBox.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/option_bar/boundingBox.png
--------------------------------------------------------------------------------
/resource/img/bars/option_bar/grid.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/option_bar/grid.png
--------------------------------------------------------------------------------
/resource/img/bars/option_bar/light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/option_bar/light.png
--------------------------------------------------------------------------------
/resource/img/bars/option_bar/mirrorflag.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/option_bar/mirrorflag.png
--------------------------------------------------------------------------------
/resource/img/bars/option_bar/quality.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/option_bar/quality.png
--------------------------------------------------------------------------------
/resource/img/bars/option_bar/settings.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/option_bar/settings.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/as_new_layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/as_new_layer.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/copy.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/cut.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/cut.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/delete_select.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/delete_select.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/deselect.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/deselect.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/expand_selection.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/expand_selection.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/finalize_move.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/finalize_move.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/finalize_move_as_copy.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/finalize_move_as_copy.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/mirror/mirrorx.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/mirror/mirrorx.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/mirror/mirrory.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/mirror/mirrory.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/mirror/mirrorz.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/mirror/mirrorz.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/paste.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/paste.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/recolor.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/recolor.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/retexture.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/retexture.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/rotatex.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/rotatex.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/rotatey.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/rotatey.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/rotatez.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/rotatez.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/x180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/x180.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/x270.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/x270.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/x90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/x90.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/y180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/y180.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/y270.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/y270.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/y90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/y90.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/z180.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/z180.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/z270.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/z270.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/rotate/z90.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/rotate/z90.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/select_all.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/select_all.png
--------------------------------------------------------------------------------
/resource/img/bars/select_bar/select_layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/select_bar/select_layer.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/animate.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/animate.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/clear_history.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/clear_history.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/color_changer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/color_changer.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/color_picker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/color_picker.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/draw.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/draw.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/erase.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/erase.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/floodfill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/floodfill.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/redo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/redo.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/redo_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/redo_disabled.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/select_tool.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/select_tool.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/undo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/undo.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/undo_disabled.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/undo_disabled.png
--------------------------------------------------------------------------------
/resource/img/bars/tool_bar/view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/bars/tool_bar/view.png
--------------------------------------------------------------------------------
/resource/img/framebars/coloradjuster/apply.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/coloradjuster/apply.png
--------------------------------------------------------------------------------
/resource/img/framebars/coloradjuster/cancel.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/coloradjuster/cancel.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/erase_colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/erase_colors.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/export.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/extract_colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/extract_colors.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/import.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/import.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/locked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/locked.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/reorder_colors.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/reorder_colors.png
--------------------------------------------------------------------------------
/resource/img/framebars/colorpalette/unlocked.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/colorpalette/unlocked.png
--------------------------------------------------------------------------------
/resource/img/framebars/console/auto_scroll.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/console/auto_scroll.png
--------------------------------------------------------------------------------
/resource/img/framebars/console/auto_show.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/console/auto_show.png
--------------------------------------------------------------------------------
/resource/img/framebars/console/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/console/clear.png
--------------------------------------------------------------------------------
/resource/img/framebars/layer/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/layer/add.png
--------------------------------------------------------------------------------
/resource/img/framebars/layer/merge.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/layer/merge.png
--------------------------------------------------------------------------------
/resource/img/framebars/layer/move_down.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/layer/move_down.png
--------------------------------------------------------------------------------
/resource/img/framebars/layer/move_up.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/layer/move_up.png
--------------------------------------------------------------------------------
/resource/img/framebars/layer/remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/layer/remove.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/center_view.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/center_view.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/color_bg.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/color_bg.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/color_plane.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/color_plane.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/fill.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/fill.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/hollow.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/hollow.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/minus.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/plus.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/reset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/reset.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/snap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/snap.png
--------------------------------------------------------------------------------
/resource/img/framebars/mainview/wireframe.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/mainview/wireframe.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/align.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/align.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/make_zero.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/make_zero.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/minus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/minus.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/move_in.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/move_in.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/move_out.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/move_out.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/plus.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/plus.png
--------------------------------------------------------------------------------
/resource/img/framebars/sideview/reset.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/sideview/reset.png
--------------------------------------------------------------------------------
/resource/img/framebars/texturemg/add.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/texturemg/add.png
--------------------------------------------------------------------------------
/resource/img/framebars/texturemg/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/texturemg/clear.png
--------------------------------------------------------------------------------
/resource/img/framebars/texturemg/export.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/texturemg/export.png
--------------------------------------------------------------------------------
/resource/img/framebars/texturemg/remove.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/texturemg/remove.png
--------------------------------------------------------------------------------
/resource/img/framebars/texturemg/replace.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/texturemg/replace.png
--------------------------------------------------------------------------------
/resource/img/framebars/view/xySwap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/view/xySwap.png
--------------------------------------------------------------------------------
/resource/img/framebars/view/xzSwap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/view/xzSwap.png
--------------------------------------------------------------------------------
/resource/img/framebars/view/yzSwap.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/framebars/view/yzSwap.png
--------------------------------------------------------------------------------
/resource/img/icons/application/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/close.png
--------------------------------------------------------------------------------
/resource/img/icons/application/disable_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/disable_fullscreen.png
--------------------------------------------------------------------------------
/resource/img/icons/application/enable_fullscreen.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/enable_fullscreen.png
--------------------------------------------------------------------------------
/resource/img/icons/application/icons/icon-16x16.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/icons/icon-16x16.png
--------------------------------------------------------------------------------
/resource/img/icons/application/icons/icon-24x24.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/icons/icon-24x24.png
--------------------------------------------------------------------------------
/resource/img/icons/application/icons/icon-32x32.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/icons/icon-32x32.png
--------------------------------------------------------------------------------
/resource/img/icons/application/icons/icon-48x48.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/icons/icon-48x48.png
--------------------------------------------------------------------------------
/resource/img/icons/application/logo.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/logo.png
--------------------------------------------------------------------------------
/resource/img/icons/application/minimize.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/application/minimize.png
--------------------------------------------------------------------------------
/resource/img/icons/checkmark.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/checkmark.png
--------------------------------------------------------------------------------
/resource/img/icons/clear.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/clear.png
--------------------------------------------------------------------------------
/resource/img/icons/close.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/close.png
--------------------------------------------------------------------------------
/resource/img/icons/frame_close_button_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frame_close_button_icon.png
--------------------------------------------------------------------------------
/resource/img/icons/frame_help_button_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frame_help_button_icon.png
--------------------------------------------------------------------------------
/resource/img/icons/frame_maximize_button_icon.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frame_maximize_button_icon.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/colorAdjuster.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/colorAdjuster.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/colorpalette.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/colorpalette.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/colorpicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/colorpicker.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/colorslider.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/colorslider.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/console.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/console.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/hexpicker.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/hexpicker.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/layer.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/layer.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/mainview.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/mainview.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/personal.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/personal.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/shortcutManager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/shortcutManager.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/sideView.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/sideView.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/snapshot.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/snapshot.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/swatchManager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/swatchManager.png
--------------------------------------------------------------------------------
/resource/img/icons/frames/textureManager.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/frames/textureManager.png
--------------------------------------------------------------------------------
/resource/img/icons/loading.gif:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/img/icons/loading.gif
--------------------------------------------------------------------------------
/resource/tex/bounding_box_512.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/simlu/voxelshop/99fd77c8d0bd74d7187160323b37fa9e77bce586/resource/tex/bounding_box_512.png
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/CameraChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core;
2 |
3 | /**
4 | * A Camera event listener
5 | */
6 | public interface CameraChangeListener {
7 | //Called when the camera angle/zoom/fov/shift changes
8 | public void onCameraChange();
9 | }
10 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/container/HackedFrameBuffer.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.container;
2 |
3 | import com.threed.jpct.FrameBuffer;
4 |
5 | /**
6 | * Exposes the zbuffer of the FrameBuffer
7 | */
8 | public class HackedFrameBuffer extends FrameBuffer {
9 |
10 | // access to z buffer
11 | public int[] getZBuffer() {
12 | return zbuffer;
13 | }
14 |
15 | // constructor
16 | public HackedFrameBuffer(int i, int i2, int i3) {
17 | super(i, i2, i3);
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/AnimationHighlightInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | import com.vitco.app.core.data.container.ExtendedVector;
4 |
5 | /**
6 | * Defines the signature of methods that help highlighting of animation data (frame).
7 | */
8 | public interface AnimationHighlightInterface {
9 | // remove all highlights
10 | void removeAnimationHighlights();
11 | // highlight a point
12 | boolean highlightPoint(int id);
13 | // select a point
14 | boolean selectPoint(int id);
15 | // retrieve highlighted point
16 | int getHighlightedPoint();
17 | // retrieve selected point
18 | int getSelectedPoint();
19 | // set preview line
20 | void setPreviewLine(int id1, int id2);
21 | // retrieve preview line
22 | ExtendedVector[] getPreviewLine();
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/DataInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | import java.io.File;
4 |
5 | /**
6 | * General Data interaction.
7 | */
8 | public interface DataInterface {
9 | // loads all data from file
10 | boolean loadFromFile(File file);
11 | // stores all data to file
12 | boolean saveToFile(File file);
13 | // delete all history
14 | void clearHistoryA();
15 | void clearHistoryV();
16 |
17 | void setFrozen(boolean flag);
18 |
19 | // erase everything and start fresh
20 | void freshStart();
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/GeneralData.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | import com.vitco.app.core.data.container.DataContainer;
4 | import com.vitco.app.core.data.notification.DataChangeAdapter;
5 | import com.vitco.app.settings.VitcoSettings;
6 |
7 | /**
8 | * Manages everything that has to do with general data
9 | */
10 | public class GeneralData extends ListenerData implements GeneralDataInterface {
11 |
12 | // main data container
13 | protected DataContainer dataContainer = new DataContainer();
14 |
15 | // ######################
16 |
17 | // true if the data has changed since last save
18 | protected boolean hasChanged = false;
19 |
20 | public GeneralData() {
21 | this.addDataChangeListener(new DataChangeAdapter() {
22 | @Override
23 | public void onVoxelDataChanged() {
24 | hasChanged = true;
25 | }
26 |
27 | @Override
28 | public void onAnimationDataChanged() {
29 | hasChanged = true;
30 | }
31 | });
32 | }
33 |
34 | @Override
35 | public boolean hasChanged() {
36 | synchronized (VitcoSettings.SYNC) {
37 | return hasChanged;
38 | }
39 | }
40 |
41 | @Override
42 | public void resetHasChanged() {
43 | synchronized (VitcoSettings.SYNC) {
44 | hasChanged = false;
45 | }
46 | }
47 |
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/GeneralDataInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | /**
4 | * Manages everything that has to do with general data
5 | */
6 | public interface GeneralDataInterface {
7 | // true iff the data has changed since last reset (triggered by save to file)
8 | boolean hasChanged();
9 | // reset the changed of data (nothing has changed after this is called)
10 | void resetHasChanged();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/ListenerData.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | import com.vitco.app.core.data.notification.DataChangeListener;
4 | import com.vitco.app.core.data.notification.NotificationService;
5 | import com.vitco.app.settings.VitcoSettings;
6 |
7 | /**
8 | * Abstract class that defines methods add Data Change Listeners.
9 | */
10 | public abstract class ListenerData implements ListenerDataInterface {
11 | protected final NotificationService notifier = new NotificationService();
12 |
13 | @Override
14 | public final void addDataChangeListener(DataChangeListener dcl) {
15 | synchronized (VitcoSettings.SYNC) {
16 | notifier.add(dcl);
17 | }
18 | }
19 |
20 | @Override
21 | public final void removeDataChangeListener(DataChangeListener dcl) {
22 | synchronized (VitcoSettings.SYNC) {
23 | notifier.remove(dcl);
24 | }
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/ListenerDataInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | import com.vitco.app.core.data.notification.DataChangeListener;
4 |
5 | /**
6 | * Data Listener interface.
7 | *
8 | * Implements methods that allow setting of data change listeners.
9 | */
10 | public interface ListenerDataInterface {
11 | // add a data change listener
12 | void addDataChangeListener(DataChangeListener dcl);
13 | // remove a data change listener
14 | void removeDataChangeListener(DataChangeListener dcl);
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/VoxelHighlightingInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data;
2 |
3 | import java.awt.*;
4 |
5 | /**
6 | * Functionality for voxel highlighting and selection of voxels.
7 | */
8 | public interface VoxelHighlightingInterface {
9 | // highlight a voxel
10 | void highlightVoxel(int[] pos);
11 | // retrieve highlighted voxel
12 | int[] getHighlightedVoxel();
13 | // remove all highliths
14 | void removeVoxelHighlights();
15 |
16 | int[] getVoxelSelectionShift();
17 |
18 | void setVoxelSelectionShift(int x, int y, int z);
19 |
20 | void setOutlineBox(String key, int[][] rect);
21 |
22 | int[][][] getOutlineBoxes();
23 |
24 | void setSelectionRect(Rectangle selectionRect);
25 |
26 | Rectangle getSelectionRect();
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/container/ExtendedLine.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.container;
2 |
3 | import java.io.Serializable;
4 |
5 | /**
6 | * A line that connects two ExtendedVectors (points).
7 | *
8 | * Reference to the points is by id.
9 | */
10 | public class ExtendedLine implements Serializable {
11 | private static final long serialVersionUID = 1L;
12 |
13 | public final int point1;
14 | public final int point2;
15 | public ExtendedLine(int point1, int point2) {
16 | this.point1 = point1;
17 | this.point2 = point2;
18 | }
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/container/ExtendedVector.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.container;
2 |
3 | import com.threed.jpct.SimpleVector;
4 |
5 | import java.io.Serializable;
6 |
7 | /**
8 | * Extended Vector that has in addition to a SimpleVector an id.
9 | *
10 | * Also defines equality method: true iff same position and id.
11 | */
12 | public final class ExtendedVector extends SimpleVector implements Serializable {
13 | private static final long serialVersionUID = 1L;
14 |
15 | public final int id;
16 | public ExtendedVector(float x, float y, float z, int id) {
17 | super(x, y, z);
18 | this.id = id;
19 | }
20 |
21 | public ExtendedVector(SimpleVector pos, Integer id) {
22 | super(pos);
23 | this.id = id;
24 | }
25 |
26 | // clone constructor
27 | public ExtendedVector(ExtendedVector extendedVector) {
28 | this(extendedVector, extendedVector.id);
29 | }
30 |
31 | @Override
32 | public boolean equals(Object obj) {
33 | boolean result = false;
34 | if (obj instanceof ExtendedVector) {
35 | ExtendedVector extendedVector = (ExtendedVector)obj;
36 | if (this.x == extendedVector.x && this.y == extendedVector.y &&
37 | this.z == extendedVector.z && this.id == extendedVector.id) {
38 | result = true;
39 | }
40 | }
41 | return result;
42 | }
43 |
44 | @Override
45 | public int hashCode() {
46 | return id + super.hashCode();
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/container/Frame.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.container;
2 |
3 | import java.io.Serializable;
4 | import java.util.HashMap;
5 |
6 | /**
7 | * Defines an animation frame. Points that are different from the main frame are set.
8 | */
9 | public class Frame implements Serializable {
10 | private static final long serialVersionUID = 1L;
11 |
12 | // the current name
13 | private String name;
14 |
15 | // constructor
16 | public Frame(String name) {
17 | this.name = name;
18 | }
19 |
20 | // get name
21 | public final String getName() {
22 | return name;
23 | }
24 |
25 | // set name
26 | public final void setName(String name) {
27 | this.name = name;
28 | }
29 |
30 | // the points that are moved
31 | private final HashMap points = new HashMap();
32 |
33 | // sets a point
34 | public final void setPoint(int id, ExtendedVector point) {
35 | points.put(id, point);
36 | }
37 |
38 | // return a point, null if not set
39 | public final ExtendedVector getPoint(int id) {
40 | return points.get(id);
41 | }
42 |
43 | // remove a point
44 | public void removePoint(int id) {
45 | points.remove(id);
46 | }
47 |
48 | // get all points in this frame
49 | public Integer[] getPoints() {
50 | Integer[] result = new Integer[points.size()];
51 | points.keySet().toArray(result);
52 | return result;
53 | }
54 |
55 | }
56 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/container/VOXELMODE.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.container;
2 |
3 | /**
4 | * The different voxel paint modes
5 | */
6 | public enum VOXELMODE {
7 | VIEW, DRAW, ERASE, PICKER, COLORCHANGER, SELECT, FLOODFILL
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/history/BasicActionIntent.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.history;
2 |
3 | /**
4 | * Base intent that allows to specify actions further.
5 | */
6 | public abstract class BasicActionIntent {
7 | // true if this is the first time apply is called
8 | private boolean first_call = true;
9 | // true if this intent is attached to surrounding intents
10 | public final boolean attach;
11 |
12 | // returns true iff first call or before first call of apply
13 | protected final boolean isFirstCall() {
14 | return first_call;
15 | }
16 |
17 | // constructor
18 | protected BasicActionIntent(boolean attach) {
19 | this.attach = attach;
20 | }
21 |
22 | // wrapper: apply action
23 | public final void apply() {
24 | applyAction();
25 | first_call = false;
26 | }
27 |
28 | // wrapper: unapply action
29 | public final void unapply() {
30 | unapplyAction();
31 | }
32 |
33 | // action to be defined by child class
34 | protected abstract void applyAction();
35 |
36 | // action to be defined by child class
37 | protected abstract void unapplyAction();
38 | }
39 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/history/HistoryChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.history;
2 |
3 | /**
4 | * Called when history changes
5 | */
6 | public interface HistoryChangeListener {
7 | void onChange(T action);
8 | void onFrozenIntent(T actionIntent);
9 | void onFrozenApply();
10 | void onFrozenUnapply();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/history/VoxelActionIntent.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.history;
2 |
3 | /**
4 | * Basic action intent for Voxels
5 | */
6 | public abstract class VoxelActionIntent extends BasicActionIntent {
7 | protected VoxelActionIntent(boolean attach) {
8 | super(attach);
9 | }
10 |
11 | // returns the affected voxel positions
12 | public abstract int[][] effected();
13 |
14 | // return true if this action effects textures
15 | public boolean effectsTexture() {
16 | return false;
17 | }
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/notification/DataChangeAdapter.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.notification;
2 |
3 | /**
4 | * Like DataChangeListener but overwrites all methods.
5 | */
6 | public abstract class DataChangeAdapter implements DataChangeListener {
7 |
8 | @Override
9 | public void onAnimationDataChanged() {}
10 |
11 | @Override
12 | public void onAnimationSelectionChanged() {}
13 |
14 | @Override
15 | public void onVoxelDataChanged() {}
16 |
17 | @Override
18 | public void onVoxelHighlightingChanged() {}
19 |
20 | @Override
21 | public void onVoxelSelectionShiftChanged() {}
22 |
23 | @Override
24 | public void onTextureDataChanged() {}
25 |
26 | @Override
27 | public void onOutlineBoxesChanged() {}
28 |
29 | @Override
30 | public void onSelectionRectChanged() {}
31 |
32 | @Override
33 | public void onLayerStateChanged() {}
34 |
35 | @Override
36 | public void onFrozenUndo() {}
37 |
38 | @Override
39 | public void onFrozenRedo() {}
40 |
41 | @Override
42 | public void onFrozenAction() {}
43 | }
44 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/notification/DataChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.notification;
2 |
3 | /**
4 | * A data change listener interface for the whole data container.
5 | */
6 | public interface DataChangeListener {
7 | void onAnimationDataChanged();
8 | void onAnimationSelectionChanged();
9 | void onVoxelDataChanged();
10 | void onVoxelHighlightingChanged();
11 | void onVoxelSelectionShiftChanged();
12 | void onTextureDataChanged();
13 | void onOutlineBoxesChanged();
14 | void onSelectionRectChanged();
15 | void onLayerStateChanged();
16 | void onFrozenUndo();
17 | void onFrozenRedo();
18 | void onFrozenAction();
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/data/notification/NotificationServiceInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.data.notification;
2 |
3 | /**
4 | * Notification Service, deals with and notifies listeners.
5 | */
6 | public interface NotificationServiceInterface extends DataChangeListener {
7 | // add a listener
8 | void add(DataChangeListener dcl);
9 |
10 | // remove a listener
11 | void remove(DataChangeListener dcl);
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/modes/AnimationAdapter.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.modes;
2 |
3 | import com.vitco.app.core.container.DrawContainer;
4 |
5 | /**
6 | * Manages the mouse events for animation interaction depending on the currently selected tool.
7 | */
8 | public class AnimationAdapter extends AbstractAdapter {
9 |
10 | // constructor
11 | public AnimationAdapter(DrawContainer container) {
12 | super(container);
13 | }
14 | }
15 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/modes/VoxelAdapter.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.modes;
2 |
3 | import com.vitco.app.core.container.DrawContainer;
4 |
5 | /**
6 | * Manages the mouse events for voxel interaction depending on the currently selected tool.
7 | */
8 | public class VoxelAdapter extends AbstractAdapter {
9 |
10 | // constructor
11 | public VoxelAdapter(DrawContainer container) {
12 | super(container);
13 | }
14 |
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/core/modes/tools/AbstractAnimationTool.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.core.modes.tools;
2 |
3 | import com.vitco.app.core.container.DrawContainer;
4 |
5 | /**
6 | * Abstract of a animation tool that can be used to alter a animation data.
7 | */
8 | public abstract class AbstractAnimationTool extends AbstractBasicTool {
9 |
10 | // constructor
11 | public AbstractAnimationTool(DrawContainer container, int side) {
12 | super(container, side);
13 | }
14 |
15 | @Override
16 | protected final void softCleanUp() {
17 | data.highlightPoint(-1);
18 | }
19 |
20 | @Override
21 | protected final boolean allowDrag() {
22 | return data.getHighlightedPoint() != -1;
23 | }
24 |
25 | }
26 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/export/generic/container/PlaneMaterial.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.export.generic.container;
2 |
3 | import java.awt.*;
4 |
5 | /**
6 | * object that holds plane material information
7 | * this is not only color / texture but also how the texture is
8 | * used (if this material has texture)
9 | */
10 |
11 | public class PlaneMaterial {
12 | public final Color color;
13 | public final Integer textureId;
14 | public final int rotation;
15 | public final boolean flip;
16 | public final boolean hasTexture;
17 | public final int orientation;
18 |
19 | public PlaneMaterial(Color color, Integer textureId, int rotation, boolean flip, int orientation) {
20 | this.color = color;
21 | this.textureId = textureId;
22 | this.rotation = rotation;
23 | this.flip = flip;
24 | this.hasTexture = textureId != null;
25 | this.orientation = orientation;
26 | }
27 |
28 | // serves as a unique identifier for this material
29 | @Override
30 | public String toString() {
31 | return color.getRGB() + "_" +
32 | (textureId == null ? "null" : textureId) + "_" +
33 | rotation + "_" +
34 | (flip ? "1" : "0");
35 | }
36 | }
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/export/generic/container/TexTriCornerInfo.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.export.generic.container;
2 |
3 | /**
4 | * Abstract class that holds corner information for a TexTriangle
5 | */
6 | public abstract class TexTriCornerInfo {
7 | // string representation
8 | public abstract String toString(boolean useInt);
9 | @Override
10 | public String toString() {
11 | return toString(false);
12 | }
13 |
14 | // making sure these will be overwritten
15 | // Note: two info objects should be equal if they represent the same data
16 | @Override
17 | public abstract boolean equals(Object o);
18 | @Override
19 | public abstract int hashCode();
20 |
21 | // the manager of this tex triangle point
22 | protected final TexTriangleManager manager;
23 |
24 | // constructor
25 | public TexTriCornerInfo(TexTriangleManager manager) {
26 | this.manager = manager;
27 | }
28 |
29 | // get the id of this info object
30 | public abstract int getId();
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/export/generic/container/TexTriUV.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.export.generic.container;
2 |
3 | import java.util.Arrays;
4 |
5 | /**
6 | * UV of a textured triangle.
7 | */
8 | public class TexTriUV extends TexTriCornerInfo {
9 | // uv values
10 | private final float[] uv = new float[2];
11 |
12 | // constructor
13 | public TexTriUV(float u, float v, TexTriangleManager manager) {
14 | super(manager);
15 | uv[0] = u;
16 | uv[1] = v;
17 | manager.addUV(this);
18 | }
19 |
20 | // -----------------
21 |
22 | // set this uv
23 | public final void set(float u, float v) {
24 | uv[0] = u;
25 | uv[1] = v;
26 | manager.invalidateUVs();
27 | }
28 |
29 | // get the coordinates of this point
30 | public final float[] getUV() {
31 | return uv.clone();
32 | }
33 |
34 | // --------------
35 |
36 | @Override
37 | public final int getId() {
38 | return manager.getUVId(this);
39 | }
40 |
41 | @Override
42 | public boolean equals(Object o) {
43 | if (this == o) return true;
44 | if (o == null || getClass() != o.getClass()) return false;
45 | TexTriUV that = (TexTriUV) o;
46 | return Arrays.equals(uv, that.uv);
47 |
48 | }
49 |
50 | @Override
51 | public final int hashCode() {
52 | return Arrays.hashCode(uv);
53 | }
54 |
55 | @Override
56 | public final String toString(boolean useInt) {
57 | if (useInt) {
58 | return Math.round(uv[0]) + " " + Math.round(uv[1]);
59 | } else {
60 | return uv[0] + " " + uv[1];
61 | }
62 | }
63 | }
64 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/export/generic/container/UVPoint.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.export.generic.container;
2 |
3 | /**
4 | * Represents a UV point (for texture coordinates).
5 | */
6 | public class UVPoint {
7 | public final int id;
8 | public final String floatPos; // two points, separated by space
9 | public UVPoint(int id, float[] floatPos,
10 | boolean plusx, boolean plusy,
11 | float interpx, float interpy) {
12 | this.id = id;
13 | this.floatPos = (floatPos[0] + (plusx ? interpx : -interpx)) + " " +
14 | (floatPos[1] + (plusy ? interpy : -interpy));
15 | }
16 | }
17 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/export/generic/container/Vertex.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.export.generic.container;
2 |
3 | /**
4 | * Definition of a vertex for Collada Export.
5 | */
6 | public final class Vertex {
7 | // id of this vertex
8 | private int id;
9 |
10 | // position of this vertex
11 | public final float x;
12 | public final float y;
13 | public final float z;
14 | // string representation of the position
15 | private final String toString;
16 |
17 | // constructor
18 | public Vertex(float x, float y, float z) {
19 | this.x = x;
20 | this.y = y;
21 | this.z = z;
22 | toString = x + "_" + y + "_" + z;
23 | }
24 |
25 | // set the id of this vertex
26 | public void setId(int id) {
27 | this.id = id;
28 | }
29 | // get the id of this vertex
30 | public int getId() {
31 | return id;
32 | }
33 |
34 |
35 | // string representation of this vector (only position)
36 | @Override
37 | public String toString() {
38 | return toString;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/ExtendedDockableBarDockableHolder.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout;
2 |
3 | import com.jidesoft.action.DefaultDockableBarDockableHolder;
4 |
5 | import java.awt.*;
6 |
7 | /**
8 | * Fixes bug with extended state of undecorated window (windows task bar is hidden).
9 | */
10 | public class ExtendedDockableBarDockableHolder extends DefaultDockableBarDockableHolder {
11 | private Rectangle maxBounds;
12 |
13 | // constructor
14 | public ExtendedDockableBarDockableHolder(String title) {
15 | super(title);
16 | maxBounds = null;
17 | }
18 |
19 | public Rectangle getMaximizedBounds() {
20 | return(maxBounds);
21 | }
22 |
23 | public synchronized void setMaximizedBounds(Rectangle maxBounds) {
24 | this.maxBounds = maxBounds;
25 | super.setMaximizedBounds(maxBounds);
26 | }
27 |
28 | public synchronized void setExtendedState(int state) {
29 | if (maxBounds == null &&
30 | (state & Frame.MAXIMIZED_BOTH) == Frame.MAXIMIZED_BOTH) {
31 | Insets screenInsets = getToolkit().getScreenInsets(getGraphicsConfiguration());
32 | Rectangle screenSize = getGraphicsConfiguration().getBounds();
33 | Rectangle maxBounds = new Rectangle(screenInsets.left + screenSize.x,
34 | screenInsets.top + screenSize.y,
35 | screenSize.x + screenSize.width - screenInsets.right - screenInsets.left,
36 | screenSize.y + screenSize.height - screenInsets.bottom - screenInsets.top);
37 | super.setMaximizedBounds(maxBounds);
38 | }
39 |
40 | super.setExtendedState(state);
41 | }
42 | }
43 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/BarLinkagePrototype.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.bars;
2 |
3 | import com.jidesoft.action.CommandMenuBar;
4 | import com.vitco.app.layout.content.menu.MenuLogicInterface;
5 | import com.vitco.app.manager.menu.MenuGeneratorInterface;
6 | import org.springframework.beans.factory.annotation.Autowired;
7 |
8 | import java.awt.*;
9 |
10 | /**
11 | * Prototype of class that links bar to content.
12 | */
13 | public abstract class BarLinkagePrototype {
14 | // constructs the bar (with content)
15 | public abstract CommandMenuBar buildBar(String key, Frame frame);
16 | // var & setter
17 | protected MenuGeneratorInterface menuGenerator;
18 | @Autowired(required = true)
19 | public final void setMenuGenerator(MenuGeneratorInterface menuGenerator) {
20 | this.menuGenerator = menuGenerator;
21 | }
22 | // var & setter
23 | protected MenuLogicInterface menuLogic;
24 | public final void setMenuLogic(MenuLogicInterface menuLogic) {
25 | this.menuLogic = menuLogic;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/OptionBarLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.bars;
2 |
3 | import com.jidesoft.action.CommandMenuBar;
4 |
5 | import java.awt.*;
6 |
7 | /**
8 | * the tool bar, uses menu generator to load content from file
9 | *
10 | * defines interactions (from xml)
11 | */
12 | public class OptionBarLinkage extends BarLinkagePrototype {
13 |
14 | @Override
15 | public final CommandMenuBar buildBar(String key, final Frame frame) {
16 | CommandMenuBar bar = new CommandMenuBar(key);
17 |
18 | // build the toolbar
19 | menuGenerator.buildMenuFromXML(bar, "com/vitco/app/layout/bars/option_bar.xml");
20 |
21 | // register the logic for this menu
22 | menuLogic.registerLogic(frame);
23 |
24 | return bar;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/ToolBarLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.bars;
2 |
3 | import com.jidesoft.action.CommandMenuBar;
4 |
5 | import java.awt.*;
6 |
7 | /**
8 | * the tool bar, uses menu generator to load content from file
9 | *
10 | * defines interactions (from xml)
11 | */
12 | public class ToolBarLinkage extends BarLinkagePrototype {
13 |
14 | @Override
15 | public final CommandMenuBar buildBar(String key, final Frame frame) {
16 | CommandMenuBar bar = new CommandMenuBar(key);
17 |
18 | // build the toolbar
19 | menuGenerator.buildMenuFromXML(bar, "com/vitco/app/layout/bars/tool_bar.xml");
20 |
21 | // register the logic for this menu
22 | menuLogic.registerLogic(frame);
23 |
24 | return bar;
25 | }
26 | }
27 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/option_bar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
15 |
20 |
21 |
26 |
27 |
30 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/rotatex.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
15 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/rotatey.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
15 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/bars/rotatez.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
15 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/JCustomScrollPane.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content;
2 |
3 | import com.vitco.app.settings.VitcoSettings;
4 |
5 | import javax.swing.*;
6 | import java.awt.*;
7 |
8 | /**
9 | * A custom JScrollPane that unifies the style for the program.
10 | */
11 | public class JCustomScrollPane extends JScrollPane {
12 |
13 | // initialize the scroll pane
14 | private void init() {
15 | this.setBackground(VitcoSettings.DEFAULT_SCROLL_PANE_BG_COLOR);
16 | this.setBorder(BorderFactory.createLineBorder(VitcoSettings.DEFAULT_BORDER_COLOR));
17 | }
18 |
19 | // ================
20 | // below are constructors
21 |
22 | public JCustomScrollPane(Component view, int vsbPolicy, int hsbPolicy) {
23 | super(view, vsbPolicy, hsbPolicy);
24 | init();
25 | }
26 |
27 | public JCustomScrollPane(String name, Component view) {
28 | super(view);
29 | init();
30 | this.setName(name);
31 | }
32 |
33 | public JCustomScrollPane(int vsbPolicy, int hsbPolicy) {
34 | super(vsbPolicy, hsbPolicy);
35 | init();
36 | }
37 |
38 | public JCustomScrollPane() {
39 | init();
40 | }
41 | }
42 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/coloradjuster/ColorAdjusterViewInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.coloradjuster;
2 |
3 | import com.vitco.app.manager.lang.LangSelectorInterface;
4 |
5 | import javax.swing.*;
6 | import java.awt.*;
7 |
8 | /**
9 | * Interface for the content for the color adjuster frame.
10 | */
11 | public interface ColorAdjusterViewInterface {
12 | void setLangSelector(LangSelectorInterface langSelector);
13 |
14 | JComponent build(Frame frame);
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/coloradjuster/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/colorchooser/basic/ColorChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.colorchooser.basic;
2 |
3 | /**
4 | * Listens to color changes (ColorChooserPrototype(
5 | */
6 | public interface ColorChangeListener {
7 | void colorChanged(float[] hsb);
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/colorchooser/basic/ColorChooserPrototype.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.colorchooser.basic;
2 |
3 | import javax.swing.*;
4 | import java.util.ArrayList;
5 |
6 | /**
7 | * A prototype for the all color chooser.
8 | */
9 | public abstract class ColorChooserPrototype extends JPanel {
10 | private final ArrayList listeners = new ArrayList();
11 |
12 | // notify all listeners
13 | protected final void notifyListeners(float[] hsb) {
14 | for (ColorChangeListener ccl : listeners) {
15 | ccl.colorChanged(hsb);
16 | }
17 | }
18 |
19 | // add a listener
20 | public final void addColorChangeListener(ColorChangeListener ccl) {
21 | listeners.add(ccl);
22 | }
23 |
24 | // remove a listener
25 | public final void removeColorChangeListener(ColorChangeListener ccl) {
26 | listeners.remove(ccl);
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/colorchooser/basic/Settings.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.colorchooser.basic;
2 |
3 | import com.vitco.app.settings.VitcoSettings;
4 |
5 | import java.awt.*;
6 |
7 | /**
8 | * Used colors for the color chooser tools.
9 | */
10 | public class Settings {
11 | public static final Color TEXTAREA_BG_COLOR = new Color(60, 60, 60);
12 | public static final Color TEXTAREA_BG_COLOR_FOCUS = new Color(200, 200, 200);
13 | public static final Color TEXTAREA_TEXT_COLOR = new Color(255, 255, 255);
14 | public static final Color TEXTAREA_TEXT_COLOR_FOCUS = new Color(0, 0, 0);
15 | public static final Color TEXTAREA_BORDER_COLOR = new Color(50, 50, 50);
16 | public static final Color BG_COLOR = new Color(80, 80, 80);
17 | public static final Color TEXT_COLOR = new Color(255, 255, 255);
18 | public static final Color SLIDER_BORDER_COLOR = new Color(50, 50, 50);
19 | public static final Color SLIDER_KNOB_COLOR_TOP = new Color(191, 219, 255);//new Color(158, 158, 158);
20 | public static final Color SLIDER_KNOB_COLOR_BOTTOM = new Color(70, 122, 162);//new Color(102, 102, 102);
21 | public static final Color SLIDER_KNOB_OUTLINE_COLOR = new Color(42, 42, 42);
22 | public static final Color BORDER_COLOR = VitcoSettings.DEFAULT_BORDER_COLOR;
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/colorchooser/components/SliderUI.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.colorchooser.components;
2 |
3 | /**
4 | * Extends Basic slider UI and gives access to some internal variables and functions.
5 | */
6 |
7 | import javax.swing.*;
8 | import javax.swing.plaf.basic.BasicSliderUI;
9 | import java.awt.*;
10 |
11 | public class SliderUI extends BasicSliderUI {
12 | public SliderUI(JSlider b) {
13 | super(b);
14 | }
15 |
16 | public final JSlider getSlider() {
17 | return slider;
18 | }
19 |
20 | public final Rectangle getContentRect() {
21 | return contentRect;
22 | }
23 |
24 | public final int getXPositionForValue(int value) {
25 | return xPositionForValue(value);
26 | }
27 |
28 | public final int getValueForXPosition(int value) {
29 | return valueForXPosition(value);
30 | }
31 |
32 | public final int getYPositionForValue(int value) {
33 | return yPositionForValue(value);
34 | }
35 |
36 | public final int getValueForYPosition(int value) {
37 | return valueForYPosition(value);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/colorchooser/components/TextChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.colorchooser.components;
2 |
3 | /**
4 | * Used to notify listeners of the changes of a NumberBox.
5 | */
6 | public interface TextChangeListener {
7 | void onChange();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/colorchooser/components/ValueChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.colorchooser.components;
2 |
3 | import javax.swing.event.ChangeEvent;
4 |
5 | /**
6 | * Listener for value change events of a ColorSliderPrototype
7 | */
8 | public interface ValueChangeListener {
9 | void onChange(ChangeEvent e);
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/console/ConsoleInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.console;
2 |
3 | import javax.annotation.PostConstruct;
4 | import javax.annotation.PreDestroy;
5 | import java.util.ArrayList;
6 |
7 | /**
8 | * deals with the content of the console
9 | */
10 | public interface ConsoleInterface {
11 | void addLine(String text);
12 | void addConsoleListener(ConsoleListener consoleListener);
13 | void removeConsoleListener(ConsoleListener consoleListener);
14 | @PostConstruct
15 | void init();
16 | @PreDestroy
17 | void finish();
18 | void clear();
19 | // return all buffered console data
20 | ArrayList getConsoleData();
21 | }
22 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/console/ConsoleListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.console;
2 |
3 | /**
4 | * Listener object for console changes.
5 | */
6 | public interface ConsoleListener {
7 | void lineAdded(String line);
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/console/ConsoleViewInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.console;
2 |
3 | import com.vitco.app.layout.frames.FrameLinkagePrototype;
4 |
5 | import javax.swing.*;
6 |
7 | /**
8 | * Displays console content and buttons to user.
9 | */
10 | public interface ConsoleViewInterface {
11 | JComponent buildConsole(FrameLinkagePrototype frame);
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/console/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/layer/LayerViewInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.layer;
2 |
3 | import javax.swing.*;
4 |
5 | /**
6 | * Build the layer menu with options.
7 | */
8 | public interface LayerViewInterface {
9 |
10 | JPanel build();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/layer/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
7 |
11 |
12 |
16 |
20 |
24 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/mainview/MainViewInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.mainview;
2 |
3 | import javax.swing.*;
4 |
5 | /**
6 | * Interface: Creates the mian view instance and attaches the specific user interaction.
7 | */
8 | public interface MainViewInterface {
9 | public JPanel build();
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/mainview/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
13 |
17 |
18 |
21 |
24 |
27 |
28 |
31 |
34 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/menu/MenuLogicInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.menu;
2 |
3 | import java.awt.*;
4 |
5 | /**
6 | * Handles the menu logic (interface).
7 | */
8 | public interface MenuLogicInterface {
9 | void registerLogic(final Frame frame);
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/shortcut/ShortcutChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.shortcut;
2 |
3 | /**
4 | * Triggered when the global shortcuts change
5 | */
6 | public interface ShortcutChangeListener {
7 | void onChange();
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/shortcut/ShortcutManagerViewInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.shortcut;
2 |
3 | import javax.swing.*;
4 |
5 | /**
6 | * Handle the displaying and the logic for the editing of shortcuts. (view & link to logic)
7 | */
8 | public interface ShortcutManagerViewInterface {
9 | // return a JTabbedPane that is autonomous and manages shortcuts
10 | JTabbedPane getEditTables();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/shortcut/ShortcutObject.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.shortcut;
2 |
3 | import javax.swing.*;
4 | import java.io.Serializable;
5 |
6 | /* to manage the data structure */
7 |
8 | public class ShortcutObject implements Serializable {
9 | private static final long serialVersionUID = 1L;
10 |
11 | public String actionName;
12 | public String caption;
13 | public transient JComponent linkedFrame; // no need to serialize the frame
14 | public KeyStroke keyStroke;
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/sideview/SideViewInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.sideview;
2 |
3 | import javax.swing.*;
4 |
5 | /**
6 | * Creates one side view instance (one perspective) and the specific user interaction.
7 | */
8 | public interface SideViewInterface {
9 | JPanel build();
10 | int getSide();
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/sideview/toolbar1.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
13 |
16 |
19 |
23 |
24 |
27 |
30 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/sideview/toolbar2.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
13 |
16 |
19 |
23 |
24 |
27 |
30 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/sideview/toolbar3.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
9 |
12 |
13 |
16 |
19 |
23 |
24 |
27 |
30 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/texture/TextureManagerInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.content.texture;
2 |
3 | import javax.swing.*;
4 | import java.awt.*;
5 |
6 | /**
7 | * Manages the different Textures.
8 | */
9 | public interface TextureManagerInterface {
10 | JComponent build(Frame frame);
11 | }
12 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/content/texture/toolbar.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
6 |
10 |
14 |
18 |
22 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/ColorAdjusterLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.content.coloradjuster.ColorAdjusterViewInterface;
4 | import com.vitco.app.layout.frames.custom.CDockableFrame;
5 | import com.vitco.app.manager.action.types.StateActionPrototype;
6 | import com.vitco.app.util.misc.SaveResourceLoader;
7 |
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 |
11 | /**
12 | * construct the color adjuster frame
13 | */
14 | public class ColorAdjusterLinkage extends FrameLinkagePrototype {
15 |
16 | private ColorAdjusterViewInterface colorAdjuster;
17 | public void setColorAdjuster(ColorAdjusterViewInterface colorAdjuster) {
18 | this.colorAdjuster = colorAdjuster;
19 | }
20 |
21 | @Override
22 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
23 | // construct frame
24 | frame = new CDockableFrame(key,
25 | new SaveResourceLoader("resource/img/icons/frames/colorAdjuster.png").asIconImage(),
26 | langSelector
27 | );
28 | updateTitle(); // update the title
29 |
30 | frame.add(colorAdjuster.build(mainFrame));
31 |
32 | // register action to hide/show this frame and get visible state
33 | actionManager.registerAction("colorAdjuster_state-action_show", new StateActionPrototype() {
34 | @Override
35 | public boolean getStatus() {
36 | return frame.isVisible();
37 | }
38 |
39 | @Override
40 | public void action(ActionEvent e) {
41 | toggleVisible();
42 | }
43 | });
44 |
45 | return frame;
46 | }
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/ConsoleLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.content.console.ConsoleViewInterface;
4 | import com.vitco.app.layout.frames.custom.CDockableFrame;
5 | import com.vitco.app.manager.action.types.StateActionPrototype;
6 | import com.vitco.app.util.misc.SaveResourceLoader;
7 |
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 |
11 | /**
12 | * construct the console frame
13 | */
14 | public class ConsoleLinkage extends FrameLinkagePrototype {
15 |
16 | // var & setter
17 | private ConsoleViewInterface consoleView;
18 | public final void setConsoleView(ConsoleViewInterface consoleView) {
19 | this.consoleView = consoleView;
20 | }
21 |
22 | @Override
23 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
24 | // construct frame
25 | frame = new CDockableFrame(key,
26 | new SaveResourceLoader("resource/img/icons/frames/console.png").asIconImage() ,
27 | langSelector
28 | );
29 | updateTitle(); // update the title
30 |
31 | frame.add(consoleView.buildConsole(this));
32 |
33 | // register action to hide/show this frame and get visible state
34 | actionManager.registerAction("console_state-action_show", new StateActionPrototype() {
35 | @Override
36 | public boolean getStatus() {
37 | return frame.isVisible();
38 | }
39 |
40 | @Override
41 | public void action(ActionEvent e) {
42 | toggleVisible();
43 | }
44 | });
45 |
46 | return frame;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/LayerLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.content.layer.LayerViewInterface;
4 | import com.vitco.app.layout.frames.custom.CDockableFrame;
5 | import com.vitco.app.manager.action.types.StateActionPrototype;
6 | import com.vitco.app.util.misc.SaveResourceLoader;
7 |
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 |
11 | /**
12 | * displays layers and defines layer interaction
13 | */
14 | public class LayerLinkage extends FrameLinkagePrototype {
15 |
16 | // var & setter
17 | private LayerViewInterface layerView;
18 | public final void setLayerView(LayerViewInterface layerView) {
19 | this.layerView = layerView;
20 | }
21 |
22 | @Override
23 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
24 | // construct frame
25 | frame = new CDockableFrame(key,
26 | new SaveResourceLoader("resource/img/icons/frames/layer.png").asIconImage(),
27 | langSelector
28 | );
29 | updateTitle(); // update the title
30 |
31 | frame.add(layerView.build());
32 |
33 | // register action to hide/show this frame and get visible state
34 | actionManager.registerAction("layer_state-action_show", new StateActionPrototype() {
35 | @Override
36 | public boolean getStatus() {
37 | return frame.isVisible();
38 | }
39 |
40 | @Override
41 | public void action(ActionEvent e) {
42 | toggleVisible();
43 | }
44 | });
45 |
46 | return frame;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/PersonalLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.frames.custom.CDockableFrame;
4 | import com.vitco.app.manager.action.types.StateActionPrototype;
5 | import com.vitco.app.util.misc.SaveResourceLoader;
6 |
7 | import java.awt.*;
8 | import java.awt.event.ActionEvent;
9 |
10 | /**
11 | * construct personal frame (upload, etc)
12 | */
13 | public class PersonalLinkage extends FrameLinkagePrototype {
14 | @Override
15 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
16 | // construct frame
17 | frame = new CDockableFrame(key,
18 | new SaveResourceLoader("resource/img/icons/frames/personal.png").asIconImage(),
19 | langSelector
20 | );
21 | updateTitle(); // update the title
22 |
23 | // ...
24 |
25 | // register action to hide/show this frame and get visible state
26 | actionManager.registerAction("personal_state-action_show", new StateActionPrototype() {
27 | @Override
28 | public boolean getStatus() {
29 | return frame.isVisible();
30 | }
31 |
32 | @Override
33 | public void action(ActionEvent e) {
34 | toggleVisible();
35 | }
36 | });
37 |
38 | return frame;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/ShortcutManagerLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.content.shortcut.ShortcutManagerViewInterface;
4 | import com.vitco.app.layout.frames.custom.CDockableFrame;
5 | import com.vitco.app.manager.action.types.StateActionPrototype;
6 | import com.vitco.app.util.misc.SaveResourceLoader;
7 |
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 |
11 | /**
12 | * construct the shortcut manager frame
13 | */
14 | public class ShortcutManagerLinkage extends FrameLinkagePrototype {
15 |
16 | // var & setter (we only need the shortcutManager in this frame!)
17 | private ShortcutManagerViewInterface shortcutManagerView;
18 | public final void setShortcutManagerView(ShortcutManagerViewInterface shortcutManagerView) {
19 | this.shortcutManagerView = shortcutManagerView;
20 | }
21 |
22 | @Override
23 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
24 | // construct frame
25 | frame = new CDockableFrame(key,
26 | new SaveResourceLoader("resource/img/icons/frames/shortcutManager.png").asIconImage(),
27 | langSelector
28 | );
29 | updateTitle(); // update the title
30 |
31 | // add the tabbelPane to this frame that manages all the shortcuts
32 | frame.add(shortcutManagerView.getEditTables());
33 |
34 | // register action to show and hide this frame
35 | actionManager.registerAction("shortcut-mg_state-action_show", new StateActionPrototype() {
36 | @Override
37 | public boolean getStatus() {
38 | return frame.isVisible();
39 | }
40 |
41 | @Override
42 | public void action(ActionEvent e) {
43 | toggleVisible();
44 | }
45 | });
46 |
47 | return frame;
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/SideViewLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.content.sideview.SideViewInterface;
4 | import com.vitco.app.layout.frames.custom.CDockableFrame;
5 | import com.vitco.app.manager.action.types.StateActionPrototype;
6 | import com.vitco.app.util.misc.SaveResourceLoader;
7 |
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 |
11 | /**
12 | * construct a side view frame
13 | */
14 | public class SideViewLinkage extends FrameLinkagePrototype {
15 |
16 | // var & setter
17 | private SideViewInterface sideView;
18 | public final void setSideView(SideViewInterface sideView) {
19 | this.sideView = sideView;
20 | }
21 |
22 | @Override
23 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
24 | // construct frame
25 | frame = new CDockableFrame(key,
26 | new SaveResourceLoader("resource/img/icons/frames/sideView.png").asIconImage(),
27 | langSelector
28 | );
29 | updateTitle(); // update the title
30 |
31 | frame.add(sideView.build());
32 |
33 | // register action to hide/show this frame and get visible state
34 | actionManager.registerAction("side-view_state-action_show" + (sideView.getSide()+1), new StateActionPrototype() {
35 | @Override
36 | public boolean getStatus() {
37 | return frame.isVisible();
38 | }
39 |
40 | @Override
41 | public void action(ActionEvent e) {
42 | toggleVisible();
43 | }
44 | });
45 |
46 | return frame;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/SnapshotLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.frames.custom.CDockableFrame;
4 | import com.vitco.app.manager.action.types.StateActionPrototype;
5 | import com.vitco.app.util.misc.SaveResourceLoader;
6 |
7 | import java.awt.*;
8 | import java.awt.event.ActionEvent;
9 |
10 | /**
11 | * construct the time line frame
12 | */
13 | public class SnapshotLinkage extends FrameLinkagePrototype {
14 | @Override
15 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
16 | // construct frame
17 | frame = new CDockableFrame(key,
18 | new SaveResourceLoader("resource/img/icons/frames/snapshot.png").asIconImage(),
19 | langSelector
20 | );
21 | updateTitle(); // update the title
22 |
23 | // ...
24 |
25 | // register action to hide/show this frame and get visible state
26 | actionManager.registerAction("snapshot_state-action_show", new StateActionPrototype() {
27 | @Override
28 | public boolean getStatus() {
29 | return frame.isVisible();
30 | }
31 |
32 | @Override
33 | public void action(ActionEvent e) {
34 | toggleVisible();
35 | }
36 | });
37 |
38 | return frame;
39 | }
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/TextureManagerLinkage.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames;
2 |
3 | import com.vitco.app.layout.content.texture.TextureManagerInterface;
4 | import com.vitco.app.layout.frames.custom.CDockableFrame;
5 | import com.vitco.app.manager.action.types.StateActionPrototype;
6 | import com.vitco.app.util.misc.SaveResourceLoader;
7 |
8 | import java.awt.*;
9 | import java.awt.event.ActionEvent;
10 |
11 | /**
12 | * construct the texture manager frame
13 | */
14 | public class TextureManagerLinkage extends FrameLinkagePrototype {
15 |
16 | // var & setter
17 | private TextureManagerInterface textureManager;
18 | public final void setTextureManager(TextureManagerInterface textureManager) {
19 | this.textureManager = textureManager;
20 | }
21 |
22 | @Override
23 | public CDockableFrame buildFrame(String key, Frame mainFrame) {
24 | // construct frame
25 | frame = new CDockableFrame(key,
26 | new SaveResourceLoader("resource/img/icons/frames/textureManager.png").asIconImage(),
27 | langSelector
28 | );
29 | updateTitle(); // update the title
30 |
31 | frame.add(textureManager.build(mainFrame));
32 |
33 | // register action to hide/show this frame and get visible state
34 | actionManager.registerAction("textureManager_state-action_show", new StateActionPrototype() {
35 | @Override
36 | public boolean getStatus() {
37 | return frame.isVisible();
38 | }
39 |
40 | @Override
41 | public void action(ActionEvent e) {
42 | toggleVisible();
43 | }
44 | });
45 |
46 | return frame;
47 | }
48 | }
49 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/custom/FrameGenericJideButton.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.layout.frames.custom;
2 |
3 | import com.jidesoft.swing.JideButton;
4 |
5 | import javax.swing.*;
6 | import java.awt.*;
7 |
8 | public class FrameGenericJideButton extends JideButton {
9 |
10 | public void setIcon(String icon) {
11 | super.setIcon((Icon) UIManager.get(icon));
12 | }
13 |
14 | public FrameGenericJideButton(String name, String icon, String tooltip) {
15 | super();
16 | this.setName(name);
17 | this.setIcon(icon);
18 | this.setToolTipText(icon);
19 | this.setMargin(new Insets(5, 10, 5, 10));
20 | this.setContentAreaFilled(true);
21 | this.setFocusable(false);
22 | this.setToolTipText(tooltip);
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/layout/frames/toolbars/colorpalette.xml:
--------------------------------------------------------------------------------
1 |
2 |
3 |
8 |
9 |
12 |
15 |
16 |
19 |
22 |
25 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/CubeIndexerTest.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low;
2 |
3 | import org.junit.Test;
4 |
5 | /**
6 | * Test that the mapping is a bijection for the cube.
7 | */
8 | public class CubeIndexerTest {
9 |
10 | private static boolean testConversion(int x, int y, int z) {
11 | short[] pos = CubeIndexer.getPos(CubeIndexer.getId(new short[]{(short) x, (short) y, (short) z}));
12 | if (!(pos[0] == x && pos[1] == y && pos[2] == z)) {
13 | System.out.println(x + "," + y + "," + z);
14 | System.out.println(
15 | pos[0] + " == " + x + " && " + pos[1] + " == " + y + " && " + pos[2] + " == " + z
16 | );
17 | return false;
18 | }
19 | return true;
20 | }
21 |
22 | @Test
23 | public void testMapping() throws Exception {
24 |
25 | for (int i = 0; i< 10; i++) {
26 | testConversion(i,2,3);
27 | }
28 |
29 | testConversion(1,2,3);
30 | testConversion(-1,2,3);
31 | testConversion(1,-2,3);
32 | testConversion(1,2,-3);
33 | testConversion(1,-2,-3);
34 | testConversion(-1,2,-3);
35 | testConversion(-1,-2,3);
36 | testConversion(-1,-2,-3);
37 |
38 | short start = -CubeIndexer.radius;
39 | short stop = CubeIndexer.radius;
40 |
41 | for (short x = start; x < stop; x++) {
42 | for (short y = start; y < stop; y++) {
43 | for (short z = start; z < stop; z++) {
44 | assert testConversion(x, y, z);
45 | }
46 | }
47 | }
48 | }
49 |
50 | }
51 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/engine/Chunk.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.engine;
2 |
3 | /**
4 | * A chunk of voxel ( e.g. 32 ^ 3 )
5 | */
6 | public class Chunk {
7 | protected final static int CHUNK_SIZE = 32;
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/engine/Engine2.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.engine;
2 |
3 | import edu.princeton.cs.algs4.RedBlackBST;
4 |
5 | /**
6 | * Created by flux on 12/16/13.
7 | */
8 | public class Engine2 {
9 |
10 | private static final class Value {
11 | private final int id;
12 | private final int length;
13 |
14 | private Value(int id, int length) {
15 |
16 | this.id = id;
17 | this.length = length;
18 | }
19 | }
20 |
21 | private RedBlackBST redBlackBST = new RedBlackBST();
22 |
23 | // -----------------
24 |
25 | public final void add(int[][] xyzs, VoxelType type) {
26 | // Arrays.sort(xyzs, new Comparator() {
27 | // @Override
28 | // public int compare(int[] o1, int[] o2) {
29 | // int sign = Integer.compare(o1[1], o2[1]);
30 | // if (sign == 0) {
31 | // sign = Integer.compare(o1[2], o2[2]);
32 | // if (sign == 0) {
33 | // return Integer.compare(o1[0], o2[0]); // x difference
34 | // }
35 | // return sign; // z difference
36 | // }
37 | // return sign; // y difference
38 | // }
39 | // });
40 |
41 | // summarize runs and add them to the tree
42 | // ...
43 | }
44 |
45 | }
46 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/engine/VoxelManager.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.engine;
2 |
3 | /**
4 | * Manages all voxel types and can be instantiated to manage collection of voxel.
5 | */
6 | public class VoxelManager {
7 |
8 | //private static final HashMap<>
9 |
10 | }
11 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/engine/VoxelType.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.engine;
2 |
3 | import java.awt.*;
4 |
5 | /**
6 | * This describes a voxel type (i.e. a block with very specific properties).
7 | */
8 | public class VoxelType {
9 | protected int uId = 0;
10 | protected int usedCount = 0;
11 |
12 |
13 | // -----------------
14 |
15 |
16 | public final Color color;
17 |
18 | public VoxelType(Color color) {
19 | this.color = color;
20 | }
21 |
22 | @Override
23 | public boolean equals(Object o) {
24 | if (this == o) return true;
25 | if (o == null || getClass() != o.getClass()) return false;
26 |
27 | VoxelType voxelType = (VoxelType) o;
28 |
29 | return !(color != null ? !color.equals(voxelType.color) : voxelType.color != null);
30 |
31 | }
32 |
33 | @Override
34 | public int hashCode() {
35 | return color != null ? color.hashCode() : 0;
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/hull/HullManagerExtInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.hull;
2 |
3 | import com.threed.jpct.SimpleVector;
4 |
5 | /**
6 | * Interface - Extended functionality for the hull manager
7 | */
8 | public interface HullManagerExtInterface {
9 | // do a hit test against the voxels in this hull manager
10 | short[] hitTest(SimpleVector position, SimpleVector dir);
11 |
12 | // ==================
13 |
14 | // compute the "outside" of the described object
15 | boolean computeExterior();
16 |
17 | // fetch the "outside" face of the described object
18 | // into a specific direction.
19 | // Required computeExterior() to be called before working
20 | short[][] getExteriorHull(int direction);
21 |
22 | // fetch the "inside" faces of the described object
23 | // into a specific direction.
24 | // Required computeExterior() to be called before working
25 | short[][] getInteriorHull(int direction);
26 |
27 | // get the empty positions of voxels inside
28 | // Required computeExterior() to be called before working
29 | int[] getEmptyInterior();
30 |
31 | // get the voxel positions of voxels inside
32 | // Required computeExterior() to be called before working
33 | int[] getFilledInterior();
34 | }
35 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/hull/HullManagerInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.hull;
2 |
3 | import com.threed.jpct.SimpleVector;
4 | import gnu.trove.set.hash.TIntHashSet;
5 |
6 | import java.util.Set;
7 |
8 | /**
9 | * Interface - Efficient way to compute the hull for a group of
10 | * objects in 3D space (with short values as coordinates)
11 | *
12 | * At most one object is expected in any position at any given time.
13 | */
14 | public interface HullManagerInterface {
15 |
16 | void clear();
17 |
18 | boolean contains(short[] pos);
19 |
20 | boolean contains(int posId);
21 |
22 | boolean containsBorder(short[] pos, int orientation);
23 |
24 | boolean containsBorder(int posId, int orientation);
25 |
26 | int[] getPosIds();
27 |
28 | // obtain object by position
29 | T get(short[] pos);
30 |
31 | // add an object to the hull finder
32 | public void update(short[] pos, T object);
33 |
34 | // remove an object from this hull finder
35 | void update(int posId, T object);
36 |
37 | // remove an object from this hull finder
38 | public boolean clearPosition(short[] pos);
39 |
40 | // remove an object from this hull finder
41 | boolean clearPosition(int posId);
42 |
43 | // get the hull additions (in direction 0-5)
44 | Set getHullAdditions(int direction);
45 |
46 | // get the hull removals (in direction 0-5)
47 | Set getHullRemovals(int direction);
48 |
49 | // get the current hull
50 | short[][] getHull(int direction);
51 |
52 | // get the visible voxel ids
53 | TIntHashSet getVisibleVoxelsIds();
54 |
55 | // get the current hull as ids
56 | int[] getHullAsIds(int direction);
57 |
58 | // get the outline of all voxels into one direction
59 | SimpleVector[][] getOutline(int direction);
60 | }
61 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/hull/MinMaxTrackerTest.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.hull;
2 |
3 | import org.junit.Test;
4 |
5 | /**
6 | * Test the functionality.
7 | */
8 | public class MinMaxTrackerTest {
9 | @Test
10 | public void test() throws Exception {
11 | MinMaxTracker tracker = new MinMaxTracker();
12 |
13 | assert tracker.getMin() == Short.MAX_VALUE;
14 | assert tracker.getMax() == Short.MIN_VALUE;
15 |
16 | tracker.add((short) 1);
17 | tracker.add((short) 2);
18 | tracker.add((short) 3);
19 | tracker.add((short) 4);
20 |
21 | assert tracker.getMin() == 1;
22 | assert tracker.getMax() == 4;
23 |
24 | tracker.remove((short) 2);
25 | tracker.remove((short) 3);
26 |
27 | assert tracker.getMin() == 1;
28 | assert tracker.getMax() == 4;
29 |
30 | tracker.add((short) 2);
31 | tracker.add((short) 2);
32 | tracker.remove((short) 4);
33 | tracker.remove((short) 1);
34 |
35 | assert tracker.getMin() == 2;
36 | assert tracker.getMax() == 2;
37 |
38 | tracker.remove((short) 2);
39 |
40 | assert tracker.getMin() == 2;
41 | assert tracker.getMax() == 2;
42 |
43 | tracker.remove((short) 2);
44 |
45 | assert tracker.getMin() == Short.MAX_VALUE;
46 | assert tracker.getMax() == Short.MIN_VALUE;
47 |
48 | }
49 | }
50 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/triangulate/Grid2TriNaive.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.triangulate;
2 |
3 | import org.poly2tri.geometry.polygon.PolygonPoint;
4 | import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
5 |
6 | import java.util.ArrayList;
7 |
8 | /**
9 | * A naive triangulation that simply puts two triangles for every voxel side.
10 | */
11 | public class Grid2TriNaive {
12 |
13 | // compute the triangulation
14 | public static ArrayList triangulate(boolean[][] bits) {
15 | ArrayList result = new ArrayList();
16 | int lenY = bits[0].length;
17 | for (int x = 0; x < bits.length; x++) {
18 | for (int y = 0; y < lenY; y++) {
19 | if (bits[x][y]) {
20 | result.add(new DelaunayTriangle(new PolygonPoint(x, y), new PolygonPoint(x + 1, y), new PolygonPoint(x, y + 1)));
21 | result.add(new DelaunayTriangle(new PolygonPoint(x, y + 1), new PolygonPoint(x + 1, y), new PolygonPoint(x + 1, y + 1)));
22 | }
23 | }
24 | }
25 | return result;
26 | }
27 | }
28 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/triangulate/tests/TestGrid2TriGreedyOptimal.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.triangulate.tests;
2 |
3 | import com.vitco.app.low.triangulate.Grid2TriGreedyOptimal;
4 | import org.junit.Test;
5 | import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
6 |
7 | import java.io.IOException;
8 | import java.util.ArrayList;
9 |
10 | /**
11 | * Tests for Grid2TriGreedyOptimal
12 | */
13 | public class TestGrid2TriGreedyOptimal extends AbstractTriangulationTest {
14 |
15 | @Override
16 | ArrayList triangulate(boolean[][] data) {
17 | return Grid2TriGreedyOptimal.triangulate(data);
18 | }
19 |
20 | // do many tests and check against different conditions
21 | @Test
22 | public void testTriangulation() throws IOException {
23 | super.testTriangulation(1, 10000, false, false);
24 | }
25 |
26 | // do a test case
27 | @Test
28 | public void testTriangulationCase() throws IOException {
29 | super.testTriangulationCase("test.png", "out.png", 20, false);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/triangulate/tests/TestGrid2TriMono.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.triangulate.tests;
2 |
3 | import com.vitco.app.low.triangulate.Grid2TriMono;
4 | import org.junit.Test;
5 | import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
6 |
7 | import java.io.IOException;
8 | import java.util.ArrayList;
9 |
10 | /**
11 | * Test class for Grid2TriMono triangulation
12 | */
13 | public class TestGrid2TriMono extends AbstractTriangulationTest {
14 |
15 | @Override
16 | ArrayList triangulate(boolean[][] data) {
17 | return Grid2TriMono.triangulate(data, false);
18 | }
19 |
20 | // do many tests and check against different conditions
21 | @Test
22 | public void testTriangulation() throws IOException {
23 | super.testTriangulation(1, 10000, false, false);
24 | }
25 |
26 | // do a test case
27 | @Test
28 | public void testTriangulationCase() throws IOException {
29 | super.testTriangulationCase("test.png", "out.png", 20, false);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/triangulate/tests/TestGrid2TriMonoSave.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.triangulate.tests;
2 |
3 | import com.vitco.app.low.triangulate.Grid2TriMono;
4 | import org.junit.Test;
5 | import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
6 |
7 | import java.io.IOException;
8 | import java.util.ArrayList;
9 |
10 | /**
11 | * Test class for Grid2TriMono triangulation
12 | */
13 | public class TestGrid2TriMonoSave extends AbstractTriangulationTest {
14 |
15 | @Override
16 | ArrayList triangulate(boolean[][] data) {
17 | return Grid2TriMono.triangulate(data, true);
18 | }
19 |
20 | // do many tests and check against different conditions
21 | @Test
22 | public void testTriangulation() throws IOException {
23 | super.testTriangulation(1, 10000, false, true);
24 | }
25 |
26 | // do a test case
27 | @Test
28 | public void testTriangulationCase() throws IOException {
29 | super.testTriangulationCase("test.png", "out.png", 20, false);
30 | }
31 |
32 | }
33 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/triangulate/tests/TestGrid2TriNaiveGreedy.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.triangulate.tests;
2 |
3 | import com.vitco.app.low.triangulate.Grid2TriNaiveGreedy;
4 | import org.junit.Test;
5 | import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
6 |
7 | import java.io.IOException;
8 | import java.util.ArrayList;
9 |
10 | /**
11 | * Test class for Grid2TriNaiveGreedy
12 | */
13 | public class TestGrid2TriNaiveGreedy extends AbstractTriangulationTest {
14 |
15 | @Override
16 | ArrayList triangulate(boolean[][] data) {
17 | return Grid2TriNaiveGreedy.triangulate(data);
18 | }
19 |
20 | // do many tests and check against different conditions
21 | @Test
22 | public void testTriangulation() throws IOException {
23 | super.testTriangulation(1, 10000, false, false);
24 | }
25 |
26 | // do a test case
27 | @Test
28 | public void testTriangulationCase() throws IOException {
29 | super.testTriangulationCase("test.png", "out.png", 20, false);
30 | }
31 | }
32 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/low/triangulate/tests/TestGrid2TriPolyFast.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.low.triangulate.tests;
2 |
3 | import com.vitco.app.low.triangulate.Grid2TriPolyFast;
4 | import com.vitco.app.low.triangulate.util.Grid2PolyHelper;
5 | import org.junit.Test;
6 | import org.poly2tri.triangulation.delaunay.DelaunayTriangle;
7 |
8 | import java.io.IOException;
9 | import java.util.ArrayList;
10 |
11 | /**
12 | * - Testing Poly2Tri and in particular new conversion "voxel -> polygon" by doing in depth validation of created geometry.
13 | *
14 | * - Manual testing internal implementation against the external implementation of "voxel -> polygon".
15 | *
16 | */
17 | public class TestGrid2TriPolyFast extends AbstractTriangulationTest {
18 |
19 | @Override
20 | ArrayList triangulate(boolean[][] data) {
21 | return Grid2TriPolyFast.triangulate(Grid2PolyHelper.convert(data));
22 | }
23 |
24 | // do many tests and check against different conditions
25 | @Test
26 | public void testTriangulation() throws IOException {
27 | super.testTriangulation(1, 10000, false, true);
28 | }
29 |
30 | // do a test case
31 | @Test
32 | public void testTriangulationCase() throws IOException {
33 | super.testTriangulationCase("test.png", "out.png", 20, false);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/ActionGroupManagerInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action;
2 |
3 | import com.vitco.app.manager.action.types.StateActionPrototype;
4 |
5 | /**
6 | * Handles groups of actions that belong together and interfere with each other.
7 | *
8 | * E.g. pressing one tool button will unselect another.
9 | */
10 | public interface ActionGroupManagerInterface {
11 | // add to group
12 | void addAction(String groupName, String actionName, StateActionPrototype action);
13 |
14 | // refresh all action states
15 | void refreshGroup(String groupName);
16 |
17 | // register group actions
18 | void registerGroup(String groupName);
19 | }
20 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/ActionManager.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action;
2 |
3 | import javax.swing.*;
4 | import java.awt.event.ActionEvent;
5 |
6 | /**
7 | * maps strings to actions, allows for checks (unused actions, undeclared actions)
8 | */
9 | public class ActionManager extends ActionManagerPrototype {
10 | @Override
11 | protected AbstractAction getDummyAction(final String actionName) {
12 | return new AbstractAction() {
13 | @Override
14 | public final void actionPerformed(ActionEvent e) {
15 | System.out.println("Dummy Action \"" + actionName + "\"");
16 | }
17 | };
18 | }
19 |
20 | @Override
21 | protected String getClassName() {
22 | return "AbstractAction";
23 | }
24 | }
25 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/ActionManagerInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action;
2 |
3 | /**
4 | * maps strings to actions, allows for checks (unused actions, undeclared actions)
5 | */
6 | public interface ActionManagerInterface {
7 | // these methods are to detect errors!
8 | boolean performValidityCheck();
9 | void registerActionIsUsed(String key);
10 | // the core methods
11 | void registerAction(String key, T action);
12 | // get action for key
13 | T getAction(String key);
14 | // retrieve keys for an action
15 | String[] getActionKeys(T action);
16 |
17 | void performWhenActionIsReady(String action, Runnable thread);
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/ChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action;
2 |
3 | /**
4 | * So other objects can subscribe and get notified. Used by StateActionPrototype.
5 | */
6 | public interface ChangeListener {
7 | void actionFired(boolean status);
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/ComplexActionManager.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action;
2 |
3 | import javax.swing.*;
4 | import java.awt.*;
5 |
6 | /**
7 | * Manages complex actions, which are custom arrangements of components to execute complex actions.
8 | * These are usually shown in JideSplitButtons.
9 | */
10 | public class ComplexActionManager extends ActionManagerPrototype {
11 |
12 | @Override
13 | protected Component getDummyAction(String actionName) {
14 | return new JLabel("Complex Action Dummy: " + actionName);
15 | }
16 |
17 | @Override
18 | protected String getClassName() {
19 | return "Component";
20 | }
21 |
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/types/StateActionPrototype.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action.types;
2 |
3 | import com.vitco.app.manager.action.ChangeListener;
4 |
5 | import javax.swing.*;
6 | import java.awt.event.ActionEvent;
7 | import java.util.ArrayList;
8 |
9 | /**
10 | * This implements AbstractAction and can be queried for status (true or false)
11 | */
12 | public abstract class StateActionPrototype extends AbstractAction {
13 | // listener
14 | protected final ArrayList listener = new ArrayList();
15 | public final void addChangeListener(ChangeListener changeListener) {
16 | listener.add(changeListener); // add
17 | changeListener.actionFired(getStatus()); // update already directly
18 | }
19 |
20 | public final void refresh() {
21 | // now we notify all listeners
22 | boolean status = getStatus();
23 | for (ChangeListener actionListener : listener) {
24 | actionListener.actionFired(status);
25 | }
26 | }
27 |
28 | @Override
29 | public final void actionPerformed(ActionEvent e) {
30 | action(e); // first the custom action is executed
31 | refresh();
32 | }
33 |
34 | public abstract void action(ActionEvent e);
35 | public abstract boolean getStatus();
36 |
37 | public boolean isEnabled() {
38 | return getStatus();
39 | }
40 | public boolean isChecked() {
41 | return getStatus();
42 | }
43 | public boolean isVisible() {
44 | return getStatus();
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/action/types/SwitchActionPrototype.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.action.types;
2 |
3 | import javax.swing.*;
4 | import java.awt.event.ActionEvent;
5 |
6 | public abstract class SwitchActionPrototype extends AbstractAction {
7 |
8 | @Override
9 | public void actionPerformed(ActionEvent e) {
10 | switchOn();
11 | }
12 |
13 | public abstract void switchOn();
14 | public abstract void switchOff();
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/async/AsyncAction.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.async;
2 |
3 | /**
4 | * Action to be performed by AsyncActionManager
5 | */
6 | public abstract class AsyncAction implements Runnable {
7 |
8 | public abstract void performAction();
9 |
10 | @Override
11 | public final void run() {
12 | performAction();
13 | }
14 |
15 | // name of this AsyncAction
16 | public final String name;
17 |
18 | // can be overriden to delay execution of this AsyncAction
19 | public boolean ready() {
20 | return true;
21 | }
22 |
23 | // giving a name to an async action guarantees that
24 | // there are not a lot of delayed actions with the
25 | // same name queueing up in the AsyncActionManager
26 | // IMPORTANT: it doesn't enforce this for not delayed actions
27 | public AsyncAction(String name) {
28 | this.name = name;
29 | }
30 |
31 | // once this reaches Integer.MAX_VALUE it will reset to Integer.MIN_VALUE
32 | private static int c = 0;
33 |
34 | public AsyncAction() {
35 | synchronized (AsyncAction.class) {
36 | name = String.valueOf(c++);
37 | }
38 | }
39 |
40 | }
41 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/error/ErrorHandlerInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.error;
2 |
3 | import com.vitco.app.layout.content.console.ConsoleInterface;
4 | import com.vitco.app.manager.lang.LangSelectorInterface;
5 |
6 | /**
7 | * Deals with all the exceptions in the program. Writes them to file and tries to upload
8 | * them to a server.
9 | */
10 | public interface ErrorHandlerInterface extends Thread.UncaughtExceptionHandler {
11 | void handle(Throwable e);
12 | void setLangSelector(LangSelectorInterface langSelector);
13 | void setDebugReportUrl(String debugReportUrl);
14 | void setConsole(ConsoleInterface console);
15 | }
16 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/lang/LangSelector.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.lang;
2 |
3 | import com.vitco.app.util.misc.UTF8Control;
4 |
5 | import javax.annotation.PostConstruct;
6 | import java.util.Locale;
7 | import java.util.ResourceBundle;
8 |
9 | /*
10 | * Implementation of LangSelectorInterface
11 | *
12 | * Manages languages. We can set the language and country and the language bundle to be used.
13 | * A value for a key is obtained with getString. Init must be called when everything is set
14 | * correctly.
15 | */
16 |
17 | public final class LangSelector implements LangSelectorInterface {
18 | private String language;
19 | private String country;
20 | private ResourceBundle rb;
21 | private String defaultFile;
22 |
23 | @PostConstruct
24 | @Override
25 | public void init() {
26 | Locale locale = new Locale(language, country);
27 | rb = ResourceBundle.getBundle(defaultFile, locale, new UTF8Control());
28 | }
29 |
30 | @Override
31 | public final void setLanguageBundle(String filename) {
32 | this.defaultFile = filename;
33 | }
34 |
35 | @Override
36 | public final void setLanguage(String language) {
37 | this.language = language;
38 | }
39 |
40 | @Override
41 | public final void setCountry(String country) {
42 | this.country = country;
43 | }
44 |
45 | @Override
46 | public String getString(String key) {
47 | if (rb.containsKey(key)) {
48 | return rb.getString(key);
49 | } else {
50 | System.err.println("Error: There is no keyword \"" + key + "\" defined in the language bundle!");
51 | return "";
52 | }
53 | }
54 |
55 | @Override
56 | public boolean containsString(String key) {
57 | return rb.containsKey(key);
58 | }
59 | }
60 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/lang/LangSelectorInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.lang;
2 |
3 | /*
4 | * Interface
5 | *
6 | * Manages languages. We can set the language and country and the language bundle to be used.
7 | * A value for a key is obtained with getString. Init must be called when everything is set
8 | * correctly.
9 | */
10 |
11 | public interface LangSelectorInterface {
12 | void setLanguageBundle(String filename);
13 | void setLanguage(String language);
14 | void setCountry(String country);
15 | boolean containsString(String key);
16 | String getString(String key);
17 | void init();
18 | }
19 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/menu/MenuGeneratorInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.menu;
2 |
3 | import com.vitco.app.layout.content.shortcut.ShortcutManagerInterface;
4 | import com.vitco.app.manager.action.ActionManager;
5 | import com.vitco.app.manager.action.ComplexActionManager;
6 | import com.vitco.app.manager.error.ErrorHandlerInterface;
7 | import com.vitco.app.manager.lang.LangSelectorInterface;
8 |
9 | import javax.swing.*;
10 |
11 | /**
12 | * Generates menus from xml files and links actions to them (e.g. main menu, tool menu)
13 | */
14 | public interface MenuGeneratorInterface {
15 | public void setLangSelector(LangSelectorInterface langSel);
16 | public void setActionManager(ActionManager actionManager);
17 | public void buildMenuFromXML(JComponent jComponent, String xmlFile);
18 | public void setErrorHandler(ErrorHandlerInterface errorHandler);
19 |
20 | void setShortcutManager(ShortcutManagerInterface shortcutManager);
21 |
22 | void setComplexActionManager(ComplexActionManager complexActionManager);
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/pref/PrefChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.pref;
2 |
3 | /**
4 | * Called when a preference changes
5 | */
6 | public interface PrefChangeListener {
7 | void onPrefChange(Object newValue);
8 | }
9 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/pref/PreferencesInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.pref;
2 |
3 | import com.vitco.app.manager.error.ErrorHandlerInterface;
4 |
5 | /**
6 | * Stores & Loads preferences (Integer, String, Object)
7 | * Storing is executed after the PreDestroy of all the other objects.
8 | */
9 | public interface PreferencesInterface {
10 | public void storeInteger(String key, int value);
11 | public void storeString(String key, String value);
12 | public int loadInteger(String key);
13 | public String loadString(String key);
14 | public void setStorageFile(String filename);
15 | public void save();
16 | public void load();
17 | public Object loadObject(String key);
18 | public void storeObject(String key, Object value);
19 | public void setErrorHandler(ErrorHandlerInterface errorHandler);
20 | boolean contains(String key);
21 |
22 | void storeBoolean(String key, boolean value);
23 |
24 | boolean loadBoolean(String key);
25 |
26 | void addPrefChangeListener(String key, PrefChangeListener pcl);
27 |
28 | // Note: notification should take place in the order that the listener were added
29 | void notifyListeners(String key, Object value);
30 | }
31 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/thread/LifeTimeThread.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.thread;
2 |
3 |
4 | public abstract class LifeTimeThread extends Thread {
5 | // run the loop till interrupted
6 | public final void run() {
7 | try {
8 | //noinspection InfiniteLoopStatement
9 | while (!stopped) {
10 | loop();
11 | }
12 | } catch (InterruptedException ex) {
13 | Thread.currentThread().interrupt();
14 | }
15 | }
16 |
17 | private boolean stopped = false;
18 |
19 | // to interrupt the thread
20 | public final void stopThread() {
21 | stopped = true;
22 | interrupt();
23 | onAfterStop();
24 | }
25 |
26 | public void onAfterStop() {}
27 |
28 | public final boolean wasStopped() {
29 | return stopped;
30 | }
31 |
32 | // loop to be defines
33 | @SuppressWarnings("RedundantThrows")
34 | public abstract void loop() throws InterruptedException;
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/manager/thread/ThreadManagerInterface.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.manager.thread;
2 |
3 | import com.vitco.app.manager.action.ActionManager;
4 | import org.springframework.beans.factory.annotation.Autowired;
5 |
6 | import javax.annotation.PostConstruct;
7 |
8 | /**
9 | * Helps with creating threads.
10 | */
11 | public interface ThreadManagerInterface {
12 | // set the action handler
13 | @Autowired
14 | void setActionManager(ActionManager actionManager);
15 |
16 | void manage(LifeTimeThread thread);
17 |
18 | @PostConstruct
19 | void init();
20 |
21 | void remove(LifeTimeThread thread);
22 | }
23 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/DialogModuleChangeAdapter.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog;
2 |
3 | /**
4 | * Simple adapter for the DialogModuleStateListener
5 | */
6 | public abstract class DialogModuleChangeAdapter implements DialogModuleChangeListener {
7 | @Override
8 | public void onReadyStateChanged() {}
9 |
10 | @Override
11 | public void onContentChanged() {}
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/DialogModuleChangeListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog;
2 |
3 | /**
4 | * Called when the state of a module changes
5 | */
6 | public interface DialogModuleChangeListener {
7 | // called when the ready state of a component has changed
8 | // Note: this does propagate upwards
9 | void onReadyStateChanged();
10 | // called when the content has changed at run time (the component needs to call this!)
11 | // Note: this does propagate upwards
12 | void onContentChanged();
13 | }
14 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/UserInputDialogListener.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog;
2 |
3 | /**
4 | * Listener interface for the UserInputDialog that is
5 | * notified when the dialog is closed by the user.
6 | */
7 | public interface UserInputDialogListener {
8 | // called when the dialog closes (uses presses cancel or submit)
9 | // needs to return true if closing should be permitted
10 | // Note: The result is ignored if the resultFlag is equal to the cancel flag
11 | boolean onClose(int resultFlag);
12 | }
13 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/components/DialogButton.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog.components;
2 |
3 | import com.jidesoft.swing.ButtonStyle;
4 | import com.jidesoft.swing.JideButton;
5 |
6 | import java.awt.*;
7 |
8 | /**
9 | * Custom button that is used in the UserInputDialog.
10 | */
11 | public class DialogButton extends JideButton {
12 |
13 | // constructor
14 | public DialogButton(String caption) {
15 | super(caption);
16 | // disable focus
17 | setFocusable(false);
18 | // make sure the border is visible
19 | setButtonStyle(ButtonStyle.TOOLBOX_STYLE);
20 | // set the text-border distance
21 | setMargin(new Insets(3, 20, 3, 20));
22 | }
23 | }
24 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/components/FieldSet.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog.components;
2 |
3 | import com.vitco.app.util.components.dialog.BlankDialogModule;
4 |
5 | /**
6 | * FieldSet class
7 | *
8 | * A fieldSet instance is a set of BlankDialogModule object which can be used by
9 | * the user to enter information. The information can be accessed through
10 | * "getValue(id)" where "id" is the identifier of the corresponding object
11 | *
12 | * This object is used to group input elements together that belong
13 | * logically together and also display them together.
14 | */
15 | public class FieldSet extends BlankDialogModule {
16 |
17 | // caption of this fieldSet (for displaying purposes)
18 | private final String caption;
19 | protected final String getCaption() {
20 | return caption;
21 | }
22 | // -----------
23 |
24 | // constructor
25 | public FieldSet(String identifier, String caption) {
26 | super(identifier);
27 | this.caption = caption;
28 | }
29 |
30 | // add a component to this fieldSet
31 | public final void addComponent(BlankDialogModule component) {
32 | // register for value collection
33 | addModule(component, true);
34 | }
35 | }
36 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/components/FileSelectModule.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog.components;
2 |
3 | import com.vitco.app.util.components.dialog.BlankDialogModule;
4 | import com.vitco.app.util.file.FileTools;
5 |
6 | import java.awt.*;
7 | import java.io.File;
8 |
9 | /**
10 | * A module that can be used to select a file location.
11 | */
12 | public class FileSelectModule extends BlankDialogModule {
13 |
14 | // constructor
15 | public FileSelectModule(String identifier, File initTo, Frame owner) {
16 | super(identifier);
17 | // create the file select part
18 | addModule(new TextInputModule("file", "Name: ", initTo.isDirectory() ? "" : initTo.getName(), true), true);
19 | // create the folder select part
20 | addModule(new FolderSelectModule("folder", owner, initTo), true);
21 | }
22 |
23 | @Override
24 | public String getValue(String identifier) {
25 | // return the file that is currently selected
26 | return FileTools.ensureTrailingSeparator(super.getValue("folder")) + super.getValue("file");
27 | }
28 | }
29 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/components/LabelModule.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog.components;
2 |
3 | import com.jidesoft.swing.JideLabel;
4 | import com.vitco.app.util.components.dialog.BlankDialogModule;
5 |
6 | import javax.swing.*;
7 | import javax.swing.text.View;
8 | import java.awt.*;
9 |
10 | /**
11 | * A simple label module
12 | */
13 | public class LabelModule extends BlankDialogModule {
14 |
15 | private static final JLabel resizer = new JLabel();
16 |
17 | // Returns the preferred size to set a component at in order to render an html string.
18 | // Allows to specify the size of one dimension.
19 | public static Dimension getPreferredSize(String html, boolean width, int prefSize) {
20 | resizer.setText(html);
21 | View view = (View) resizer.getClientProperty(javax.swing.plaf.basic.BasicHTML.propertyKey);
22 | view.setSize(width ? prefSize : 0, width ? 0 : prefSize);
23 | float w = view.getPreferredSpan(View.X_AXIS);
24 | float h = view.getPreferredSpan(View.Y_AXIS);
25 | return new java.awt.Dimension((int) Math.ceil(w), (int) Math.ceil(h));
26 | }
27 |
28 | // constructor
29 | public LabelModule(String text) {
30 | super("");
31 | setLayout(new BorderLayout());
32 | JideLabel label = new JideLabel("" + text);
33 | this.add(label, BorderLayout.WEST);
34 | // set the size (so it is not dynamic!)
35 | // this is very important to have the height constant when the object is not rendered yet
36 | Dimension prefSize = getPreferredSize(label.getText(), true, 450);
37 | label.setPreferredSize(prefSize);
38 |
39 | }
40 |
41 | @Override
42 | public String getValue(String identifier) {
43 | // nothing to return
44 | return null;
45 | }
46 | }
47 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/components/LinkButton.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog.components;
2 |
3 | import com.jidesoft.swing.JideLabel;
4 | import com.vitco.app.layout.content.console.ConsoleInterface;
5 | import com.vitco.app.util.components.dialog.BlankDialogModule;
6 | import com.vitco.app.util.misc.UrlUtil;
7 |
8 | import javax.swing.*;
9 | import java.awt.*;
10 | import java.awt.event.MouseAdapter;
11 | import java.awt.event.MouseEvent;
12 |
13 | public class LinkButton extends BlankDialogModule {
14 | private final ConsoleInterface console;
15 |
16 | public LinkButton(ConsoleInterface console, String identifier, String caption, final String url) {
17 | super(identifier);
18 | this.console = console;
19 |
20 | JideLabel label = new JideLabel();
21 | label.setHorizontalAlignment(SwingConstants.RIGHT);
22 | label.setCursor(new Cursor(Cursor.HAND_CURSOR));
23 | label.setText("" + caption + "");
24 | label.setToolTipText(url);
25 | label.addMouseListener(new MouseAdapter() {
26 | @Override
27 | public void mouseClicked(MouseEvent e) {
28 | super.mouseClicked(e);
29 | open(url);
30 | }
31 | });
32 | this.setLayout(new BorderLayout());
33 | this.add(label, BorderLayout.CENTER);
34 | }
35 |
36 | private void open(String url) {
37 | UrlUtil.openURL(this.console, url);
38 | }
39 | }
40 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/dialog/components/SeparatorModule.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.dialog.components;
2 |
3 | import com.vitco.app.util.components.dialog.BlankDialogModule;
4 | import com.vitco.app.util.misc.FontUtil;
5 |
6 | import javax.swing.*;
7 | import javax.swing.border.TitledBorder;
8 | import java.awt.*;
9 |
10 | public class SeparatorModule extends BlankDialogModule {
11 |
12 | public SeparatorModule(String text) {
13 | super("hr");
14 | this.setLayout(new BorderLayout());
15 |
16 | JLabel jlabel = new JLabel(text);
17 | jlabel.setFont(FontUtil.getTitleFont(jlabel.getFont()));
18 | jlabel.setOpaque(true);
19 |
20 | JPanel panel = new JPanel();
21 | panel.setOpaque(false);
22 | panel.setBorder(BorderFactory.createEmptyBorder(0, 10, 0, 0));
23 | panel.setLayout(new BorderLayout());
24 | panel.add(jlabel, BorderLayout.WEST);
25 |
26 | this.add(panel, BorderLayout.CENTER);
27 | }
28 |
29 | // used to draw the border "manually"
30 | private final TitledBorder titledBorder = BorderFactory.createTitledBorder("");
31 |
32 | @Override
33 | public void paintComponent(Graphics g) {
34 | super.paintComponent(g);
35 | titledBorder.paintBorder(this, g, -100, 7, getWidth() + 200, 300);
36 | }
37 | }
38 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/progressbar/ProgressReporter.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.progressbar;
2 |
3 | import com.vitco.app.layout.content.console.ConsoleInterface;
4 |
5 | /**
6 | * Should be implemented by any class that lives inside a ProgressWorker
7 | * to report their status.
8 | */
9 | public abstract class ProgressReporter {
10 | // reference to the dialog that should be used for reporting.
11 | private final ProgressDialog dialog;
12 | // grant access to console for any progress reporter
13 | protected final ConsoleInterface console;
14 |
15 | // constructor
16 | public ProgressReporter(ProgressDialog dialog, ConsoleInterface console) {
17 | this.dialog = dialog;
18 | this.console = console;
19 | }
20 |
21 | // retrieve the progress dialog (useful for passing it on to further subclasses)
22 | public final ProgressDialog getProgressDialog() {
23 | return dialog;
24 | }
25 |
26 | // retrieve the progress dialog (useful for passing it on to further subclasses)
27 | public final ConsoleInterface getConsole() {
28 | return console;
29 | }
30 |
31 | // set the current activity and whether the progress should
32 | // be automatically increased (for fast tasks only)
33 | public final void setActivity(String activity, boolean autoIncrease) {
34 | dialog.setActivity(activity, autoIncrease);
35 | }
36 |
37 | // returns true if the task is canceled (this needs to be checked by the task doing the work)
38 | public final boolean isCancelled() {
39 | return dialog.isCancelled();
40 | }
41 |
42 | // set the progress status
43 | public final void setProgress(float percent) {
44 | dialog.setProgress(percent);
45 | }
46 |
47 | }
48 |
--------------------------------------------------------------------------------
/src/main/java/com/vitco/app/util/components/progressbar/ProgressWorker.java:
--------------------------------------------------------------------------------
1 | package com.vitco.app.util.components.progressbar;
2 |
3 | import javax.swing.*;
4 |
5 | /**
6 | * A worker thread that encapsulates a task handled by a ProgressDialog.
7 | */
8 | public abstract class ProgressWorker extends SwingWorker