📄 aa_hiresantialiasing.c
字号:
/*
*********************************************************************************************************
* uC/GUI
* Universal graphic software for embedded applications
*
* (c) Copyright 2002, Micrium Inc., Weston, FL
* (c) Copyright 2002, SEGGER Microcontroller Systeme GmbH
*
* 礐/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 : AA_HiResAntialiasing.c
Purpose : Demonstrates high resolution antialiasing
----------------------------------------------------------------------
*/
#include "GUI.H"
/*******************************************************************
*
* defines
*
********************************************************************
*/
#define countof(Obj) (sizeof(Obj)/sizeof(Obj[0]))
/*******************************************************************
*
* static variables
*
********************************************************************
*/
static const GUI_POINT _aPointer[] = {
{ 0, 3},
{85, 1},
{90, 0},
{85, -1},
{ 0, -3}
};
static GUI_POINT _aPointerHiRes[countof(_aPointer)];
typedef struct {
GUI_AUTODEV_INFO AutoInfo;
GUI_POINT aPoints[countof(_aPointer)];
int Factor;
} PARAM;
/*******************************************************************
*
* static functions
*
********************************************************************
*/
/*******************************************************************
*
* _DrawHiRes
This function draws the high resolution pointer
*/
static void _DrawHiRes(void * p) {
PARAM * pParam = (PARAM *)p;
if (pParam->AutoInfo.DrawFixed) {
GUI_ClearRect(60, 60, 99, 99);
}
GUI_AA_FillPolygon(pParam->aPoints,
countof(_aPointer),
65 * pParam->Factor,
155 * pParam->Factor);
}
/*******************************************************************
*
* _Draw
This function draws the non high resolution pointer
*/
static void _Draw(void * p) {
PARAM * pParam = (PARAM *)p;
if (pParam->AutoInfo.DrawFixed) {
GUI_ClearRect(160, 60, 199, 99);
}
GUI_AA_FillPolygon(pParam->aPoints, countof(_aPointer), 165, 155);
}
/*******************************************************************
*
* _ShowHiresAntialiasing
This function creates the memory auto devices and handle the
rotation of the pointers
*/
static void _ShowHiresAntialiasing(void) {
int i;
GUI_AUTODEV aAuto[2];
PARAM Param;
Param.Factor = 3;
GUI_SetBkColor(GUI_BLACK);
GUI_Clear();
GUI_SetColor(GUI_WHITE);
GUI_SetTextAlign(GUI_TA_HCENTER);
GUI_SetFont(&GUI_Font24_ASCII);
GUI_DispStringAt("HiResAntialiasing - Sample", 160, 5);
GUI_SetFont(&GUI_Font6x8);
GUI_DispStringHCenterAt("Using\nhigh\nresolution\nmode", 110, 180);
GUI_DispStringHCenterAt("Not using\nhigh\nresolution\nmode", 210, 180);
/* Create GUI_AUTODEV objects */
for (i = 0; i < countof(aAuto); i++) {
GUI_MEMDEV_CreateAuto(&aAuto[i]);
}
/* Calculate pointer for high resolution */
for (i = 0; i < countof(_aPointer); i++) {
_aPointerHiRes[i].x = _aPointer[i].x * Param.Factor;
_aPointerHiRes[i].y = _aPointer[i].y * Param.Factor;
}
GUI_AA_SetFactor(Param.Factor); /* Set antialiasing factor */
while(1) {
for (i = 0; i < 1800; i++) {
float Angle = (i >= 900) ? 1800 - i : i;
Angle *= 3.1415926f / 1800;
/* Draw pointer with high resolution */
GUI_AA_EnableHiRes();
GUI_RotatePolygon(Param.aPoints, _aPointerHiRes, countof(_aPointer), Angle);
GUI_MEMDEV_DrawAuto(&aAuto[0], &Param.AutoInfo, _DrawHiRes, &Param);
/* Draw pointer without high resolution */
GUI_AA_DisableHiRes();
GUI_RotatePolygon(Param.aPoints, _aPointer, countof(_aPointer), Angle);
GUI_MEMDEV_DrawAuto(&aAuto[1], &Param.AutoInfo, _Draw, &Param);
GUI_Delay(2);
}
}
}
/*******************************************************************
*
* MainTask
*
* Demonstrate high resolution by drawing rotating pointers
*
********************************************************************
*/
void MainTask(void) {
GUI_Init();
_ShowHiresAntialiasing();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -