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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? edit.c

?? 一種可移植系統
?? C
?? 第 1 頁 / 共 2 頁
字號:
/***********************************************************************************************************                                                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        : EDIT.c
Purpose     : emWin GSC button widget
---------------------------END-OF-HEADER------------------------------
*/

#include <stdlib.h>
#include <string.h>

#define EDIT_C       /* Required to generate intermodule data */

#include "EDIT.h"
#include "GUIDebug.h"
#include "GUI_Protected.h"
#include "EDIT_Private.h"

#if GUI_WINSUPPORT

/*********************************************************************
*
*       Private config defaults
*
**********************************************************************
*/

#ifndef EDIT_LOG_ENABLE
  #ifdef _DEBUG
    #define EDIT_LOG_ENABLE 0
  #else
    #define EDIT_LOG_ENABLE 0
  #endif
#endif

/* Define default fonts */
#ifndef EDIT_FONT_DEFAULT
  #define EDIT_FONT_DEFAULT &GUI_Font13_1
#endif

#ifndef EDIT_ALIGN_DEFAULT
  #define EDIT_ALIGN_DEFAULT GUI_TA_RIGHT | GUI_TA_VCENTER
#endif

/* Define colors */
#ifndef EDIT_BKCOLOR0_DEFAULT
  #define EDIT_BKCOLOR0_DEFAULT 0xc0c0c0
#endif

#ifndef EDIT_BKCOLOR1_DEFAULT
  #define EDIT_BKCOLOR1_DEFAULT GUI_WHITE
#endif

#ifndef EDIT_TEXTCOLOR0_DEFAULT
  #define EDIT_TEXTCOLOR0_DEFAULT GUI_BLACK
#endif

#ifndef EDIT_TEXTCOLOR1_DEFAULT
  #define EDIT_TEXTCOLOR1_DEFAULT GUI_BLACK
#endif

#ifndef EDIT_BORDER_DEFAULT
  #define EDIT_BORDER_DEFAULT 1
#endif

#ifndef EDIT_XOFF
  #define EDIT_XOFF 2
#endif

/*********************************************************************
*
*       Static data
*
**********************************************************************
*/

static int _DefaultAlign              = EDIT_ALIGN_DEFAULT;
static int _DefaultBorder             = EDIT_BORDER_DEFAULT;
static const GUI_FONT * _pDefaultFont = EDIT_FONT_DEFAULT;

/*********************************************************************
*
*       Macros for internal use
*
**********************************************************************
*/

#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
  #define OBJECT_ID 0x4569   /* Magic nubmer, should be unique if possible */
  #define INIT_ID(p)   p->DebugId = OBJECT_ID
  #define DEINIT_ID(p) p->DebugId = 0
#else
  #define INIT_ID(p)
  #define DEINIT_ID(p)
#endif

/*********************************************************************
*
*       Static routines
*
**********************************************************************
*/

#if GUI_DEBUG_LEVEL >= GUI_DEBUG_LEVEL_CHECK_ALL
EDIT_Obj* EDIT_h2p(EDIT_Handle h) {
  EDIT_Obj* p = (EDIT_Obj*)WM_HMEM2Ptr(h);
  if (p) {
    if (p->DebugId != OBJECT_ID) {
      GUI_DEBUG_ERROROUT("EDIT.C: Wrong handle type or Object not init'ed");
      return 0;
    }
  }
  return p;
}
#endif

