-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathCanvas.cpp
More file actions
51 lines (42 loc) · 1.23 KB
/
Canvas.cpp
File metadata and controls
51 lines (42 loc) · 1.23 KB
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
#include "Canvas.h"
#include <filesystem>
Canvas::Canvas(unsigned width, unsigned height) {
m_rtex.create(width, height);
clear();
m_sprite.setTexture(m_rtex.getTexture());
}
sf::Image Canvas::copyToImage() const {
return m_rtex.getTexture().copyToImage();
}
void Canvas::updateFromImage(const sf::Image& img) {
sf::Texture tex;
tex.loadFromImage(img);
sf::Sprite spr(tex);
m_rtex.clear(sf::Color::White);
m_rtex.draw(spr);
m_rtex.display();
}
void Canvas::drawPreview(sf::RenderWindow& window, const sf::Drawable& drawable) const {
window.draw(drawable);
}
void Canvas::clear(const sf::Color& bg) {
m_rtex.clear(bg);
m_rtex.display();
}
void Canvas::drawToCanvas(const sf::Drawable& drawable) {
m_rtex.draw(drawable);
m_rtex.display();
}
void Canvas::displayOn(sf::RenderWindow& window) {
window.draw(m_sprite);
}
bool Canvas::saveToFile(const std::string& filename) const {
namespace fs = std::filesystem;
fs::path folder = fs::current_path() / "saves";
if (!fs::exists(folder)) {
fs::create_directories(folder);
}
fs::path filePath = folder / filename;
sf::Image img = m_rtex.getTexture().copyToImage();
return img.saveToFile(filePath.string());
}