├── .circleci └── config.yml ├── .github └── ISSUE_TEMPLATE │ └── bug_report.md ├── .gitignore ├── CMakeLists.txt ├── CONTRIBUTING.md ├── PULL_REQUEST_TEMPLATE.md ├── README.md ├── benchmark ├── CMakeLists.txt └── main.cpp ├── documentation.json ├── interface ├── CMakeLists.txt ├── cli │ ├── AlignParser.cpp │ ├── CommandParser.cpp │ ├── CommandParser.hpp │ ├── ComparatorParser.cpp │ ├── Parsers.hpp │ ├── Parsing.hpp │ ├── Processor.cpp │ ├── Processor.hpp │ └── RenderParser.cpp ├── gui │ ├── AlignMethodSelector.cpp │ ├── AlignMethodSelector.hpp │ ├── ExceptionCatcher.cpp │ ├── ExceptionCatcher.hpp │ ├── ExceptionCatcher.ui │ ├── FullscreenViewer.cpp │ ├── FullscreenViewer.hpp │ ├── ImagesModel.cpp │ ├── ImagesModel.hpp │ ├── MaskModel.cpp │ ├── MaskModel.hpp │ ├── ProgressWatcher.hpp │ ├── Spinbox2D.hpp │ ├── configs │ │ ├── AConfig.hpp │ │ ├── AlignerConfigs.cpp │ │ ├── AlignerConfigs.hpp │ │ ├── AlignerConfigsInternal.hpp │ │ ├── ComparatorConfigs.cpp │ │ ├── ComparatorConfigs.hpp │ │ ├── ComparatorConfigsInternal.hpp │ │ ├── ConfigChooser.hpp │ │ ├── RenderConfigs.cpp │ │ ├── RenderConfigs.hpp │ │ ├── RenderConfigsInternal.hpp │ │ └── imagealigner.ui │ ├── importers │ │ ├── VideoImporter.cpp │ │ ├── VideoImporter.hpp │ │ ├── VideoImporter.ui │ │ ├── VideoPreviewModel.cpp │ │ └── VideoPreviewModel.hpp │ ├── mainwindow.cpp │ ├── mainwindow.hpp │ ├── mainwindow.ui │ ├── processors │ │ ├── AProcessor.cpp │ │ ├── AProcessor.hpp │ │ ├── AProcessorFactory.cpp │ │ ├── AProcessorFactory.hpp │ │ ├── ProcessBinarize.cpp │ │ ├── ProcessBinarize.hpp │ │ ├── ProcessBinarizeAdaptive.cpp │ │ ├── ProcessBinarizeAdaptive.hpp │ │ ├── ProcessBlur.cpp │ │ ├── ProcessBlur.hpp │ │ ├── ProcessColor.cpp │ │ ├── ProcessColor.hpp │ │ ├── ProcessCrop.cpp │ │ ├── ProcessCrop.hpp │ │ ├── ProcessDeVlc.cpp │ │ ├── ProcessDeVlc.hpp │ │ ├── ProcessDeconvolve.cpp │ │ ├── ProcessDeconvolve.hpp │ │ ├── ProcessDilate.cpp │ │ ├── ProcessDilate.hpp │ │ ├── ProcessDither.cpp │ │ ├── ProcessDither.hpp │ │ ├── ProcessEdge.cpp │ │ ├── ProcessEdge.hpp │ │ ├── ProcessInpaint.cpp │ │ ├── ProcessInpaint.hpp │ │ ├── ProcessLevels.cpp │ │ ├── ProcessLevels.hpp │ │ ├── ProcessMosaic.cpp │ │ ├── ProcessMosaic.hpp │ │ ├── ProcessScale.cpp │ │ ├── ProcessScale.hpp │ │ ├── ProcessSteam.cpp │ │ ├── ProcessSteam.hpp │ │ ├── ProcessWaifu.cpp │ │ ├── ProcessWaifu.hpp │ │ ├── ProcessorList.cpp │ │ └── ProcessorList.hpp │ ├── qdarkstyle │ │ ├── README.rst │ │ └── dark │ │ │ ├── rc │ │ │ ├── .keep │ │ │ ├── arrow_down.png │ │ │ ├── arrow_down@2x.png │ │ │ ├── arrow_down_disabled.png │ │ │ ├── arrow_down_disabled@2x.png │ │ │ ├── arrow_down_focus.png │ │ │ ├── arrow_down_focus@2x.png │ │ │ ├── arrow_down_pressed.png │ │ │ ├── arrow_down_pressed@2x.png │ │ │ ├── arrow_left.png │ │ │ ├── arrow_left@2x.png │ │ │ ├── arrow_left_disabled.png │ │ │ ├── arrow_left_disabled@2x.png │ │ │ ├── arrow_left_focus.png │ │ │ ├── arrow_left_focus@2x.png │ │ │ ├── arrow_left_pressed.png │ │ │ ├── arrow_left_pressed@2x.png │ │ │ ├── arrow_right.png │ │ │ ├── arrow_right@2x.png │ │ │ ├── arrow_right_disabled.png │ │ │ ├── arrow_right_disabled@2x.png │ │ │ ├── arrow_right_focus.png │ │ │ ├── arrow_right_focus@2x.png │ │ │ ├── arrow_right_pressed.png │ │ │ ├── arrow_right_pressed@2x.png │ │ │ ├── arrow_up.png │ │ │ ├── arrow_up@2x.png │ │ │ ├── arrow_up_disabled.png │ │ │ ├── arrow_up_disabled@2x.png │ │ │ ├── arrow_up_focus.png │ │ │ ├── arrow_up_focus@2x.png │ │ │ ├── arrow_up_pressed.png │ │ │ ├── arrow_up_pressed@2x.png │ │ │ ├── base_icon.png │ │ │ ├── base_icon@2x.png │ │ │ ├── base_icon_disabled.png │ │ │ ├── base_icon_disabled@2x.png │ │ │ ├── base_icon_focus.png │ │ │ ├── base_icon_focus@2x.png │ │ │ ├── base_icon_pressed.png │ │ │ ├── base_icon_pressed@2x.png │ │ │ ├── branch_closed.png │ │ │ ├── branch_closed@2x.png │ │ │ ├── branch_closed_disabled.png │ │ │ ├── branch_closed_disabled@2x.png │ │ │ ├── branch_closed_focus.png │ │ │ ├── branch_closed_focus@2x.png │ │ │ ├── branch_closed_pressed.png │ │ │ ├── branch_closed_pressed@2x.png │ │ │ ├── branch_end.png │ │ │ ├── branch_end@2x.png │ │ │ ├── branch_end_disabled.png │ │ │ ├── branch_end_disabled@2x.png │ │ │ ├── branch_end_focus.png │ │ │ ├── branch_end_focus@2x.png │ │ │ ├── branch_end_pressed.png │ │ │ ├── branch_end_pressed@2x.png │ │ │ ├── branch_line.png │ │ │ ├── branch_line@2x.png │ │ │ ├── branch_line_disabled.png │ │ │ ├── branch_line_disabled@2x.png │ │ │ ├── branch_line_focus.png │ │ │ ├── branch_line_focus@2x.png │ │ │ ├── branch_line_pressed.png │ │ │ ├── branch_line_pressed@2x.png │ │ │ ├── branch_more.png │ │ │ ├── branch_more@2x.png │ │ │ ├── branch_more_disabled.png │ │ │ ├── branch_more_disabled@2x.png │ │ │ ├── branch_more_focus.png │ │ │ ├── branch_more_focus@2x.png │ │ │ ├── branch_more_pressed.png │ │ │ ├── branch_more_pressed@2x.png │ │ │ ├── branch_open.png │ │ │ ├── branch_open@2x.png │ │ │ ├── branch_open_disabled.png │ │ │ ├── branch_open_disabled@2x.png │ │ │ ├── branch_open_focus.png │ │ │ ├── branch_open_focus@2x.png │ │ │ ├── branch_open_pressed.png │ │ │ ├── branch_open_pressed@2x.png │ │ │ ├── checkbox_checked.png │ │ │ ├── checkbox_checked@2x.png │ │ │ ├── checkbox_checked_disabled.png │ │ │ ├── checkbox_checked_disabled@2x.png │ │ │ ├── checkbox_checked_focus.png │ │ │ ├── checkbox_checked_focus@2x.png │ │ │ ├── checkbox_checked_pressed.png │ │ │ ├── checkbox_checked_pressed@2x.png │ │ │ ├── checkbox_indeterminate.png │ │ │ ├── checkbox_indeterminate@2x.png │ │ │ ├── checkbox_indeterminate_disabled.png │ │ │ ├── checkbox_indeterminate_disabled@2x.png │ │ │ ├── checkbox_indeterminate_focus.png │ │ │ ├── checkbox_indeterminate_focus@2x.png │ │ │ ├── checkbox_indeterminate_pressed.png │ │ │ ├── checkbox_indeterminate_pressed@2x.png │ │ │ ├── checkbox_unchecked.png │ │ │ ├── checkbox_unchecked@2x.png │ │ │ ├── checkbox_unchecked_disabled.png │ │ │ ├── checkbox_unchecked_disabled@2x.png │ │ │ ├── checkbox_unchecked_focus.png │ │ │ ├── checkbox_unchecked_focus@2x.png │ │ │ ├── checkbox_unchecked_pressed.png │ │ │ ├── checkbox_unchecked_pressed@2x.png │ │ │ ├── line_horizontal.png │ │ │ ├── line_horizontal@2x.png │ │ │ ├── line_horizontal_disabled.png │ │ │ ├── line_horizontal_disabled@2x.png │ │ │ ├── line_horizontal_focus.png │ │ │ ├── line_horizontal_focus@2x.png │ │ │ ├── line_horizontal_pressed.png │ │ │ ├── line_horizontal_pressed@2x.png │ │ │ ├── line_vertical.png │ │ │ ├── line_vertical@2x.png │ │ │ ├── line_vertical_disabled.png │ │ │ ├── line_vertical_disabled@2x.png │ │ │ ├── line_vertical_focus.png │ │ │ ├── line_vertical_focus@2x.png │ │ │ ├── line_vertical_pressed.png │ │ │ ├── line_vertical_pressed@2x.png │ │ │ ├── radio_checked.png │ │ │ ├── radio_checked@2x.png │ │ │ ├── radio_checked_disabled.png │ │ │ ├── radio_checked_disabled@2x.png │ │ │ ├── radio_checked_focus.png │ │ │ ├── radio_checked_focus@2x.png │ │ │ ├── radio_checked_pressed.png │ │ │ ├── radio_checked_pressed@2x.png │ │ │ ├── radio_unchecked.png │ │ │ ├── radio_unchecked@2x.png │ │ │ ├── radio_unchecked_disabled.png │ │ │ ├── radio_unchecked_disabled@2x.png │ │ │ ├── radio_unchecked_focus.png │ │ │ ├── radio_unchecked_focus@2x.png │ │ │ ├── radio_unchecked_pressed.png │ │ │ ├── radio_unchecked_pressed@2x.png │ │ │ ├── toolbar_move_horizontal.png │ │ │ ├── toolbar_move_horizontal@2x.png │ │ │ ├── toolbar_move_horizontal_disabled.png │ │ │ ├── toolbar_move_horizontal_disabled@2x.png │ │ │ ├── toolbar_move_horizontal_focus.png │ │ │ ├── toolbar_move_horizontal_focus@2x.png │ │ │ ├── toolbar_move_horizontal_pressed.png │ │ │ ├── toolbar_move_horizontal_pressed@2x.png │ │ │ ├── toolbar_move_vertical.png │ │ │ ├── toolbar_move_vertical@2x.png │ │ │ ├── toolbar_move_vertical_disabled.png │ │ │ ├── toolbar_move_vertical_disabled@2x.png │ │ │ ├── toolbar_move_vertical_focus.png │ │ │ ├── toolbar_move_vertical_focus@2x.png │ │ │ ├── toolbar_move_vertical_pressed.png │ │ │ ├── toolbar_move_vertical_pressed@2x.png │ │ │ ├── toolbar_separator_horizontal.png │ │ │ ├── toolbar_separator_horizontal@2x.png │ │ │ ├── toolbar_separator_horizontal_disabled.png │ │ │ ├── toolbar_separator_horizontal_disabled@2x.png │ │ │ ├── toolbar_separator_horizontal_focus.png │ │ │ ├── toolbar_separator_horizontal_focus@2x.png │ │ │ ├── toolbar_separator_horizontal_pressed.png │ │ │ ├── toolbar_separator_horizontal_pressed@2x.png │ │ │ ├── toolbar_separator_vertical.png │ │ │ ├── toolbar_separator_vertical@2x.png │ │ │ ├── toolbar_separator_vertical_disabled.png │ │ │ ├── toolbar_separator_vertical_disabled@2x.png │ │ │ ├── toolbar_separator_vertical_focus.png │ │ │ ├── toolbar_separator_vertical_focus@2x.png │ │ │ ├── toolbar_separator_vertical_pressed.png │ │ │ ├── toolbar_separator_vertical_pressed@2x.png │ │ │ ├── transparent.png │ │ │ ├── transparent@2x.png │ │ │ ├── transparent_disabled.png │ │ │ ├── transparent_disabled@2x.png │ │ │ ├── transparent_focus.png │ │ │ ├── transparent_focus@2x.png │ │ │ ├── transparent_pressed.png │ │ │ ├── transparent_pressed@2x.png │ │ │ ├── window_close.png │ │ │ ├── window_close@2x.png │ │ │ ├── window_close_disabled.png │ │ │ ├── window_close_disabled@2x.png │ │ │ ├── window_close_focus.png │ │ │ ├── window_close_focus@2x.png │ │ │ ├── window_close_pressed.png │ │ │ ├── window_close_pressed@2x.png │ │ │ ├── window_grip.png │ │ │ ├── window_grip@2x.png │ │ │ ├── window_grip_disabled.png │ │ │ ├── window_grip_disabled@2x.png │ │ │ ├── window_grip_focus.png │ │ │ ├── window_grip_focus@2x.png │ │ │ ├── window_grip_pressed.png │ │ │ ├── window_grip_pressed@2x.png │ │ │ ├── window_minimize.png │ │ │ ├── window_minimize@2x.png │ │ │ ├── window_minimize_disabled.png │ │ │ ├── window_minimize_disabled@2x.png │ │ │ ├── window_minimize_focus.png │ │ │ ├── window_minimize_focus@2x.png │ │ │ ├── window_minimize_pressed.png │ │ │ ├── window_minimize_pressed@2x.png │ │ │ ├── window_undock.png │ │ │ ├── window_undock@2x.png │ │ │ ├── window_undock_disabled.png │ │ │ ├── window_undock_disabled@2x.png │ │ │ ├── window_undock_focus.png │ │ │ ├── window_undock_focus@2x.png │ │ │ ├── window_undock_pressed.png │ │ │ └── window_undock_pressed@2x.png │ │ │ ├── style.qrc │ │ │ └── style.qss │ ├── savers │ │ ├── ASaver.hpp │ │ ├── DumpSaver.cpp │ │ ├── DumpSaver.hpp │ │ └── DumpSaver.ui │ ├── viewer │ │ ├── CMakeLists.txt │ │ ├── Orientation.hpp │ │ ├── ZoomBox.cpp │ │ ├── ZoomBox.hpp │ │ ├── colorManager.cpp │ │ ├── colorManager.h │ │ ├── imageCache.cpp │ │ ├── imageCache.h │ │ ├── imageViewer.cpp │ │ ├── imageViewer.h │ │ ├── qrect_extras.cpp │ │ ├── qrect_extras.h │ │ └── settings │ │ │ ├── Setting.h │ │ │ └── ViewerSettings.h │ └── visualisations │ │ ├── AnimatorUI.cpp │ │ ├── AnimatorUI.hpp │ │ ├── AnimatorUI.ui │ │ ├── MovementGraph.cpp │ │ ├── MovementGraph.hpp │ │ ├── SkipRenderPreview.cpp │ │ └── SkipRenderPreview.hpp ├── main-cli.cpp ├── main.cpp └── qcustomplot │ ├── GPL.txt │ ├── qcustomplot.cpp │ └── qcustomplot.h ├── license.txt ├── src ├── ARenderPipe.hpp ├── CMakeLists.txt ├── Deteleciner.cpp ├── Deteleciner.hpp ├── Geometry.hpp ├── MultiPlaneIterator.cpp ├── MultiPlaneIterator.hpp ├── RenderOperations.hpp ├── aligners │ ├── AAligner.hpp │ ├── AnimationSaver.cpp │ ├── AnimationSaver.hpp │ ├── AnimationSeparator.cpp │ ├── AnimationSeparator.hpp │ ├── AverageAligner.cpp │ ├── AverageAligner.hpp │ ├── ClusterAligner.cpp │ ├── ClusterAligner.hpp │ ├── FakeAligner.hpp │ ├── FrameAligner.cpp │ ├── FrameAligner.hpp │ ├── FrameCalculatorAligner.hpp │ ├── IndependentAligner.cpp │ ├── IndependentAligner.hpp │ ├── LinearAligner.cpp │ ├── LinearAligner.hpp │ ├── NearestFrameAligner.cpp │ ├── NearestFrameAligner.hpp │ ├── RecursiveAligner.cpp │ ├── RecursiveAligner.hpp │ ├── SuperResAligner.cpp │ └── SuperResAligner.hpp ├── color.cpp ├── color.hpp ├── comparators │ ├── AComparator.cpp │ ├── AComparator.hpp │ ├── BruteForceComparator.cpp │ ├── BruteForceComparator.hpp │ ├── GradientComparator.cpp │ ├── GradientComparator.hpp │ ├── GradientPlane.cpp │ ├── GradientPlane.hpp │ ├── LogPolarComparator.cpp │ ├── LogPolarComparator.hpp │ ├── MultiScaleComparator.cpp │ ├── MultiScaleComparator.hpp │ └── SimpleComparatorBase.hpp ├── containers │ ├── AContainer.cpp │ ├── AContainer.hpp │ ├── DelegatedContainer.hpp │ ├── FrameContainer.hpp │ ├── ImageContainer.cpp │ ├── ImageContainer.hpp │ ├── ImageContainerSaver.cpp │ ├── ImageContainerSaver.hpp │ └── ImageGroup.hpp ├── debug.cpp ├── debug.hpp ├── degraders │ ├── JpegDegrader.cpp │ └── JpegDegrader.hpp ├── gpu │ ├── GpuBuffer.cpp │ ├── GpuBuffer.hpp │ ├── GpuCommandBuffer.hpp │ ├── GpuCommandEncoder.hpp │ ├── GpuComputePass.hpp │ ├── GpuDevice.cpp │ ├── GpuDevice.hpp │ ├── GpuHandle.hpp │ ├── GpuInstance.cpp │ ├── GpuInstance.hpp │ ├── GpuPlane.cpp │ ├── GpuPlane.hpp │ └── GpuQueue.hpp ├── planes │ ├── ColorSpace.cpp │ ├── ColorSpace.hpp │ ├── DistanceMatrix.cpp │ ├── DistanceMatrix.hpp │ ├── FourierPlane.cpp │ ├── FourierPlane.hpp │ ├── ImageEx-dump.cpp │ ├── ImageEx-jpeg.cpp │ ├── ImageEx-libraw.cpp │ ├── ImageEx-png.cpp │ ├── ImageEx-qimage.cpp │ ├── ImageEx.cpp │ ├── ImageEx.hpp │ ├── JpegImage.cpp │ ├── JpegImage.hpp │ ├── JpegWrapper.hpp │ ├── PatternRemove.cpp │ ├── PatternRemove.hpp │ ├── Plane-binarize.cpp │ ├── Plane-blurring.cpp │ ├── Plane-edgedetection.cpp │ ├── Plane-pixel.cpp │ ├── Plane-scaling.cpp │ ├── Plane.cpp │ ├── Plane.hpp │ ├── PlaneBase.hpp │ ├── PlaneExcept.cpp │ ├── PlaneExcept.hpp │ ├── PorterDuff.cpp │ ├── PorterDuff.hpp │ ├── basic │ │ ├── difference.cpp │ │ ├── difference.hpp │ │ ├── distributions.hpp │ │ ├── interpolation.hpp │ │ ├── logpolar.cpp │ │ ├── logpolar.hpp │ │ ├── rotation.cpp │ │ └── rotation.hpp │ ├── dump │ │ ├── DumpPlane.cpp │ │ └── DumpPlane.hpp │ ├── gwenview │ │ ├── iodevicejpegsourcemanager.cpp │ │ └── iodevicejpegsourcemanager.h │ └── manipulators │ │ ├── Inpaint.cpp │ │ ├── Inpaint.hpp │ │ ├── Mosaic.cpp │ │ ├── Mosaic.hpp │ │ ├── Steam.cpp │ │ ├── Steam.hpp │ │ ├── Waifu.cpp │ │ └── Waifu.hpp ├── renders │ ├── ARender.hpp │ ├── AnimRender.cpp │ ├── AnimRender.hpp │ ├── AverageRender.cpp │ ├── AverageRender.hpp │ ├── DiffRender.cpp │ ├── DiffRender.hpp │ ├── DistanceMatrixRender.cpp │ ├── DistanceMatrixRender.hpp │ ├── EstimatorRender.cpp │ ├── EstimatorRender.hpp │ ├── FastRender.cpp │ ├── FastRender.hpp │ ├── FloatRender.cpp │ ├── FloatRender.hpp │ ├── FocusStackingRender.cpp │ ├── FocusStackingRender.hpp │ ├── JpegConstrainerRender.cpp │ ├── JpegConstrainerRender.hpp │ ├── JpegRender.cpp │ ├── JpegRender.hpp │ ├── PlaneRender.cpp │ ├── PlaneRender.hpp │ ├── RobustSrRender.cpp │ ├── RobustSrRender.hpp │ ├── StatisticsRender.cpp │ └── StatisticsRender.hpp ├── utils │ ├── AProcessWatcher.hpp │ ├── Animator.cpp │ ├── Animator.hpp │ ├── ImageLoader.cpp │ ├── ImageLoader.hpp │ ├── PlaneUtils.hpp │ ├── SRSampleCreator.cpp │ ├── SRSampleCreator.hpp │ └── utils.hpp └── video │ ├── Video.cpp │ ├── Video.hpp │ ├── VideoFrame.cpp │ ├── VideoFrame.hpp │ ├── VideoStream.cpp │ └── VideoStream.hpp ├── tests ├── .gitignore └── src │ ├── TestGeometry.cpp │ ├── TestGeometry.hpp │ ├── TestPlane.cpp │ ├── TestPlane.hpp │ └── main.cpp ├── trainer ├── CMakeLists.txt ├── ConfusionMatrix.hpp ├── MainWindow.cpp ├── MainWindow.hpp ├── Slide.cpp ├── Slide.hpp ├── SlideModel.hpp └── main.cpp └── utils ├── compare_aligns.py ├── get_ffmpeg_cmd.py └── tester └── main.cpp /.circleci/config.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | jobs: 3 | build: 4 | docker: 5 | - image: gcc:latest 6 | steps: 7 | - checkout 8 | - run: apt-get update 9 | - run: 10 | name: Install dependencies 11 | command: apt-get install -y cmake libavcodec-dev libavformat-dev libavutil-dev qtbase5-dev libqcustomplot-dev liblcms2-dev libpugixml-dev libfftw3-dev libjpeg-dev libpng-dev liblzma-dev libqt5x11extras5-dev libboost-dev libeigen3-dev libx11-xcb-dev libxcb-util0-dev libpng++-dev libraw-dev unzip 12 | - run: 13 | name: Install wgpu-native 14 | command: wget https://github.com/gfx-rs/wgpu-native/releases/download/v0.19.4.1/wgpu-linux-x86_64-release.zip 15 | - run: mkdir wgpu 16 | - run: 17 | name: Extract wgpu-native 18 | command: unzip wgpu-linux-x86_64-release.zip -d wgpu/webgpu 19 | - run: 20 | name: Setup build folder 21 | command: mkdir -p build 22 | - run: 23 | name: Configure project for Release 24 | command: cd build && cmake .. -DCMAKE_BUILD_TYPE=RELEASE -DWEBGPU_LIBRARY=../wgpu/webgpu/libwgpu_native.a -DWEBGPU_INCLUDE_DIR=../wgpu 25 | - run: 26 | name: Compile project 27 | command: cd build && make -------------------------------------------------------------------------------- /.github/ISSUE_TEMPLATE/bug_report.md: -------------------------------------------------------------------------------- 1 | --- 2 | name: Bug report 3 | about: Create a report to help us improve 4 | 5 | --- 6 | 7 | **Describe the bug** 8 | A clear and concise description of what the issue is and what you expected to happen. 9 | 10 | **How To Reproduce** 11 | If possible, include a link to the images you are trying to stitch, that makes it much easier. If the application crashes, describe the steps to replicate the crash. If the resulting image is unsatisfactory, please attach that image to the issue. 12 | 13 | **Useful information:** 14 | - Which OS you are on, i.e. Windows or Linux 15 | - The version of Overmix you are using 16 | - How much RAM your computer has 17 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | Makefile 2 | *.Debug 3 | *.Release 4 | /out 5 | *.pro.user 6 | 7 | build 8 | debug 9 | profile 10 | release 11 | */debug 12 | */release 13 | */*/debug 14 | */*/release 15 | 16 | docs 17 | 18 | .kdev4/* 19 | *.kate-swp 20 | **/.directory 21 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | ### How to contribute 2 | 3 | Even if you know nothing about programming, there are several ways to contribute: 4 | 5 | - If it currently does not solve all your needs, make a feature request on the [issue tracker](https://github.com/spillerrec/Overmix/issues), or comment on an existing one. 6 | - If you fail to stitch an image properly, create an issue and share a link to the input images. Either I can help find you the right settings, or identify a current limitation of Overmix. 7 | - If you can't figure out how to use some part of the program even after checking the wiki (or even it was just difficult), create an issue/bug report. This mean that either the interface is not intuitive enough, documentation is lacking, or the documentation is not clear enough. 8 | -------------------------------------------------------------------------------- /PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | Please include a short description of the included changes. 2 | If there still is work to do, then please describe what is missing. 3 | Also reference any relevant issues if applicable. 4 | -------------------------------------------------------------------------------- /benchmark/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.0) 2 | project(Overmix) 3 | 4 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") # Enable C++14 features 5 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") # Turn on warnings 6 | 7 | set(SOURCE_BENCHMARK 8 | main.cpp 9 | ) 10 | 11 | add_executable(OvermixBenchmark ${SOURCE_BENCHMARK}) 12 | 13 | # Set-up libraries 14 | find_package(Qt5Concurrent REQUIRED) 15 | 16 | include_directories ("${PROJECT_SOURCE_DIR}/../src") 17 | 18 | if(WIN32) 19 | set(PLATFORM_LIBRARIES ${PLATFORM_LIBRARIES} Shlwapi) 20 | endif() 21 | target_link_libraries(OvermixBenchmark OvermixCore -lbenchmark ${PLATFORM_LIBRARIES}) -------------------------------------------------------------------------------- /interface/cli/CommandParser.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef COMMAND_PARSER_HPP 19 | #define COMMAND_PARSER_HPP 20 | 21 | class QStringList; 22 | namespace Overmix{ 23 | class ImageContainer; 24 | 25 | class CommandParser{ 26 | private: 27 | ImageContainer& images; 28 | bool use_gui{ true }; 29 | 30 | public: 31 | explicit CommandParser( ImageContainer& images ) : images(images) { } 32 | 33 | void parse( QStringList commands ); 34 | bool useGui() const{ return use_gui; } 35 | }; 36 | 37 | } 38 | 39 | #endif -------------------------------------------------------------------------------- /interface/cli/Parsers.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PARSERS_HPP 19 | #define PARSERS_HPP 20 | 21 | class QString; 22 | class QTextStream; 23 | 24 | namespace Overmix{ 25 | 26 | class ImageEx; 27 | class AContainer; 28 | class ImageContainer; 29 | 30 | ImageEx renderParser( QString parameters, const AContainer& container ); 31 | void alignerParser( QString parameters, AContainer& container ); 32 | void comparatorParser( QString parameters, ImageContainer& container ); 33 | 34 | void renderHelpText( QTextStream& std ); 35 | void alignerHelpText( QTextStream& std ); 36 | void comparatorHelpText( QTextStream& std ); 37 | 38 | } 39 | 40 | #endif -------------------------------------------------------------------------------- /interface/cli/Processor.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESSOR_HPP 19 | #define PROCESSOR_HPP 20 | 21 | #include 22 | class QString; 23 | class QTextStream; 24 | 25 | namespace Overmix{ 26 | 27 | class ImageEx; 28 | 29 | class Processor{ 30 | public: 31 | virtual void process( ImageEx& ) = 0; 32 | virtual ~Processor() { } 33 | }; 34 | 35 | std::unique_ptr processingParser( QString parameters ); 36 | void processingHelpText( QTextStream& std ); 37 | 38 | } 39 | 40 | #endif -------------------------------------------------------------------------------- /interface/gui/AlignMethodSelector.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "AlignMethodSelector.hpp" 20 | 21 | 22 | using namespace Overmix; 23 | 24 | 25 | AlignMethodSelector::AlignMethodSelector( QWidget* parent ) : QComboBox(parent){ 26 | addItem( "Vertical" ); 27 | addItem( "Horizontal" ); 28 | addItem( "Both" ); 29 | connect( this, SIGNAL(currentIndexChanged(int)), this, SIGNAL(valueChanged(int)) ); 30 | } 31 | 32 | AlignMethod AlignMethodSelector::getValue() const{ 33 | switch( currentIndex() ){ 34 | case 0: return AlignMethod::VER; 35 | case 1: return AlignMethod::HOR; 36 | default: return AlignMethod::BOTH; 37 | } 38 | } -------------------------------------------------------------------------------- /interface/gui/AlignMethodSelector.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef ALIGN_METHOD_SELECTOR_HPP 19 | #define ALIGN_METHOD_SELECTOR_HPP 20 | 21 | #include 22 | 23 | #include 24 | 25 | namespace Overmix{ 26 | 27 | class AlignMethodSelector : public QComboBox{ 28 | Q_OBJECT 29 | 30 | public: 31 | explicit AlignMethodSelector( QWidget* parent ); 32 | 33 | AlignMethod getValue() const; 34 | 35 | signals: 36 | void valueChanged(int); 37 | }; 38 | 39 | } 40 | 41 | #endif 42 | 43 | -------------------------------------------------------------------------------- /interface/gui/ExceptionCatcher.cpp: -------------------------------------------------------------------------------- 1 | #include "ExceptionCatcher.hpp" 2 | #include "ui_ExceptionCatcher.h" 3 | 4 | #include 5 | #include 6 | #include 7 | #include 8 | 9 | ExceptionCatcher::ExceptionCatcher( QWidget* parent ) 10 | : QDialog(parent), ui(new Ui::ExceptionCatcher) 11 | { 12 | ui->setupUi(this); 13 | 14 | //Setup signals 15 | connect( ui->btn_close, SIGNAL(clicked(bool)), this, SLOT(close() ) ); 16 | connect( ui->btn_copy, SIGNAL(clicked(bool)), this, SLOT(copy() ) ); 17 | connect( ui->btn_report, SIGNAL(clicked(bool)), this, SLOT(report()) ); 18 | 19 | auto sysinfo = QSysInfo::prettyProductName() + "\n"; 20 | sysinfo += QString( OVERMIX_VERSION_STRING ) + "\n"; 21 | //TODO: Amount of RAM 22 | 23 | ui->system_text->setPlainText( sysinfo ); 24 | } 25 | 26 | 27 | ExceptionCatcher::ExceptionCatcher( QString what, QWidget* parent ) 28 | : ExceptionCatcher( parent ) 29 | { ui->exception_text->setPlainText( what ); } 30 | 31 | ExceptionCatcher::~ExceptionCatcher() 32 | { delete ui; } 33 | 34 | 35 | void ExceptionCatcher::close(){ 36 | accept(); 37 | } 38 | 39 | void ExceptionCatcher::copy(){ 40 | auto clipboard = QGuiApplication::clipboard(); 41 | clipboard->setText( ui->exception_text->toPlainText() ); 42 | } 43 | 44 | void ExceptionCatcher::report(){ 45 | QDesktopServices::openUrl( QUrl( "https://github.com/spillerrec/Overmix/issues" ) ); 46 | } 47 | -------------------------------------------------------------------------------- /interface/gui/FullscreenViewer.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef FULLSCREEN_VIEWER_HPP 19 | #define FULLSCREEN_VIEWER_HPP 20 | 21 | #include "viewer/imageViewer.h" 22 | 23 | #include 24 | #include 25 | #include 26 | 27 | 28 | class FullscreenViewer : public imageViewer{ 29 | Q_OBJECT 30 | 31 | private: 32 | FullscreenViewer( QSettings& settings, std::shared_ptr cache, QWidget* parent ); 33 | FullscreenViewer( QSettings& settings, QImage img, QWidget* parent ); 34 | 35 | public: 36 | template 37 | static void show( QSettings& settings, T img, QWidget* parent ) 38 | { new FullscreenViewer( settings, img, parent ); } 39 | 40 | protected: 41 | virtual void focusOutEvent( QFocusEvent* ) override{ close(); } 42 | virtual void keyPressEvent( QKeyEvent* event ) override; 43 | }; 44 | 45 | #endif 46 | 47 | -------------------------------------------------------------------------------- /interface/gui/importers/VideoImporter.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef VIDEO_IMPORTER_HPP 19 | #define VIDEO_IMPORTER_HPP 20 | 21 | #include "VideoPreviewModel.hpp" 22 | #include 23 | 24 | class Ui_Dialog; 25 | 26 | namespace Overmix{ 27 | 28 | class ImageContainer; 29 | class AProcessWatcher; 30 | 31 | class VideoImporter : public QDialog{ 32 | Q_OBJECT 33 | 34 | private: 35 | Ui_Dialog *ui; 36 | QString filepath; 37 | VideoPreviewModel model; 38 | 39 | 40 | public: 41 | VideoImporter( QString filepath, QWidget* parent ); 42 | 43 | static bool supportedFile( QString filename ); 44 | void import( ImageContainer &files, AProcessWatcher* watcher=nullptr ); 45 | 46 | public slots: 47 | void refresh(); 48 | }; 49 | 50 | } 51 | 52 | #endif 53 | 54 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessBinarize.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessBinarize.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | #include "color.hpp" 23 | 24 | #include 25 | 26 | using namespace Overmix; 27 | 28 | 29 | ProcessBinarize::ProcessBinarize( QWidget* parent ) : AProcessor( parent ){ 30 | threshold = newItem( "Threshold" ); 31 | threshold->setRange( 0, 255 ); 32 | threshold->setValue( 127 ); 33 | } 34 | 35 | QString ProcessBinarize::name() const{ return "Binarize"; } 36 | 37 | ImageEx ProcessBinarize::process( const ImageEx& input ) const{ 38 | auto threshold_8bit = color::from8bit( threshold->value() ); 39 | ImageEx temp( input ); 40 | for( unsigned c=0; c. 16 | */ 17 | 18 | #ifndef PROCESS_BINARIZE_HPP 19 | #define PROCESS_BINARIZE_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | class ProcessBinarize : public AProcessor{ 28 | Q_OBJECT 29 | 30 | private: 31 | QSpinBox* threshold; 32 | 33 | public: 34 | explicit ProcessBinarize( QWidget* parent ); 35 | 36 | QString name() const override; 37 | ImageEx process( const ImageEx& img ) const override; 38 | }; 39 | 40 | } 41 | 42 | #endif 43 | 44 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessBinarizeAdaptive.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_BINARIZE_ADAPTIVE_HPP 19 | #define PROCESS_BINARIZE_ADAPTIVE_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | class ProcessBinarizeAdaptive : public AProcessor{ 28 | Q_OBJECT 29 | 30 | private: 31 | QSpinBox* threshold; 32 | QSpinBox* size; 33 | 34 | public: 35 | explicit ProcessBinarizeAdaptive( QWidget* parent ); 36 | 37 | QString name() const override; 38 | ImageEx process( const ImageEx& img ) const override; 39 | }; 40 | 41 | } 42 | 43 | #endif 44 | 45 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessBlur.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_BLUR_HPP 19 | #define PROCESS_BLUR_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QComboBox; 24 | 25 | namespace Overmix{ 26 | 27 | struct DoubleSpinbox2D; 28 | 29 | class ProcessBlur : public AProcessor{ 30 | Q_OBJECT 31 | 32 | private: 33 | QComboBox* method; 34 | DoubleSpinbox2D* amount; 35 | 36 | public: 37 | explicit ProcessBlur( QWidget* parent ); 38 | 39 | QString name() const override; 40 | bool modifiesImage() const override; 41 | ImageEx process( const ImageEx& img ) const override; 42 | }; 43 | 44 | } 45 | 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessColor.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_COLOR_HPP 19 | #define PROCESS_COLOR_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QComboBox; 24 | class QCheckBox; 25 | 26 | namespace Overmix{ 27 | 28 | 29 | class ProcessColor : public AProcessor{ 30 | Q_OBJECT 31 | 32 | private: 33 | QComboBox* transform; 34 | QComboBox* transfer; 35 | QCheckBox* subsample; 36 | 37 | public: 38 | explicit ProcessColor( QWidget* parent ); 39 | 40 | QString name() const override; 41 | ImageEx process( const ImageEx& img ) const override; 42 | }; 43 | 44 | } 45 | 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessCrop.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessCrop.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | 23 | #include 24 | 25 | using namespace Overmix; 26 | 27 | 28 | ProcessCrop::ProcessCrop( QWidget* parent ) : AProcessor( parent ){ 29 | left = newItem( "Left" ); 30 | top = newItem( "Top" ); 31 | right = newItem( "Right" ); 32 | bottom = newItem( "Bottom" ); 33 | } 34 | 35 | QString ProcessCrop::name() const{ return "Crop"; } 36 | 37 | Point ProcessCrop::modifyOffset( Point pos ) const 38 | { return pos + Point<>{left->value(), top->value()}; } 39 | 40 | ImageEx ProcessCrop::process( const ImageEx& input ) const{ 41 | ImageEx temp( input ); 42 | temp.crop( 43 | left ->value() 44 | , top ->value() 45 | , right ->value() 46 | , bottom->value() 47 | ); 48 | return temp; 49 | } -------------------------------------------------------------------------------- /interface/gui/processors/ProcessCrop.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_CROP_HPP 19 | #define PROCESS_CROP_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | class ProcessCrop : public AProcessor{ 28 | Q_OBJECT 29 | 30 | private: 31 | QSpinBox *left, *top, *right, *bottom; 32 | 33 | public: 34 | explicit ProcessCrop( QWidget* parent ); 35 | 36 | QString name() const override; 37 | ImageEx process( const ImageEx& img ) const override; 38 | Point modifyOffset( Point ) const override; 39 | }; 40 | 41 | } 42 | 43 | #endif 44 | 45 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessDeVlc.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessDeVlc.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | 23 | using namespace Overmix; 24 | 25 | QString ProcessDeVlc::name() const{ return "De-VLC"; } 26 | 27 | ImageEx ProcessDeVlc::process( const ImageEx& input ) const{ 28 | return deVlcImage( input ); 29 | } -------------------------------------------------------------------------------- /interface/gui/processors/ProcessDeVlc.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_DE_VLC_HPP 19 | #define PROCESS_DE_VLC_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ProcessDeVlc : public AProcessor{ 26 | Q_OBJECT 27 | 28 | public: 29 | explicit ProcessDeVlc( QWidget* parent ) : AProcessor( parent ) { } 30 | 31 | QString name() const override; 32 | ImageEx process( const ImageEx& img ) const override; 33 | }; 34 | 35 | } 36 | 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessDeconvolve.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_DECONVOLVE_HPP 19 | #define PROCESS_DECONVOLVE_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | struct DoubleSpinbox2D; 28 | 29 | class ProcessDeconvolve : public AProcessor{ 30 | Q_OBJECT 31 | 32 | private: 33 | DoubleSpinbox2D* deviation; 34 | QSpinBox* iterations; 35 | 36 | public: 37 | explicit ProcessDeconvolve( QWidget* parent ); 38 | 39 | QString name() const override; 40 | bool modifiesImage() const override; 41 | ImageEx process( const ImageEx& img ) const override; 42 | }; 43 | 44 | } 45 | 46 | #endif 47 | 48 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessDilate.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessDilate.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | 23 | #include 24 | 25 | using namespace Overmix; 26 | 27 | 28 | ProcessDilate::ProcessDilate( QWidget* parent ) : AProcessor( parent ){ 29 | size = newItem( "Amount" ); 30 | } 31 | 32 | QString ProcessDilate::name() const{ return "Dilate"; } 33 | 34 | ImageEx ProcessDilate::process( const ImageEx& input ) const{ 35 | ImageEx temp( input ); 36 | for( unsigned c=0; cvalue() ); 38 | return temp; 39 | } 40 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessDilate.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_DILATE_HPP 19 | #define PROCESS_DILATE_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | class ProcessDilate : public AProcessor{ 28 | Q_OBJECT 29 | 30 | private: 31 | QSpinBox* size; 32 | 33 | public: 34 | explicit ProcessDilate( QWidget* parent ); 35 | 36 | QString name() const override; 37 | ImageEx process( const ImageEx& img ) const override; 38 | }; 39 | 40 | } 41 | 42 | #endif 43 | 44 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessDither.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessDither.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | 23 | using namespace Overmix; 24 | 25 | QString ProcessDither::name() const{ return "Dither"; } 26 | 27 | ImageEx ProcessDither::process( const ImageEx& input ) const{ 28 | ImageEx temp( input ); 29 | for( unsigned c=0; c. 16 | */ 17 | 18 | #ifndef PROCESS_DITHER_HPP 19 | #define PROCESS_DITHER_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ProcessDither : public AProcessor{ 26 | Q_OBJECT 27 | 28 | public: 29 | explicit ProcessDither( QWidget* parent ) : AProcessor( parent ) { } 30 | 31 | QString name() const override; 32 | ImageEx process( const ImageEx& img ) const override; 33 | }; 34 | 35 | } 36 | 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessInpaint.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessInpaint.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | #include "planes/manipulators/Inpaint.hpp" 23 | 24 | using namespace Overmix; 25 | 26 | ProcessInpaint::ProcessInpaint( QWidget* parent ) : AProcessor( parent ){ } 27 | 28 | QString ProcessInpaint::name() const{ return "Inpainting"; } 29 | 30 | ImageEx ProcessInpaint::process( const ImageEx& input ) const{ 31 | return Inpaint::simple( input.toRgb() ); 32 | } 33 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessInpaint.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_INPAINT_HPP 19 | #define PROCESS_INPAINT_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ProcessInpaint : public AProcessor{ 26 | Q_OBJECT 27 | 28 | public: 29 | explicit ProcessInpaint( QWidget* parent ); 30 | 31 | QString name() const override; 32 | ImageEx process( const ImageEx& img ) const override; 33 | }; 34 | 35 | } 36 | 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessLevels.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_LEVELS_HPP 19 | #define PROCESS_LEVELS_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QDoubleSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | class ColorRangeSpinbox; 28 | 29 | class ProcessLevels : public AProcessor{ 30 | Q_OBJECT 31 | 32 | private: 33 | ColorRangeSpinbox* in_levels; 34 | QDoubleSpinBox* gamma; 35 | ColorRangeSpinbox* out_levels; 36 | 37 | public: 38 | explicit ProcessLevels( QWidget* parent ); 39 | 40 | QString name() const override; 41 | bool modifiesImage() const override; 42 | ImageEx process( const ImageEx& img ) const override; 43 | }; 44 | 45 | } 46 | 47 | #endif 48 | 49 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessMosaic.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessMosaic.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | #include "planes/manipulators/Mosaic.hpp" 23 | 24 | using namespace Overmix; 25 | 26 | ProcessMosaic::ProcessMosaic( QWidget* parent ) : AProcessor( parent ){ } 27 | 28 | QString ProcessMosaic::name() const{ return "Mosaic detection"; } 29 | 30 | ImageEx ProcessMosaic::process( const ImageEx& input ) const{ 31 | return Mosaic::detect( input.toRgb() ); 32 | } 33 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessMosaic.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_Mosaic_HPP 19 | #define PROCESS_Mosaic_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ProcessMosaic : public AProcessor{ 26 | Q_OBJECT 27 | 28 | public: 29 | explicit ProcessMosaic( QWidget* parent ); 30 | 31 | QString name() const override; 32 | ImageEx process( const ImageEx& img ) const override; 33 | }; 34 | 35 | } 36 | 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessScale.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_SCALE_HPP 19 | #define PROCESS_SCALE_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QComboBox; 24 | 25 | namespace Overmix{ 26 | 27 | struct DoubleSpinbox2D; 28 | 29 | class ProcessScale : public AProcessor{ 30 | Q_OBJECT 31 | 32 | private: 33 | QComboBox* method; 34 | DoubleSpinbox2D* scale; 35 | 36 | public: 37 | explicit ProcessScale( QWidget* parent ); 38 | 39 | QString name() const override; 40 | bool modifiesImage() const override; 41 | ImageEx process( const ImageEx& img ) const override; 42 | Point modifyOffset( Point ) const override; 43 | }; 44 | 45 | } 46 | 47 | #endif 48 | 49 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessSteam.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessSteam.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | #include "planes/manipulators/Steam.hpp" 23 | 24 | using namespace Overmix; 25 | 26 | ProcessSteam::ProcessSteam( QWidget* parent ) : AProcessor( parent ){ } 27 | 28 | QString ProcessSteam::name() const{ return "Steam detection"; } 29 | 30 | ImageEx ProcessSteam::process( const ImageEx& input ) const{ 31 | return Steam::detect( input.toRgb() ); 32 | } 33 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessSteam.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_STEAM_HPP 19 | #define PROCESS_STEAM_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ProcessSteam : public AProcessor{ 26 | Q_OBJECT 27 | 28 | public: 29 | explicit ProcessSteam( QWidget* parent ); 30 | 31 | QString name() const override; 32 | ImageEx process( const ImageEx& img ) const override; 33 | }; 34 | 35 | } 36 | 37 | #endif 38 | 39 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessWaifu.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "ProcessWaifu.hpp" 20 | 21 | #include 22 | #include "planes/ImageEx.hpp" 23 | #include "planes/manipulators/Waifu.hpp" 24 | #include "color.hpp" 25 | 26 | using namespace Overmix; 27 | 28 | ProcessWaifu::ProcessWaifu( QWidget* parent ) : AProcessor( parent ){ 29 | scale_amount = newItem( "Scale" ); 30 | denoise_level = newItem( "Denoise" ); 31 | 32 | scale_amount ->setRange( 1, 4 ); 33 | denoise_level->setRange( 0, 2 ); 34 | } 35 | 36 | QString ProcessWaifu::name() const{ return "Waifu2x"; } 37 | 38 | ImageEx ProcessWaifu::process( const ImageEx& input ) const{ 39 | auto scale = scale_amount ->value(); 40 | auto denoise = denoise_level->value(); 41 | 42 | return Waifu( scale, denoise, nullptr ).process( input ); 43 | } 44 | -------------------------------------------------------------------------------- /interface/gui/processors/ProcessWaifu.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PROCESS_WAIFU_HPP 19 | #define PROCESS_WAIFU_HPP 20 | 21 | #include "AProcessor.hpp" 22 | 23 | class QSpinBox; 24 | 25 | namespace Overmix{ 26 | 27 | class ProcessWaifu : public AProcessor{ 28 | Q_OBJECT 29 | 30 | private: 31 | QSpinBox* scale_amount; 32 | QSpinBox* denoise_level; 33 | 34 | public: 35 | explicit ProcessWaifu( QWidget* parent ); 36 | 37 | QString name() const override; 38 | ImageEx process( const ImageEx& img ) const override; 39 | //TODO: Offset because of scale 40 | }; 41 | 42 | } 43 | 44 | #endif 45 | 46 | -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/.keep: -------------------------------------------------------------------------------- 1 | 2 | -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_down_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_down_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_left_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_left_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_right_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_right_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/arrow_up_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/arrow_up_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/base_icon_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/base_icon_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_closed_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_closed_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_end_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_end_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_line_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_line_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_more_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_more_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/branch_open_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/branch_open_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_checked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_checked_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_indeterminate_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/checkbox_unchecked_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_horizontal_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_horizontal_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/line_vertical_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/line_vertical_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_checked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_checked_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/radio_unchecked_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/radio_unchecked_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_horizontal_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_move_vertical_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_horizontal_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/toolbar_separator_vertical_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/transparent_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/transparent_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_close_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_close_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_grip_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_grip_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_minimize_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_minimize_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock_disabled.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock_disabled.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock_disabled@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock_disabled@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock_focus.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock_focus.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock_focus@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock_focus@2x.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock_pressed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock_pressed.png -------------------------------------------------------------------------------- /interface/gui/qdarkstyle/dark/rc/window_undock_pressed@2x.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/spillerrec/Overmix/ebc2d3128a4024a7cb267ad0ecec210aa772efc7/interface/gui/qdarkstyle/dark/rc/window_undock_pressed@2x.png -------------------------------------------------------------------------------- /interface/gui/savers/ASaver.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef A_SAVER_HPP 19 | #define A_SAVER_HPP 20 | 21 | #include 22 | #include 23 | 24 | namespace Overmix{ 25 | 26 | class ImageEx; 27 | 28 | class ASaver: public QDialog{ 29 | 30 | private: 31 | const ImageEx& image; 32 | QString filename; 33 | 34 | public: 35 | explicit ASaver( const ImageEx& image, QString filename ) : image(image), filename(filename) { } 36 | virtual void save( const ImageEx& image, QString filename ) = 0; 37 | 38 | public slots: 39 | virtual void accept() override{ 40 | save( image, filename ); 41 | QDialog::accept(); 42 | } 43 | }; 44 | 45 | } 46 | 47 | #endif -------------------------------------------------------------------------------- /interface/gui/savers/DumpSaver.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | 19 | #include "DumpSaver.hpp" 20 | 21 | #include "planes/ImageEx.hpp" 22 | 23 | using namespace Overmix; 24 | 25 | DumpSaver::DumpSaver( const ImageEx& image, QString filename ) : ASaver( image, filename ){ 26 | setupUi(this); 27 | 28 | save_alpha->setChecked( image.alpha_plane() ); 29 | save_alpha->setEnabled( false );//save_alpha->isChecked() ); 30 | compression->setEnabled( false ); 31 | } 32 | 33 | 34 | void DumpSaver::save( const ImageEx& image, QString filename ){ 35 | image.saveDump( filename, color_depth->value() ); 36 | } 37 | 38 | 39 | -------------------------------------------------------------------------------- /interface/gui/savers/DumpSaver.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef DUMP_SAVER_HPP 19 | #define DUMP_SAVER_HPP 20 | 21 | #include "ASaver.hpp" 22 | 23 | #include "ui_DumpSaver.h" 24 | 25 | namespace Overmix{ 26 | 27 | class DumpSaver: public ASaver, private Ui::DumpSaver{ 28 | Q_OBJECT 29 | 30 | public: 31 | explicit DumpSaver( const ImageEx& image, QString filename ); 32 | virtual void save( const ImageEx& image, QString filename ) override; 33 | }; 34 | 35 | } 36 | 37 | #endif -------------------------------------------------------------------------------- /interface/gui/viewer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.6) 2 | 3 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") # Enable C++14 features 4 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") # Turn on warnings 5 | 6 | # Qt compilers setup 7 | set(CMAKE_AUTOUIC ON) 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_INCLUDE_CURRENT_DIR ON) 10 | 11 | set(SOURCE_GUI_VIEWER 12 | colorManager.cpp 13 | imageCache.cpp 14 | imageViewer.cpp 15 | qrect_extras.cpp 16 | ZoomBox.cpp 17 | ) 18 | 19 | # Make sure Windows is set to use the unicode API's 20 | if( WIN32 ) 21 | add_definitions(-DUNICODE -D_UNICODE) 22 | endif( WIN32 ) 23 | 24 | # Set-up libraries 25 | add_library(qtimgviewer ${SOURCE_GUI_VIEWER} ) 26 | target_include_directories(qtimgviewer PRIVATE ${X11_INCLUDE_DIR}) 27 | target_link_libraries(qtimgviewer Qt5::Gui Qt5::Widgets Qt5::Concurrent PkgConfig::LCMS2 ${PLATFORM_LIBRARIES}) 28 | -------------------------------------------------------------------------------- /interface/gui/viewer/settings/Setting.h: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of imgviewer. 3 | 4 | imgviewer is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | imgviewer is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with imgviewer. If not, see . 16 | */ 17 | 18 | #ifndef SETTINGS_SETTING_H 19 | #define SETTINGS_SETTING_H 20 | 21 | #include 22 | #include 23 | 24 | 25 | template inline T QVariantTo( QVariant value ); 26 | template<> inline bool QVariantTo( QVariant value ){ return value.toBool(); } 27 | 28 | template 29 | class Setting{ 30 | protected: 31 | QSettings& settings; 32 | const char* const id; 33 | T default_value; 34 | 35 | public: 36 | Setting( QSettings& settings, const char* const id, T default_value ) 37 | : settings(settings), id(id), default_value(default_value) {} 38 | 39 | void set( T value ) 40 | { settings.setValue( id, value ); } 41 | 42 | bool get() const{ return QVariantTo( settings.value( id, default_value ) ); } 43 | operator bool() const{ return get(); } 44 | }; 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /interface/gui/visualisations/MovementGraph.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MOVEMENT_GRAPH_HPP 19 | #define MOVEMENT_GRAPH_HPP 20 | 21 | #include 22 | 23 | namespace Overmix{ 24 | 25 | class MovementGraph : public QWidget{ 26 | Q_OBJECT 27 | 28 | private: 29 | class ImageContainer& images; 30 | 31 | public: 32 | explicit MovementGraph( ImageContainer& images ); 33 | 34 | }; 35 | 36 | } 37 | 38 | #endif 39 | 40 | -------------------------------------------------------------------------------- /interface/gui/visualisations/SkipRenderPreview.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef SKIP_RENDER_PREVIEW_HPP 19 | #define SKIP_RENDER_PREVIEW_HPP 20 | 21 | 22 | #include 23 | 24 | #include 25 | #include 26 | #include 27 | 28 | class imageViewer; 29 | class QSpinBox; 30 | 31 | namespace Overmix{ 32 | 33 | struct DoubleSpinbox2D; 34 | class AContainer; 35 | 36 | class SkipRenderPreview : public QDialog{ 37 | Q_OBJECT 38 | 39 | private: 40 | imageViewer* viewer; 41 | const AContainer& images; 42 | QSpinBox* id; 43 | DoubleSpinbox2D* skip; 44 | DoubleSpinbox2D* offset; 45 | 46 | public: 47 | SkipRenderPreview( QSettings& settings, const AContainer& images, QWidget* parent ); 48 | Point getSkip() const; 49 | Point getOffset() const; 50 | void setConfig( Point newSkip, Point newOffset ); 51 | 52 | public slots: 53 | void update_preview(); 54 | }; 55 | 56 | } 57 | 58 | #endif 59 | 60 | -------------------------------------------------------------------------------- /interface/main-cli.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "cli/CommandParser.hpp" 19 | #include "containers/ImageContainer.hpp" 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | #include 26 | #include 27 | 28 | int main( int argc, char *argv[] ){ 29 | QCoreApplication a( argc, argv ); 30 | Overmix::ImageContainer images; 31 | Overmix::CommandParser parser( images ); 32 | 33 | try{ 34 | //Parse command-line arguments 35 | auto args = a.arguments(); 36 | args.removeFirst(); 37 | parser.parse( args ); 38 | 39 | return 0; 40 | } 41 | catch( std::exception& e ){ 42 | std::cout << "Some error occurred:" << std::endl; 43 | std::cout << e.what(); 44 | return -1; 45 | } 46 | } 47 | -------------------------------------------------------------------------------- /src/Deteleciner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef DETELECINER_HPP 19 | #define DETELECINER_HPP 20 | 21 | #include "planes/ImageEx.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class Deteleciner{ 26 | private: 27 | bool active{ false }; 28 | 29 | ImageEx frame; 30 | bool interlaced{ false }; 31 | 32 | ImageEx addInterlaced( ImageEx image ); 33 | ImageEx addProgressive( ImageEx image ); 34 | 35 | public: 36 | bool isActive() const{ return active; } 37 | void setEnabled( bool on ){ 38 | active = on; 39 | if( !active ) 40 | clear(); 41 | } 42 | void clear(){ 43 | interlaced = false; 44 | frame = ImageEx(); 45 | } 46 | ImageEx process( ImageEx img ); 47 | }; 48 | 49 | } 50 | 51 | #endif -------------------------------------------------------------------------------- /src/aligners/AnimationSeparator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef ANIMATION_SEPARATOR_HPP 19 | #define ANIMATION_SEPARATOR_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class AnimationSeparator : public AAligner{ 26 | private: 27 | bool skip_align { false }; 28 | double threshold_factor{ 1.0 }; 29 | 30 | double findThreshold( AContainer& container, AProcessWatcher* watcher ) const; 31 | double findError( AContainer& container, int index1, int index2 ) const; 32 | 33 | public: 34 | AnimationSeparator( bool skip_align = false, double threshold_factor = 1.0 ) 35 | : skip_align(skip_align), threshold_factor(threshold_factor) 36 | { } 37 | virtual void align( AContainer& container, AProcessWatcher* watcher=nullptr ) const override; 38 | }; 39 | 40 | } 41 | 42 | #endif 43 | -------------------------------------------------------------------------------- /src/aligners/AverageAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef AVERAGE_ALIGNER_HPP 19 | #define AVERAGE_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class AverageAligner : public AAligner{ 26 | public: 27 | virtual void align( class AContainer& container, class AProcessWatcher* watcher=nullptr ) const override; 28 | }; 29 | 30 | } 31 | 32 | #endif -------------------------------------------------------------------------------- /src/aligners/ClusterAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef CLUSTER_ALIGNER_HPP 19 | #define CLUSTER_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ClusterAligner : public AAligner{ 26 | private: 27 | unsigned min_groups{ 1 }; 28 | unsigned max_groups{ 20 }; 29 | 30 | public: 31 | ClusterAligner() { } 32 | ClusterAligner( unsigned min_groups, unsigned max_groups ) 33 | : min_groups(min_groups), max_groups(max_groups) { } 34 | virtual void align( class AContainer& container, class AProcessWatcher* watcher=nullptr ) const override; 35 | }; 36 | 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/aligners/FakeAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef FAKE_ALIGNER_HPP 19 | #define FAKE_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | #include "../containers/AContainer.hpp" 23 | 24 | namespace Overmix{ 25 | 26 | class FakeAligner : public AAligner{ 27 | public: 28 | virtual void align( AContainer& container, AProcessWatcher* ) const override 29 | { container.resetPosition(); } 30 | }; 31 | 32 | } 33 | 34 | #endif -------------------------------------------------------------------------------- /src/aligners/FrameAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef FRAME_ALIGNER_HPP 19 | #define FRAME_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class FrameAligner : public AAligner{ 26 | public: 27 | virtual void align( class AContainer& container, class AProcessWatcher* watcher=nullptr ) const override; 28 | }; 29 | 30 | } 31 | 32 | #endif -------------------------------------------------------------------------------- /src/aligners/IndependentAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef INDEPENDENT_ALIGNER_HPP 19 | #define INDEPENDENT_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class IndependentAligner : public AAligner{ 26 | private: 27 | unsigned range{ 1 }; 28 | 29 | public: 30 | IndependentAligner() { } 31 | explicit IndependentAligner( unsigned range ) : range(range){ } 32 | virtual void align( class AContainer& container, class AProcessWatcher* watcher=nullptr ) const override; 33 | }; 34 | 35 | } 36 | 37 | #endif 38 | -------------------------------------------------------------------------------- /src/aligners/LinearAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef LINEAR_ALIGNER_HPP 19 | #define LINEAR_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class LinearAligner : public AAligner{ 26 | private: 27 | AlignMethod method; 28 | 29 | public: 30 | explicit LinearAligner( AlignMethod method ) : method(method) { } 31 | virtual void align( AContainer& container, AProcessWatcher* watcher=nullptr ) const override; 32 | }; 33 | 34 | } 35 | 36 | #endif -------------------------------------------------------------------------------- /src/aligners/NearestFrameAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef NEAREST_FRAME_ALIGNER_HPP 19 | #define NEAREST_FRAME_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class NearestFrameAligner : public AAligner{ 26 | public: 27 | virtual void align( class AContainer& container, class AProcessWatcher* watcher=nullptr ) const override; 28 | }; 29 | 30 | } 31 | 32 | #endif -------------------------------------------------------------------------------- /src/aligners/RecursiveAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef RECURSIVE_ALIGNER_HPP 19 | #define RECURSIVE_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | #include "../Geometry.hpp" 23 | #include 24 | 25 | namespace Overmix{ 26 | 27 | struct ImageGetter; 28 | class Progress; 29 | 30 | /** Aligns the container using a divide and conquer algorithm. Assumes that each image 31 | * overlaps the images right next to it. */ 32 | class RecursiveAligner : public AAligner{ 33 | protected: 34 | std::pair> combine( const AContainer& container, const ImageGetter& first, const ImageGetter& second ) const; 35 | ImageGetter align( AContainer& container, Progress& progress, unsigned begin, unsigned end ) const; 36 | 37 | ImageGetter getGetter( const AContainer& container, unsigned index ) const; 38 | 39 | public: 40 | virtual void align( AContainer& container, AProcessWatcher* watcher=nullptr ) const override; 41 | }; 42 | 43 | } 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/aligners/SuperResAligner.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef SUPER_RES_ALIGNER_HPP 19 | #define SUPER_RES_ALIGNER_HPP 20 | 21 | #include "AAligner.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class SuperResAligner : public AAligner{ 26 | private: 27 | double scale; 28 | 29 | public: 30 | SuperResAligner( double scale ) : scale(scale) { } 31 | virtual void align( class AContainer& container, class AProcessWatcher* watcher=nullptr ) const override; 32 | }; 33 | 34 | } 35 | 36 | #endif -------------------------------------------------------------------------------- /src/comparators/AComparator.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "AComparator.hpp" 19 | 20 | #include "../planes/Plane.hpp" 21 | #include 22 | 23 | using namespace Overmix; 24 | 25 | ImageOffset::ImageOffset( Point distance, double error, const Plane& img1, const Plane& img2 ) : distance( distance ), error( error ) { 26 | overlap = calculate_overlap( distance.to(), img1, img2 ); 27 | } 28 | 29 | double ImageOffset::calculate_overlap( Point<> offset, const Plane& img1, const Plane& img2 ){ 30 | QRect first( 0,0, img1.get_width(), img1.get_height() ); 31 | QRect second( { offset.x, offset.y }, QSize(img2.get_width(), img2.get_height()) ); 32 | QRect common = first.intersected( second ); 33 | 34 | double area = first.width() * first.height(); 35 | return (double)common.width() * common.height() / area; 36 | } 37 | -------------------------------------------------------------------------------- /src/comparators/BruteForceComparator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef BRUTE_FORCE_COMPARATOR_HPP 19 | #define BRUTE_FORCE_COMPARATOR_HPP 20 | 21 | #include "SimpleComparatorBase.hpp" 22 | #include "../aligners/AAligner.hpp" //For AlignMethod 23 | #include "../planes/basic/difference.hpp" //For SimpleSettings 24 | 25 | namespace Overmix{ 26 | 27 | class BruteForceComparator : public SimpleComparatorBase{ 28 | public: 29 | AlignMethod method{ AlignMethod::VER }; 30 | double movement{ 0.75 }; 31 | 32 | public: 33 | BruteForceComparator() {} 34 | BruteForceComparator( Difference::SimpleSettings settings, AlignMethod method, double movement ) 35 | : SimpleComparatorBase(settings), method(method), movement(movement) { } 36 | ImageOffset findOffset( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, Point hint ) const override; 37 | }; 38 | 39 | } 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/comparators/GradientComparator.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "GradientComparator.hpp" 19 | #include "GradientPlane.hpp" 20 | 21 | #include 22 | 23 | using namespace Overmix; 24 | 25 | 26 | ImageOffset GradientComparator::findOffset( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, Point hint ) const{ 27 | Point moves{ method == AlignMethod::VER ? 0.0 : movement 28 | , method == AlignMethod::HOR ? 0.0 : movement 29 | }; 30 | 31 | ImageOffset result; 32 | GradientPlane plane( img1, img2, a1, a2, settings ); 33 | int level = start_level; 34 | 35 | //Keep repeating with higher levels until it drops below threshold 36 | do{ 37 | result = plane.findMinimum( { img1.getSize(), img2.getSize(), moves.x, moves.y, hint, level } ); 38 | }while( result.error > max_difference && level++ < max_level ); 39 | 40 | return { result.distance, result.error, img1, img2 }; 41 | } 42 | 43 | -------------------------------------------------------------------------------- /src/comparators/LogPolarComparator.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "LogPolarComparator.hpp" 19 | 20 | #include 21 | 22 | using namespace Overmix; 23 | 24 | ImageOffset LogPolarComparator::findOffset( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, Point hint ) const { 25 | throw std::logic_error("Not implemented"); 26 | } 27 | 28 | double LogPolarComparator::findError( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, double x, double y ) const { 29 | throw std::logic_error("Not implemented"); 30 | } 31 | -------------------------------------------------------------------------------- /src/comparators/LogPolarComparator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef LOG_POLAR_COMPARATOR_HPP 19 | #define LOG_POLAR_COMPARATOR_HPP 20 | 21 | #include "AComparator.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class LogPolarComparator : public AComparator{ 26 | public: 27 | ImageOffset findOffset( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, Point hint = {0.0,0.0} ) const override; 28 | 29 | double findError( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, double x, double y ) const override; 30 | 31 | bool includesRotationOrScale() const override { return true; } 32 | }; 33 | 34 | } 35 | 36 | #endif -------------------------------------------------------------------------------- /src/comparators/MultiScaleComparator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MULTI_SCALE_COMPARATOR_HPP 19 | #define MULTI_SCALE_COMPARATOR_HPP 20 | 21 | #include "SimpleComparatorBase.hpp" 22 | #include "../aligners/AAligner.hpp" //For AlignMethod 23 | 24 | namespace Overmix{ 25 | 26 | class MultiScaleComparator : public SimpleComparatorBase{ 27 | public: 28 | AlignMethod method{ AlignMethod::VER }; 29 | 30 | public: 31 | MultiScaleComparator() { }; 32 | explicit MultiScaleComparator( AlignMethod method ) 33 | : method(method) { } 34 | 35 | ImageOffset findOffset( const Plane& img1, const Plane& img2, const Plane& a1, const Plane& a2, Point hint ) const override; 36 | }; 37 | 38 | } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/comparators/SimpleComparatorBase.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef SIMPLE_COMPARATOR_BASE_HPP 19 | #define SIMPLE_COMPARATOR_BASE_HPP 20 | 21 | #include "AComparator.hpp" 22 | #include "../planes/basic/difference.hpp" 23 | 24 | namespace Overmix{ 25 | 26 | class Plane; 27 | 28 | class SimpleComparatorBase : public AComparator{ 29 | public: 30 | Difference::SimpleSettings settings; 31 | 32 | public: 33 | SimpleComparatorBase( Difference::SimpleSettings settings = {} ) 34 | : settings(settings) { } 35 | 36 | double findError( const Plane& p1, const Plane& p2, const Plane& a1, const Plane& a2, double x, double y ) const override{ 37 | auto pos = Point( x, y ).round(); 38 | return Difference::simpleAlpha( p1, p2, a1, a2, pos, settings ); 39 | } 40 | }; 41 | 42 | 43 | } 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/containers/ImageContainerSaver.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef IMAGE_CONTAINER_SAVER_HPP 19 | #define IMAGE_CONTAINER_SAVER_HPP 20 | 21 | class QString; 22 | 23 | namespace Overmix{ 24 | 25 | class ImageContainer; 26 | 27 | class ImageContainerSaver{ 28 | public: 29 | struct SaveInfo{ 30 | bool can_save; 31 | bool reuse_originals; 32 | }; 33 | static SaveInfo canSave( const ImageContainer& container, QString filename ); 34 | static QString load( ImageContainer& container, QString file ); 35 | static QString save( ImageContainer& container, QString filename ); 36 | }; 37 | 38 | } 39 | 40 | #endif -------------------------------------------------------------------------------- /src/gpu/GpuBuffer.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "GpuBuffer.hpp" 19 | #include "GpuDevice.hpp" 20 | 21 | #include 22 | 23 | #define WEBGPU_BACKEND_WGPU 24 | 25 | 26 | WGPUBufferMapAsyncStatus MapAsyncWaiter::Wait(GpuDevice& device) { 27 | while (!done){ 28 | 29 | #ifdef WEBGPU_BACKEND_WGPU 30 | // Non-standardized behavior: submit empty queue to flush callbacks 31 | // (wgpu-native also has a wgpuDevicePoll but its API is more complex) 32 | auto queue = device.MakeQueue(); 33 | queue.Submit(); 34 | #else 35 | // Non-standard Dawn way 36 | wgpuDeviceTick(device.Get()); 37 | #endif 38 | 39 | } 40 | return status; 41 | } -------------------------------------------------------------------------------- /src/gpu/GpuCommandBuffer.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "GpuHandle.hpp" 21 | 22 | #include 23 | 24 | class GpuCommandBuffer { 25 | private: 26 | GpuHandle commandBuffer; 27 | 28 | public: 29 | GpuCommandBuffer(WGPUCommandBuffer commandBuffer) : commandBuffer(commandBuffer) { } 30 | 31 | WGPUCommandBuffer Get() { return commandBuffer; } 32 | }; 33 | -------------------------------------------------------------------------------- /src/gpu/GpuComputePass.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "GpuHandle.hpp" 21 | 22 | class GpuComputePass{ 23 | private: 24 | GpuHandle pass; 25 | 26 | public: 27 | GpuComputePass(WGPUComputePassEncoder pass) : pass(pass) { } 28 | 29 | void SetPipeline(WGPUComputePipeline computePipeline) { 30 | wgpuComputePassEncoderSetPipeline(pass, computePipeline); 31 | } 32 | 33 | void SetDispatchWorkgroups(uint32_t countX, uint32_t countY=1, uint32_t countZ=1) { 34 | wgpuComputePassEncoderDispatchWorkgroups(pass, countX, countY, countZ); 35 | } 36 | 37 | void SetBindGroup(WGPUBindGroup group, uint32_t groupIndex=0){ 38 | wgpuComputePassEncoderSetBindGroup(pass, groupIndex, group, 0, nullptr); 39 | } 40 | 41 | void End() { wgpuComputePassEncoderEnd(pass); } 42 | }; 43 | -------------------------------------------------------------------------------- /src/gpu/GpuDevice.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "GpuDevice.hpp" 19 | 20 | GpuHandle GpuDevice::CreateShader(const char* const data) { 21 | WGPUShaderModuleDescriptor shaderDesc{}; 22 | // [...] Describe shader module 23 | 24 | //WGPUShaderModuleSPIRVDescriptor 25 | WGPUShaderModuleWGSLDescriptor shaderCodeDesc{}; 26 | shaderCodeDesc.chain.next = nullptr; 27 | shaderCodeDesc.chain.sType = WGPUSType_ShaderModuleWGSLDescriptor; 28 | 29 | shaderCodeDesc.code = data; 30 | 31 | // Connect the chain 32 | shaderDesc.nextInChain = &shaderCodeDesc.chain; 33 | 34 | return wgpuDeviceCreateShaderModule(device, &shaderDesc); 35 | } 36 | -------------------------------------------------------------------------------- /src/gpu/GpuInstance.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #pragma once 19 | 20 | #include "GpuHandle.hpp" 21 | #include "GpuDevice.hpp" 22 | 23 | #include 24 | 25 | #include 26 | #include 27 | #include 28 | 29 | class GpuInstance { 30 | private: 31 | static std::once_flag has_instance; 32 | static std::unique_ptr instance; 33 | 34 | GpuHandle gpu_instance; 35 | GpuHandle adapter; 36 | std::unique_ptr device; 37 | 38 | GpuInstance(); 39 | 40 | std::unique_ptr RequestDevice(); 41 | 42 | public: 43 | static GpuInstance& GetInstance(); 44 | static GpuDevice& GetDevice(); 45 | }; -------------------------------------------------------------------------------- /src/planes/DistanceMatrix.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef DISTANCE_MATRIX_HPP 19 | #define DISTANCE_MATRIX_HPP 20 | 21 | #include "../comparators/AComparator.hpp" //For ImageOffset 22 | 23 | class QImage; 24 | 25 | namespace Overmix{ 26 | 27 | class DistanceMatrix{ 28 | public: 29 | PlaneBase matrix; 30 | 31 | public: 32 | DistanceMatrix( unsigned amount ) : matrix( amount,amount ) { } 33 | 34 | QImage toQImage() const; 35 | }; 36 | 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/planes/PatternRemove.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PATTERN_REMOVE_HPP 19 | #define PATTERN_REMOVE_HPP 20 | 21 | #include "../Geometry.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class Plane; 26 | class ImageEx; 27 | 28 | Plane patternRemove( const Plane& p , Point size ); 29 | ImageEx patternRemove( const ImageEx& img, Point size ); 30 | 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/planes/PlaneExcept.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of AnimeRaster. 3 | 4 | AnimeRaster is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | AnimeRaster is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with AnimeRaster. If not, see . 16 | */ 17 | 18 | #include "PlaneExcept.hpp" 19 | 20 | #include 21 | #include 22 | 23 | using namespace Overmix; 24 | 25 | template 26 | std::string sizeToString( Size a ){ 27 | return "(" 28 | + std::to_string( a.width() ) 29 | + " x " 30 | + std::to_string( a.height() ) 31 | + ")" 32 | ; 33 | } 34 | 35 | void Throwers::sizeNotEqual( const char* const where, Size a, Size b ){ 36 | auto err = std::string(where) 37 | + " => planes where not of equal size\n\t" 38 | + sizeToString( a ) 39 | + " vs. " 40 | + sizeToString( b ) 41 | + "\n" 42 | ; 43 | throw std::runtime_error( err ); 44 | } 45 | 46 | -------------------------------------------------------------------------------- /src/planes/PlaneExcept.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of AnimeRaster. 3 | 4 | AnimeRaster is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | AnimeRaster is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with AnimeRaster. If not, see . 16 | */ 17 | 18 | #ifndef PLANE_EXCEPT_HPP 19 | #define PLANE_EXCEPT_HPP 20 | 21 | #include "PlaneBase.hpp" 22 | 23 | 24 | 25 | namespace Overmix{ 26 | 27 | namespace Throwers{ 28 | 29 | void sizeNotEqual( const char* const, Size, Size ); 30 | 31 | } 32 | 33 | template 34 | void planeSizeEqual( const char* const where, const PlaneBase& a, const PlaneBase& b ){ 35 | if( a.getSize() != b.getSize() ) 36 | Throwers::sizeNotEqual( where, a.getSize(), b.getSize() ); 37 | } 38 | 39 | } 40 | 41 | #endif 42 | -------------------------------------------------------------------------------- /src/planes/PorterDuff.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PORTER_DUFF_HPP 19 | #define PORTER_DUFF_HPP 20 | 21 | #include "Plane.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class PorterDuff{ 26 | private: 27 | PlaneBase a_src; 28 | PlaneBase a_dest; 29 | PlaneBase a_both; 30 | 31 | PlaneBase zero; 32 | PlaneBase ones; 33 | 34 | public: 35 | PorterDuff( const Plane& source_alpha, const Plane& destination_alpha ); 36 | 37 | Plane values( const PlaneBase& s, const PlaneBase& d, const PlaneBase& b ) const; 38 | Plane alpha( bool s, bool d, bool b ) const; 39 | 40 | Plane over( const Plane& src, const Plane& dest ) const; 41 | Plane overAlpha() const; 42 | }; 43 | 44 | } 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/planes/basic/difference.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PLANES_BASIC_DIFFERENCE_HPP 19 | #define PLANES_BASIC_DIFFERENCE_HPP 20 | 21 | #include "../../color.hpp" 22 | #include "../../Geometry.hpp" 23 | 24 | namespace Overmix{ 25 | class Plane; 26 | } 27 | 28 | namespace Overmix{ namespace Difference{ 29 | struct SimpleSettings{ 30 | unsigned stride; 31 | bool use_l2; ///Switch between L1 and L2 32 | color_type epsilon; ///Ignore differences below this level 33 | 34 | SimpleSettings() : stride(1), use_l2(false), epsilon(0) { } 35 | SimpleSettings(unsigned stride, bool use_l2, color_type epsilon) 36 | : stride(stride), use_l2(use_l2), epsilon(epsilon) { } 37 | }; 38 | 39 | double simple( const Plane& p1, const Plane& p2, Point offset, SimpleSettings s={} ); 40 | double simpleAlpha( const Plane& p1, const Plane& p2, const Plane& alpha1, const Plane& alpha2, Point offset, SimpleSettings s={} ); 41 | } } 42 | 43 | #endif 44 | -------------------------------------------------------------------------------- /src/planes/basic/interpolation.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef INTERPOLATION_HPP 19 | #define INTERPOLATION_HPP 20 | 21 | #include "../Plane.hpp" 22 | 23 | namespace Overmix{ namespace Transformations{ 24 | 25 | inline auto bilinear( const Plane& p, Point pos ) { 26 | auto clamped = pos.max({0,0}).min(p.getSize()-1); 27 | auto base0 = clamped.floor(); 28 | auto delta = clamped - base0; 29 | auto base1 = (base0 + 1).min(p.getSize()-1); 30 | 31 | auto v00 = p[base0.y][base0.x]; 32 | auto v01 = p[base0.y][base1.x]; 33 | auto v10 = p[base1.y][base0.x]; 34 | auto v11 = p[base1.y][base1.x]; 35 | 36 | auto mix = [](auto a, auto b, double x){ return a * (1.0-x) + b * x; }; 37 | return mix( 38 | mix(v00, v01, delta.x), 39 | mix(v10, v11, delta.x), 40 | delta.y); 41 | } 42 | 43 | } } 44 | 45 | 46 | #endif 47 | -------------------------------------------------------------------------------- /src/planes/basic/logpolar.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef LOGPOLAR_HPP 19 | #define LOGPOLAR_HPP 20 | 21 | #include 22 | 23 | #include "../../Geometry.hpp" 24 | 25 | namespace Overmix{ 26 | class Plane; 27 | } 28 | 29 | namespace Overmix{ namespace Transformations{ 30 | 31 | Plane logPolar( const Plane& p1, Size endSize, double epScale = 10 ); 32 | 33 | } } 34 | 35 | #endif 36 | -------------------------------------------------------------------------------- /src/planes/basic/rotation.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PLANES_BASIC_ROTATION_HPP 19 | #define PLANES_BASIC_ROTATION_HPP 20 | 21 | #include 22 | 23 | #include "../../Geometry.hpp" 24 | 25 | namespace Overmix{ 26 | class Plane; 27 | } 28 | class GpuPlane; 29 | 30 | namespace Overmix{ namespace Transformations{ 31 | 32 | Rectangle rotationEndSize( Size size, double radians, Point scale={1.0, 1.0} ); 33 | 34 | Plane rotation( const Plane& p1, double radians, Point scale={1.0, 1.0} ); 35 | Plane rotationAlpha( const Plane& p1, double radians, Point scale={1.0, 1.0} ); 36 | 37 | GpuPlane rotation( GpuPlane& p1, double radians, Point scale={1.0, 1.0} ); 38 | } } 39 | 40 | #endif 41 | -------------------------------------------------------------------------------- /src/planes/gwenview/iodevicejpegsourcemanager.h: -------------------------------------------------------------------------------- 1 | // vim: set tabstop=4 shiftwidth=4 expandtab: 2 | /* 3 | Gwenview: an image viewer 4 | Copyright 2008 Aurélien Gâteau 5 | 6 | This program is free software; you can redistribute it and/or 7 | modify it under the terms of the GNU General Public License 8 | as published by the Free Software Foundation; either version 2 9 | of the License, or (at your option) any later version. 10 | 11 | This program is distributed in the hope that it will be useful, 12 | but WITHOUT ANY WARRANTY; without even the implied warranty of 13 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 14 | GNU General Public License for more details. 15 | 16 | You should have received a copy of the GNU General Public License 17 | along with this program; if not, write to the Free Software 18 | Foundation, Inc., 51 Franklin Street, Fifth Floor, Cambridge, MA 02110-1301, USA. 19 | 20 | */ 21 | #ifndef IODEVICEJPEGSOURCEMANAGER_H 22 | #define IODEVICEJPEGSOURCEMANAGER_H 23 | 24 | // Qt 25 | 26 | // KDE 27 | 28 | // Local 29 | 30 | class QIODevice; 31 | struct jpeg_decompress_struct; 32 | 33 | namespace Gwenview 34 | { 35 | 36 | /** 37 | * This namespace provides a function which makes it possible to decode JPEG 38 | * files with libjpeg from a QIODevice instance. 39 | * 40 | * To use it, simply call setup() to initialize your jpeg_decompress_struct 41 | * with QIODevice-ready callbacks. The device should be opened for reading. 42 | */ 43 | namespace IODeviceJpegSourceManager 44 | { 45 | 46 | void setup(jpeg_decompress_struct* cinfo, QIODevice* ioDevice); 47 | 48 | } // namespace 49 | } // namespace 50 | 51 | #endif /* IODEVICEJPEGSOURCEMANAGER_H */ 52 | -------------------------------------------------------------------------------- /src/planes/manipulators/Inpaint.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MANIPULATORS_INPAINT_HPP 19 | #define MANIPULATORS_INPAINT_HPP 20 | 21 | 22 | namespace Overmix{ 23 | class Plane; 24 | class ImageEx; 25 | 26 | namespace Inpaint{ 27 | Plane simple( const Plane& input, const Plane& alpha ); 28 | ImageEx simple( const ImageEx& input ); 29 | }; 30 | 31 | } 32 | 33 | #endif 34 | 35 | -------------------------------------------------------------------------------- /src/planes/manipulators/Mosaic.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MANIPULATORS_MOSAIC_HPP 19 | #define MANIPULATORS_MOSAIC_HPP 20 | 21 | 22 | namespace Overmix{ 23 | class Plane; 24 | class ImageEx; 25 | 26 | namespace Mosaic{ 27 | ImageEx detect( const ImageEx& input ); 28 | }; 29 | 30 | } 31 | 32 | #endif 33 | 34 | -------------------------------------------------------------------------------- /src/planes/manipulators/Steam.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MANIPULATORS_STEAM_HPP 19 | #define MANIPULATORS_STEAM_HPP 20 | 21 | 22 | namespace Overmix{ 23 | class Plane; 24 | class ImageEx; 25 | 26 | namespace Steam{ 27 | Plane detect( const Plane& input, const Plane& alpha ); 28 | ImageEx detect( const ImageEx& input ); 29 | }; 30 | 31 | } 32 | 33 | #endif 34 | 35 | -------------------------------------------------------------------------------- /src/planes/manipulators/Waifu.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MANIPULATORS_WAIFU_HPP 19 | #define MANIPULATORS_WAIFU_HPP 20 | 21 | struct W2XConv; 22 | 23 | namespace Overmix{ 24 | class Plane; 25 | class ImageEx; 26 | 27 | class Waifu{ 28 | private: 29 | W2XConv* conv; 30 | 31 | ImageEx processRgb( const ImageEx& ); 32 | ImageEx processYuv( const ImageEx& ); 33 | 34 | public: 35 | const double scale; 36 | const int denoise; 37 | 38 | public: 39 | Waifu( double scale, int denoise, const char* model_dir ); 40 | ~Waifu(); 41 | 42 | Plane process( const Plane& p ); 43 | ImageEx process( const ImageEx& input ); 44 | 45 | }; 46 | 47 | 48 | } 49 | 50 | #endif 51 | 52 | -------------------------------------------------------------------------------- /src/renders/ARender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef A_RENDER_HPP 19 | #define A_RENDER_HPP 20 | 21 | 22 | namespace Overmix{ 23 | 24 | class AContainer; 25 | class ImageEx; 26 | class AProcessWatcher; 27 | 28 | class ARender{ 29 | public: 30 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const = 0; 31 | virtual ~ARender(){} 32 | }; 33 | 34 | } 35 | 36 | #endif 37 | -------------------------------------------------------------------------------- /src/renders/AnimRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef ANIM_RENDER_HPP 19 | #define ANIM_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | #include "../containers/ImageContainer.hpp" 23 | #include 24 | 25 | namespace Overmix{ 26 | 27 | class AnimRender{ 28 | protected: 29 | ImageContainer frames; 30 | std::vector> old; 31 | 32 | public: 33 | AnimRender( const AContainer& aligner, ARender& render, AProcessWatcher* watcher=nullptr ); //TODO: watcher? 34 | 35 | int count() const{ return frames.count(); } 36 | 37 | ImageEx render( int frame, AProcessWatcher* watcher=nullptr ); 38 | }; 39 | 40 | } 41 | 42 | #endif -------------------------------------------------------------------------------- /src/renders/DiffRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef DIFF_RENDER_HPP 19 | #define DIFF_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | 23 | #include "../Geometry.hpp" 24 | 25 | namespace Overmix{ 26 | 27 | class Plane; 28 | 29 | class DiffRender : public ARender{ 30 | private: 31 | Plane iteration( const AContainer& aligner, const AContainer& real, Size size ) const; 32 | 33 | int iteration_count{ 2 }; 34 | double threshold{ 0.5 }; //For binarization 35 | unsigned dilate_size{ 10 }; 36 | 37 | public: 38 | DiffRender( int iteration_count, double threshold, unsigned dilate_size ) 39 | : iteration_count(iteration_count), threshold(threshold), dilate_size(dilate_size) { } 40 | 41 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 42 | }; 43 | 44 | } 45 | 46 | #endif -------------------------------------------------------------------------------- /src/renders/DistanceMatrixRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef DISTANCE_MATRIX_RENDER_HPP 19 | #define DISTANCE_MATRIX_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | 23 | 24 | namespace Overmix{ 25 | 26 | class DistanceMatrixRender : public ARender{ 27 | public: 28 | ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 29 | }; 30 | 31 | } 32 | 33 | #endif 34 | -------------------------------------------------------------------------------- /src/renders/FastRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef FAST_RENDER_HPP 19 | #define FAST_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class FastRender : public ARender{ 26 | public: 27 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 28 | }; 29 | 30 | } 31 | 32 | #endif -------------------------------------------------------------------------------- /src/renders/FloatRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef FLOAT_RENDER_HPP 19 | #define FLOAT_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | #include "../Geometry.hpp" 23 | 24 | namespace Overmix{ 25 | 26 | class FloatRender : public ARender{ 27 | Point scale; 28 | public: 29 | FloatRender( double scale_x, double scale_y ) : scale( scale_x, scale_y ) { } 30 | FloatRender( double scale=1.0 ) : FloatRender( scale, scale ) { } 31 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 32 | }; 33 | 34 | } 35 | 36 | #endif -------------------------------------------------------------------------------- /src/renders/FocusStackingRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef FOCUS_STACKING_RENDER_HPP 19 | #define FOCUS_STACKING_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | 23 | #include "../color.hpp" 24 | #include "../planes/PlaneBase.hpp" 25 | 26 | namespace Overmix{ 27 | 28 | class FocusStackingRender : public ARender{ 29 | protected: 30 | double blur_amount; 31 | int kernel_size; 32 | 33 | public: 34 | FocusStackingRender( double blur_amount, int kernel_size ) 35 | : blur_amount(blur_amount), kernel_size(kernel_size) { } 36 | 37 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 38 | 39 | void setBlurAmount( double val ){ blur_amount = val; } 40 | }; 41 | 42 | } 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/renders/JpegConstrainerRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef JPEG_CONTARINER_RENDER_HPP 19 | #define JPEG_CONTARINER_RENDER_HPP 20 | 21 | 22 | #include "ARender.hpp" 23 | #include "../degraders/JpegDegrader.hpp" 24 | #include "../planes/JpegImage.hpp" 25 | #include 26 | 27 | namespace Overmix{ 28 | 29 | class ImageEx; 30 | 31 | class JpegConstrainerRender : public ARender{ 32 | private: 33 | //Model parameters 34 | JpegImage jpeg; 35 | JpegDegrader degrader; 36 | 37 | public: 38 | explicit JpegConstrainerRender( QString path ); 39 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 40 | }; 41 | 42 | } 43 | 44 | #endif 45 | -------------------------------------------------------------------------------- /src/renders/JpegRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef JPEG_RENDER_HPP 19 | #define JPEG_RENDER_HPP 20 | 21 | 22 | #include "ARender.hpp" 23 | #include "../degraders/JpegDegrader.hpp" 24 | #include 25 | 26 | namespace Overmix{ 27 | 28 | struct Parameters; 29 | class Plane; 30 | class ImageEx; 31 | 32 | class JpegRender : public ARender{ 33 | private: 34 | //Estimation parameters 35 | int iterations; 36 | 37 | //Model parameters 38 | JpegDegrader jpeg; 39 | 40 | Plane degrade( const Plane& original, const Parameters& para ) const; 41 | 42 | public: 43 | JpegRender( QString path, int iterations=300 ); 44 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 45 | }; 46 | 47 | } 48 | 49 | #endif 50 | -------------------------------------------------------------------------------- /src/renders/PlaneRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef PLANE_RENDER_HPP 19 | #define PLANE_RENDER_HPP 20 | 21 | #include "ARender.hpp" 22 | 23 | namespace Overmix{ 24 | class Plane; 25 | 26 | class PlaneRender : public ARender{ 27 | protected: 28 | unsigned max_planes = -1; 29 | virtual void* data() const{ return nullptr; } 30 | typedef void pixel_func( class MultiPlaneLineIterator &it ); 31 | virtual pixel_func* pixel() const = 0; 32 | 33 | Plane renderPlane( const AContainer& aligner, int plane, AProcessWatcher* watcher ) const; 34 | 35 | public: 36 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 37 | }; 38 | 39 | } 40 | 41 | #endif -------------------------------------------------------------------------------- /src/renders/RobustSrRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef ROBUST_SR_RENDER_HPP 19 | #define ROBUST_SR_RENDER_HPP 20 | 21 | 22 | #include "ARender.hpp" 23 | 24 | namespace Overmix{ 25 | 26 | class RobustSrRender : public ARender{ 27 | private: 28 | int upscale_factor; 29 | int iterations{ 75 * 2 }; 30 | float beta{ 1.3f / 255 / 2 }; 31 | 32 | public: 33 | explicit RobustSrRender( int upscale_factor ) : upscale_factor(upscale_factor) { } 34 | virtual ImageEx render( const AContainer& group, AProcessWatcher* watcher=nullptr ) const override; 35 | }; 36 | 37 | } 38 | 39 | #endif 40 | -------------------------------------------------------------------------------- /src/renders/StatisticsRender.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MEDIAN_RENDER_HPP 19 | #define MEDIAN_RENDER_HPP 20 | 21 | #include "PlaneRender.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | enum class Statistics{ 26 | AVG 27 | , MIN 28 | , MAX 29 | , MEDIAN 30 | , DIFFERENCE 31 | }; 32 | 33 | class StatisticsRender : public PlaneRender{ 34 | protected: 35 | Statistics function; 36 | virtual pixel_func* pixel() const override; 37 | 38 | public: 39 | explicit StatisticsRender( Statistics function ) : function(function) { 40 | if( function == Statistics::DIFFERENCE ) 41 | max_planes = 1; 42 | } 43 | }; 44 | 45 | } 46 | 47 | #endif -------------------------------------------------------------------------------- /src/utils/Animator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef ANIMATOR_HPP 19 | #define ANIMATOR_HPP 20 | 21 | #include "../Geometry.hpp" 22 | 23 | namespace Overmix{ 24 | 25 | class ImageEx; 26 | 27 | class Animator{ 28 | public: 29 | struct ImageMovement{ 30 | const ImageEx& img; 31 | Point offset; 32 | Point movement; 33 | Size scale{ 1.0, 1.0 }; 34 | }; 35 | private: 36 | ; 37 | Point offset{ 0.0, 0.0 }; 38 | Point movement{ 2.8, 3.6 }; 39 | Size view{ 853, 480 }; 40 | Size scale{ 1.0, 1.0 }; 41 | 42 | 43 | public: 44 | 45 | void render( const ImageEx& img ) const; 46 | }; 47 | 48 | } 49 | 50 | #endif -------------------------------------------------------------------------------- /src/utils/ImageLoader.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef IMAGE_LOADER_HPP 19 | #define IMAGE_LOADER_HPP 20 | 21 | #include 22 | class QStringList; 23 | 24 | #include 25 | #include 26 | 27 | namespace Overmix{ 28 | 29 | class AProcessWatcher; 30 | class Deteleciner; 31 | class ImageEx; 32 | class ImageContainer; 33 | 34 | class ImageLoader{ 35 | private: 36 | using Item = std::pair; 37 | std::vector images; 38 | 39 | public: 40 | ImageLoader( int reserve ) { images.reserve( reserve ); } 41 | 42 | void add( QString filename, ImageEx& image ) { images.emplace_back( filename, image ); } 43 | const std::vector& loadAll( AProcessWatcher* watcher=nullptr ); 44 | 45 | static std::vector loadImages( QStringList list, AProcessWatcher* watcher=nullptr ); 46 | static void loadImages( QStringList list, ImageContainer& container, Deteleciner& detele, int alpha_mask=-1, AProcessWatcher* watcher=nullptr ); 47 | }; 48 | 49 | } 50 | 51 | #endif -------------------------------------------------------------------------------- /src/utils/SRSampleCreator.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "SRSampleCreator.hpp" 19 | 20 | #include "../planes/ImageEx.hpp" 21 | #include "../containers/ImageContainer.hpp" 22 | #include "../color.hpp" 23 | 24 | using namespace Overmix; 25 | 26 | 27 | void SRSampleCreator::render( ImageContainer& add_to, const ImageEx& img ) const{ 28 | //TODO: 29 | Point size( (img.get_width()-(scale-1)) / scale * scale, (img.get_height()-(scale-1)) / scale * scale ); 30 | Point size_lr( size.x / scale, size.y / scale ); 31 | for( int x=0; x offset( x / (double)scale, y / (double)scale ); 35 | 36 | sample.crop( {unsigned(x), unsigned(y)}, size ); 37 | sample.scale( size_lr ); 38 | 39 | add_to.addImage( std::move(sample), -1, -1, QString::fromUtf8(("lr_" + std::to_string(x) + "_" + std::to_string(y)).c_str()) ); 40 | add_to.setRawPos( add_to.count()-1, offset ); 41 | } 42 | add_to.setAligned(); 43 | } -------------------------------------------------------------------------------- /src/utils/SRSampleCreator.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef SR_SAMLE_CREATOR_HPP 19 | #define SR_SAMLE_CREATOR_HPP 20 | 21 | namespace Overmix{ 22 | 23 | class ImageEx; 24 | class ImageContainer; 25 | 26 | class SRSampleCreator{ 27 | public: 28 | int scale{ 4 }; 29 | bool use_random_movement { false }; 30 | int sample_count{ 16 }; 31 | 32 | private: 33 | 34 | 35 | public: 36 | void render( ImageContainer& add_to, const ImageEx& img ) const; 37 | }; 38 | 39 | } 40 | 41 | #endif -------------------------------------------------------------------------------- /src/utils/utils.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef UTILS_HPP 19 | #define UTILS_HPP 20 | 21 | #include 22 | #include 23 | 24 | namespace util{ 25 | 26 | template 27 | bool removeItems( std::vector& container, unsigned pos, unsigned amount ){ 28 | if( container.size() < pos+amount ) 29 | return false; 30 | 31 | auto start = container.begin() + pos; 32 | auto stop = start + amount; 33 | std::move( stop, container.end(), start ); 34 | container.resize( container.size() - amount ); 35 | 36 | return true; 37 | } 38 | 39 | template 40 | void removeItemsIf( std::vector& container, Func f ) 41 | { container.erase( std::remove_if( container.begin(), container.end(), f ), container.end() ); } 42 | 43 | } 44 | 45 | #endif 46 | -------------------------------------------------------------------------------- /src/video/Video.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "Video.hpp" 19 | -------------------------------------------------------------------------------- /src/video/Video.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef VIDEO_HPP 19 | #define VIDEO_HPP 20 | 21 | #include "VideoStream.hpp" 22 | 23 | #include 24 | #include 25 | 26 | class QString; 27 | 28 | namespace Overmix{ 29 | 30 | class VideoStream; 31 | class ImageEx; 32 | 33 | class Video{ 34 | private: 35 | std::unique_ptr stream; 36 | 37 | public: 38 | explicit Video( QString path ); 39 | bool isValid() const; 40 | 41 | void setPosition( double seconds ); 42 | 43 | std::vector getImages( int amount, int skip=0 ); 44 | }; 45 | 46 | } 47 | 48 | #endif 49 | -------------------------------------------------------------------------------- /src/video/VideoFrame.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef VIDEO_FRAME_HPP 19 | #define VIDEO_FRAME_HPP 20 | 21 | struct AVFrame; 22 | struct AVCodecContext; 23 | class QImage; 24 | 25 | namespace Overmix{ 26 | 27 | class ImageEx; 28 | 29 | class VideoFrame{ 30 | private: 31 | AVFrame *frame; 32 | AVCodecContext& context; 33 | 34 | public: 35 | VideoFrame( AVCodecContext &context ); 36 | VideoFrame( const VideoFrame& ) = delete; 37 | VideoFrame( VideoFrame&& ); 38 | ~VideoFrame(); 39 | 40 | ImageEx toImageEx(); 41 | QImage toPreview( int max_size ); 42 | 43 | operator AVFrame*(){ return frame; } 44 | 45 | bool is_keyframe() const; 46 | int frameNumber() const; 47 | }; 48 | 49 | } 50 | 51 | #endif 52 | -------------------------------------------------------------------------------- /src/video/VideoStream.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef VIDEO_STREAM_HPP 19 | #define VIDEO_STREAM_HPP 20 | 21 | #include 22 | #include 23 | 24 | class QString; 25 | struct AVFormatContext; 26 | struct AVCodecContext; 27 | 28 | namespace Overmix{ 29 | 30 | class VideoFrame; 31 | 32 | class VideoStream{ 33 | private: 34 | AVFormatContext* format_context{ nullptr }; 35 | AVCodecContext* codec_context{ nullptr }; 36 | int stream_index{ -1 }; 37 | bool eof{ false }; 38 | 39 | 40 | public: 41 | explicit VideoStream( QString path ); 42 | 43 | bool seek( double seconds ); 44 | VideoFrame getFrame(); 45 | void skipFrame(); 46 | 47 | static bool isVideoFile( QString path ); 48 | }; 49 | 50 | } 51 | 52 | #endif 53 | -------------------------------------------------------------------------------- /tests/.gitignore: -------------------------------------------------------------------------------- 1 | /debug 2 | /release 3 | /Makefile 4 | /*.Debug 5 | /*.Release 6 | /*.pro.user -------------------------------------------------------------------------------- /tests/src/TestGeometry.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef TEST_GEOMETRY_HPP 19 | #define TEST_GEOMETRY_HPP 20 | 21 | #include 22 | 23 | class TestGeometry : public QObject{ 24 | Q_OBJECT 25 | 26 | private: 27 | void fillTestData(); 28 | 29 | private slots: 30 | void testSizeInit_data(){ fillTestData(); } 31 | void testSizeInit(); 32 | 33 | // void testAdd_data(){ fillTestData(); } 34 | // void testAdd(); 35 | 36 | }; 37 | 38 | #endif -------------------------------------------------------------------------------- /tests/src/TestPlane.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef TEST_PLANE_HPP 19 | #define TEST_PLANE_HPP 20 | 21 | #include 22 | 23 | class TestPlane : public QObject{ 24 | Q_OBJECT 25 | 26 | private slots: 27 | void testInitialization_data(); 28 | void testInitialization(); 29 | 30 | void testPixel_data(); 31 | void testPixel(); 32 | 33 | void testMin_data(); 34 | void testMin(); 35 | void testMax_data(); 36 | void testMax(); 37 | 38 | void testFill_data(); 39 | void testFill(); 40 | }; 41 | 42 | #endif -------------------------------------------------------------------------------- /tests/src/main.cpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #include "TestPlane.hpp" 19 | #include "TestGeometry.hpp" 20 | 21 | #include 22 | 23 | int main( int argc, char* argv[] ){ 24 | TestPlane test_plane; 25 | QTest::qExec( &test_plane, argc, argv ); 26 | 27 | TestGeometry test_geometry; 28 | QTest::qExec( &test_geometry, argc, argv ); 29 | 30 | return 0; 31 | } 32 | 33 | -------------------------------------------------------------------------------- /trainer/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | cmake_minimum_required(VERSION 3.6) 2 | project(OvermixTrainer) 3 | 4 | set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall") # Turn on warnings 5 | 6 | # Qt compilers setup 7 | set(CMAKE_AUTOUIC ON) 8 | set(CMAKE_AUTOMOC ON) 9 | set(CMAKE_INCLUDE_CURRENT_DIR ON) 10 | 11 | set(SOURCE_TRAINER 12 | MainWindow.cpp 13 | Slide.cpp 14 | ) 15 | 16 | 17 | add_executable(OvermixTrainer WIN32 ${SOURCE_TRAINER} main.cpp) 18 | 19 | # Set-up libraries 20 | include_directories ("${PROJECT_SOURCE_DIR}/../src") 21 | include_directories ("${PROJECT_SOURCE_DIR}/../interface/gui/viewer") 22 | target_link_libraries(OvermixTrainer OvermixCore qtimgviewer Qt5::Widgets pugixml::pugixml PkgConfig::LCMS2 ${PLATFORM_LIBRARIES}) 23 | 24 | # C++14 25 | set_property(TARGET OvermixTrainer PROPERTY CXX_STANDARD 14) 26 | set_property(TARGET OvermixTrainer PROPERTY CXX_STANDARD_REQUIRED ON) 27 | -------------------------------------------------------------------------------- /trainer/ConfusionMatrix.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef CONFUSION_MATRIX_HPP 19 | #define CONFUSION_MATRIX_HPP 20 | 21 | namespace Overmix{ 22 | 23 | struct ConfusionMatrix { 24 | unsigned tp{ 0 }; 25 | unsigned fp{ 0 }; 26 | unsigned tn{ 0 }; 27 | unsigned fn{ 0 }; 28 | 29 | ConfusionMatrix() {} 30 | 31 | ConfusionMatrix( unsigned tp, unsigned fp, unsigned tn, unsigned fn ) 32 | : tp(tp), fp(fp), tn(tn), fn(fn) { } 33 | 34 | ConfusionMatrix( bool expected, bool actual ) { 35 | if( expected==true && actual == true ) tp = 1; 36 | else if( expected==true && actual == false ) fn = 1; 37 | else if( expected==false && actual == true ) fp = 1; 38 | else if( expected==false && actual == false ) tn = 1; 39 | } 40 | 41 | //TODO: statistics 42 | 43 | ConfusionMatrix& operator+=( const ConfusionMatrix& other ) { 44 | tp += other.tp; 45 | fp += other.fp; 46 | tn += other.tn; 47 | fn += other.fn; 48 | return *this; 49 | } 50 | }; 51 | 52 | } 53 | 54 | #endif -------------------------------------------------------------------------------- /trainer/MainWindow.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef MAIN_WINDOW_HPP 19 | #define MAIN_WINDOW_HPP 20 | 21 | #include 22 | #include 23 | #include 24 | 25 | #include "Slide.hpp" 26 | #include "SlideModel.hpp" 27 | 28 | class imageViewer; 29 | 30 | namespace Overmix{ 31 | 32 | 33 | class MainWindow: public QWidget{ 34 | Q_OBJECT 35 | 36 | private: 37 | Slide s; 38 | SlideModel s_model; 39 | 40 | QTreeView view; 41 | imageViewer* viewer; 42 | QSettings settings; 43 | 44 | public: 45 | explicit MainWindow(); 46 | 47 | 48 | protected: 49 | 50 | void dragEnterEvent( QDragEnterEvent* ) override; 51 | void dropEvent( QDropEvent* ) override; 52 | void keyPressEvent( QKeyEvent* ) override; 53 | 54 | 55 | private: 56 | void toogleInterlaze(); 57 | void loadSlide(); 58 | void saveSlide(); 59 | void evaluateInterlaze(); 60 | void newSlide(); 61 | void createErrorMatrix(); 62 | }; 63 | 64 | } 65 | 66 | #endif 67 | -------------------------------------------------------------------------------- /trainer/Slide.hpp: -------------------------------------------------------------------------------- 1 | /* 2 | This file is part of Overmix. 3 | 4 | Overmix is free software: you can redistribute it and/or modify 5 | it under the terms of the GNU General Public License as published by 6 | the Free Software Foundation, either version 3 of the License, or 7 | (at your option) any later version. 8 | 9 | Overmix is distributed in the hope that it will be useful, 10 | but WITHOUT ANY WARRANTY; without even the implied warranty of 11 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 | GNU General Public License for more details. 13 | 14 | You should have received a copy of the GNU General Public License 15 | along with Overmix. If not, see . 16 | */ 17 | 18 | #ifndef SLIDE_HPP 19 | #define SLIDE_HPP 20 | 21 | #include 22 | #include 23 | 24 | namespace Overmix{ 25 | 26 | struct ConfusionMatrix; 27 | 28 | struct ImageInfo{ 29 | QString filename; 30 | bool interlazed{ false }; 31 | bool interlaze_predicted{ false }; 32 | ImageInfo( QString filename, bool interlazed ) 33 | : filename(filename), interlazed(interlazed) { } 34 | 35 | ConfusionMatrix interlazeTest( QString prev ); 36 | }; 37 | 38 | class Slide{ 39 | public: 40 | std::vector images; 41 | 42 | public: 43 | void add( QString filename, bool interlazed ) 44 | { images.emplace_back( filename, interlazed ); } 45 | 46 | QString saveXml( QString filename ); 47 | QString loadXml( QString filename ); 48 | 49 | ConfusionMatrix evaluateInterlaze(); 50 | 51 | void createErrorMatrix( QString filepath ) const; 52 | }; 53 | 54 | } 55 | 56 | #endif 57 | -------------------------------------------------------------------------------- /utils/compare_aligns.py: -------------------------------------------------------------------------------- 1 | import sys 2 | from xml.dom import minidom 3 | 4 | def parse(path): 5 | doc = minidom.parse(path) 6 | offsets = doc.getElementsByTagName('offset') 7 | return [(float(offset.attributes['x'].value), float(offset.attributes['y'].value)) for offset in offsets] 8 | 9 | file1 = parse(sys.argv[1]) 10 | file2 = parse(sys.argv[2]) 11 | 12 | diff_x = [x[0]-y[0] for (x, y) in zip(file1, file2)] 13 | diff_y = [x[1]-y[1] for (x, y) in zip(file1, file2)] 14 | error_x = sum([abs(x) for x in diff_x]) 15 | error_y = sum([abs(y) for y in diff_y]) 16 | print(error_x, error_y) --------------------------------------------------------------------------------