亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? editdec.c

?? UC_GUI開發(fā)源代碼,里面含有范例,源文件
?? C
字號(hào):
/*
*********************************************************************************************************
*                                             uC/GUI V3.98
*                        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        : EDITDec.c
Purpose     : Edit decimal values
---------------------------END-OF-HEADER------------------------------
*/

#include <string.h>

#include "EDIT_Private.h"
#include "GUIDebug.h"

#if GUI_WINSUPPORT


/*********************************************************************
*
*        Defaults for config switches
*
**********************************************************************
*/
#ifndef EDIT_DEC_DIGITONLY
  #define EDIT_DEC_DIGITONLY     0
#endif


/*********************************************************************
*
*        static Helpers
*
**********************************************************************
*/
/*********************************************************************
*
*       _DecChar2Int
*/
static int _DecChar2Int(int Char) {
  if ((Char >= '0') && (Char <= '9'))
    return Char - '0';
  return -1;
}

/*********************************************************************
*
*       _UpdateBuffer
*/
static void _UpdateBuffer(EDIT_Handle hObj) {
  char * s;
  EDIT_Obj * pObj;
  pObj = EDIT_H2P(hObj); /* The GUI needs not to be locked here. This function is called only from EDIT_AddKey which has already locked the GUI */
  s = (char*) GUI_ALLOC_h2p(pObj->hpText);
  if (pObj->Flags == GUI_EDIT_SIGNED) {
    I32 Result = GUI_AddSign(pObj->CurrentValue, &s);
    GUI_AddDecShift(Result, pObj->MaxLen - 1, pObj->NumDecs, &s);
  } else {
    GUI_AddDecShift(pObj->CurrentValue, pObj->MaxLen, pObj->NumDecs, &s);
  }
}

/*********************************************************************
*
*       _EditDec
*/
static void _EditDec(int Digit, EDIT_Obj* pObj, EDIT_Handle hObj) {
  I32 Result = 0;
  int i, Pos = 0;
  char * s = (char*) GUI_ALLOC_h2p(pObj->hpText);
  for (i = 0; i < pObj->MaxLen; i++) {
    int Index = pObj->MaxLen - i - 1;
    if (Index == pObj->CursorPos) {
      Result += GUI_Pow10[Pos++] * Digit;
    } else {
      char c = *(s + Index);
      int Value = _DecChar2Int(c);
      if (Value >= 0) {
        Result += GUI_Pow10[Pos++] * Value;
      }
      if (c == '-') {
        Result *= -1;
      }
    }
  }
  EDIT_SetValue(hObj, Result);
}

/*********************************************************************
*
*       EDIT_DEC_DIGITONLY
*/
#if EDIT_DEC_DIGITONLY
static int GetCurrentDigit(EDIT_Obj* pObj) {
  return _DecChar2Int(EDIT__GetCurrentChar(pObj));
}
#endif

/*********************************************************************
*
*       _MakePositive
*/
static void _MakePositive(EDIT_Obj* pObj, EDIT_Handle hObj) {
  if ((I32)pObj->CurrentValue < 0) {
    EDIT_SetValue(hObj, (I32)pObj->CurrentValue * -1);
  }
}

/*********************************************************************
*
*       _MakeNegative
*/
static void _MakeNegative(EDIT_Obj* pObj, EDIT_Handle hObj) {
  if ((I32)pObj->CurrentValue > 0) {
    EDIT_SetValue(hObj, (I32)pObj->CurrentValue * -1);
  }
}

/*********************************************************************
*
*       _SwapSign
*/
static void _SwapSign(EDIT_Obj* pObj, EDIT_Handle hObj) {
  if ((I32)pObj->CurrentValue > 0)
    _MakeNegative(pObj, hObj);
  else
    _MakePositive(pObj, hObj);
}

/*********************************************************************
*
*       _IncrementCursor
*/
static void _IncrementCursor(EDIT_Obj* pObj) {
  EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
  if (EDIT__GetCurrentChar(pObj) == '.') {
    if (pObj->CursorPos < (pObj->MaxLen - 1)) {
      EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
    } else {
      EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
    }
  }
}