/*********************************************************************
*
*       _Paint
*/
static void _Paint(EDIT_Obj* pObj) {
  int PixelLen, xSize, ySize, xPosText, xPosCursor, yPosText, yPosCursor, XSizeCursor, YSizeCursor;
  int IsEnabled;
  GUI_RECT rClient, rWindow;
  char * s;
  s = (char*) WM_HMEM2Ptr(pObj->hpText);
  GUI_DEBUG_LOG("BUTTON: _Paint(..)\n");
  if (pObj->Border) {
    GUI_SetBkColor(pObj->aBkColor[0]);
    GUI_Clear();
  }
  IsEnabled = WIDGET__IsEnabled(&pObj->Widget);
  /* Set clipping rectangle */
  WIDGET__GetInsideRect(&pObj->Widget, &rWindow);
  WM_SetUserClipRect(&rWindow);
  /* Calculate size */
  GUI_GetClientRect(&rClient);
  xSize = rClient.x1 - rClient.x0 + 1;
  ySize = rClient.y1 - rClient.y0 + 1;
  /* Draw background */
  GUI_SetBkColor (pObj->aBkColor[IsEnabled]);
  GUI_SetColor   (pObj->aTextColor[0]);
  GUI_Clear();
  /* Calculate length */
  GUI_SetFont    (pObj->pFont);
  PixelLen = GUI_GetStringDistX(s);
  /* Calculate size of cursor */
  YSizeCursor = GUI_GetFontDistY();
  if (pObj->EditMode == GUI_EDIT_MODE_INSERT) {
    if (pObj->XSizeCursor != 0) {
      XSizeCursor = pObj->XSizeCursor;
    } else {
      XSizeCursor = GUI_GetCharDistX(' ');
    }
  } else {
    if (pObj->CursorPos < (int)strlen(s))  {
      XSizeCursor = GUI_GetCharDistX(*(s + pObj->CursorPos));
    } else {
      XSizeCursor = pObj->XSizeCursor;
    }
  }
  /* Calculate X-pos */
  switch (pObj->Align & GUI_TA_HORIZONTAL) {
    case GUI_TA_CENTER:
      xPosCursor = (xSize - PixelLen + 1) / 2;
      xPosText = xSize / 2;
      break;
    case GUI_TA_LEFT:
      xPosCursor = pObj->Border + EDIT_XOFF;
      xPosText   = pObj->Border + EDIT_XOFF;
      break;
    case GUI_TA_RIGHT:
      xPosCursor = xSize - (pObj->Border + EDIT_XOFF) - PixelLen;
      xPosText   = xSize - (pObj->Border + EDIT_XOFF);
      break;
  }
  /* Calculate Y-pos */
  switch (pObj->Align & GUI_TA_VERTICAL) {
    case GUI_TA_TOP:
      yPosCursor = 0;
      yPosText = 0;
      break;
    case GUI_TA_BOTTOM:
      yPosCursor = ySize - YSizeCursor;
      yPosText = ySize;
      break;
    case GUI_TA_VCENTER:
      yPosCursor = (ySize - YSizeCursor + 1) / 2;
      yPosText = ySize / 2;
      break;
  }
  /* Display text */
  GUI_SetTextAlign(pObj->Align);
  GUI_DispStringAt(s, xPosText, yPosText);
  /* Display cursor */
  if (pObj->Widget.State & WIDGET_STATE_FOCUS) {
    int i;
    for (i = 0; i != pObj->CursorPos; i++) {
      xPosCursor += GUI_GetCharDistX(*(s + i));
    }
    GUI_InvertRect(xPosCursor, 
                   yPosCursor, 
                   xPosCursor + XSizeCursor - 1, 
                   yPosCursor + YSizeCursor - 1);
  }
  WM_SetUserClipRect(NULL);
  /* Draw the 3D effect (if configured) */
  WIDGET__EFFECT_DrawDown(&pObj->Widget);
}

/*********************************************************************
*
*       _Delete
*/
static void _Delete(EDIT_Obj* pObj) {
  WM_FREEPTR(&pObj->hpText);
}


/*********************************************************************
*
*       _SetCursor
*/
static void _SetCursor(EDIT_Handle hObj, EDIT_Obj* pObj, int x) {
  int xPos, xSize, PixelLen, Len;
  char * s = (char*) WM_HMEM2Ptr(pObj->hpText);
  const GUI_FONT *pOldFont = GUI_SetFont(pObj->pFont);
  xSize = WM_GetWindowSizeX(hObj);
  PixelLen = GUI_GetStringDistX(s);
  xPos = x;
  switch (pObj->Align & GUI_TA_HORIZONTAL) {
    case GUI_TA_CENTER:
      xPos -= (xSize - PixelLen + 1) / 2;
      break;
    case GUI_TA_LEFT:
      xPos -= (pObj->Border + EDIT_XOFF);
      break;
    case GUI_TA_RIGHT:
      xPos -= xSize - PixelLen - (pObj->Border + EDIT_XOFF);
      break;
  }
  Len = strlen(s);
  if (xPos < 0) {
    pObj->CursorPos = 0;
  } else if (xPos > PixelLen) {
    pObj->CursorPos = Len;
  } else {
    int i, x;
    for (i = 0, x = 0; (i < Len) && (x < xPos); i++) {
      int xLenChar = GUI_GetCharDistX(*(s + i));
      if (xPos < (x + xLenChar))
        break;
      x += xLenChar;
    }
    pObj->CursorPos = i;
    EDIT_Invalidate(hObj);
  }
  GUI_SetFont(pOldFont);
}

