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

📄 vscreen_realtime.c

📁 图像系统uc_GUI
💻 C
📖 第 1 页 / 共 4 页
字号:
  { TEXT_CreateIndirect,      "Temperature 1:",      GUI_ID_TEXT0,      10, 162,  80,   0},
  { TEXT_CreateIndirect,      "Temperature 2:",      GUI_ID_TEXT1,      10, 187,  80,   0},
  { TEXT_CreateIndirect,      "Min:",                GUI_ID_TEXT2,      10, 210,  50,   0},
  { TEXT_CreateIndirect,      "Max:",                GUI_ID_TEXT3,     110, 210,  50,   0},
  { PROGBAR_CreateIndirect,   "",                    GUI_ID_PROGBAR0,   90, 160, 100,  18},
  { PROGBAR_CreateIndirect,   "",                    GUI_ID_PROGBAR1,   90, 185, 100,  18},
  { EDIT_CreateIndirect,      "",                    GUI_ID_EDIT0,      50, 210,  40,  18, 3, 3},
  { EDIT_CreateIndirect,      "",                    GUI_ID_EDIT1,     150, 210,  40,  18, 3, 3},
  { BUTTON_CreateIndirect,    "Set color",           GUI_ID_BUTTON0,   210, 185, 100,  20},
  { BUTTON_CreateIndirect,    "Start",               GUI_ID_BUTTON1,   210, 210, 100,  20},
};

/* Resource for DialogColor (0, 240) - (319, 479) */
static const GUI_WIDGET_CREATE_INFO _aDialogColor[] = {
  { FRAMEWIN_CreateIndirect, "Adjust color",         0,                 10, 260, 300, 200},
  { TEXT_CreateIndirect,     "Color to be changed:", 0,                  5,  15, 100,  20, TEXT_CF_LEFT },
  { DROPDOWN_CreateIndirect,  "",                    GUI_ID_DROPDOWN0, 120,  15, 150,  60},
  { TEXT_CreateIndirect,     "Red:" ,                0,                  5,  60,  35,  20, TEXT_CF_LEFT },
  { TEXT_CreateIndirect,     "Green:",               0,                  5,  90,  35,  20, TEXT_CF_LEFT },
  { TEXT_CreateIndirect,     "Blue:",                0,                  5, 120,  35,  20, TEXT_CF_LEFT },
  { TEXT_CreateIndirect,     "Preview",              0,                205,  44,  81,  15, TEXT_CF_HCENTER },
  { SLIDER_CreateIndirect,   NULL,                   GUI_ID_SLIDER0,    40,  60, 100,  20 },
  { SLIDER_CreateIndirect,   NULL,                   GUI_ID_SLIDER1,    40,  90, 100,  20 },
  { SLIDER_CreateIndirect,   NULL,                   GUI_ID_SLIDER2,    40, 120, 100,  20 },
  { EDIT_CreateIndirect,     NULL,                   GUI_ID_EDIT0,     145,  60,  30,  20, 0, 3 },
  { EDIT_CreateIndirect,     NULL,                   GUI_ID_EDIT1,     145,  90,  30,  20, 0, 3 },
  { EDIT_CreateIndirect,     NULL,                   GUI_ID_EDIT2,     145, 120,  30,  20, 0, 3 },
  { BUTTON_CreateIndirect,   "Ok",                   GUI_ID_OK,         90, 150, 120,  20 },
};

/* Text shown in the DialogIntro dialog */
static const char * _apDialogIntro[] = {
  "This sample demonstrates how to use virtual screens.",
  "Virtual screens require additional video memory and",
  "and allow instantanious switching between different",
  "screens, even on slow CPUs.",
  "Press the <Start> button..."
};

/* Dialog handles */
WM_HWIN _hDialogMain, _hDialogColor;

/* Red, green and blue components of color dialog */
static U8 _aColorSep[3] = {255, 127, 0};