/*********************************************************************
*
*       _AddPosition
*/
#if !EDIT_DEC_DIGITONLY
static void _AddPosition(EDIT_Obj* pObj, EDIT_Handle hObj, int Sign) {
  int Pos;
  I32 v;
  v = Sign;
  Pos = pObj->MaxLen - pObj->CursorPos-1;
  if (pObj->NumDecs && (Pos > pObj->NumDecs)) {
    Pos--;
  }
  while (Pos--) {
    v *= 10;
  }
  EDIT_SetValue(hObj, (I32)pObj->CurrentValue + v);
}
#endif

/*********************************************************************
*
*             Handle input
*
**********************************************************************
*/
/*********************************************************************
*
*       _AddKeyDec
*/
static void _AddKeyDec(EDIT_Handle hObj, int Key) {
  char c;
  EDIT_Obj * pObj;
  pObj = EDIT_H2P(hObj); /* The GUI needs not to be locked here. This function is called only from EDIT_AddKey which has already locked the GUI */
  if (pObj) {
    switch (Key) {
      case '+':
        if (pObj->CursorPos == 0) {
          _MakePositive(pObj, hObj);
          _IncrementCursor(pObj);
        }
        break;
      case '-':
        if (pObj->CursorPos == 0) {
          _MakeNegative(pObj, hObj);
          _IncrementCursor(pObj);
        }
        break;
      #if EDIT_DEC_DIGITONLY
        case GUI_KEY_UP:
          c = EDIT__GetCurrentChar(pObj);
          if ((c == '-') || (c == '+')) {
            _SwapSign(pObj, hObj);
          } else {
            int Digit = GetCurrentDigit(pObj) + 1;
            if (Digit > 9)
              Digit = 0;
            _EditDec(Digit, pObj, hObj);
          }
          break;
        case GUI_KEY_DOWN:
          c = EDIT__GetCurrentChar(pObj);
          if ((c == '-') || (c == '+')) {
            _SwapSign(pObj, hObj);
          } else {
            int Digit = GetCurrentDigit(pObj) - 1;
            if (Digit < 0)
              Digit = 9;
            _EditDec(Digit, pObj, hObj);
          }
          break;
      #else
        case GUI_KEY_UP:
          c = EDIT__GetCurrentChar(pObj);
          if ((c == '-') || (c == '+')) {
            _SwapSign(pObj, hObj);
          } else {
            _AddPosition(pObj, hObj, 1);
          }
          break;
        case GUI_KEY_DOWN:
          c = EDIT__GetCurrentChar(pObj);
          if ((c == '-') || (c == '+')) {
            _SwapSign(pObj, hObj);
          } else {
            _AddPosition(pObj, hObj, -1);
          }
          break;
      #endif
      case GUI_KEY_RIGHT:
        _IncrementCursor(pObj);
        break;
      case GUI_KEY_LEFT:
        EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
        if (EDIT__GetCurrentChar(pObj) == '.') {
          if (pObj->CursorPos > 0) {
            EDIT__SetCursorPos(pObj, pObj->CursorPos - 1);
          } else {
            EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
          }
        }
        break;
      default:
        {
          char c = EDIT__GetCurrentChar(pObj);
          if ((c != '-') && (c != '+')) {
            int Digit = _DecChar2Int(Key);
            if (Digit >= 0) {
              _EditDec(Digit, pObj, hObj);
              _IncrementCursor(pObj);
            }
          }
        }
        break;
    }
  }
  _UpdateBuffer(hObj);
}

