예제 #1
0
bool App::update()
{
	game_time.update();

	canvas.clear(clan::Colorf(0.0f,0.0f,0.0f, 0.0f));
	rock.set_color(clan::Colorf(1.0f, 1.0f, 1.0f, 0.8f));
	rock.draw(canvas, 0.0f, 0.0f);

	// Rotate tux
	rotation += game_time.get_time_elapsed() * 100.0f;
	clan::Angle angle;
	angle.set_degrees(rotation);
	tux.set_angle(angle);

	// Caculate tux position
	clan::Pointf circle_center(  (float) (canvas.get_width()/2), (float) (canvas.get_height()/2) );
	const float radius = 210.0f;
	int tux_circle = 12;
	tux_position.x = -(radius - tux_radius - tux_circle)  * cos( angle.to_radians() / 2.0f );
	tux_position.y = (radius - tux_radius - tux_circle) * sin( angle.to_radians()/ 2.0f );
	tux_position += circle_center;
	tux_position.x -= tux.get_width()/2;
	tux_position.y -= tux.get_height()/2;

	// Give tux circle blue outer outline, because it looks nice
	canvas.fill_circle(tux_position.x + tux_radius, tux_position.y + tux_radius, tux_radius+tux_circle, clan::Colorf(0.0f, 0.0f, 1.0f, 1.0f));

	// Make see through border
	canvas.set_blend_state(blend_state_off);
	canvas.fill_circle(tux_position.x + tux_radius, tux_position.y + tux_radius, tux_radius+tux_circle-2, clan::Colorf(0.0f, 0.0f, 0.0f, 0.0f));
	canvas.reset_blend_state();

	// Give tux circle blue outline, to mask the alpha channel
	canvas.fill_circle(tux_position.x + tux_radius, tux_position.y + tux_radius, tux_radius+2, clan::Colorf(0.0f, 0.0f, 1.0f, 1.0f));

	// Draw tux
	tux.draw(canvas, tux_position.x, tux_position.y);

	// Draw text
	font_large.draw_text(canvas, 10-2, 50-2, "ClanLib Layered Window", clan::Colorf(0.1f, 0.1f, 0.1f, 1.0f));
	font_large.draw_text(canvas, 10, 50, "ClanLib Layered Window", clan::Colorf::green);
	font_small.draw_text(canvas, 60-2, 80-2, "Click mouse on the penguin to exit", clan::Colorf(0.1f, 0.1f, 0.1f, 1.0f));
	font_small.draw_text(canvas, 60, 80, "Click mouse on the penguin to exit", clan::Colorf::green);
	font_small.draw_text(canvas, 110-2, 110-2, "Drag rock to move window", clan::Colorf(0.1f, 0.1f, 0.1f, 1.0f));
	font_small.draw_text(canvas, 110, 110, "Drag rock to move window", clan::Colorf::green);

	window.flip(1);

	return !quit;
}
예제 #2
0
void Timing::draw_graphics(clan::Canvas &canvas, float time_delta)
{
	int gc_width = canvas.get_width();
	std::vector<Star>::size_type max, cnt;
	max = stars.size();
	for (cnt=0; cnt<max; cnt++)
	{
		float xpos = stars[cnt].xpos;
		xpos += time_delta * stars[cnt].speed;
		if (xpos >= gc_width)
			xpos -= (gc_width + 8);
		stars[cnt].xpos = xpos;

		canvas.fill_circle(xpos, stars[cnt].ypos, 6.0f, stars[cnt].color);
	}
}
예제 #3
0
파일: test.cpp 프로젝트: ArtHome12/ClanLib
	bool update()
	{
		if (window.get_keyboard().get_keycode(keycode_escape))
			quit = true;

		canvas.clear(Colorf(0.5f,0.5f,0.5f));

		small_font.draw_text(canvas, 10, 40, "Image From Texture (10,60)");
		image_texture.draw(canvas, 10, 60);

		small_font.draw_text(canvas, 150, 40, "Image From Load (150,60)");
		image_loaded.draw(canvas, 150, 60);

		small_font.draw_text(canvas, 300, 40, "Image From Resources (300,60)");
		image_resources.draw(canvas, 300, 60);

		small_font.draw_text(canvas, 450, 40, "Image Copied (450,60)");
		image_copy.draw(canvas, 450, 60);

		small_font.draw_text(canvas, 10, 190, "Image - Top Right (10,200)");
		image_top_right.draw(canvas, 10, 200);

		small_font.draw_text(canvas, 150, 190, "Image - Top Right (150,200)");
		image_texture.draw(canvas, Rect(32, 0, Size(32, 32)), Rect(150, 200, Size(32, 32)));

		small_font.draw_text(canvas, 300, 190, "Image - Bottom Right (300,200)");
		image_bottom_right.draw(canvas, 300, 200);

		small_font.draw_text(canvas, 450, 190, "Image - Bottom Right (450,200)");
		image_texture.draw(canvas, Rect(32, 32, Size(32, 32)), Rect(450, 200, Size(32, 32)));

		small_font.draw_text(canvas, 10, 290, "700 Images (10,300)");
		for(int i=0;i<700;i++)
			image_texture.draw(canvas, 10, 300);

		small_font.draw_text(canvas, 150, 290, "br image (150,400) Size(128,256)");
		image_bottom_right.draw(canvas, Rect(150, 300, Size(128, 256)));

		small_font.draw_text(canvas, 300, 290, "Image - black");
		image_black.draw(canvas, 300, 300);

		small_font.draw_text(canvas, 300, 490, "Image - Scale (1.5, 2.5)");
		image_texture.set_scale(1.5f, 2.5f);
		image_texture.draw(canvas, 300, 500);
		image_texture.set_scale(1.0f, 1.0f);

		small_font.draw_text(canvas, 450, 460, "Image - Alignment (4 images with 8 pixel offset)");
		small_font.draw_text(canvas, 450, 475, "(top left, top right, bottom left, bottom right)");
		small_font.draw_text(canvas, 450, 490, "(Circle denotes the draw origin)");
		const int offset = 96;

		image_texture.set_alignment(origin_top_left, 8, 8);
		image_texture.draw(canvas, 450+offset, 500+offset);
		image_texture.set_alignment(origin_top_right, -8, 8);
		image_texture.draw(canvas, 450+offset, 500+offset);

		image_texture.set_alignment(origin_bottom_left, 8, -8);
		image_texture.draw(canvas, 450+offset, 500+offset);
		image_texture.set_alignment(origin_bottom_right, -8, -8);
		image_texture.draw(canvas, 450+offset, 500+offset);

		canvas.fill_circle(450+offset, 500+offset, 4, Colorf(1.0f, 1.0f, 1.0f, 0.9f));

		small_font.draw_text(canvas, 700, 460, "Image - Center Alignment (4 images with 8 pixel offset)");
		small_font.draw_text(canvas, 700, 475, "(top center, right center, bottom center, left center)");
		small_font.draw_text(canvas, 700, 490, "(Circle denotes the draw origin)");
				
		image_texture.set_alignment(origin_top_center, 0, 8);
		image_texture.draw(canvas, 700+offset, 500+offset);
		image_texture.set_alignment(origin_bottom_center, 0, -8);
		image_texture.draw(canvas, 700+offset, 500+offset);

		image_texture.set_alignment(origin_center_left, 8, 0);
		image_texture.draw(canvas, 700+offset, 500+offset);
		image_texture.set_alignment(origin_center_right, -8, 0);
		image_texture.draw(canvas, 700+offset, 500+offset);

		canvas.fill_circle(700+offset, 500+offset, 4, Colorf(1.0f, 1.0f, 1.0f, 0.9f));

		small_font.draw_text(canvas, 700, 160, "Image - Center Align (4 images with 64 pixel offset)");
		small_font.draw_text(canvas, 700, 175, "Also Includes a centered image (Without offset)");
		small_font.draw_text(canvas, 700, 190, "(Circle denotes the draw origin)");

		const int center_image_offset = 64;

		image_texture.set_alignment(origin_center, 0, 0);
		image_texture.draw(canvas, 700+offset, 200+offset);

		image_texture.set_alignment(origin_center, 0, center_image_offset);
		image_texture.draw(canvas, 700+offset, 200+offset);
		image_texture.set_alignment(origin_center, 0, -center_image_offset);
		image_texture.draw(canvas, 700+offset, 200+offset);

		image_texture.set_alignment(origin_center, center_image_offset, 0);
		image_texture.draw(canvas, 700+offset, 200+offset);
		image_texture.set_alignment(origin_center, -center_image_offset, 0);
		image_texture.draw(canvas, 700+offset, 200+offset);

		canvas.fill_circle(700+offset, 200+offset, 4, Colorf(1.0f, 1.0f, 1.0f, 0.9f));

		// Restore alignment
		image_texture.set_alignment(origin_top_left, 0, 0);

		dump_fps();

		window.flip(1);

		return !quit;
	}