MCPcopy Create free account
hub / github.com/OneLoneCoder/olcPixelGameEngine / TransformedView

Class TransformedView

extensions/olcPGEX_TransformedView.h:94–218  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

92namespace olc
93{
94 class TransformedView : public olc::PGEX
95 {
96 public:
97 TransformedView() = default;
98 virtual void Initialise(const olc::vi2d& vViewArea, const olc::vf2d& vPixelScale = { 1.0f, 1.0f });
99
100 olc::PixelGameEngine* GetPGE();
101
102 public:
103 void SetWorldOffset(const olc::vf2d& vOffset);
104 void MoveWorldOffset(const olc::vf2d& vDeltaOffset);
105 void SetWorldScale(const olc::vf2d& vScale);
106 void SetViewArea(const olc::vi2d& vViewArea);
107 olc::vf2d GetWorldTL() const;
108 olc::vf2d GetWorldBR() const;
109 olc::vf2d GetWorldVisibleArea() const;
110 void ZoomAtScreenPos(const float fDeltaZoom, const olc::vi2d& vPos);
111 void SetZoom(const float fZoom, const olc::vf2d& vPos);
112 void StartPan(const olc::vi2d& vPos);
113 void UpdatePan(const olc::vi2d& vPos);
114 void EndPan(const olc::vi2d& vPos);
115 const olc::vf2d& GetWorldOffset() const;
116 const olc::vf2d& GetWorldScale() const;
117 virtual olc::vf2d WorldToScreen(const olc::vf2d& vWorldPos) const;
118 virtual olc::vf2d ScreenToWorld(const olc::vf2d& vScreenPos) const;
119 virtual olc::vf2d ScaleToWorld(const olc::vf2d& vScreenSize) const;
120 virtual olc::vf2d ScaleToScreen(const olc::vf2d& vWorldSize) const;
121 virtual bool IsPointVisible(const olc::vf2d& vPos) const;
122 virtual bool IsRectVisible(const olc::vf2d& vPos, const olc::vf2d& vSize) const;
123 virtual void HandlePanAndZoom(const int nMouseButton = 2, const float fZoomRate = 0.1f, const bool bPan = true, const bool bZoom = true);
124 void SetScaleExtents(const olc::vf2d& vScaleMin, const olc::vf2d& vScaleMax);
125 void EnableScaleClamp(const bool bEnable);
126
127 protected:
128 olc::vf2d m_vWorldOffset = { 0.0f, 0.0f };
129 olc::vf2d m_vWorldScale = { 1.0f, 1.0f };
130 olc::vf2d m_vRecipPixel = { 1.0f, 1.0f };
131 olc::vf2d m_vPixelScale = { 1.0f, 1.0f };
132 bool m_bPanning = false;
133 olc::vf2d m_vStartPan = { 0.0f, 0.0f };
134 olc::vi2d m_vViewArea;
135 bool m_bZoomClamp = false;
136 olc::vf2d m_vMaxScale = { 0.0f, 0.0f };
137 olc::vf2d m_vMinScale = { 0.0f, 0.0f };
138
139 public: // Hopefully, these should look familiar!
140 // Plots a single point
141 virtual bool Draw(float x, float y, olc::Pixel p = olc::WHITE);
142 bool Draw(const olc::vf2d& pos, olc::Pixel p = olc::WHITE);
143 // Draws a line from (x1,y1) to (x2,y2)
144 void DrawLine(float x1, float y1, float x2, float y2, olc::Pixel p = olc::WHITE, uint32_t pattern = 0xFFFFFFFF);
145 void DrawLine(const olc::vf2d& pos1, const olc::vf2d& pos2, olc::Pixel p = olc::WHITE, uint32_t pattern = 0xFFFFFFFF);
146 // Draws a circle located at (x,y) with radius
147 void DrawCircle(float x, float y, float radius, olc::Pixel p = olc::WHITE, uint8_t mask = 0xFF);
148 void DrawCircle(const olc::vf2d& pos, float radius, olc::Pixel p = olc::WHITE, uint8_t mask = 0xFF);
149 // Fills a circle located at (x,y) with radius
150 void FillCircle(float x, float y, float radius, olc::Pixel p = olc::WHITE);
151 void FillCircle(const olc::vf2d& pos, float radius, olc::Pixel p = olc::WHITE);

Callers

nothing calls this directly

Calls

no outgoing calls

Tested by

no test coverage detected