Simple GUI Library
background.cpp
Go to the documentation of this file.
1/**
2 * @author Nikita Mochalov (github.com/tralf-strues)
3 * @file background.cpp
4 * @date 2021-11-06
5 *
6 * @copyright Copyright (c) 2021
7 */
8
9#include "paint/background.h"
10#include "paint/fill.h"
11#include "media/image.h"
12
13namespace Sgl
14{
15 Background::Background(const std::initializer_list<const Fill*>& fills,
16 const std::initializer_list<const Image*>& images)
17 {
18 m_Fills.insert(m_Fills.end(), fills);
19 m_Images.insert(m_Images.end(), images);
20 }
21
22 Background::Background(const std::initializer_list<const Fill*>& fills)
23 {
24 m_Fills.insert(m_Fills.end(), fills);
25 }
26
27 Background::Background(const Fill* fill) : Background({fill}) {}
28
29 void Background::addFill(const Fill* fill) { assert(fill); m_Fills.push_back(fill); }
30 void Background::addImage(const Image* image) { assert(image); m_Images.push_back(image); }
31
32 void Background::clearFills() { m_Fills.clear(); }
33 void Background::clearImages() { m_Images.clear(); }
34
35 const std::vector<const Fill*>& Background::getFills() const { return m_Fills; }
36 const std::vector<const Image*> Background::getImages() const { return m_Images; }
37
38 void Background::fillArea(const Background* background, const Sml::Rectangle<int32_t>& targetRegion)
39 {
40 for (const Fill* fill : background->getFills())
41 {
42 fill->fillArea({0, 0, targetRegion.width, targetRegion.height}, targetRegion);
43 }
44
45 for (const Image* image : background->getImages())
46 {
47 renderImage(image, targetRegion);
48 }
49 }
50}