Esempio n. 1
0
void Slider::Draw(int x, int y, int w, int h)
{
	width = w;
	int fillWidth = (int)Interpolate(value, min, max, 0.0, (double)(w - 2));
	sf2d_draw_rectangle_gradient(x+1, y+1, w-2, h-2, RGBA8(0xF0, 0xF0, 0xF0, 0xFF), RGBA8(0xFF, 0xFF, 0xFF, 0xFF), SF2D_TOP_TO_BOTTOM);
	sf2d_draw_rectangle(x+1, y+1, fillWidth, h-2, RGBA8(0x00, 0xCC, 0xFF, 0xFF));
    mainFont.drawStr(ssprintf("%.5f", value), x + 8, y + h/2 - mainFont.height()/2, RGBA8(0x00, 0x00, 0x00, 0xFF));
    sf2d_draw_rectangle_gradient(x+1, y+1, w-2, h/2-2, RGBA8(0xFF, 0xFF, 0xFF, 0x20), RGBA8(0xFF, 0xFF, 0xFF, 0x60), SF2D_TOP_TO_BOTTOM);
}
Esempio n. 2
0
/***
Draw a filled rectangle on the current screen.
@function rectangle
@tparam integer x rectangle origin horizontal coordinate, in pixels
@tparam integer y rectangle origin vertical coordinate, in pixels
@tparam integer width rectangle width, in pixels
@tparam integer height rectangle height, in pixels
@tparam[opt=0] number angle rectangle rotation, in radians
@tparam[opt=default color] integer color drawing color
@tparam[opt] integer color2 Second drawing color ; if the argument is not nil, the rectangle will be filled with a gradient from color to color2
@tparam[opt] integer direction Gradient drawing direction (`gfx.TOP_TO_BOTTOM` or `gfx.LEFT_TO_RIGHT`). This argument is mandatory if a second color was specified.
*/
static int gfx_rectangle(lua_State *L) {
	int x = luaL_checkinteger(L, 1);
	int y = luaL_checkinteger(L, 2);
	int width = luaL_checkinteger(L, 3);
	int height = luaL_checkinteger(L, 4);

	float angle = luaL_optnumber(L, 5, 0);
	u32 color = luaL_optinteger(L, 6, color_default);

	// Not second color : fill with plain color.
	if (lua_isnoneornil(L, 7)) {
		if (angle == 0)
			sf2d_draw_rectangle(x, y, width, height, color);
		else
			sf2d_draw_rectangle_rotate(x, y, width, height, color, angle);
	// Two colors : fill with a gradient.
	} else {
		u32 color2 = luaL_checkinteger(L, 7);
		u8 direction = luaL_checkinteger(L, 8);

		if (angle == 0)
			sf2d_draw_rectangle_gradient(x, y, width, height, color, color2, direction);
		else
			sf2d_draw_rectangle_gradient_rotate(x, y, width, height, color, color2, direction, angle);
	}

	return 0;
}
Esempio n. 3
0
void Button::Draw(int x, int y, int w, int h)
{
	u32 c_on = altMode ? color_on_alt : color_on;
	u32 c_off = altMode ? color_off_alt : color_off;
	const char *str = (altMode ? text_alt : text).c_str();
	
    bool pressed = (GetTouchState() == TS_TOUCHING);
    if (!pressed) {
        sf2d_draw_rectangle(x+1, y+1, w-2, h-2, c_off);
        sf2d_draw_rectangle_gradient(x+1, y+1, w-2, h/2-2, RGBA8(0xFF, 0xFF, 0xFF, 0x20), RGBA8(0xFF, 0xFF, 0xFF, 0x60), SF2D_TOP_TO_BOTTOM);
    } else {
        sf2d_draw_rectangle_gradient(x+1, y+1, w-2, h-2, c_off, c_on, SF2D_TOP_TO_BOTTOM);
    }
	
	int textX = x + w/2;
	int textY = y + h/2 - btnFont.height() / 2;
    btnFont.align(ALIGN_CENTER).drawStr(str, textX, textY);
}