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