-
Notifications
You must be signed in to change notification settings - Fork 0
/
texSynth.h
58 lines (44 loc) · 1.54 KB
/
texSynth.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/*
* Copyright, 2013, Aeron Buchanan
*
* This file is part of Diminer, a digital inpainting resource.
*
* Diminer is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* Diminer is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Diminer. If not, see <http://www.gnu.org/licenses/>.
*/
#pragma once
#include <utility>
#include <vector>
#include <unordered_map>
// TODO: make Diminer image-library agnostic
using cimg_library::CImg;
#include "patch.h"
namespace Diminer
{
template<uint N>
class Diminerer
{
public:
typedef ImagePatch<N, 3> Patch;
typedef std::vector<Patch> PatchLibrary;
Diminerer() : m_patchWidth(N) { }
void extendTextureIn(cimg_library::CImg<float> & _image, cimg_library::CImg<float> & _mask) const;
uint selectPatchFor(cimg_library::CImg<float> & _image, cimg_library:: CImg<float> & _mask, uint _x, uint _y) const;
void addPatches(PatchLibrary const & _pl) { m_patches.insert( m_patches.end(), _pl.begin(), _pl.end() ); }
void clearPatches() { m_patches.clear(); }
private:
PatchLibrary m_patches;
uint m_patchWidth;
};
} // end namespace Diminer
#include "Diminer.hpp"