/*********************************************************************
*
*       _OnTouch
*/
static void _OnTouch(EDIT_Handle hObj, EDIT_Obj* pObj, WM_MESSAGE*pMsg) {
  GUI_TOUCH_tState* pState = (GUI_TOUCH_tState*)pMsg->Data.p;
  if (pMsg->Data.p) {  /* Something happened in our area (pressed or released) */
    if (pState->Pressed) {
      GUI_DEBUG_LOG1("EDIT__Callback(WM_TOUCH, Pressed, Handle %d)\n",1);
      _SetCursor(hObj, pObj, pState->x);
      WM_SetFocus(hObj);
    } else {
      GUI_DEBUG_LOG1("EDIT__Callback(WM_TOUCH, Released, Handle %d)\n",1);
    }
  } else {
    GUI_DEBUG_LOG1("_EDIT_Callback(WM_TOUCH, Moved out, Handle %d)\n",1);
  }
}

/*********************************************************************
*
*       Callback
*/
static void EDIT__Callback (WM_MESSAGE * pMsg) {
  int IsEnabled;
  EDIT_Handle hObj = (EDIT_Handle)pMsg->hWin;
  EDIT_Obj* pObj = (EDIT_Obj*)WM_HMEM2Ptr(hObj);
  IsEnabled = WIDGET__IsEnabled(&pObj->Widget);
  /* Let widget handle the standard messages */
  if (WIDGET_HandleActive(hObj, pMsg) == 0) {
    return;
  }
  switch (pMsg->MsgId) {
  case WM_TOUCH:
    if (IsEnabled) {
      _OnTouch(hObj, pObj, pMsg);
    }
    break;
  case WM_PAINT:
    GUI_DEBUG_LOG("EDIT: _Callback(WM_PAINT)\n");
    _Paint(pObj);
    return;
  case WM_DELETE:
    GUI_DEBUG_LOG("EDIT: _Callback(WM_DELETE)\n");
    _Delete(pObj);
    break;       /* No return here ... WM_DefaultProc needs to be called */
  case WM_KEY:
    if (IsEnabled) {
      if ( ((WM_KEY_INFO*)(pMsg->Data.p))->PressedCnt >0) {
        int Key = ((WM_KEY_INFO*)(pMsg->Data.p))->Key;
        switch (Key) {
          case GUI_KEY_TAB:
            break;                    /* Send to parent by not doing anything */
          default:
            EDIT_AddKey(hObj, Key);
            return;
        }

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
高清国产午夜精品久久久久久| 久久无码av三级| 久久人人超碰精品| 男男视频亚洲欧美| 欧美精品高清视频| 国产精一区二区三区| 精品嫩草影院久久| 国产精品对白交换视频 | 天天综合天天做天天综合| 亚洲国产wwwccc36天堂| 国产丶欧美丶日本不卡视频| 亚洲自拍与偷拍| 亚洲国产一二三| www.欧美日韩| 99久久精品情趣| 国产精品视频一区二区三区不卡| 一区二区在线观看视频| 国产精品白丝jk黑袜喷水| 国产成人啪午夜精品网站男同| 日韩欧美国产三级电影视频| 尤物在线观看一区| 欧美唯美清纯偷拍| 性做久久久久久久久| 777xxx欧美| 久久精品国产成人一区二区三区 | 亚洲欧美日韩综合aⅴ视频| 成人看片黄a免费看在线| 亚洲欧洲国产日韩| 国产凹凸在线观看一区二区| 色噜噜狠狠成人网p站| 亚洲自拍偷拍综合| 日韩欧美国产综合在线一区二区三区 | 欧美三级日韩三级国产三级| 亚洲在线视频一区| 91免费在线播放| 欧美xxxxxxxx| 无吗不卡中文字幕| 日韩成人伦理电影在线观看| 亚洲欧美日韩中文字幕一区二区三区 | 久久精品国产网站| 日韩视频永久免费| av午夜精品一区二区三区| 亚洲日本电影在线| 欧美一区二区视频观看视频| 欧美精品一区二区高清在线观看| 成人av网站免费观看| 亚洲裸体在线观看| 日本韩国视频一区二区| 久久久美女毛片| 色婷婷综合激情| 亚洲已满18点击进入久久| 91视频.com| 精品午夜一区二区三区在线观看| 99精品视频在线观看| 久久毛片高清国产| 蜜臀精品久久久久久蜜臀 | 亚洲成人精品影院| 91视频在线观看| 亚洲欧美日韩系列| 成人av片在线观看| 亚洲欧美日韩在线不卡| 久久综合av免费| 在线播放国产精品二区一二区四区 | 极品少妇xxxx精品少妇| 亚洲一区二区三区精品在线| 中文字幕免费在线观看视频一区| 日韩欧美黄色影院| 欧美一区午夜精品| 在线不卡一区二区| 国产成人av影院| 国产一区二区三区四区五区入口 | 美美哒免费高清在线观看视频一区二区 | 色综合中文字幕国产| 老司机一区二区| 日韩av一区二区在线影视| 亚洲成人免费在线| 亚洲国产cao| 亚洲五码中文字幕| 五月婷婷另类国产| 午夜成人在线视频| 日日摸夜夜添夜夜添亚洲女人| 亚洲成人av在线电影| 亚洲国产欧美在线人成| 精品国产一区二区精华| 国产精品美女www爽爽爽| 97久久精品人人做人人爽| 成人综合在线观看| 成人av综合一区| fc2成人免费人成在线观看播放| 成人精品一区二区三区四区 | 成人性生交大合| 高清beeg欧美| 99精品欧美一区二区蜜桃免费 | 国产精品国产成人国产三级| 日本一区二区久久| 中文字幕一区日韩精品欧美| 午夜精品久久一牛影视| 欧美一区二区免费视频| 精品裸体舞一区二区三区| 久久精品欧美日韩| 亚洲欧洲精品成人久久奇米网| 亚洲三级理论片| 偷窥少妇高潮呻吟av久久免费| 奇米色777欧美一区二区| 国产精品18久久久久久久久 | 欧美不卡123| 国产亚洲精久久久久久| 亚洲四区在线观看| 视频一区欧美精品| 国产电影一区二区三区| 欧美三级日韩三级国产三级| 精品国精品自拍自在线| 亚洲欧洲另类国产综合| 三级一区在线视频先锋| 国产精品一二三四五| 在线观看视频一区| 26uuu亚洲| 亚洲一区二区视频| 国产精品一区久久久久| 色哟哟欧美精品| 精品国产乱码久久久久久浪潮| 中文字幕不卡在线播放| 婷婷成人激情在线网| 不卡av免费在线观看| 91精品国产综合久久香蕉的特点| 欧美激情综合在线| 蜜臀av一区二区在线免费观看 | 欧美大片一区二区三区| 日韩一区在线免费观看| 免费一级片91| 色激情天天射综合网| 久久网站热最新地址| 夜夜嗨av一区二区三区中文字幕| 韩国一区二区三区| 欧美日韩精品福利| 国产精品国产三级国产普通话蜜臀| 视频在线观看一区| 91在线精品秘密一区二区| 欧美精品一区二区三区蜜桃| 亚洲sss视频在线视频| 99视频国产精品| 国产午夜一区二区三区| 蜜臀va亚洲va欧美va天堂| 欧美日韩成人在线| 亚洲激情在线播放| 99久久婷婷国产综合精品电影| 精品久久久影院| 三级欧美韩日大片在线看| 欧美性受极品xxxx喷水| 日韩美女啊v在线免费观看| 国产一区二区三区久久悠悠色av| 欧美日韩中文另类| 一区二区日韩av| 99久久伊人网影院| 国产精品高潮呻吟| 成人性生交大片免费看在线播放| 精品国产一区二区精华| 久久er精品视频| 日韩电影免费一区| 日韩av一级片| 欧美一区二区免费| 蜜桃在线一区二区三区| 欧美一区二区三区免费大片| 视频一区二区中文字幕| 欧美猛男男办公室激情| 亚洲大片一区二区三区| 欧美日韩中文一区| 视频一区中文字幕| 欧美福利一区二区| 日本午夜精品一区二区三区电影| 欧美日韩国产首页| 性做久久久久久免费观看| 欧美理论电影在线| 蜜臀久久久久久久| 欧美哺乳videos| 国产高清不卡二三区| 中文字幕高清一区| 99re视频精品| 亚洲午夜激情av| 欧美亚洲综合在线| 首页亚洲欧美制服丝腿| 亚洲精品一区二区三区精华液| 激情另类小说区图片区视频区| 日韩欧美专区在线| 国产九九视频一区二区三区| 国产精品久久一级| 色噜噜狠狠成人网p站| 日韩高清在线观看| 久久众筹精品私拍模特| 成人av手机在线观看| 一区二区视频免费在线观看| 欧美日韩精品一区二区三区| 欧美bbbbb| 亚洲国产精品成人综合色在线婷婷 | 久久久久国产一区二区三区四区 | 亚洲夂夂婷婷色拍ww47 | 国产91在线观看丝袜| 亚洲欧美电影一区二区| 欧美精品丝袜久久久中文字幕| 精品一区二区在线播放|