/* ********************************************************************************************************* * uC/GUI * Universal graphic software for embedded applications * * (c) Copyright 2002, Micrium Inc., Weston, FL * (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH * * µC/GUI is protected by international copyright laws. Knowledge of the * source code may not be used to write a similar product. This file may * only be used in accordance with a license and should not be redistributed * in any way. We appreciate your understanding and fairness. * ---------------------------------------------------------------------- File : GUIPolyE.c Purpose : Polygon enlarge ---------------------------------------------------------------------- */ #include #include "GUI.h" #include "GUIDebug.h" /********************************************************************* * * Types * ********************************************************************** */ typedef struct { float x, y; } tfPoint; /********************************************************************* * * Static code * ********************************************************************** */ /********************************************************************* * * _fround */ static int _fround(float f) { if (f>0) return f+0.5f; return f-0.5f; } /********************************************************************* * * _Normalize */ static void _Normalize(tfPoint* pfPoint) { float fx = pfPoint->x; float fy = pfPoint->y; float r = sqrt(fx*fx + fy*fy); if (r > 0) { pfPoint->x = fx/r; pfPoint->y = fy/r; } } /********************************************************************* * * _ReverseLen */ static void _ReverseLen(tfPoint* pfPoint) { float fx = pfPoint->x; float fy = pfPoint->y; float r = sqrt(fx*fx/2 + fy*fy/2); if (r > 0) { pfPoint->x = fx/r/r; pfPoint->y = fy/r/r; } } /********************************************************************* * * _GetVect */ static void _GetVect(tfPoint* pfPoint, const GUI_POINT* pSrc, int NumPoints, int Index) { int Off0 = (Index + NumPoints-1) % NumPoints; int Off1 = Index % NumPoints; pfPoint->x = pSrc[Off1].x - pSrc[Off0].x; pfPoint->y = pSrc[Off1].y - pSrc[Off0].y; } /********************************************************************* * * Public code * ********************************************************************** */ /********************************************************************* * * GUI_EnlargePolygon */ #if 0 void GUI_EnlargePolygon(GUI_POINT* pDest, const GUI_POINT* pSrc, int NumPoints, int Len) { int j; /* Calc destination points */ for (j=0; jx = (pSrc+j)->x + x; (pDest+j)->y = (pSrc+j)->y + y; } } #else void GUI_EnlargePolygon(GUI_POINT* pDest, const GUI_POINT* pSrc, int NumPoints, int Len) { int j; /* Calc destination points */ for (j=0; jx = (pSrc+j)->x + x; (pDest+j)->y = (pSrc+j)->y + y; } } #endif /*************************** End of file ****************************/