Files
linguist/samples/C++/graphics.cpp
2016-06-28 01:10:55 +05:30

109 lines
1.8 KiB
C++

// License - https://github.com/TurtleP/Flask/blob/master/LICENSE
#include <shared.h>
int currentR = 0xFF;
int currentG = 0xFF;
int currentB = 0xFF;
int currentA = 0xFF;
int currentScreen = GFX_BOTTOM;
float transX = 0;
float transY = 0;
bool isPushed = false;
u32 getCurrentColor()
{
return RGBA8(currentR, currentG, currentB, currentA);
}
void setColor(int r, int g, int b)
{
currentR = r;
currentG = g;
currentB = b;
currentA = currentA;
}
void setColor(int r, int g, int b, int a)
{
currentR = r;
currentG = g;
currentB = b;
currentA = a;
}
void setScreen(int screen)
{
currentScreen = screen;
}
int getCurrentScreen()
{
return currentScreen;
}
void screenShot() //for showing stuff being done
{
FILE * topScreen = fopen("sdmc:/framebuffer_top.rgb", "w+");
fwrite(gfxGetFramebuffer(GFX_TOP, GFX_LEFT, NULL, NULL), 288000, 1, topScreen);
fclose(topScreen);
FILE * bottomScreen = fopen("sdmc:/framebuffer_bottom.rgb", "w+");;
fwrite(gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL), 230400, 1, bottomScreen);
fclose(bottomScreen);
}
void translateCoords(float * x, float * y) {
if (isPushed)
{
*x += transX;
*y += transY;
}
}
void translate(float dx, float dy)
{
if (sf2d_get_current_screen() == getCurrentScreen())
{
transX = transX + dx;
transY = transY + dy;
}
}
void push()
{
if (sf2d_get_current_screen() == getCurrentScreen())
{
isPushed = true;
}
}
void pop()
{
if (sf2d_get_current_screen() == getCurrentScreen())
{
transX = 0;
transY = 0;
isPushed = false;
}
}
void setScissor(u32 x, u32 y, u32 width, u32 height)
{
if (sf2d_get_current_screen() == getCurrentScreen())
{
GPU_SCISSORMODE mode = GPU_SCISSOR_NORMAL;
if (!x && !y && !width && !height) {
mode = GPU_SCISSOR_DISABLE;
}
sf2d_set_scissor_test(mode, x, y, width, height);
}
}