/* Pointer to original callback routine of the temperature window */
static WM_CALLBACK * _pcbCallbackTemperature;

/* Maximum ranges of temperature */
static int _TempMin = 120, _TempMax = 220;

/* Colors to be used in temperature window */
GUI_COLOR _ColorBackGround = GUI_RED;
GUI_COLOR _ColorGrid       = GUI_DARKGRAY;
GUI_COLOR _ColorLabel      = GUI_WHITE;
GUI_COLOR _ColorTemp1      = GUI_DARKGREEN;
GUI_COLOR _ColorTemp2      = GUI_BLUE;

/* Index of color modified in color dialog */
static int _ColorIndex;

/* Arrays of temperature values */
static I16 _aTemp1[277], _aTemp2[277];

/*********************************************************************
*
*          Static code
*
**********************************************************************
*/
static I16 _GetRandomValue(I16 Old) {
  int MaxValue, yD, MaxDiff = 2;
  I16 yNew;
  MaxValue = _TempMax - _TempMin;
  yD = MaxDiff - (rand() % MaxDiff);
  if (rand() & 1) {
    yNew = Old + yD;
  } else {
    yNew = Old - yD;
  }
  if (yNew > MaxValue) {
    yNew -= yD;
  } else { if (yNew < 0)
    yNew += yD;
  }
  return yNew;
}

/*********************************************************************
*
*       _InitRandomData
*/
static void _InitRandomData(I16 * paY, int n) {
  int i, MaxValue;
  MaxValue = _TempMax - _TempMin;
  for (i = 0; i < n; i++) {
    if (!i) {
      paY[i] = rand() % MaxValue;
    } else {
      paY[i] = _GetRandomValue(paY[i-1]);
    }
  }
}

/*********************************************************************
*
*       _SaveColorSep
*/
static void _SaveCurrentColor(void) {
  GUI_COLOR Color = _aColorSep[0] | (((U32)_aColorSep[1]) << 8) | (((U32)_aColorSep[2]) << 16);
  switch (_ColorIndex) {
  case 0: _ColorBackGround = Color; break;
  case 1: _ColorGrid       = Color; break;
  case 2: _ColorLabel      = Color; break;
  case 3: _ColorTemp1      = Color; break;
  case 4: _ColorTemp2      = Color; break;
  }
}

/*********************************************************************
*
*       _UpdateTextColors
*/
static void _UpdateTextColors(WM_HWIN hDlg) {
  WM_HWIN hItem;
  hItem = WM_GetDialogItem(hDlg, GUI_ID_TEXT0);
  TEXT_SetTextColor(hItem, _ColorTemp1);
  hItem = WM_GetDialogItem(hDlg, GUI_ID_TEXT1);
  TEXT_SetTextColor(hItem, _ColorTemp2);
}

/*******************************************************************
*
*       _DrawGraph
*/
static void _DrawGraph(void) {
  GUI_RECT Rect;
  int xSize, ySize, x, y;
  WM_GetClientRect(&Rect);
  xSize = Rect.x1;
  ySize = Rect.y1;
  GUI_SetBkColor(GUI_BLACK);
  GUI_ClearRect(26, 1, 302, ySize - 21);
  GUI_SetColor(_ColorGrid);
  for (y = 20; y < (ySize - 21); y += 20) {
    int yPos = ySize - 20 - y;
    GUI_DrawHLine(yPos, 26, 302);
  }
  for (x = 40; x < (xSize - 25); x += 40) {
    int xPos = x + 25;
    GUI_DrawVLine(xPos, 1, ySize - 21);
  }
  GUI_SetColor(_ColorTemp1);
  GUI_DrawGraph(_aTemp1, GUI_COUNTOF(_aTemp1), 26, ySize - 121);
  GUI_SetColor(_ColorTemp2);
  GUI_DrawGraph(_aTemp2, GUI_COUNTOF(_aTemp2), 26, ySize - 121);
}

/*********************************************************************

⌨️ 快捷键说明

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