View.hpp
1
2//
3// SFML - Simple and Fast Multimedia Library
4// Copyright (C) 2007-2009 Laurent Gomila (laurent.gom@gmail.com)
5//
6// This software is provided 'as-is', without any express or implied warranty.
7// In no event will the authors be held liable for any damages arising from the use of this software.
8//
9// Permission is granted to anyone to use this software for any purpose,
10// including commercial applications, and to alter it and redistribute it freely,
11// subject to the following restrictions:
12//
13// 1. The origin of this software must not be misrepresented;
14// you must not claim that you wrote the original software.
15// If you use this software in a product, an acknowledgment
16// in the product documentation would be appreciated but is not required.
17//
18// 2. Altered source versions must be plainly marked as such,
19// and must not be misrepresented as being the original software.
20//
21// 3. This notice may not be removed or altered from any source distribution.
22//
24
25#ifndef SFML_VIEW_HPP
26#define SFML_VIEW_HPP
27
29// Headers
31#include <SFML/Config.hpp>
32#include <SFML/Graphics/Rect.hpp>
33#include <SFML/Graphics/Matrix3.hpp>
34#include <SFML/System/Vector2.hpp>
35
36
37namespace sf
38{
39class RenderTarget;
40
45class SFML_API View
46{
47public :
48
55 explicit View(const FloatRect& ViewRect = FloatRect(0, 0, 1000, 1000));
56
64 View(const sf::Vector2f& Center, const sf::Vector2f& HalfSize);
65
73 void SetCenter(float X, float Y);
74
81 void SetCenter(const sf::Vector2f& Center);
82
90 void SetHalfSize(float HalfWidth, float HalfHeight);
91
98 void SetHalfSize(const sf::Vector2f& HalfSize);
99
106 void SetFromRect(const FloatRect& ViewRect);
107
114 const sf::Vector2f& GetCenter() const;
115
122 const sf::Vector2f& GetHalfSize() const;
123
130 const sf::FloatRect& GetRect() const;
131
139 void Move(float OffsetX, float OffsetY);
140
147 void Move(const sf::Vector2f& Offset);
148
155 void Zoom(float Factor);
156
157private :
158
159 friend class RenderTarget;
160
167 const Matrix3& GetMatrix() const;
168
173 void RecomputeMatrix();
174
176 // Member data
178 sf::Vector2f myCenter;
179 sf::Vector2f myHalfSize;
180 FloatRect myRect;
181 Matrix3 myMatrix;
182 bool myNeedUpdate;
183};
184
185} // namespace sf
186
187
188#endif // SFML_VIEW_HPP
Utility class to manipulate 3x3 matrices representing 2D transformations.
Definition Matrix3.hpp:43
Base class for all render targets (window, image, ...).
void Zoom(float Factor)
Resize the view rectangle to simulate a zoom / unzoom effect.
Definition View.cpp:159
const sf::Vector2f & GetHalfSize() const
Get the half-size of the view.
Definition View.cpp:117
void SetHalfSize(float HalfWidth, float HalfHeight)
Change the half-size of the view (take 2 values).
Definition View.cpp:78
View(const FloatRect &ViewRect=FloatRect(0, 0, 1000, 1000))
Construct the view from a rectangle.
Definition View.cpp:37
void Move(float OffsetX, float OffsetY)
Move the view (take 2 values).
Definition View.cpp:139
const sf::FloatRect & GetRect() const
Get the bounding rectangle of the view.
Definition View.cpp:126
void SetFromRect(const FloatRect &ViewRect)
Rebuild the view from a rectangle.
Definition View.cpp:98
const sf::Vector2f & GetCenter() const
Get the center of the view.
Definition View.cpp:108
void SetCenter(float X, float Y)
Change the center of the view (take 2 values).
Definition View.cpp:58