Axe out remaining uses of old Point/Rect API

This commit is contained in:
Dmitry Marakasov 2014-12-25 19:30:37 +03:00
parent 3796a6d246
commit 65b5446fd1
8 changed files with 39 additions and 56 deletions

View File

@ -28,11 +28,11 @@ try {
renderer.Clear();
// Also note a way to specify null rects
renderer.Copy(sprite1, SDL2pp::Rect::Null(), SDL2pp::Rect::Null());
// Also note a way to specify null rects and points
renderer.Copy(sprite1, SDL2pp::NullOpt, SDL2pp::NullOpt);
// Copy() is overloaded, providing access to both SDL_RenderCopy and SDL_RenderCopyEx
renderer.Copy(sprite2, SDL2pp::Rect::Null(), SDL2pp::Rect::Null(), 45.0);
renderer.Copy(sprite2, SDL2pp::NullOpt, SDL2pp::NullOpt, 45.0);
renderer.Present();

View File

@ -108,8 +108,6 @@ void Renderer::DrawPoint(int x, int y) {
}
void Renderer::DrawPoint(const Point& p) {
if (p.IsNull())
return;
DrawPoint(p.GetX(), p.GetY());
}
@ -117,8 +115,7 @@ void Renderer::DrawPoints(const Point* points, int count) {
std::vector<SDL_Point> sdl_points;
sdl_points.reserve(count);
for (const Point* p = points; p != points + count; ++p)
if (!p->IsNull())
sdl_points.emplace_back(*p->Get());
sdl_points.emplace_back(*p);
if (SDL_RenderDrawPoints(renderer_, sdl_points.data(), sdl_points.size()) != 0)
throw Exception("SDL_RenderDrawPoints failed");
@ -130,17 +127,14 @@ void Renderer::DrawLine(int x1, int y1, int x2, int y2) {
}
void Renderer::DrawLine(const Point& p1, const Point& p2) {
if (p1.IsNull() || p2.IsNull())
return;
DrawLine(p1.GetX(), p1.GetY(), p2.GetX(), p2.GetY());
DrawLine(p1.x, p1.y, p2.x, p2.y);
}
void Renderer::DrawLines(const Point* points, int count) {
std::vector<SDL_Point> sdl_points;
sdl_points.reserve(count);
for (const Point* p = points; p != points + count; ++p)
if (!p->IsNull())
sdl_points.emplace_back(*p->Get());
sdl_points.emplace_back(*p);
if (SDL_RenderDrawLines(renderer_, sdl_points.data(), sdl_points.size()) != 0)
throw Exception("SDL_RenderDrawLines failed");
@ -153,15 +147,11 @@ void Renderer::DrawRect(int x1, int y1, int x2, int y2) {
}
void Renderer::DrawRect(const Point& p1, const Point& p2) {
if (p1.IsNull() || p2.IsNull())
return;
DrawRect(p1.GetX(), p1.GetY(), p2.GetX(), p2.GetY());
DrawRect(p1.x, p1.y, p2.x, p2.y);
}
void Renderer::DrawRect(const Rect& r) {
if (r.IsNull())
return;
if (SDL_RenderDrawRect(renderer_, r.Get()) != 0)
if (SDL_RenderDrawRect(renderer_, &r) != 0)
throw Exception("SDL_RenderDrawRect failed");
}
@ -169,8 +159,7 @@ void Renderer::DrawRects(const Rect* rects, int count) {
std::vector<SDL_Rect> sdl_rects;
sdl_rects.reserve(count);
for (const Rect* r = rects; r != rects + count; ++r)
if (!r->IsNull())
sdl_rects.emplace_back(*r->Get());
sdl_rects.emplace_back(*r);
if (SDL_RenderDrawRects(renderer_, sdl_rects.data(), sdl_rects.size()) != 0)
throw Exception("SDL_RenderDrawRects failed");
@ -183,15 +172,11 @@ void Renderer::FillRect(int x1, int y1, int x2, int y2) {
}
void Renderer::FillRect(const Point& p1, const Point& p2) {
if (p1.IsNull() || p2.IsNull())
return;
FillRect(p1.GetX(), p1.GetY(), p2.GetX(), p2.GetY());
FillRect(p1.x, p1.y, p2.x, p2.y);
}
void Renderer::FillRect(const Rect& r) {
if (r.IsNull())
return;
if (SDL_RenderFillRect(renderer_, r.Get()) != 0)
if (SDL_RenderFillRect(renderer_, &r) != 0)
throw Exception("SDL_RenderFillRect failed");
}
@ -199,20 +184,19 @@ void Renderer::FillRects(const Rect* rects, int count) {
std::vector<SDL_Rect> sdl_rects;
sdl_rects.reserve(count);
for (const Rect* r = rects; r != rects + count; ++r)
if (!r->IsNull())
sdl_rects.emplace_back(*r->Get());
sdl_rects.emplace_back(*r);
if (SDL_RenderFillRects(renderer_, sdl_rects.data(), sdl_rects.size()) != 0)
throw Exception("SDL_RenderFillRects failed");
}
void Renderer::ReadPixels(const Rect& rect, Uint32 format, void* pixels, int pitch) {
if (SDL_RenderReadPixels(renderer_, rect.Get(), format, pixels, pitch) != 0)
void Renderer::ReadPixels(const Optional<Rect>& rect, Uint32 format, void* pixels, int pitch) {
if (SDL_RenderReadPixels(renderer_, rect ? &*rect : nullptr, format, pixels, pitch) != 0)
throw Exception("SDL_RenderReadPixels failed");
}
void Renderer::SetClipRect(const Rect& rect) {
if (SDL_RenderSetClipRect(renderer_, rect.Get()) != 0)
void Renderer::SetClipRect(const Optional<Rect>& rect) {
if (SDL_RenderSetClipRect(renderer_, rect ? &*rect : nullptr) != 0)
throw Exception("SDL_RenderSetClipRect failed");
}
@ -226,8 +210,8 @@ void Renderer::SetScale(float scaleX, float scaleY) {
throw Exception("SDL_RenderSetScale failed");
}
void Renderer::SetViewport(const Rect& rect) {
if (SDL_RenderSetViewport(renderer_, rect.Get()) != 0)
void Renderer::SetViewport(const Optional<Rect>& rect) {
if (SDL_RenderSetViewport(renderer_, rect ? &*rect : nullptr) != 0)
throw Exception("SDL_RenderSetViewport failed");
}

View File

@ -86,12 +86,12 @@ public:
void FillRect(const Rect& r);
void FillRects(const Rect* rects, int count);
void ReadPixels(const Rect& rect, Uint32 format, void* pixels, int pitch);
void ReadPixels(const Optional<Rect>& rect, Uint32 format, void* pixels, int pitch);
void SetClipRect(const Rect& rect);
void SetClipRect(const Optional<Rect>& rect = NullOpt);
void SetLogicalSize(int w, int h);
void SetScale(float scaleX, float scaleY);
void SetViewport(const Rect& rect);
void SetViewport(const Optional<Rect>& rect = NullOpt);
bool TargetSupported();
};

View File

@ -37,5 +37,6 @@
#include <SDL2pp/ContainerRWops.hh>
#include <SDL2pp/StreamRWops.hh>
#include <SDL2pp/Wav.hh>
#include <SDL2pp/Optional.hh>
#endif

View File

@ -55,9 +55,9 @@ int Run() {
// Simple copy
float angle = SDL_GetTicks() / 5000.0 * 2.0 * M_PI;
render.Copy(sprite, Rect::Null(), Rect(320 - 64, 240 - 64, 128, 128), angle / M_PI * 180.0);
render.Copy(sprite, Rect::Null(), Rect(320 - 32 + sin(angle) * 40, 240 - 32 + cos(angle) * 40, 64, 64));
render.Copy(sprite, Rect::Null(), Rect(320 - 32 - sin(angle) * 40, 240 - 32 - cos(angle) * 40, 64, 64));
render.Copy(sprite, NullOpt, Rect(320 - 64, 240 - 64, 128, 128), angle / M_PI * 180.0);
render.Copy(sprite, NullOpt, Rect(320 - 32 + sin(angle) * 40, 240 - 32 + cos(angle) * 40, 64, 64));
render.Copy(sprite, NullOpt, Rect(320 - 32 - sin(angle) * 40, 240 - 32 - cos(angle) * 40, 64, 64));
render.Present();

View File

@ -64,7 +64,7 @@ int Run() {
// Sprite data
Texture sprite(render, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, MY_SPRITE_SIZE, MY_SPRITE_SIZE);
sprite.Update(Rect::Null(), pixels, MY_SPRITE_SIZE * MY_SPRITE_SIZE);
sprite.Update(NullOpt, pixels, MY_SPRITE_SIZE * MY_SPRITE_SIZE);
sprite.SetBlendMode(SDL_BLENDMODE_BLEND);
// Two render target textures
@ -93,10 +93,10 @@ int Run() {
for (int i = 0; i < 4; i++) {
render.SetTarget(target2);
render.Clear();
render.Copy(target1, Rect::Null(), Rect(0, 0, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, Rect::Null(), Rect(MY_RENDERTARGET_SIZE / 2, 0, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, Rect::Null(), Rect(0, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, Rect::Null(), Rect(MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, NullOpt, Rect(0, 0, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, NullOpt, Rect(MY_RENDERTARGET_SIZE / 2, 0, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, NullOpt, Rect(0, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, NullOpt, Rect(MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2, MY_RENDERTARGET_SIZE / 2), SDL_GetTicks() / 10000.0 * 360.0);
// Swap textures to copy recursively
std::swap(target1, target2);
@ -106,7 +106,7 @@ int Run() {
render.SetTarget();
render.Clear();
render.Copy(target1, Rect::Null(), Rect((MY_SCREEN_WIDTH - MY_SCREEN_HEIGHT) / 2, 0, MY_SCREEN_HEIGHT, MY_SCREEN_HEIGHT), SDL_GetTicks() / 10000.0 * 360.0);
render.Copy(target1, NullOpt, Rect((MY_SCREEN_WIDTH - MY_SCREEN_HEIGHT) / 2, 0, MY_SCREEN_HEIGHT, MY_SCREEN_HEIGHT), SDL_GetTicks() / 10000.0 * 360.0);
render.Present();

View File

@ -46,7 +46,7 @@ int Run() {
// Load sprite texture
Texture sprite(render, SDL_PIXELFORMAT_ARGB8888, SDL_TEXTUREACCESS_STATIC, 4, 4);
sprite.Update(Rect::Null(), pixels, 4 * 4);
sprite.Update(NullOpt, pixels, 4 * 4);
sprite.SetBlendMode(SDL_BLENDMODE_BLEND);
render.SetDrawBlendMode(SDL_BLENDMODE_BLEND);
@ -63,23 +63,23 @@ int Run() {
render.Clear();
// Simple copy
render.Copy(sprite, Rect::Null(), Rect(80, 0, 240, 240));
render.Copy(sprite, NullOpt, Rect(80, 0, 240, 240));
// Copy with modulation
render.Copy(sprite, Rect::Null(), Rect(400, 0, 120, 120));
render.Copy(sprite, NullOpt, Rect(400, 0, 120, 120));
sprite.SetAlphaMod(92);
render.Copy(sprite, Rect::Null(), Rect(400 + 120, 0, 120, 120));
render.Copy(sprite, NullOpt, Rect(400 + 120, 0, 120, 120));
sprite.SetColorMod(255, 0, 0);
render.Copy(sprite, Rect::Null(), Rect(400, 0 + 120, 120, 120));
render.Copy(sprite, NullOpt, Rect(400, 0 + 120, 120, 120));
sprite.SetAlphaMod();
render.Copy(sprite, Rect::Null(), Rect(400 + 120, 0 + 120, 120, 120));
render.Copy(sprite, NullOpt, Rect(400 + 120, 0 + 120, 120, 120));
sprite.SetColorMod();
// Copy with rotation
render.Copy(sprite, Rect::Null(), Rect(80, 240, 240, 240), -1.0 * SDL_GetTicks() / 5000.0 * 360.0, Point::Null(), SDL_FLIP_NONE);
render.Copy(sprite, NullOpt, Rect(80, 240, 240, 240), -1.0 * SDL_GetTicks() / 5000.0 * 360.0, NullOpt, SDL_FLIP_NONE);
// Rotation around another point
render.Copy(sprite, Rect::Null(), Rect(520, 360, 120, 120), -1.0 * SDL_GetTicks() / 5000.0 * 360.0, Point(0, 0), SDL_FLIP_HORIZONTAL | SDL_FLIP_VERTICAL);
render.Copy(sprite, NullOpt, Rect(520, 360, 120, 120), -1.0 * SDL_GetTicks() / 5000.0 * 360.0, Point(0, 0), SDL_FLIP_HORIZONTAL | SDL_FLIP_VERTICAL);
render.Present();

View File

@ -78,8 +78,6 @@ BEGIN_TEST()
EXPECT_TRUE(r != Rect(1,3,3,4));
EXPECT_TRUE(r != Rect(1,2,4,4));
EXPECT_TRUE(r != Rect(1,2,3,5));
EXPECT_TRUE(r.Get() != nullptr);
EXPECT_TRUE(r.Get()->x == 1 && r.Get()->y == 2 && r.Get()->w == 3 && r.Get()->h == 4);
EXPECT_TRUE(r.x == 1 && r.y == 2 && r.w == 3 && r.h == 4);
r.SetX(5);