⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 geometry.c

📁 BREW Geometry Demo Source Code
💻 C
字号:
#include "geometry.h"
#include "geometry.bid"int AEEClsCreateInstance(AEECLSID ClsId,IShell * pIShell,IModule * po,void ** ppObj){   *ppObj = NULL;   if(ClsId == AEECLSID_GEOMETRY_BID ){	  if(AEEApplet_New(sizeof(myapp_t), ClsId, pIShell, po, (IApplet**)ppObj,		 (AEEHANDLER)Geometry_HandleEvent, (PFNFREEAPPDATA)Geometry_Cleanup)		 == TRUE)	  {		 return(AEE_SUCCESS);	  }   }	return(EFAILED);}static boolean Geometry_HandleEvent(IApplet * pi, AEEEvent eCode, uint16 wParam, uint32 dwParam){	myapp_t * pApp = (myapp_t *)pi;	AEEApplet * pMe = &pApp->a;
	AECHAR szBuf[] = {'D','r','a','w','i','n','g',' ', 'D', 'e', 'm', 'o', '\0'};	switch (eCode)	{	case EVT_APP_START:

		ISHELL_GetDeviceInfo (pMe->m_pIShell, &pApp->di);
		ISHELL_CreateInstance(pApp->a.m_pIShell, AEECLSID_GRAPHICS,(void **)&pApp->pIGraphics);

        IDISPLAY_ClearScreen (pMe->m_pIDisplay);  // Clear whole screen

        IDISPLAY_DrawText(pMe->m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, 0,
			0, IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);

        IDISPLAY_Update (pMe->m_pIDisplay);

		//set timer to start drawing shapes
		ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackArc, pApp);

		return(TRUE);		break;   }   return(FALSE);}void Geometry_Cleanup(myapp_t * pApp)
{
	IGRAPHICS_Release(pApp->pIGraphics);
}

//draw arc
void Geometry_CallbackArc(myapp_t * pApp)
{
	AEEArc arc;

	AECHAR szBuf[] = {'A','r','c','\0'};

	arc.cx	= pApp->di.cxScreen / 2;
	arc.cy	= pApp->di.cyScreen / 2;
	arc.r	= 30;
	arc.startAngle	= 0;
	arc.arcAngle	= 180;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0x00, 0x00, 0xFF);

	IGRAPHICS_DrawArc(pApp->pIGraphics, &arc);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackCircle, pApp);
}

//draw circle
void Geometry_CallbackCircle(myapp_t * pApp)
{
	AEECircle circle;

	AECHAR szBuf[] = {'C','i','r','c','l','e', '\0'};

	circle.cx	= pApp->di.cxScreen / 2;
	circle.cy	= pApp->di.cyScreen / 2;
	circle.r	= 30;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0x00, 0xFF, 0xFF);

	IGRAPHICS_DrawCircle(pApp->pIGraphics, &circle);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackEllipse, pApp);
}

//draw ellipse
void Geometry_CallbackEllipse(myapp_t * pApp)
{
	AEEEllipse ellipse;

	AECHAR szBuf[] = {'E','l','l','i','p','s','e','\0'};

	ellipse.cx = pApp->di.cxScreen / 2;
	ellipse.cy = pApp->di.cyScreen / 2;
	ellipse.wx = 30;
	ellipse.wy = 15;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0x00, 0x00, 0xFF);

	IGRAPHICS_DrawEllipse(pApp->pIGraphics, &ellipse);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackLine, pApp);
}

//draw line
void Geometry_CallbackLine(myapp_t * pApp)
{
	AEELine line;

	AECHAR szBuf[] = {'L','i','n','e','\0'};

	line.sx = 20;
	line.sy = 20;
	line.ex = 60;
	line.ey = 60;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0x00, 0x00, 0xFF);

	IGRAPHICS_DrawLine(pApp->pIGraphics, &line);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackPie, pApp);
}

//draw pie graph
void Geometry_CallbackPie(myapp_t * pApp)
{
	AEEPie pie;

	AECHAR szBuf[] = {'P','i','e','\0'};

	pie.cx	= pApp->di.cxScreen / 2;
	pie.cy	= pApp->di.cyScreen / 2;
	pie.r	= 30;
	pie.startAngle	= 0;
	pie.arcAngle	= 45;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0x00, 0xFF, 0x00, 0xFF);

	IGRAPHICS_DrawPie(pApp->pIGraphics, &pie);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackPoint, pApp);
}

