Esempio n. 1
0
HRESULT InitGeometry()
{
	//////////////////////////////////////////////////////////////////////////
	// Create layer
	//////////////////////////////////////////////////////////////////////////

	CLayer* _layer;
	scom_new<CLayer>(&_layer);
	_layer->FinalConstruct(pRenderer);
	g_layer1 = _layer;

	scom_new<CLayer>(&_layer);
	_layer->FinalConstruct(pRenderer);
	g_layer2 = _layer;

	size_t ncommands;
	PathCommand *commands;
	size_t npoints;
	VML::Vector2 *points;

	//////////////////////////////////////////////////////////////////////////
	// Border
	//////////////////////////////////////////////////////////////////////////
	PathCommand cmds0[] = 
	{
		PC_MOVE,
		PC_BEZIER_2, PC_LINE,
		PC_BEZIER_2, PC_LINE,
		PC_BEZIER_2, PC_LINE,
		PC_BEZIER_2, PC_CLOSE,
	};
	ncommands = 9;
	commands = cmds0;

	float w = 120.0f;
	float h = 70.0f;
	float r = 10.0f;
	VML::Vector2 points0[] = 
	{
		VML::Vector2(w - r,	h),
		VML::Vector2(w,		h),		VML::Vector2(w,		h - r),
		VML::Vector2(w,		-h + r),
		VML::Vector2(w,		-h),	VML::Vector2(w - r,	-h),
		VML::Vector2(-w + r,-h),
		VML::Vector2(-w,	-h),	VML::Vector2(-w,	-h + r),
		VML::Vector2(-w,	h - r),
		VML::Vector2(-w,	h),		VML::Vector2(-w + r,	h),
	};
	npoints = 12;
	points = points0;

	IPath* path = g_layer1->AddNewComponent();
	IPathBuffer* buff = path->getPathBuffer();
	buff->setPoints(points, npoints);
	buff->setCommands(commands, ncommands);
	path->setProperty(PP_FILL_STYLE, FS_GRAD_Y);
	path->setProperty(PP_FILL_COLOR1, 0xff000000);
	path->setProperty(PP_FILL_COLOR2, 0xff000000);
	path->setProperty(PP_STROKE_STYLE, SS_NONE);
	path->setProperty(PP_STROKE_COLOR1, 0xff000000);
	path->setProperty(PP_STROKE_COLOR2, 0xff000000);
	path->setStrokeWidth(2.0f);


	//////////////////////////////////////////////////////////////////////////
	// Text
	//////////////////////////////////////////////////////////////////////////
	PathCommand cmds2[] = 
	{
		PC_MOVE, PC_LINE, PC_LINE, PC_LINE, PC_CLOSE,
		PC_MOVE, PC_LINE, PC_LINE, PC_LINE, PC_CLOSE,
		PC_MOVE, PC_LINE, PC_LINE, PC_LINE, PC_CLOSE,
	};
	ncommands = 15;
	commands = cmds2;

	w = 30.0f;
	h = 20.0f;
	r = 5.0f;
	VML::Vector2 points2[] = 
	{
		VML::Vector2(-w, h), VML::Vector2(w, h), VML::Vector2(w, -h), VML::Vector2(-w, -h),
		VML::Vector2(-w + r, h - r), VML::Vector2(w - r, h - r), VML::Vector2(w - r, -h + r), VML::Vector2(-w + r, -h + r),
		VML::Vector2(-w + r*3, h - r*3), VML::Vector2(w - r*3, h - r*3), VML::Vector2(w - r*3, -h + r*3), VML::Vector2(-w + r*3, -h + r*3),
	};
	npoints = 12;
	points = points2;

	path = g_layer2->AddNewComponent();
	buff = path->getPathBuffer();
	buff->setPoints(points, npoints);
	buff->setCommands(commands, ncommands);
	path->setProperty(PP_FILL_STYLE, FS_SOLID);
	path->setProperty(PP_FILL_COLOR1, 0xa06060ff);
	path->setProperty(PP_FILL_COLOR2, 0xa06060ff);
	path->setProperty(PP_STROKE_STYLE, SS_LINE_SOLID);
	path->setProperty(PP_STROKE_COLOR1, 0xf060c0ff);
	path->setProperty(PP_STROKE_COLOR2, 0xffff0000);
	path->setStrokeWidth(2.0f);


	//////////////////////////////////////////////////////////////////////////
	// Border
	//////////////////////////////////////////////////////////////////////////
	PathCommand cmds1[] = 
	{
		PC_MOVE,
		PC_BEZIER_2, PC_LINE,
		PC_BEZIER_2, PC_LINE,
		PC_BEZIER_2, PC_LINE,
		PC_BEZIER_2, PC_CLOSE,

		PC_MOVE,
		PC_LINE, PC_LINE, PC_LINE, PC_CLOSE,
	};
	ncommands = 14;
	commands = cmds1;

	w = 100.0f;
	h = 50.0f;
	r = 10.0f;
	VML::Vector2 points1[] = 
	{
		VML::Vector2(w - r,	h),
		VML::Vector2(w,		h),				VML::Vector2(w,			h - r),
		VML::Vector2(w,		-h + r),
		VML::Vector2(w,		-h),			VML::Vector2(w - r,		-h),
		VML::Vector2(-w + r,	-h),
		VML::Vector2(-w,		-h),		VML::Vector2(-w,		-h + r),
		VML::Vector2(-w,		h - r),
		VML::Vector2(-w,		h),			VML::Vector2(-w + r,	h),

		VML::Vector2(-30.0f, 20.0f), VML::Vector2(30.0f, 20.0f), VML::Vector2(30.0f, -20.0f), VML::Vector2(-30.0f, -20.0f),
	};
	npoints = 16;
	points = points1;

	path = g_layer2->AddNewComponent();
	buff = path->getPathBuffer();
	buff->setPoints(points, npoints);
	buff->setCommands(commands, ncommands);
	path->setProperty(PP_FILL_STYLE, FS_GRAD_Y);
	path->setProperty(PP_FILL_COLOR1, 0x50c8c8c8);
	path->setProperty(PP_FILL_COLOR2, 0xfffafafa);
	path->setProperty(PP_STROKE_STYLE, SS_LINE_SOLID);
	path->setProperty(PP_STROKE_COLOR1, 0xff707070);
	path->setProperty(PP_STROKE_COLOR2, 0xffff0000);
	path->setStrokeWidth(2.0f);

	g_layer1->AddUser();
	g_layer2->AddUser();

	return S_OK;
}