/*********************************************************************
*
*             Exported routines
*
**********************************************************************
*/
/*********************************************************************
*
*       EDIT_SetDecMode
*/
void EDIT_SetDecMode(EDIT_Handle hEdit, I32 Value, I32 Min, I32 Max, int Shift, U8 Flags) {
  EDIT_Obj* pObj;
  WM_LOCK();
  if (hEdit) {
    pObj = EDIT_H2P(hEdit);
    pObj->pfAddKeyEx    = _AddKeyDec;
    pObj->pfUpdateBuffer= _UpdateBuffer;
    pObj->CurrentValue  = Value;
    pObj->CursorPos     = 0;
    pObj->Min           = Min;
    pObj->Max           = Max;
    pObj->NumDecs       = Shift;
    pObj->Flags         = Flags;
    pObj->EditMode      = GUI_EDIT_MODE_OVERWRITE;
    _UpdateBuffer(hEdit);
    if (EDIT__GetCurrentChar(pObj) == '.') {
      EDIT__SetCursorPos(pObj, pObj->CursorPos + 1);
    }
    WM_Invalidate(hEdit);
  }
  WM_UNLOCK();
}

#else  /* avoid empty object files */

void EditDec_C(void);
void EditDec_C(void){}

#endif /* GUI_WINSUPPORT */
	 	 			 		    	 				 	  			   	 	 	 	 	 	  	  	      	   		 	 	 		  		  	 		 	  	  			     			       	   	 			  		    	 	     	 				  	 					 	 			   	  	  			 				 		 	 	 			     			 

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品噜噜噜噜久久久久久久久试看| 日本一区免费视频| 国产日产精品1区| 亚洲第一电影网| 国产91精品精华液一区二区三区| 欧美视频一区二区三区在线观看| 国产亚洲欧洲997久久综合| 日韩国产在线观看一区| 97精品电影院| 久久精品人人爽人人爽| 日本成人在线不卡视频| 在线日韩国产精品| 国产精品网友自拍| 久久成人av少妇免费| 欧美精品在线观看播放| 99久久国产综合精品色伊| 久久久亚洲精华液精华液精华液| 人人爽香蕉精品| 欧美女孩性生活视频| 一区二区三区国产精华| eeuss鲁片一区二区三区在线观看| 欧美mv日韩mv| 老司机午夜精品| 91.成人天堂一区| 亚洲成人www| 欧美影院午夜播放| 亚洲综合色视频| 一本高清dvd不卡在线观看| 中文在线资源观看网站视频免费不卡| 狠狠色丁香婷婷综合| 日韩亚洲欧美高清| 奇米影视在线99精品| 6080日韩午夜伦伦午夜伦| 一区二区三区蜜桃网| 99re视频精品| 综合分类小说区另类春色亚洲小说欧美| 国产久卡久卡久卡久卡视频精品| 26uuu精品一区二区在线观看| 免费不卡在线观看| 91精品国产手机| 日本欧美大码aⅴ在线播放| 欧美高清精品3d| 欧美电影精品一区二区| 免费在线观看日韩欧美| 337p亚洲精品色噜噜狠狠| 肉肉av福利一精品导航| 欧美一级一区二区| 男人的j进女人的j一区| 精品国产一区二区三区av性色| 另类欧美日韩国产在线| 亚洲精品一线二线三线| 国产激情视频一区二区在线观看| 国产拍揄自揄精品视频麻豆| 成熟亚洲日本毛茸茸凸凹| 国产精品国产三级国产普通话三级 | 久久午夜羞羞影院免费观看| 精品一区二区三区av| 久久天天做天天爱综合色| 国产精品一级黄| 亚洲欧洲成人精品av97| 色婷婷av一区| 偷拍自拍另类欧美| 日韩一级免费一区| 国产一区二区在线观看视频| 欧美国产97人人爽人人喊| 亚洲三级电影网站| 色丁香久综合在线久综合在线观看 | 日本电影欧美片| 亚洲成av人片在线观看无码| 欧美一区三区四区| 国产麻豆午夜三级精品| 国产精品毛片久久久久久久| 91久久奴性调教| 日韩影院免费视频| 久久夜色精品国产欧美乱极品| 国产99一区视频免费| 亚洲在线视频网站| 日韩欧美精品在线| 成人性视频免费网站| 亚洲福利一区二区三区| 精品国产污污免费网站入口 | 日韩av中文字幕一区二区三区| 精品日韩av一区二区| 成人av动漫在线| 午夜欧美大尺度福利影院在线看| 精品国产乱码久久久久久图片| 国产丶欧美丶日本不卡视频| 亚洲综合在线五月| 日韩免费观看高清完整版| 不卡一区二区中文字幕| 亚洲福利视频一区| 99精品视频一区二区| 亚洲成av人片www| 国产午夜精品理论片a级大结局| 色噜噜夜夜夜综合网| 国内精品第一页| 一区二区视频在线| 精品国产一区二区三区久久影院| 色综合中文字幕国产 | 另类综合日韩欧美亚洲| 亚洲视频一区二区在线| 日韩视频在线你懂得| 91麻豆蜜桃一区二区三区| 蜜臀久久久久久久| 亚洲天堂2016| 精品国产乱码久久久久久蜜臀| 色综合久久66| 韩日精品视频一区| 亚洲6080在线| 国产精品二三区| 2023国产精品自拍| 欧美日韩一区精品| 97se亚洲国产综合自在线不卡| 蜜桃视频在线观看一区| 夜夜揉揉日日人人青青一国产精品| 欧美一级片在线看| 欧洲亚洲国产日韩| av男人天堂一区| 韩国三级电影一区二区| 欧美日韩亚洲国产综合| 99精品久久久久久| 国产一区二区三区蝌蚪| 视频一区欧美日韩| 亚洲精品国产a| 中文字幕不卡三区| 精品精品国产高清一毛片一天堂| 欧美日韩夫妻久久| 91污片在线观看| 国产91丝袜在线播放| 精品亚洲免费视频| 青娱乐精品在线视频| 一区二区三区精品在线| 亚洲视频电影在线| 中文字幕高清一区| 久久亚洲精品小早川怜子| 日韩区在线观看| 欧美久久久一区| 欧美三级电影精品| 欧洲精品一区二区| a美女胸又www黄视频久久| 国产成人午夜精品影院观看视频| 热久久久久久久| 日本最新不卡在线| 五月激情综合色| 偷拍与自拍一区| 丝袜诱惑亚洲看片| 午夜精品久久久久影视| 亚洲五码中文字幕| 亚洲一级片在线观看| 亚洲精品第一国产综合野| 亚洲视频一二区| 成人欧美一区二区三区| 91日韩在线专区| 不卡的av在线播放| 成人免费福利片| 高清不卡一区二区在线| 国产夫妻精品视频| 国产成人av电影在线播放| 成人网在线播放| 成人黄色免费短视频| av亚洲精华国产精华| 成人av免费在线播放| 91麻豆国产香蕉久久精品| 一本大道久久精品懂色aⅴ| 91黄色免费网站| 欧美日韩亚洲综合| 欧美一区二区三区日韩视频| 日韩免费一区二区| 精品国产一区二区三区不卡| 国产欧美日韩三级| 国产精品久久久久7777按摩| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆 | 色素色在线综合| 色香蕉成人二区免费| 欧美午夜精品一区二区三区| 欧美日本在线观看| 日韩欧美综合在线| 久久久亚洲精品石原莉奈| 国产精品成人在线观看| 亚洲免费视频中文字幕| 亚洲午夜在线电影| 美女精品自拍一二三四| 国产精品18久久久久久久久久久久 | 欧美精品黑人性xxxx| 亚洲精品在线观看视频| 国产精品欧美经典| 亚洲精品你懂的| 日韩精品五月天| 国产伦精一区二区三区| 99re视频精品| 在线成人av影院| 国产亚洲成年网址在线观看| 亚洲婷婷国产精品电影人久久| 亚洲第一综合色| 精品一区二区在线视频| 成人精品小蝌蚪| 欧美日韩国产系列| 2021久久国产精品不只是精品| 国产精品天干天干在观线| 亚洲成人精品一区二区|