//draw point
void Geometry_CallbackPoint(myapp_t * pApp)
{
	AEEPoint point;

	AECHAR szBuf[] = {'P','o','i','n','t','\0'};

	point.x = pApp->di.cxScreen / 2;
	point.y = pApp->di.cyScreen / 2;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0xFF, 0xFF, 0xFF);

	IGRAPHICS_SetPointSize(pApp->pIGraphics, 15);

	IGRAPHICS_DrawPoint(pApp->pIGraphics, &point);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackPolygon, pApp);
}

//draw polygon
void Geometry_CallbackPolygon(myapp_t * pApp)
{
	AEEPolygon polygon;

	AECHAR szBuf[] = {'P','o','l','y','g','o','n','\0'};

	polygon.len = 4;
	polygon.points = MALLOC(sizeof(AEEPoint) * polygon.len); //allocate point array for polygon

	//make polygon points
	polygon.points[0].x = 10;
	polygon.points[0].y = 10;
	polygon.points[1].x = 50;
	polygon.points[1].y = 50;
	polygon.points[2].x = 30;
	polygon.points[2].y = 70;
	polygon.points[3].x = 10;
	polygon.points[3].y = 30;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0x00, 0x00, 0xFF);

	IGRAPHICS_DrawPolygon(pApp->pIGraphics, &polygon);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);

	FREE(polygon.points);

	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackPolyline, pApp);
}

//draw polyline (multiple connected lines)
void Geometry_CallbackPolyline(myapp_t * pApp)
{
	AEEPolyline polyline;

	AECHAR szBuf[] = {'P','o','l','y','l','i','n','e','\0'};

	polyline.len = 4;
	polyline.points = MALLOC(sizeof(AEEPoint) * polyline.len); //allocate point array for polyline

	//make polyline points
	polyline.points[0].x = 80;
	polyline.points[0].y = 20;
	polyline.points[1].x = 30;
	polyline.points[1].y = 90;
	polyline.points[2].x = 50;
	polyline.points[2].y = 70;
	polyline.points[3].x = 20;
	polyline.points[3].y = 60;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0xAA, 0x0F, 0xFF);

	IGRAPHICS_DrawPolyline(pApp->pIGraphics, &polyline);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);

	FREE(polyline.points);

	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackRect, pApp);
}

//draw rectangle
void Geometry_CallbackRect(myapp_t * pApp)
{
	AEERect rect;

	AECHAR szBuf[] = {'R','e','c','t','a','n','g','l','e','\0'};

	rect.x	= 20;
	rect.y	= 20;
	rect.dx	= 80;
	rect.dy	= 50;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0x00, 0x00, 0xFF, 0xFF);

	IGRAPHICS_DrawRect(pApp->pIGraphics, &rect);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackTriangle, pApp);
}

//draw triangle
void Geometry_CallbackTriangle(myapp_t * pApp)
{
	AEETriangle triangle;

	AECHAR szBuf[] = {'T','r','i','a','n','g','l','e','\0'};

	triangle.x0 = 50;
	triangle.y0 = 10;
	triangle.x1 = 80;
	triangle.y1 = 50;
	triangle.x2 = 30;
	triangle.y2 = 50;

	IDISPLAY_ClearScreen (pApp->a.m_pIDisplay);
	IGRAPHICS_SetColor(pApp->pIGraphics, 0xFF, 0xAA, 0x00, 0xFF);

	IGRAPHICS_DrawTriangle(pApp->pIGraphics, &triangle);

	IDISPLAY_DrawText(pApp->a.m_pIDisplay, AEE_FONT_BOLD, szBuf, -1, 0, pApp->di.cyScreen - 15,
			0, IDF_ALIGN_CENTER);

	IDISPLAY_Update (pApp->a.m_pIDisplay);
	ISHELL_SetTimer(pApp->a.m_pIShell, TIMER_PERIOD, (PFNNOTIFY)Geometry_CallbackArc, pApp);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -